{
  "_class" : "hudson.matrix.MatrixBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.model.ParametersAction",
      "parameters" : [
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "BRANCH",
          "value" : "master"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "EMAIL_NOTIFICATIONS",
          "value" : "jenkins-notifications@lists.osmocom.org laforge@gnumonks.org"
        }
      ]
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 0,
      "buildableTimeMillis" : 0,
      "buildingDurationMillis" : 73344,
      "executingTimeMillis" : 73344,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 6101,
      "waitingTimeMillis" : 6101
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 738,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "0f796cc231437d84edf58218c28ae193110115c1",
            "branch" : [
              {
                "SHA1" : "0f796cc231437d84edf58218c28ae193110115c1",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0f796cc231437d84edf58218c28ae193110115c1",
            "branch" : [
              {
                "SHA1" : "0f796cc231437d84edf58218c28ae193110115c1",
                "name" : "origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "0f796cc231437d84edf58218c28ae193110115c1",
        "branch" : [
          {
            "SHA1" : "0f796cc231437d84edf58218c28ae193110115c1",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/erlang/osmo-s1gw"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#738",
  "duration" : 73344,
  "estimatedDuration" : 82141,
  "executor" : None,
  "fullDisplayName" : "master-osmo-s1gw #738",
  "id" : "738",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 738,
  "queueId" : 55217,
  "result" : "SUCCESS",
  "timestamp" : 1773135366988,
  "url" : "https://jenkins.osmocom.org/jenkins/view/OBS/job/master-osmo-s1gw/738/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/erab_fsm.erl"
        ],
        "commitId" : "2c0df591f5a6ec6b41fcf1a3662542f082aea6f8",
        "timestamp" : 1772827244000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "erab_fsm: fix comment inaccuracies and a typo\u000a\u000aTwo comments copy-pasted from session_establish were left saying\u000a\"ESTABLISH Req\" in session_modify and session_delete handlers where\u000a\"MODIFY Req\" and \"DELETE Req\" are correct respectively.\u000aAlso fix typo \"unieue\" -> \"unique\" in init/1.\u000a\u000aChange-Id: If84638142988767363aa080012b44082dee39f90\u000a",
        "date" : "2026-03-07 03:00:44 +0700",
        "id" : "2c0df591f5a6ec6b41fcf1a3662542f082aea6f8",
        "msg" : "erab_fsm: fix comment inaccuracies and a typo",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/erab_fsm.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/pfcp_peer.erl"
        ],
        "commitId" : "d988d804b52d2d9e9f557f9b208faedd7d7e786b",
        "timestamp" : 1772827244000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "pfcp_peer: wrap seq_nr at 24-bit boundary\u000a\u000aPFCP sequence numbers are 24-bit (3GPP TS 29.244 section 7.2.2.2), but\u000athe counter was incremented without wrapping, eventually exceeding the\u000atype spec after 16,777,215 requests.  Introduce PFCP_SEQ_NR_MAX and use\u000ait in the type spec and in the increment expression.\u000a\u000aChange-Id: Ie269894add9a82c36698320379df3aca3f7ffea8\u000a",
        "date" : "2026-03-07 03:00:44 +0700",
        "id" : "d988d804b52d2d9e9f557f9b208faedd7d7e786b",
        "msg" : "pfcp_peer: wrap seq_nr at 24-bit boundary",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/pfcp_peer.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/pfcp_peer.erl"
        ],
        "commitId" : "933290c40c646fda1bfc14c7749d19c0feaa2586",
        "timestamp" : 1772827244000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "pfcp_peer: replace deprecated erlang:timestamp/0 with os:system_time/1\u000a\u000aerlang:timestamp/0 is deprecated since OTP 18.  os:system_time(second)\u000ais the modern replacement and yields the result directly in seconds,\u000aremoving the need to reassemble the {MegaSec, Sec, _} tuple.\u000a\u000aChange-Id: I4ad886a2222f0cee8a668b42efe8bfac800a55ac\u000a",
        "date" : "2026-03-07 03:00:44 +0700",
        "id" : "933290c40c646fda1bfc14c7749d19c0feaa2586",
        "msg" : "pfcp_peer: replace deprecated erlang:timestamp/0 with os:system_time/1",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/pfcp_peer.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/pfcp_peer.erl"
        ],
        "commitId" : "bee7ada183e009fc7ee3cf7d74ecbf192e837ce6",
        "timestamp" : 1772828565000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "pfcp_peer: replace watchdog process with a timer\u000a\u000aThe watchdog process is spawned bare (no link/monitor), so if it\u000acrashes its failure goes unnoticed, and if pfcp_peer restarts the\u000aorphaned watchdog may fire a stale cast at the new process.\u000a\u000aThe watchdog process exists solely to send a delayed message to\u000apfcp_peer on timeout, and to be cancelled (by receiving\u000aheartbeat_response) when the response arrives.  That's exactly what\u000aerlang:start_timer/3 does natively - no separate process needed.\u000a\u000aChange-Id: I8d71ad8300feefb0aecbf690a825a2b4e9f1102c\u000a",
        "date" : "2026-03-07 03:22:45 +0700",
        "id" : "bee7ada183e009fc7ee3cf7d74ecbf192e837ce6",
        "msg" : "pfcp_peer: replace watchdog process with a timer",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/pfcp_peer.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/s1ap_proxy.erl"
        ],
        "commitId" : "2e50684fd3f0e5e9e6a226186426397f1fe008be",
        "timestamp" : 1772828765000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1ap_proxy: fix discarded result of handle_ies/3 in HO REQ ACK handler\u000a\u000aThe call processing the optional E-RABFailedToSetupListHOReqAck IE did\u000anot pattern-match its return value, causing any errors returned by\u000ahandle_ies/3 to be silently swallowed.  Bind the result to {_, S2}\u000ato make the intent explicit.\u000a\u000aChange-Id: I1c8feeb63fe23876ae443784980e9dc22a450c54\u000a",
        "date" : "2026-03-07 03:26:05 +0700",
        "id" : "2e50684fd3f0e5e9e6a226186426397f1fe008be",
        "msg" : "s1ap_proxy: fix discarded result of handle_ies/3 in HO REQ ACK handler",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/s1ap_proxy.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/enb_registry.erl"
        ],
        "commitId" : "d664769b0ea52104fc94bea8e0097c3b318ba54d",
        "timestamp" : 1773049437000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "enb_registry: call enb_metrics_register/1 from a proper place\u000a\u000aenb_metrics_register/1 requires the Global-eNB-ID to register\u000aper-eNB metrics.  Calling it for every event, which may or may not\u000acontain the Global-eNB-ID, is suboptimal.\u000a\u000aInstead, invoke it from the enb_handle_event/2 clause that handles\u000athe {s1setup, GENBId} event, where the Global-Enb-ID is guaranteed\u000ato be available.\u000a\u000aChange-Id: I38237463aa9c968f89bf4f195407a18cba7e73c9\u000a",
        "date" : "2026-03-09 16:43:57 +0700",
        "id" : "d664769b0ea52104fc94bea8e0097c3b318ba54d",
        "msg" : "enb_registry: call enb_metrics_register/1 from a proper place",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/enb_registry.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/enb_registry.erl"
        ],
        "commitId" : "40b2e5fc04cb667846470aa8d02f822a83861a4b",
        "timestamp" : 1773052837000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "enb_registry: fix pattern match in handle_info 'DOWN' handler\u000a\u000aPIDs maps pid() => enb_handle() (an integer), so maps:find/2 returns\u000a{ok, SomeHandle}.  The old pattern {ok, Pid} tried to match an integer\u000aagainst the already-bound pid() variable, which never succeeds.\u000a\u000aThis handler is only called on abnormal termination (process crash),\u000aso the broken match caused the registry entry to never be cleaned up\u000ain that case.  Fix by using a fresh {ok, Handle} binding and removing\u000athe now-redundant follow-up maps:get/2 call.\u000a\u000aChange-Id: I4cb044e8071c4ae2fc48c507f8733af6c617ec46\u000a",
        "date" : "2026-03-09 17:40:37 +0700",
        "id" : "40b2e5fc04cb667846470aa8d02f822a83861a4b",
        "msg" : "enb_registry: fix pattern match in handle_info 'DOWN' handler",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/enb_registry.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/enb_registry.erl"
        ],
        "commitId" : "a3022395de343157fb769ae0134308afe55ad712",
        "timestamp" : 1773052837000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "enb_registry: fix duplicate registration check in enb_register/0\u000a\u000anext_handle was bound in the function head and reused in the case\u000apattern {ok, Handle}, turning what looks like a binding into an\u000aequality test against next_handle.  The duplicate check therefore\u000aonly fired if the previously assigned handle happened to equal the\u000acurrent next_handle counter, which is essentially never true.\u000a\u000aFix by removing next_handle from the function head pattern and reading\u000ait with S#state.next_handle inside the error branch, so that Handle in\u000a{ok, Handle} is always a fresh binding that matches any existing handle.\u000a\u000aChange-Id: Ia64f3e2e79bea055e5c37df9bce91a4bcbf7184c\u000a",
        "date" : "2026-03-09 17:40:37 +0700",
        "id" : "a3022395de343157fb769ae0134308afe55ad712",
        "msg" : "enb_registry: fix duplicate registration check in enb_register/0",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/enb_registry.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/enb_registry.erl"
        ],
        "commitId" : "af9b9f6f8dbf911bbce126c4ebb88f24ce9c589a",
        "timestamp" : 1773052837000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "enb_registry: fix addr/port filter logic (use andalso)\u000a\u000aIn Erlang a function body returns only its last expression.  The comma\u000abetween the two enb_filter_by_sub_field/2 calls caused the result of\u000athe addr check to be silently discarded, so the filter only tested the\u000aport.  Replace the comma with andalso to require both to match.\u000a\u000aChange-Id: I8061636cd1077a4f3a9e9d37a31224f5e373becb\u000a",
        "date" : "2026-03-09 17:40:37 +0700",
        "id" : "af9b9f6f8dbf911bbce126c4ebb88f24ce9c589a",
        "msg" : "enb_registry: fix addr/port filter logic (use andalso)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/enb_registry.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "priv/openapi.json",
          "doc/osmo-s1gw-cli.md",
          "src/enb_registry.erl",
          "contrib/openapi.yaml",
          "src/enb_proxy.erl"
        ],
        "commitId" : "1ddab3c7c1ffda391ff76a5349a81f40fb610c68",
        "timestamp" : 1773052837000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "enb_registry: rework handling of eNB property updates\u000a\u000aThe idea of an enb_event/0 containing the current MME connection\u000astate and the associated information (Global-eNB-ID, eNB/MME conn\u000ainfo) looked promising initially, however turned out to be\u000aimpractical in light of ongoing MME pooling related changes.\u000a\u000a* remove type enb_state/0\u000a* rename type enb_event/0 -> enb_prop/0\u000a* rename function enb_event/2 -> enb_update/2 (now private)\u000a* enb_prop/0: separate the state from other properties\u000a* enb_update/2: accept a list of enb_prop/0 - enb_proplist/0\u000a* add typed notify_*() helpers that group related property updates,\u000a  ensuring consistency and serving as the sole public call sites\u000a* notify_mme_connecting(): explicitly clears mme_conn_info\u000a* openapi: EnbItem.state reflects the actual enb_proxy FSM state\u000a\u000aChange-Id: Ib5c5dedce729151cd7350390987fdd008b254ef4\u000aRelated: SYS#7052\u000a",
        "date" : "2026-03-09 17:40:37 +0700",
        "id" : "1ddab3c7c1ffda391ff76a5349a81f40fb610c68",
        "msg" : "enb_registry: rework handling of eNB property updates",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "contrib/openapi.yaml"
          },
          {
            "editType" : "edit",
            "file" : "doc/osmo-s1gw-cli.md"
          },
          {
            "editType" : "edit",
            "file" : "priv/openapi.json"
          },
          {
            "editType" : "edit",
            "file" : "src/enb_registry.erl"
          },
          {
            "editType" : "edit",
            "file" : "src/enb_proxy.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/mme_registry.erl",
          "src/osmo_s1gw_sup.erl",
          "test/mme_registry_test.erl"
        ],
        "commitId" : "ade7e52c542f043b29f49b3b2683d421a9f99d8f",
        "timestamp" : 1773052837000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "mme_registry: the MME registry (pool) implementation\u000a\u000aChange-Id: Id5480222439bf93eca2e994b291c619dff823b01\u000aRelated: SYS#7052\u000a",
        "date" : "2026-03-09 17:40:37 +0700",
        "id" : "ade7e52c542f043b29f49b3b2683d421a9f99d8f",
        "msg" : "mme_registry: the MME registry (pool) implementation",
        "paths" : [
          {
            "editType" : "add",
            "file" : "src/mme_registry.erl"
          },
          {
            "editType" : "edit",
            "file" : "src/osmo_s1gw_sup.erl"
          },
          {
            "editType" : "add",
            "file" : "test/mme_registry_test.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "priv/openapi.json",
          "doc/osmo-s1gw-cli.md",
          "contrib/osmo-s1gw-cli.py",
          "contrib/openapi.yaml",
          "src/rest_server.erl"
        ],
        "commitId" : "63ce2c91cb71185f710931b30a0e88311a9a3f1c",
        "timestamp" : 1773052837000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "[REST] Add MmeList, MmeAdd, MmeInfo, MmeDelete\u000a\u000aChange-Id: Iad249aed99face9e35fd19e0596cf2364ade4c77\u000aRelated: SYS#7052\u000a",
        "date" : "2026-03-09 17:40:37 +0700",
        "id" : "63ce2c91cb71185f710931b30a0e88311a9a3f1c",
        "msg" : "[REST] Add MmeList, MmeAdd, MmeInfo, MmeDelete",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "contrib/openapi.yaml"
          },
          {
            "editType" : "edit",
            "file" : "priv/openapi.json"
          },
          {
            "editType" : "edit",
            "file" : "doc/osmo-s1gw-cli.md"
          },
          {
            "editType" : "edit",
            "file" : "src/rest_server.erl"
          },
          {
            "editType" : "edit",
            "file" : "contrib/osmo-s1gw-cli.py"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "test/s1ap_utils_test.erl"
        ],
        "commitId" : "def69ca5d00c6f7ae3168ec5a45b13e5d2ef379b",
        "timestamp" : 1773052837000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1ap_utils_test: fix: expected value goes first\u000a\u000aChange-Id: Ib7c6478b95a78c9797e86180a89c098e75b615e0\u000a",
        "date" : "2026-03-09 17:40:37 +0700",
        "id" : "def69ca5d00c6f7ae3168ec5a45b13e5d2ef379b",
        "msg" : "s1ap_utils_test: fix: expected value goes first",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "test/s1ap_utils_test.erl"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "test/s1ap_utils_test.erl",
          "src/s1ap_utils.erl",
          "test/s1ap_samples.erl"
        ],
        "commitId" : "0f796cc231437d84edf58218c28ae193110115c1",
        "timestamp" : 1773052837000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "s1ap_utils: add API for building S1 SETUP FAILURE PDU\u000a\u000aThis API will be used in a follow-up patch adding the MME pooling.\u000aTake a chance to add a parsing test for the new PDU blob.\u000a\u000aChange-Id: I5a4e060e0a2ebdfbcfafac42f9de2e49ac3583b8\u000aRelated: SYS#7052\u000a",
        "date" : "2026-03-09 17:40:37 +0700",
        "id" : "0f796cc231437d84edf58218c28ae193110115c1",
        "msg" : "s1ap_utils: add API for building S1 SETUP FAILURE PDU",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "test/s1ap_utils_test.erl"
          },
          {
            "editType" : "edit",
            "file" : "test/s1ap_samples.erl"
          },
          {
            "editType" : "edit",
            "file" : "src/s1ap_utils.erl"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
      "fullName" : "Vadim Yanitskiy"
    }
  ],
  "runs" : [
    {
      "number" : 738,
      "url" : "https://jenkins.osmocom.org/jenkins/view/OBS/job/master-osmo-s1gw/a1=default,a2=default,a3=default,a4=default,label=osmocom-master/738/"
    }
  ]
}