aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src/rpc.erl
AgeCommit message (Collapse)Author
2017-02-03Store messages for 'rex' and 'error_logger' off heapBjörn Gustavsson
Performance for processes that receive huge amounts of messages can be increased by storing the incoming messages outside the heap (that avoids copying the message in a garbage collection). Two OTP processes that are known to receive many messages are 'rex' (used by 'rpc') and 'error_logger'.
2016-05-02use maps instead of gb_trees to optimize the rpc serverZandra
2016-05-02let the spawned processes handle rpc repliesZandra
This decreases the load on the rex server.
2016-04-13Merge branch 'henrik/update-copyrightyear'Henrik Nord
* henrik/update-copyrightyear: update copyright-year
2016-04-07Update spec for rpc:pinfo/2Björn Gustavsson
rpc:pinfo/2 is documented as a location-transparent version of process_info/2. Therefore, it should be expected that the spec would allow calls with an item list, for example: rpc:pinfo(Pid, [initial_call,last_calls]) Report-URL: http://bugs.erlang.org/browse/ERL-124 Reported-by: bjfish
2016-04-01rpc: Remove functions deprecated in R12BBjörn Gustavsson
2016-03-15update copyright-yearHenrik Nord
2016-03-11Don't throw exceptions from rpc:call() and rpc:block_call()Björn Gustavsson
The documentation for rpc:call() says: Evaluates apply(Module, Function, Args) on the node Node and returns the corresponding value Res, or {badrpc, Reason} if the call fails. What is not said that rpc:call() can generate an exception if the 'rex' process on the other node is killed: (kalle@host)1> Rex = rpc:call(arne@host, erlang, whereis, [rex]). <6937.14.0> (kalle@host)2> rpc:call(arne@host, erlang, exit, [Rex,kill]). ** exception exit: {killed, {gen_server,call, [{rex,arne@host}, {call,erlang,exit,[<6937.14.0>,kill],<0.33.0>}, infinity]}} in function rpc:rpc_check/1 (rpc.erl, line 361) On the other hand, if the other node shuts down for some other reason, we'll get a {badrpc,nodedown} result: (kalle@host)5> rpc:call(arne@host, erlang, halt, []). {badrpc,nodedown} There does not seem to be any reason to handle the two cases differently. If the 'rex' process is terminated on the other node, it will shut down shortly thereafter. Therefore, change rpc:call() and rpc:block_call() to always return {badrpc,Reason} is the call fails: (kalle@host)1> Rex = rpc:call(arne@host, erlang, whereis, [rex]). <6937.14.0> (kalle@host)2> rpc:call(arne@host, erlang, exit, [Rex,kill]). {badrpc,{'EXIT',{killed,{gen_server,call, [{rex,arne@host}, {call,erlang,exit,[<7126.14.0>,kill],<0.33.0>}, infinity]}}}}
2015-06-18Change license text to APLv2Bruce Yinhe
2015-06-16Fix typo in commentYuki Ito
2014-02-23Deprecate pre-defined built-in typesHans Bolinder
The types array(), dict(), digraph(), gb_set(), gb_tree(), queue(), set(), and tid() have been deprecated. They will be removed in OTP 18.0. Instead the types array:array(), dict:dict(), digraph:graph(), gb_set:set(), gb_tree:tree(), queue:queue(), sets:set(), and ets:tid() can be used. (Note: it has always been necessary to use ets:tid().) It is allowed in OTP 17.0 to locally re-define the types array(), dict(), and so on. New types array:array/1, dict:dict/2, gb_sets:set/1, gb_trees:tree/2, queue:queue/1, and sets:set/1 have been added.
2013-08-05Merge branch 'maint'Fredrik Gustafsson
2013-08-01Fix typo in abcast() function commentJohannes Weißl
2013-06-12Update copyright yearsBjörn-Egil Dahlberg
2013-05-06Fix unmatched_returns warnings in STDLIB and KernelHans Bolinder
2013-04-05Use erlang:demonitor(Ref, [flush]) where applicableLoïc Hoguin
2012-10-05Fix Dialyzer warningsHans Bolinder
Opaque types need to be exported.
2012-08-31Update copyright yearsBjörn-Egil Dahlberg
2012-05-02Fix rpc:call/5 for local calls with a finite TimeoutTomer Chachamu
-module(rpc_example). -export([f/0, should_return_ok/0]). should_return_ok() -> {badrpc, timeout} = rpc:call(node(), ?MODULE, f, [], 5000), ok. f() -> Ref = make_ref(), receive Ref -> ok end.
2011-06-20Add more specs and typesHans Bolinder
An incorrect spec, rpc:yield/1, has been fixed.
2011-05-09Types and specifications have been modified and addedHans Bolinder
2010-04-28kernel: Clean up as suggested by tidierKostis Sagonas
2010-03-09Merge branch 'ks/types' into devErlang/OTP
* ks/types: file.hrl: Move out type declarations kernel: Add types and specs OTP-8494 ks/types
2010-03-07kernel: Add types and specsKostis Sagonas
2009-11-20The R13B03 release.OTP_R13B03Erlang/OTP