Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
erlang
3221-snmp-manager-Make-it-possible-to-restart-t...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 3221-snmp-manager-Make-it-possible-to-restart-the-net-if.patch of Package erlang
From 7e6b8ff83228ca672ad3d2ebc170db4f4a7dba0f Mon Sep 17 00:00:00 2001 From: Micael Karlberg <bmk@erlang.org> Date: Tue, 4 Feb 2020 17:03:22 +0100 Subject: [PATCH 1/5] [snmp|manager] Make it possible to restart the net-if Make it possible to restart the net-if. This can be usefull if the net-if process "gets stuck"... OTP-16447 --- lib/snmp/src/manager/snmpm.erl | 15 +++++++++++++-- lib/snmp/src/manager/snmpm_server.erl | 36 +++++++++++++++++++++++------------ 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/lib/snmp/src/manager/snmpm.erl b/lib/snmp/src/manager/snmpm.erl index 8e60cecaf9..fe30dbbdff 100644 --- a/lib/snmp/src/manager/snmpm.erl +++ b/lib/snmp/src/manager/snmpm.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2004-2019. All Rights Reserved. +%% Copyright Ericsson AB 2004-2020. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -90,7 +90,8 @@ sys_up_time/0, info/0, - verbosity/2 + verbosity/2, + restart/1 ]). -export([format_reason/1, format_reason/2]). @@ -316,6 +317,16 @@ verbosity(all, V) -> snmpm_server:verbosity(note_store, V). +%% -- Restart -- + +%% Restart various component processes in the manager +%% Note that the effects of this is diffiult to +%% predict, so it should be use with *caution*! + +restart(net_if = What) -> + snmpm_server:restart(What). + + %% -- Users -- %% Register the 'user'. diff --git a/lib/snmp/src/manager/snmpm_server.erl b/lib/snmp/src/manager/snmpm_server.erl index fe2c22d9ba..b3740b4d83 100644 --- a/lib/snmp/src/manager/snmpm_server.erl +++ b/lib/snmp/src/manager/snmpm_server.erl @@ -45,13 +45,13 @@ %% discovery/2, discovery/3, discovery/4, discovery/5, discovery/6, - %% system_info_updated/2, get_log_type/0, set_log_type/1, reconfigure/0, info/0, - verbosity/1, verbosity/2 + verbosity/1, verbosity/2, + restart/1 ]). @@ -492,6 +492,9 @@ cancel_async_request(UserId, ReqId) -> call({cancel_async_request, UserId, ReqId}). +info() -> + call(info). + verbosity(Verbosity) -> case ?vvalidate(Verbosity) of Verbosity -> @@ -500,9 +503,6 @@ verbosity(Verbosity) -> {error, {invalid_verbosity, Verbosity}} end. -info() -> - call(info). - verbosity(net_if = Ref, Verbosity) -> verbosity2(Ref, Verbosity); verbosity(note_store = Ref, Verbosity) -> @@ -516,9 +516,10 @@ verbosity2(Ref, Verbosity) -> {error, {invalid_verbosity, Verbosity}} end. -%% Target -> all | server | net_if -%% system_info_updated(Target, What) -> -%% call({system_info_updated, Target, What}). + +restart(net_if = What) -> + cast({restart, What}). + get_log_type() -> call(get_log_type). @@ -624,7 +625,7 @@ do_init_note_store(Prio) -> end. do_init_net_if(NoteStore) -> - ?vdebug("try start net if", []), + ?vdebug("try start net-if", []), {ok, NetIfModule} = snmpm_config:system_info(net_if_module), case snmpm_misc_sup:start_net_if(NetIfModule, NoteStore) of {ok, Pid} -> @@ -638,6 +639,7 @@ do_init_net_if(NoteStore) -> throw({error, {failed_starting_net_if, Reason}}) end. + %% --------------------------------------------------------------------- %% --------------------------------------------------------------------- @@ -1017,6 +1019,13 @@ handle_call(Req, _From, State) -> {reply, {error, unknown_request}, State}. +handle_cast({restart, net_if}, + #state{net_if = Pid} = State) -> + ?vlog("received net_if (~p) restart message", [Pid]), + %% We will get an exit signel/message, which will trigger a (re-)start + exit(Pid, kill), + {noreply, State}; + handle_cast(Msg, State) -> warning_msg("received unknown message: ~n~p", [Msg]), {noreply, State}. @@ -1080,7 +1089,7 @@ handle_info(gc_timeout, #state{gct = GCT} = State) -> handle_info({'DOWN', _MonRef, process, Pid, _Reason}, #state{note_store = NoteStore, net_if = Pid} = State) -> - ?vlog("received 'DOWN' message regarding net_if", []), + ?vlog("received 'DOWN' message regarding net_if (~p)", [Pid]), {NetIf, _, Ref} = do_init_net_if(NoteStore), {noreply, State#state{net_if = NetIf, net_if_ref = Ref}}; @@ -1089,7 +1098,7 @@ handle_info({'DOWN', _MonRef, process, Pid, _Reason}, #state{note_store = Pid, net_if = NetIf, net_if_mod = Mod} = State) -> - ?vlog("received 'DOWN' message regarding note_store", []), + ?vlog("received 'DOWN' message regarding note_store (~p)", [Pid]), {ok, Prio} = snmpm_config:system_info(prio), {NoteStore, Ref} = do_init_note_store(Prio), Mod:note_store(NetIf, NoteStore), @@ -3651,6 +3660,9 @@ is_started(#state{net_if = _Pid, net_if_mod = _Mod}) -> %%---------------------------------------------------------------------- +cast(Req) -> + gen_server:cast(?SERVER, Req). + call(Req) -> call(Req, infinity). -- 2.16.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor