os_mon & alarm_handler in R10B-10
Serge Aleynikov
serge@REDACTED
Sat Mar 25 02:23:26 CET 2006
For now I used the following patch to take care of this issue, but I
would be curious to hear the opinion of the OTP staff.
Regards,
Serge
--- alarm_handler.erl.orig Fri Mar 24 20:08:18 2006
+++ alarm_handler.erl Fri Mar 24 20:19:15 2006
@@ -58,7 +58,12 @@
%% Returns: [{AlarmId, AlarmDesc}]
%%-----------------------------------------------------------------
get_alarms() ->
- gen_event:call(alarm_handler, alarm_handler, get_alarms).
+ case gen_event:which_handlers(alarm_handler) of
+ [M | _] ->
+ gen_event:call(alarm_handler, M, get_alarms);
+ [] ->
+ []
+ end.
add_alarm_handler(Module) when atom(Module) ->
gen_event:add_handler(alarm_handler, Module, []).
Serge Aleynikov wrote:
> Hi,
>
> I've been experimenting with the reworked os_mon in R10B-10, and
> encountered the following issue.
>
> The documentation encourages to replace the default alarm handler with
> something more sophisticated. For that reason I created a custom
> handler - lama_alarm_h (LAMA app in jungerl), which uses
> gen_event:swap_sup_handler/3.
>
> I initiate that handler prior to starting OS_MON, and then start OS_MON.
>
> In the latest release R10B-10, OS_MON calls alarm_handler:get_alarms/0
> upon startup.
>
> This causes the 'alarm_handler' event manager issue a call in the
> alarm_handler.erl module. However, since that handler was replaced by a
> custom alarm handler, the gen_event's call fails with
> {error, bad_module}.
>
> gen_event always dispatches a call/3 to a specific handler module passed
> as a parameter, e.g.:
>
> -----[alarm_handler.erl (line: 60)]-----
> get_alarms() ->
> gen_event:call(alarm_handler, alarm_handler, get_alarms).
> ----------------------------------------
>
> Yet, if the alarm_handler handler was swapped by another module, the
> gen_event:call will report an error, therefore crashing OS_MON.
>
> One way to resolve this problem would be to introduce another exported
> function in gen_event:
>
> gen_event:call(EventMgrRef, Request) -> Result
>
> Can the OTP team suggest some other workaround?
>
> Serge
>
--
Serge Aleynikov
R&D Telecom, IDT Corp.
Tel: (973) 438-3436
Fax: (973) 438-1464
serge@REDACTED
More information about the erlang-questions
mailing list