aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src/rpc.erl
AgeCommit message (Collapse)Author
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