<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>71747</buildingDurationMillis><executingTimeMillis>71747</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>6421</waitingDurationMillis><waitingTimeMillis>6421</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>746</buildNumber><marked><SHA1>5e2cd8e0b8762214f4bd584cc0e43b816895b8ba</SHA1><branch><SHA1>5e2cd8e0b8762214f4bd584cc0e43b816895b8ba</SHA1><name>origin/master</name></branch></marked><revision><SHA1>5e2cd8e0b8762214f4bd584cc0e43b816895b8ba</SHA1><branch><SHA1>5e2cd8e0b8762214f4bd584cc0e43b816895b8ba</SHA1><name>origin/master</name></branch></revision></originmaster></buildsByBranchName><lastBuiltRevision><SHA1>5e2cd8e0b8762214f4bd584cc0e43b816895b8ba</SHA1><branch><SHA1>5e2cd8e0b8762214f4bd584cc0e43b816895b8ba</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/erlang/osmo-s1gw</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#746</displayName><duration>71747</duration><estimatedDuration>74789</estimatedDuration><fullDisplayName>master-osmo-s1gw #746</fullDisplayName><id>746</id><inProgress>false</inProgress><keepLog>false</keepLog><number>746</number><queueId>62737</queueId><result>SUCCESS</result><timestamp>1773742567323</timestamp><url>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/746/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/mme_registry.erl</affectedPath><affectedPath>src/osmo_s1gw_sup.erl</affectedPath><commitId>75a7446cddd00fea23fb17a75edd709f88b93f55</commitId><timestamp>1773409027000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>mme_registry: add backwards compat for old sctp_client config

When 'mme_pool' is absent from the config, automatically populate the
MME pool with a single 'default' entry derived from the 'sctp_client'
section (including legacy mme_loc_addr/mme_rem_addr params), and emit
a deprecation warning.  osmo_s1gw_sup:init/1 normalises 'sctp_client'
in the app env (with all defaults applied) before children start, so
mme_registry can safely read it without duplicating the parsing logic.

Change-Id: Ia97fb61bbb5ace6f43d1a6768fb5fb6883158532
Related: SYS#7052
</comment><date>2026-03-13 20:37:07 +0700</date><id>75a7446cddd00fea23fb17a75edd709f88b93f55</id><msg>mme_registry: add backwards compat for old sctp_client config</msg><path><editType>edit</editType><file>src/osmo_s1gw_sup.erl</file></path><path><editType>edit</editType><file>src/mme_registry.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/s1gw_metrics.erl</affectedPath><affectedPath>include/s1gw_metrics.hrl</affectedPath><affectedPath>src/s1ap_utils.erl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>bceb3d454d0c2af05759bc11f1ff8f64ba8a44f2</commitId><timestamp>1773409027000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy: add initial MME pooling support

Rework the CONNECTING state to dynamically select an MME from the pool
via mme_registry:mme_select/1, passing the eNB's Tracking Area Codes
(from the ?'id-SupportedTAs' IE of the S1 SETUP REQUEST) and a list of
already-tried MMEs, so successive attempts pick a different candidate.

On connection failure (SCTP establishment timeout or error), or when the
selected MME rejects the S1 SETUP REQUEST or fails to respond in time,
the FSM re-enters the CONNECTING state rather than terminating.  This
triggers another mme_select/1 call with the failed MME added to the
tried_mmes list.  S1 SETUP FAILURE PDUs from the MME are intentionally
not forwarded to the eNB, so the retry is fully transparent.

Once mme_select/1 exhausts all candidates it returns 'error'; at that
point the FSM builds and sends an S1 SETUP FAILURE PDU to the eNB and
terminates.

Other changes:
* add close_sock/1, close_conn/1 helpers; simplify terminate/3
* add ?S1GW_CTR_ENB_PROXY_MME_SELECT_ERROR counter

Change-Id: I83dc4a78c78a7b87e87f5ca9a941a168d6c1dc36
Related: SYS#7052
</comment><date>2026-03-13 20:37:07 +0700</date><id>bceb3d454d0c2af05759bc11f1ff8f64ba8a44f2</id><msg>enb_proxy: add initial MME pooling support</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>src/s1gw_metrics.erl</file></path><path><editType>edit</editType><file>src/s1ap_utils.erl</file></path><path><editType>edit</editType><file>include/s1gw_metrics.hrl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/enb_proxy.erl</affectedPath><commitId>973a3eb53ea4464eb826a4365445be67473a5b6a</commitId><timestamp>1773431793000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy: fix stale SCTP events misprocessed during MME pool selection

When closing a connection to one MME and opening a new one to the next,
a SHUTDOWN_COMP event from the old (now-closed) socket can still be
pending in the process mailbox.  The sctp_assoc_change handlers in the
'connecting' and 'wait_s1setup_rsp' states were matching '_Socket',
ignoring the socket identity.  A stale SHUTDOWN_COMP would therefore
fall into the '_ -&gt; repeat_state_and_data' branch, triggering a spurious
re-entry of 'connecting', which immediately closed the newly established
connection to the next MME and skipped to yet another pool entry.

Fix this by matching the Socket against the current S#state.sock in both
handlers.  Events arriving on a previously closed socket no longer match
these clauses and are silently dropped by the catch-all handle_event/4.

This was found thanks to the MME pooling TCs in ttcn3-s1gw-test.

Change-Id: I4211dd343607f045cf4dd33fa568ed580c79dd9f
Related: SYS#7052
</comment><date>2026-03-14 02:56:33 +0700</date><id>973a3eb53ea4464eb826a4365445be67473a5b6a</id><msg>enb_proxy: fix stale SCTP events misprocessed during MME pool selection</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/s1gw_metrics.erl</affectedPath><affectedPath>src/mme_registry.erl</affectedPath><affectedPath>include/s1gw_metrics.hrl</affectedPath><affectedPath>src/enb_proxy.erl</affectedPath><commitId>5e2cd8e0b8762214f4bd584cc0e43b816895b8ba</commitId><timestamp>1773495498000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>enb_proxy/mme_registry: add per-MME counters for connection events

Register a set of per-MME counters when an MME is added to the pool,
and increment them from enb_proxy at the relevant state transitions:

  - selected          (MME chosen for a connection attempt)
  - conn_est_timeout  (SCTP connection establishment timed out)
  - conn_est_failure  (SCTP connection establishment failed)
  - s1setup_rsp       (S1 SETUP RESPONSE received successfully)
  - s1setup_failure   (S1 SETUP FAILURE received from MME)
  - s1setup_rsp_timeout (timed out waiting for S1 SETUP RESPONSE)

A new global aggregate counter ?S1GW_CTR_ENB_PROXY_MME_SELECTED is
also added alongside the existing ?S1GW_CTR_ENB_PROXY_MME_SELECT_ERROR.

Change-Id: Ie0149c1ad0754af6d8f5f95d4e8919993eac3760
Related: SYS#7052
</comment><date>2026-03-14 20:38:18 +0700</date><id>5e2cd8e0b8762214f4bd584cc0e43b816895b8ba</id><msg>enb_proxy/mme_registry: add per-MME counters for connection events</msg><path><editType>edit</editType><file>src/enb_proxy.erl</file></path><path><editType>edit</editType><file>src/s1gw_metrics.erl</file></path><path><editType>edit</editType><file>include/s1gw_metrics.hrl</file></path><path><editType>edit</editType><file>src/mme_registry.erl</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>746</number><url>https://jenkins.osmocom.org/jenkins/view/registry/job/master-osmo-s1gw/a1=default,a2=default,a3=default,a4=default,label=osmocom-master/746/</url></run></matrixBuild>