fixeria has submitted this change. ( https://gerrit.osmocom.org/c/erlang/osmo-s1gw/+/42295?usp=email )
Change subject: enb_registry: call enb_metrics_register/1 from a proper place ......................................................................
enb_registry: call enb_metrics_register/1 from a proper place
enb_metrics_register/1 requires the Global-eNB-ID to register per-eNB metrics. Calling it for every event, which may or may not contain the Global-eNB-ID, is suboptimal.
Instead, invoke it from the enb_handle_event/2 clause that handles the {s1setup, GENBId} event, where the Global-Enb-ID is guaranteed to be available.
Change-Id: I38237463aa9c968f89bf4f195407a18cba7e73c9 --- M src/enb_registry.erl 1 file changed, 6 insertions(+), 7 deletions(-)
Approvals: osmith: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified
diff --git a/src/enb_registry.erl b/src/enb_registry.erl index e40d9f5..54eca5d 100644 --- a/src/enb_registry.erl +++ b/src/enb_registry.erl @@ -235,7 +235,6 @@ {ok, EnbInfo0} -> ?LOG_INFO("eNB (handle=~p) event: ~p", [Handle, Event]), EnbInfo1 = enb_handle_event(EnbInfo0, Event), - enb_metrics_register(EnbInfo1), {noreply, S#state{enbs = maps:update(Handle, EnbInfo1, ENBs)}}; error -> ?LOG_ERROR("eNB (handle=~p) is *not* registered", [Handle]), @@ -283,11 +282,9 @@ %% private API %% ------------------------------------------------------------------
--spec enb_metrics_register(enb_info()) -> term(). -enb_metrics_register(#{genb_id_str := GlobalENBId}) -> - catch exometer:new(?S1GW_CTR_ENB_UPTIME(GlobalENBId), counter); - -enb_metrics_register(_) -> ok. +-spec enb_metrics_register(string()) -> term(). +enb_metrics_register(GlobalENBId) -> + catch exometer:new(?S1GW_CTR_ENB_UPTIME(GlobalENBId), counter).
-spec enb_metrics_reset(enb_info()) -> term(). @@ -307,9 +304,11 @@ mme_conn_info => ConnInfo};
enb_handle_event(EnbInfo, {s1setup, GENBId}) -> + GlobalENBId = s1ap_utils:genb_id_str(GENBId), + enb_metrics_register(GlobalENBId), EnbInfo#{state => s1setup, genb_id => GENBId, - genb_id_str => s1ap_utils:genb_id_str(GENBId)}; + genb_id_str => GlobalENBId};
enb_handle_event(EnbInfo, Event) -> ?LOG_ERROR("Unhandled event: ~p", [Event]),