Created
December 3, 2008 23:30
-
-
Save bosky101/31761 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%%============================================================================================== | |
%% figuring out the best way to catch a gen_server call, when process group ceases to exist | |
%% | |
%% until i figure out why it disappears,i want to catch the current gen call arg's .so IMHO options are | |
%% ( i) recreate the group in the Else, and redo the call | |
%% OR | |
%% (ii) crash wih prev state and redo it somehow (not sure of how but i htink ive seen this being done) | |
%% | |
%% -b101 | |
%%============================================================================================== | |
. | |
. | |
init(_Arg) -> | |
process_flag(trap_exit, true), | |
ProcessGroup = ?MODULE:group_name(), | |
ok=pg2:create(ProcessGroup), | |
ok=pg2:join(ProcessGroup,self()), | |
[ timer:apply_after(10000,X,runjob,[self()]) ||X <- [?MODULE] ], | |
{ok, ?MODULE:default()}. | |
. | |
. | |
. | |
runjob()-> | |
ProcessGroup = ?MODULE:group_name(), | |
Pid = pg2:get_closest_pid(ProcessGroup), | |
case Pid of | |
SomePid when is_pid(SomePid) -> | |
?MODULE:runjob(SomePid); | |
_Else -> | |
erlang:exit( yaws_api:f("~p : ~p",[ProcessGroup,_Else]) ) | |
end. | |
runjob(Pid)-> | |
Timeout = ?CALL_TIMEOUT, | |
case catch gen_server:call(Pid, | |
{run}, | |
Timeout) of | |
{'EXIT', {timeout, _}} -> | |
timer:apply_after(?RECHECK_DELAY, ?MODULE , runjob , [ ] ); | |
recheck -> | |
timer:apply_after(?RECHECK_DELAY, ?MODULE , runjob , [ ] ); | |
_Else -> | |
error_logger:info_msg("flowcontrol: runjob else...",[_Else]) | |
end, | |
ok. | |
%%=============================================== | |
%% exits | |
%%=============================================== | |
=INFO REPORT==== 3-Dec-2008::20:31:53 === | |
Termination due to REASON:shutdown | |
=INFO REPORT==== 3-Dec-2008::20:31:53 === | |
Termination of hybridq_worker due to REASON shutdown, prev STATE ={ {1228,336275,973853}} | |
=INFO REPORT==== 3-Dec-2008::20:31:53 === | |
ERROR: "flowcontrol: runjob else..." - [{'EXIT', | |
{{function_clause, | |
[{gen, | |
call, | |
[{error, | |
{no_process, | |
"hi_pg_flowcontrol_updater"}}, | |
'$gen_call', | |
{run}, | |
60000]}, | |
{gen_server, | |
call, | |
3}, | |
{hi_flowcontrol_updater, | |
runjob, | |
1}]}, | |
{gen_server, | |
call, | |
[{error, | |
{no_process, | |
"hi_pg_flowcontrol_updater"}}, | |
{run}, | |
60000]}}}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment