)]}'
{
  "log": [
    {
      "commit": "dc38902a9dac05281d5ebd28d9d4eeaa1a1bedbd",
      "tree": "1641123690d7bb6cf3a9f8566585b9618114367d",
      "parents": [
        "f1cdfaf5f52e2fa49a1107e629367de22e73b6cb",
        "93af41509574fa862a0522c18fce9a9f0ef6e670"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Mon Oct 26 09:14:10 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 09:14:10 2026 +0000"
      },
      "message": "Merge pull request #9192 from apache/dependabot/npm_and_yarn/storm-webapp/fast-uri-3.1.9\n\nbuild(deps-dev): bump fast-uri from 3.1.7 to 3.1.9 in /storm-webapp"
    },
    {
      "commit": "f1cdfaf5f52e2fa49a1107e629367de22e73b6cb",
      "tree": "b865f592e0bc488c4ce6b274a119f309c85c0423",
      "parents": [
        "44cb619950dff0a3650422d72310ebae0cd3dd04",
        "dd4dbee56331beba4d22c7caf90ff0258f50abab"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Mon Oct 26 09:13:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 09:13:29 2026 +0000"
      },
      "message": "Merge pull request #9193 from apache/dependabot/npm_and_yarn/storm-webapp/serialize-javascript-7.1.4\n\nbuild(deps-dev): bump serialize-javascript from 7.0.5 to 7.1.4 in /storm-webapp"
    },
    {
      "commit": "dd4dbee56331beba4d22c7caf90ff0258f50abab",
      "tree": "b865f592e0bc488c4ce6b274a119f309c85c0423",
      "parents": [
        "44cb619950dff0a3650422d72310ebae0cd3dd04"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 26 08:27:09 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 08:27:09 2026 +0000"
      },
      "message": "build(deps-dev): bump serialize-javascript in /storm-webapp\n\nBumps [serialize-javascript](https://github.com/yahoo/serialize-javascript) from 7.0.5 to 7.1.4.\n- [Release notes](https://github.com/yahoo/serialize-javascript/releases)\n- [Commits](https://github.com/yahoo/serialize-javascript/compare/v7.0.5...v7.1.4)\n\n---\nupdated-dependencies:\n- dependency-name: serialize-javascript\n  dependency-version: 7.1.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "93af41509574fa862a0522c18fce9a9f0ef6e670",
      "tree": "5178065255554a0b392f629e1f48e00236cf98ae",
      "parents": [
        "44cb619950dff0a3650422d72310ebae0cd3dd04"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 26 08:26:15 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 08:26:15 2026 +0000"
      },
      "message": "build(deps-dev): bump fast-uri from 3.1.7 to 3.1.9 in /storm-webapp\n\nBumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.7 to 3.1.9.\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.7...v3.1.9)\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.9\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "44cb619950dff0a3650422d72310ebae0cd3dd04",
      "tree": "38793d45966f147941a82db43a5411f12e5cb7a2",
      "parents": [
        "33ac791ea6c6be0c18e15d3d4ccb5622dba5faeb",
        "dcfec2ea1c43f577bad5ffa2a5d859e13f4f5964"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Mon Oct 26 08:15:21 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 08:15:21 2026 +0000"
      },
      "message": "Merge pull request #9191 from apache/dependabot/github_actions/actions/setup-python-7.1.0\n\nbuild(deps): bump actions/setup-python from 7.0.0 to 7.1.0"
    },
    {
      "commit": "dcfec2ea1c43f577bad5ffa2a5d859e13f4f5964",
      "tree": "38793d45966f147941a82db43a5411f12e5cb7a2",
      "parents": [
        "33ac791ea6c6be0c18e15d3d4ccb5622dba5faeb"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 26 04:33:08 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 26 04:33:08 2026 +0000"
      },
      "message": "build(deps): bump actions/setup-python from 7.0.0 to 7.1.0\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 7.0.0 to 7.1.0.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/5fda3b95a4ea91299a34e894583c3862153e4b97...6d4fd22b20465ccc0f7354476588e8df7c9ca0e0)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: 7.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "33ac791ea6c6be0c18e15d3d4ccb5622dba5faeb",
      "tree": "38dc278ef9efd6396d510ccd9f5697f34a879fdd",
      "parents": [
        "057924e6bf97403fc81523818b4c72dcd5cb9433",
        "5305801797815446e39f982ef9c9399ffb429733"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 20:12:14 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 20:12:14 2026 +0000"
      },
      "message": "Merge pull request #9169 from Mohit20057/remove-obsolete-client-config-keys\n\nRemove obsolete deprecated client Config keys (#8994)"
    },
    {
      "commit": "057924e6bf97403fc81523818b4c72dcd5cb9433",
      "tree": "272b09434cea2429e14069348bccd1d99a93168c",
      "parents": [
        "88aa8b17bc1463e9e4aa8eba9c37b29249c40873",
        "82979929572466624bb109f86bd97c22ded450ff"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 20:11:44 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 20:11:44 2026 +0000"
      },
      "message": "Merge pull request #9172 from Mohit20057/classify-client-deprecated-apis\n\nClassify surviving deprecated storm-client APIs with forRemoval decisions (#8994)"
    },
    {
      "commit": "88aa8b17bc1463e9e4aa8eba9c37b29249c40873",
      "tree": "a27e4a1cf02d390b78e0ac493be724bf1cf9ec56",
      "parents": [
        "41c846acadc19be663aa37556e7d4300ca914382",
        "406c592c00bd1223da1aaee09789b3e8f0ad8ada"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 20:11:04 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 20:11:04 2026 +0000"
      },
      "message": "Merge pull request #9173 from Mohit20057/classify-server-deprecated-apis\n\nClassify surviving deprecated APIs in storm-server, external modules, and utilities (#8994)"
    },
    {
      "commit": "41c846acadc19be663aa37556e7d4300ca914382",
      "tree": "28b512942766d9670705fcc81213ea49e5a14df6",
      "parents": [
        "ac36fc7815d44dfe99c56192045af30ea3545cc6",
        "2d173f56bf0a394e334612fd088547b92c772110"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 20:09:52 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 20:09:52 2026 +0000"
      },
      "message": "Merge pull request #9190 from apache/update-license-files\n\n[Automated] Update license files after dependency changes"
    },
    {
      "commit": "2d173f56bf0a394e334612fd088547b92c772110",
      "tree": "28b512942766d9670705fcc81213ea49e5a14df6",
      "parents": [
        "ac36fc7815d44dfe99c56192045af30ea3545cc6"
      ],
      "author": {
        "name": "reiabreu",
        "email": "reiabreu@users.noreply.github.com",
        "time": "Sun Oct 25 19:21:05 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 19:21:05 2026 +0000"
      },
      "message": "Regenerate license files after dependency changes\n\nSigned-off-by: GitHub \u003cnoreply@github.com\u003e\n"
    },
    {
      "commit": "ac36fc7815d44dfe99c56192045af30ea3545cc6",
      "tree": "7d1a92369480dbb9ab3028c578a861ce169363c2",
      "parents": [
        "b827fe5785c893608b3ab143282c51858cd538fd",
        "cfe510700095d8acccd843c7ccd09bead5b71b1c"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 19:18:07 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 19:18:07 2026 +0000"
      },
      "message": "Merge pull request #9168 from Mohit20057/remove-legacy-backpressure-state\n\nRemove legacy ZooKeeper backpressure cluster state methods and config (#8994)"
    },
    {
      "commit": "b827fe5785c893608b3ab143282c51858cd538fd",
      "tree": "eb9a4026de3e6c47ce591dcbc2283592fcda9bbb",
      "parents": [
        "d4db97d8d6484cc9868ae11e3bc75661d7662ff2"
      ],
      "author": {
        "name": "Davide Polato",
        "email": "dpol1@apache.org",
        "time": "Sun Oct 25 19:32:53 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 19:32:53 2026 +0100"
      },
      "message": "Add pluggable tuple tracing with an OpenTelemetry tracer (#9154)\n\n* feat: carry an OpenTelemetry context on tuples across workers\n\nAdd the OpenTelemetry BOM and opentelemetry-api to storm-client. TupleImpl\nholds an optional OpenTelemetry context. KryoTupleSerializer writes it after\nthe tuple values, inside the compressed frame: a header byte (version and a\ntracestate bit), trace id, span id, trace flags and an optional W3C\ntracestate. KryoTupleDeserializer reads it only when bytes remain after the\nvalues, so tuples without a context keep their current bytes and readers\nthat stop after the values ignore the extension. An unknown version or a\nmalformed extension is read as no context.\n\n* feat: add topology.tracing.enabled and a root span per spout emit\n\nWith topology.tracing.enabled (default false), SpoutOutputCollectorImpl\nrecords a root span for every emit, started and ended at once, and puts its\ncontext on the emitted tuples. The tracer comes from the global\nOpenTelemetry instance. Until an instance is registered, for example by the\nOpenTelemetry Java agent, Storm leaves the global unset and creates no\nspans, so an SDK registered later is still picked up. A span that is not\nvalid puts nothing on the tuple.\n\nTopologyTracingTest runs topologies on a local cluster with two workers and\nreads the spans through OpenTelemetryExtension, which registers the global\ninstance in the test JVM.\n\n* feat: run bolt execute() inside a span when the tuple carries a trace context\n\nBoltExecutor runs execute() inside a span named \"\u003ccomponent\u003e execute\", a\nchild of the context the tuple carries. The span is current on the executor\nthread while execute() runs, its context replaces the tuple\u0027s so anchored\nemits can use it as their parent, and its scope is closed when the call\nreturns or throws. Tuples without a context, such as tick tuples, get no\nspan.\n\nThe tracer lookup moves to Executor so spouts and bolts share it; it stays\nunset until an OpenTelemetry SDK is registered as the global instance.\n\nThe local-cluster test checks the parent of each execute span, that at\nleast one parent is remote (the tuple crossed workers), that the execute\nspan is current inside the bolt, that tick tuples get no span and see no\nleftover span, and waits for the spans instead of reading them right after\nthe acks.\n\n* feat: derive the trace context of bolt emits from their anchors\n\nBoltOutputCollectorImpl gives an emitted tuple the context of its anchors,\non whatever thread emits. When the traced anchors carry one span, the tuple\ncarries that context; when they carry several, a new root span named\n\"\u003ccomponent\u003e emit\", started and ended at once, links to each of them.\nUntraced anchors are ignored and unanchored emits carry no context; if a\nspan is current on the emitting thread, a DEBUG line says so at most once a\nminute.\n\nThe tracing flag and the root-span helper move to Executor, shared by the\nspout and bolt collectors. Checkpoint tuples of stateful bolts are emitted\nwithout a trace, like other system tuples.\n\nThe local-cluster test covers anchored, twice-anchored, joined and\nunanchored emits, and waits for the expected spans and sink tuples.\n\n* test: cover delayed emits from another thread and unsampled propagation\n\nA middle bolt holds the first tuple and, on the second, emits both from\nanother thread in reverse order while the first tuple\u0027s span is current.\nEach sink span must be the child of the middle span that handled the same\nvalue, so the emit takes its parent from its anchor, not from the thread.\n\nWith a parent-based always-off sampler, unsampled contexts reach the sink\nthrough the serializer (middle and sink run on different workers), the trace\ncontinues from middle to sink, and no span is exported. With tracing off the\nsink receives no context.\n\n* feat: record ack, fail and timeout outcomes as spans\n\nThe spout keeps the root context in TupleInfo (transient, reset by clear())\nand, when the tuple tree is acked, failed or times out, records a span named\n\"\u003cspout\u003e ack\", \"\u003cspout\u003e fail\" or \"\u003cspout\u003e timeout\" under the root, started\nand ended at once. Fail and timeout have status ERROR. A spout without\nackers records no outcome, since its ack is immediate. A bolt\u0027s fail()\nrecords \"\u003cbolt\u003e fail\" with status ERROR under the tuple\u0027s context, with or\nwithout ackers.\n\nContexts stored on tuples and in TupleInfo now keep only the span ids, so a\npending tuple does not retain the SDK span.\n\n* feat: add Storm attributes to execute spans\n\nA recording execute span carries storm.topology.name, storm.topology.id,\nstorm.component.id, storm.task.id, storm.source.component.id,\nstorm.source.stream.id, storm.worker.host and storm.worker.port. No\nOpenTelemetry semantic convention covers these; host.name is a resource\nattribute and can differ from the host name Storm reports. The host comes\nfrom Utils.hostname(), as for the supervisor, and is omitted when it cannot\nbe resolved.\n\nThe executor-level attributes are built once. All attributes are set only\nwhen the span records, so an unsampled execute pays nothing; a custom\nsampler therefore cannot see them when it decides.\n\n* feat: add TupleUtils.traceContext and the tracing docs page\n\nTupleUtils.traceContext(Tuple) returns the OpenTelemetry context to run work\nfor a tuple under, or Context.root() when the tuple carries none, so a bolt\ncan continue a trace on its own threads. It is the supported public API with\nOpenTelemetry types; Executor.tracer() becomes protected.\n\ndocs/Tracing.md describes how to enable tracing with the OpenTelemetry Java\nagent, the spans and attributes Storm records, how the context moves through\nanchors and between workers, sampling, and the costs and limits.\n\n* refactor: introduce a pluggable tuple tracing SPI\n\nstorm-client no longer depends on OpenTelemetry. Tracing goes through\norg.apache.storm.tracing.TupleTracer. Each worker creates one instance\nfrom the class named in topology.tracing.tracer, which replaces\ntopology.tracing.enabled; when the key is unset, nothing is traced.\nTuples and pending spout trees hold an opaque context. The spout keeps\nthe emit time of traced trees and passes the latency to the outcome\nhook.\n\nAfter the values, the serializer writes a tag byte, a varint length\nand the bytes the tracer encodes. Readers skip unknown tags. A\ntruncated entry, or one longer than the tuple, reads as no context.\nSerializers built without a tracer, such as the ones\nDefaultStateSerializer uses, write no context and skip it on read, so\nstate no longer stores contexts.\n\nTupleUtils.traceContext, the OpenTelemetry BOM and version property,\nand the OpenTelemetry LocalCluster test are removed. The OpenTelemetry\nimplementation and that test move to a separate module in the next\ncommit. TupleTracerTest checks the calls Storm makes to a tracer on a\ntwo-worker local cluster.\n\n* feat: add the OpenTelemetry tracing module\n\nexternal/storm-opentelemetry implements TupleTracer with OpenTelemetry,\nusing the code that left storm-client in the previous commit. To trace\na topology, set topology.tracing.tracer to\norg.apache.storm.opentelemetry.OpenTelemetryTupleTracer and put the\nmodule and opentelemetry-api in lib-worker or in the topology jar.\nStormTracing.context(tuple) replaces TupleUtils.traceContext.\nopentelemetry-api is managed in the module pom only.\n\nChanges from the code it replaces:\n- Until an SDK is registered as the global instance, the tracer calls\n  GlobalOpenTelemetry.isSet() at most once a second and logs one\n  warning. With the OpenTelemetry Java agent, isSet() sees the SDK from\n  version 2.23.0.\n- The context crosses workers as a version byte, the trace and span\n  ids, the flags and the tracestate. A tracestate over 512 characters\n  is not sent, and one over 512 reads as no context.\n- The debug line for an emit with no traced anchor while a span is\n  current is still limited to one a minute per task.\n\nTopologyTracingTest moves from storm-server. Its expected span counts\nnow include the spout ack spans, so the wait ends only after every\nexecute span has ended.\n\n* fix: preserve trace ancestry and record outcome duration\n\nA bolt emit anchored to several spans of one trace is now a child of\nthe first anchor\u0027s span, linked to the others, instead of a new root;\nanchors from different traces still start a new root linked to each.\n\nSpout ack, fail and timeout spans now last from the emit to the\noutcome and carry the same value as storm.tuple.latency_ms. The spout\ncalls the outcome hook before its ack() or fail(), so a slow callback\ndoes not move the span.\n\n* docs: document pluggable tuple tracing\n\nTracing.md now covers topology.tracing.tracer, installing\nstorm-opentelemetry in lib-worker or the topology jar, the minimum\nagent version, StormTracing.context, joins within one trace, outcome\nspan durations and storm.tuple.latency_ms, the limits for spouts that\nreceive a trace in message headers and for Trident coordinator\nstreams, and how to write another tracer.\n\nAdd a README to storm-opentelemetry and ship it in the binary\ndistribution like the other external modules.\n\n* perf: propagate no context for spout roots the sampler drops\n\nOpenTelemetryTupleTracer.spoutEmit returns the root span\u0027s context only\nwhen the span is recording, that is sampled or RECORD_ONLY. A tuple tree\nwhose root the sampler drops carries no context, so Storm skips the\nexecute, fail and outcome hooks for the rest of the tree, and the tracer\nreturns at once on its bolt emits.\n\nInstrumented clients called for tuples of such a tree start their own\ntraces, and an emit anchored to a traced and an untraced tuple continues\nthe traced tree with no link to the other. docs/Tracing.md describes\nboth.\n\n* fix: keep tracer failures from stopping tuple processing\n\nA runtime exception from a TupleTracer method other than decode()\npropagated into the executor or the serializer and could stop the\nworker. WorkerState now wraps the configured tracer in SafeTupleTracer:\na call that throws a runtime exception or a linkage error is treated as\nreturning null, ExecuteScope.context() falls back to the context the\ntuple arrived with, and ExecuteScope.close() does not let either escape.\nEach hook logs its first failure with the stack trace and then at most\nonce a minute, so decode() failures are now logged as warnings rather\nthan at debug level. Exceptions from prepare() still stop the worker\nfrom starting. The TupleTracer Javadoc describes the new contract.\n\nThe OpenTelemetry tracer now ends the execute span even when closing\nits scope fails.\n\n* fix: leave the execute scope out of the bolt execute latency\n\nWith a tracer, the execute latency started before startExecute() and\nended after the scope closed, so it included opening the scope, reading\nits context and ending the execute span. BoltExecutor now starts the\nexecute measurement after startExecute() returns and, when it opened a\nscope, after the tuple has its context, and takes it before the scope\ncloses. The process latency still starts where it did, and without a\ntracer the timing is unchanged. The execute latency feeds the UI, the\ntask metrics and BoltExecuteInfo.\n\n* docs: describe tracing costs and failure modes\n\nThe \"Costs and limits\" section of docs/Tracing.md now says that a\nconfigured tracer can reduce throughput at a sampling ratio of 0 and\nhow to turn tracing off, that an emit anchored to many tuples costs more\nto trace, that Storm logs a tracer\u0027s runtime exceptions and linkage\nerrors and carries on without that call\u0027s result, and that a tracer\nclass Storm cannot create, or a prepare() that throws, keeps the worker\nfrom starting. SpoutExecutor uses one constant for the timeout reason\nthat it passes to failSpoutMsg and checks to report the outcome.\n\n* test: start a local cluster per test in TupleTracerTest\n\nThe tests shared one LocalCluster. Each test records the tracer calls\nin a static queue and clears it before it submits its topology. At the\nend of a test, closing the topology kills it with a wait time of zero\n(LocalCluster.KILL_NOW). The kill returns before the topology\u0027s workers\nstop. A worker of the killed topology could therefore still call the\ntracer after the next test had cleared the queue.\n\nOn CI, the worker that hosts the sink of\ntestTimeoutIsReportedWithTheTimeSinceTheEmit finished connecting to\nthe other worker after the next test, testUnanchoredEmitCarriesNoContext,\nhad cleared the queue. testUnanchoredEmitCarriesNoContext then failed\nbecause it counted three startExecute() calls instead of two. The extra\ncall most likely came from that sink.\n\nEach test now starts its own cluster. LocalCluster.close() in\n@AfterEach shuts the workers down before the next test starts. The\ntest class takes about 114 s instead of 77 s on a laptop.\n\n* test: start a local cluster per test in TopologyTracingTest\n\nThe tests shared one LocalCluster. Each test clears the spans of the\nshared OpenTelemetryExtension and the static state of its bolts before\nit submits its topology. Closing a topology kills it with a wait time\nof zero (LocalCluster.KILL_NOW) and returns before its workers stop.\nA worker of one test could therefore still record spans after the next\ntest had cleared them, and that test\u0027s exact-count asserts would count\nthem. TupleTracerTest had the same setup (bf6cbf312).\n\nEach test now starts its own cluster, and LocalCluster.close() in\n@AfterEach shuts down the workers of that test before the next one\nstarts. The test class takes about 246 s instead of 167 s on a laptop.\n\n* docs: say that spoutEmit runs synchronously on the emitting thread\n\nThe Javadoc of TupleTracer.spoutEmit now says that Storm calls it from\nthe spout collector\u0027s emit() or emitDirect(), on the calling thread,\nbefore the call returns. A tracer can read there the context that the\nspout or its instrumentation made current around the emit."
    },
    {
      "commit": "d4db97d8d6484cc9868ae11e3bc75661d7662ff2",
      "tree": "e277089e3c2a75b8eed90559550c44f678ec256c",
      "parents": [
        "30a2500f435c72d00909a0f378766a50a53cdf20"
      ],
      "author": {
        "name": "Gianluca Graziadei",
        "email": "48211703+GGraziadei@users.noreply.github.com",
        "time": "Sun Oct 25 19:32:48 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 19:32:48 2026 +0100"
      },
      "message": "Add an opt-in virtual threads flag for the Thrift server handler pools on Java 25 (#9097)\n\n* Add opt-in virtual threads for blocking I/O thread pools\n\nIntroduce storm.virtual.threads.enabled (default false) and\nStormThreadFactory, which returns a virtual-thread ThreadFactory when the\nflag is on and a non-daemon, normal-priority platform-thread factory\notherwise. Thread names are \u003cprefix\u003e-\u003cn\u003e in both modes.\n\nThe factory is injected into the existing pools, so core sizes, queues,\nrejection policy and error handling are unchanged and the *.threads\nsettings keep their meaning as a concurrency bound:\n\n- Thrift server handlers for the SASL, TLS and simple transports\n  (Nimbus, Supervisor and DRPC). With the simple transport an executor is\n  now always supplied when the flag is on; without a configured queue\n  size it uses the same unbounded queue THsHaServer builds by default.\n- AsyncLocalizer download and task executors.\n- Nimbus AssignmentDistributionService and Supervisor heartbeat pools.\n- DRPCSpout background executor.\n- Worker shared executor exposed through TopologyContext, read from the\n  merged topology conf so a topology can override the flag.\n\nSpout/bolt executor threads, worker transfer, JCQueue, Netty and timer\nthreads are deliberately left on platform threads.\n\nRound-trip tests through NimbusClient assert that Thrift handlers run on\nvirtual threads when the flag is on and on platform threads by default;\nunit tests cover the factory, the localizer executor and the worker\nshared executor.\n\nThriftHandlerVirtualThreadsBench in storm-perf measures the flag against\nan in-process Nimbus Thrift server whose handler simulates blocking I/O.\nAt equal *.threads the throughput is unchanged, while server-side OS\nthreads drop from *.threads to roughly the number of cores.\n\n* Document the handler concurrency change for servers without a queue size\n\nWith the simple transport and virtual threads on, an executor of\n*.threads handlers is always supplied, which raises the effective\nconcurrency from THsHaServer\u0027s 5. The DRPC invocations port has no queue\nsize key, so this always applies there (5 -\u003e drpc.invocations.threads),\nand it also applies to any server whose *.queue.size was explicitly\nunset. Say so in the code comment and in the javadoc of\nstorm.virtual.threads.enabled instead of describing it as a rare case.\n\n* Correct the virtual threads caveats and make the jstack action dump virtual threads too\n\nThe javadoc advised raising the carrier scheduler parallelism for blocking\nfile I/O, but on JDK 25 the scheduler already compensates for that and\nsynchronized no longer pins. Describe what actually matters instead:\nnative frames still pin a carrier, virtual threads are not time sliced so\na CPU-heavy Nimbus call can delay cheap ones, and jstack and\nThread.getAllStackTraces() do not show virtual threads, which makes the\nthread dumps Storm logs itself blind for these pools.\n\nHave the jstack action of bin/flight.bash also write a jcmd\nThread.dump_to_file dump, which does include virtual threads.\n\n* Mention that the DRPCSpout background executor is also topology controlled\n\nDRPCSpout builds its thread factory from the conf passed to open(), so a\ntopology-level storm.virtual.threads.enabled affects that pool as well,\nnot only the worker shared executor.\n\n* Warn when storm.virtual.threads.enabled is a string other than true or false\n\nBoolean.parseBoolean silently mapped values such as \"yes\" or \"1\" to\nfalse, while only non-String types hit the warning. String values only\nreach the factory through storm.options, since daemon and topology confs\nare validated as boolean, so keep accepting strings but log the ones that\nare neither true nor false.\n\n* Bound the wait for the benchmark Thrift server to start\n\nThe loop waiting for isServing() spun forever if serve() threw. Capture a\nfailure from the serve thread and give up after 30 seconds or when the\nthread exits without serving.\n\n* Compute benchmark throughput over completed calls only\n\nThroughput divided clients * calls by the elapsed time, so a client that\nfailed part way still counted all of its calls, while the latency\npercentiles only used the calls that completed. Use the completed count\nfor both and report attempted, completed and failed clients separately.\n\n* Default the benchmark to a single mode per JVM\n\nThe javadoc recommends running each mode in its own JVM, but the default\n--mode was both, which runs them back to back sharing heap and JIT state.\nDefault to off, reject unknown modes, and describe both as a quick look\nonly.\n\n* Cover the no-queue-size handler path and the TLS transport in the virtual thread tests\n\nThe simple transport test meant to cover the path where no *.queue.size\nis configured, but withServer starts from readStormConfig(), which\ncarries nimbus.queue.size from defaults.yaml, so both simple transport\ntests ran the ArrayBlockingQueue branch. Unset the key explicitly so the\nLinkedBlockingQueue branch, the one the DRPC invocations port always\ntakes, is exercised.\n\nAdd a round trip through a TLS ThriftServer asserting the handler runs\non a virtual thread, which covers TThreadPoolServer with the TLS plugin.\nThe client is a plain Thrift client over a trust-only SSL socket because\nthe test certificate has no subject alternative name.\n\n* Test the worker shared executor through a real WorkerState\n\nThe previous tests called the static helper directly, so reverting\nmakeDefaultResources to read the daemon conf would still have passed.\nBuild a WorkerState with the flag only in the topology conf and take the\nexecutor from getDefaultSharedResources(), which fails if the wiring\nregresses. The helper no longer needs to be visible for testing.\n\n* Answer Object methods on the benchmark handler proxy for the proxy itself\n\nequals, hashCode and toString were forwarded to the captured in-flight\ncounter instead of the proxy.\n\n* Keep the original AsyncLocalizer thread names\n\nThe localizer threads were renamed from \"AsyncLocalizer Download Executor\n- 0\" to \"AsyncLocalizer-Download-Executor-0\", which breaks any external\nlog or metrics tooling matching the old literal. Have StormThreadFactory\nuse the given prefix verbatim so callers can reproduce an existing\nformat, and pass the original names for the localizer pools. The new\npools keep their \u003cprefix\u003e-\u003cn\u003e names.\n\n* Derive the Thrift handler thread name prefix from ThriftConnectionType\n\nThe three transport plugins built the same name from type.name() by\nhand. Expose it as getHandlerThreadNamePrefix() next to the other\nper-type values.\n\n* Accept a raw conf map in StormThreadFactory\n\nAssignmentDistributionService.prepare receives a raw Map and needed an\nunchecked cast to call the factory. Take Map\u003c?, ?\u003e instead, which only\nneeds get().\n\n* Note that virtual threads are always daemon threads\n\nThe platform branch of StormThreadFactory sets daemon(false), while\nThread.Builder.OfVirtual has no such option. The Nimbus and Supervisor\nshutdown hooks close the pools without joining their threads and rely on\nthe delayed force halt, so Storm itself does not depend on non-daemon\npool threads, but say so in the javadoc for anyone embedding the\ndaemons.\n\n* Collapse the handler thread type tests in AuthTest into one parameterized test\n\nThe four tests differed only in transport, extra conf and expected\nresult. One @ParameterizedTest with a case list keeps the no-queue-size,\nqueue-size, default and digest cases and the ReqContext principal check\nfor the authenticated transport.\n\n* Benchmark the SASL digest transport too and report the server thread estimate\n\nThe benchmark only covered the simple transport (THsHaServer), while the\nSASL and TLS transports secure clusters run use TThreadPoolServer with a\nthread per connection. Add --transport simple|digest; the digest mode\nwrites a throwaway JAAS file with a fixed user. Since every client holds\nits connection, and with it a handler thread, for the whole run, digest\nneeds --threads \u003e\u003d --clients and the benchmark rejects anything else\ninstead of timing out half the handshakes.\n\nPrint the server-side platform thread estimate (peak minus before minus\nclient threads) that the PR description quoted but the tool did not\noutput, and show the first client failure when there is one.\n\n* Throttle concurrent client connects in the benchmark\n\nWith hundreds of clients opening connections at the same instant the\nserver socket\u0027s default listen backlog overflows and part of the\nconnections are reset before the run starts, which showed up as failed\nclients in the digest runs at 500 and 2000 clients. Connection setup is\nnot what is measured, so limit concurrent connects to 16; calls still\nstart only once every client is connected.\n\n* Address minor changes\n\n* Wrap new code to the 100 column checkstyle limit\n\nReflow the javadoc and comments added by this change and split the few\nlong code lines so the lines this PR introduces produce no checkstyle\nwarnings. In the benchmark, parse and validate each option next to its\nfirst use and compute the effective queue size right before the report,\nwhich also clears the VariableDeclarationUsageDistance warnings; add the\nmissing javadoc on main. No behaviour change.\n\n* Limit storm.virtual.threads.enabled to the Thrift handler pools\n\nThe supervisor heartbeat, AsyncLocalizer, AssignmentDistributionService,\nworker shared executor and DRPCSpout background pools go back to platform\nthreads. Their saving is a handful of threads, while on virtual threads\nthey would vanish from Utils.threadDump(), which Storm logs when a slot\ngets stuck or before a forced halt.\n\nflight.bash now writes jcmd\u0027s own output of the thread dump as -jcmd.txt:\nthe .log suffix made the log cleaner treat it as an active log and kept\nit out of the logviewer dump list, which only shows .txt/.jfr/.bin."
    },
    {
      "commit": "406c592c00bd1223da1aaee09789b3e8f0ad8ada",
      "tree": "9c67e3c9a68b2db7d2e788293ef84a3e91157a43",
      "parents": [
        "30a2500f435c72d00909a0f378766a50a53cdf20"
      ],
      "author": {
        "name": "Mohit20057",
        "email": "mohit@ai-web-bridge",
        "time": "Sun Oct 25 22:24:52 2026 +0530"
      },
      "committer": {
        "name": "Mohit20057",
        "email": "mohit@ai-web-bridge",
        "time": "Sun Oct 25 22:24:52 2026 +0530"
      },
      "message": "Classify surviving deprecated storm-server, HDFS, and utility APIs (#8994)\n"
    },
    {
      "commit": "5305801797815446e39f982ef9c9399ffb429733",
      "tree": "4fa4060ec992643771da8b3059a28df01653a578",
      "parents": [
        "9e4796715c875724f51a3d1710ccb0fe960394a5"
      ],
      "author": {
        "name": "Mohit",
        "email": "mohitnehete6@gmail.com",
        "time": "Thu Oct 22 14:57:17 2026 +0530"
      },
      "committer": {
        "name": "Mohit20057",
        "email": "mohit@ai-web-bridge",
        "time": "Sun Oct 25 22:03:12 2026 +0530"
      },
      "message": "Update metrics_v2.md and add migration warnings for removed config keys (#8994)\n"
    },
    {
      "commit": "9e4796715c875724f51a3d1710ccb0fe960394a5",
      "tree": "9266d44f418ec03bdc5ef498123ef5ccc8a73eff",
      "parents": [
        "30a2500f435c72d00909a0f378766a50a53cdf20"
      ],
      "author": {
        "name": "Mohit",
        "email": "mohitnehete6@gmail.com.",
        "time": "Wed Oct 14 22:44:57 2026 +0530"
      },
      "committer": {
        "name": "Mohit20057",
        "email": "mohit@ai-web-bridge",
        "time": "Sun Oct 25 22:01:04 2026 +0530"
      },
      "message": "Remove obsolete deprecated client Config keys (#8994)\n"
    },
    {
      "commit": "82979929572466624bb109f86bd97c22ded450ff",
      "tree": "01d2497a7cfef6412bd8c85625e418a8ade2e1fd",
      "parents": [
        "30a2500f435c72d00909a0f378766a50a53cdf20"
      ],
      "author": {
        "name": "Mohit20057",
        "email": "mohit@ai-web-bridge",
        "time": "Sun Oct 25 21:56:32 2026 +0530"
      },
      "committer": {
        "name": "Mohit20057",
        "email": "mohit@ai-web-bridge",
        "time": "Sun Oct 25 21:56:32 2026 +0530"
      },
      "message": "Classify surviving deprecated storm-client APIs with forRemoval decisions (#8994)\n"
    },
    {
      "commit": "cfe510700095d8acccd843c7ccd09bead5b71b1c",
      "tree": "a395686c3db9239c0f75bc2d92628a1050e22ee5",
      "parents": [
        "3b7380c54f4b2448904e0f97895c6e5bc7f921a3"
      ],
      "author": {
        "name": "Mohit Nehete",
        "email": "mohitnehete6@gmail.com",
        "time": "Sun Oct 25 21:41:44 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 21:41:44 2026 +0530"
      },
      "message": "Update storm-client/src/jvm/org/apache/storm/cluster/IStormClusterState.java\n\nCo-authored-by: reiabreu \u003crui.abreu@gmail.com\u003e"
    },
    {
      "commit": "30a2500f435c72d00909a0f378766a50a53cdf20",
      "tree": "474051d1063b44d3f22ec47c78cbd2d4c04200d6",
      "parents": [
        "7964928167cdede819eee3bf323ac2c9d48d9560",
        "2eafcd8816e19d052f0c60492c49bb2865345037"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 15:36:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 15:36:29 2026 +0000"
      },
      "message": "Merge pull request #9189 from apache/release-notes-upgrade-notes\n\nPrint PR upgrade notes in the generated release notes"
    },
    {
      "commit": "2eafcd8816e19d052f0c60492c49bb2865345037",
      "tree": "8ea88eac95107d1ace163cd6c4a180c232fe91b6",
      "parents": [
        "8e2645070f9681c19988d59c3af74c0dbd1191d3"
      ],
      "author": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 13:00:28 2026 +0000"
      },
      "committer": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 13:00:28 2026 +0000"
      },
      "message": "Render upgrade notes as HTML instead of a pre block\n\nThe note is converted from Markdown with the markdown module, which is only\nimported when a pull request has a note. HTML in the note is shown as text,\nand link and image targets other than http(s), mailto and in-page are\nreplaced with \"#\".\n\nRefs #9188\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "8e2645070f9681c19988d59c3af74c0dbd1191d3",
      "tree": "dcc3202a2b6671b08ee2f5089f375ce2b0e3a36b",
      "parents": [
        "428bd59ba172d2730dff1d2dee8aef5eae86a8fc"
      ],
      "author": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 12:49:56 2026 +0000"
      },
      "committer": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 12:49:56 2026 +0000"
      },
      "message": "Tell authors to leave the upgrade notes section alone or delete it\n\nAn untouched or deleted section has the same effect, so the template hint\nsays so. The hint text in release_notes.py is updated to match.\n\nRefs #9188\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "428bd59ba172d2730dff1d2dee8aef5eae86a8fc",
      "tree": "2d7a3d0d8e2388be46276a808f460e8f49776fa4",
      "parents": [
        "d0d61be9d35d5e32cc1d2b867fd7b0871fb02cc8"
      ],
      "author": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 12:44:43 2026 +0000"
      },
      "committer": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sun Oct 25 12:44:43 2026 +0000"
      },
      "message": "Skip code fences and sub-headings in upgrade notes, escape titles\n\n- A note now ends at the next heading of the same or a higher level, and\n  lines inside fenced code blocks are not looked at, so sub-headings and\n  \"# comment\" lines no longer cut it off.\n- Only the exact hint text of the pull request template is dropped.\n- PR titles are HTML-escaped.\n\nRefs #9188\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "7964928167cdede819eee3bf323ac2c9d48d9560",
      "tree": "85b03d9851f59fe6fddc155e57ea496e8558a574",
      "parents": [
        "9c737f65fa2d0c4ad6ea5d6eb8a5eabddbb70171"
      ],
      "author": {
        "name": "Mohit Nehete",
        "email": "mohitnehete6@gmail.com",
        "time": "Sat Oct 24 19:36:01 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 16:06:01 2026 +0200"
      },
      "message": "Remove deprecated BlowfishTupleSerializer (#8994) (#9167)"
    },
    {
      "commit": "3b7380c54f4b2448904e0f97895c6e5bc7f921a3",
      "tree": "4b4e9d71bc4274a7ef747d3d5a5237141dde4f61",
      "parents": [
        "a246bb86c3773aa0c7e19ca382f1aa4209b5649a"
      ],
      "author": {
        "name": "Mohit",
        "email": "mohitnehete6@gmail.com",
        "time": "Thu Oct 22 14:59:49 2026 +0530"
      },
      "committer": {
        "name": "Mohit",
        "email": "mohitnehete6@gmail.com",
        "time": "Sat Oct 24 12:04:36 2026 +0530"
      },
      "message": "Add warning when topology.backpressure.enable is set (#8994)\n"
    },
    {
      "commit": "a246bb86c3773aa0c7e19ca382f1aa4209b5649a",
      "tree": "3e442fcae614b0aa98e8326d7d44e57798eac818",
      "parents": [
        "9c737f65fa2d0c4ad6ea5d6eb8a5eabddbb70171"
      ],
      "author": {
        "name": "Mohit",
        "email": "mohitnehete6@gmail.com.",
        "time": "Wed Oct 14 22:19:15 2026 +0530"
      },
      "committer": {
        "name": "Mohit",
        "email": "mohitnehete6@gmail.com",
        "time": "Sat Oct 24 12:03:01 2026 +0530"
      },
      "message": "Remove legacy ZooKeeper backpressure cluster state methods (#8994)\n"
    },
    {
      "commit": "d0d61be9d35d5e32cc1d2b867fd7b0871fb02cc8",
      "tree": "d7dac91e6d5d3c598d780c855d7bedd77c9100c1",
      "parents": [
        "9c737f65fa2d0c4ad6ea5d6eb8a5eabddbb70171"
      ],
      "author": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sat Oct 24 01:38:24 2026 +0100"
      },
      "committer": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sat Oct 24 01:38:24 2026 +0100"
      },
      "message": "Print PR upgrade notes in the generated release notes\n\nrelease_notes.py now adds an \"Upgrade notes\" section with the text under an\n\"Upgrade notes\" heading in the description of each PR in the milestone. The PR\ntemplate gets that optional heading. Output is unchanged when no PR has one.\n\nRefs #9188\n\nCo-Authored-By: Claude Sonnet 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "9c737f65fa2d0c4ad6ea5d6eb8a5eabddbb70171",
      "tree": "b19d66682a0d170a1479974bf703fa12fd1c5f99",
      "parents": [
        "b9f9b182a92c6fb333160fa088533e489f8b3645",
        "4705aadde9a88739aea4e651e173a1f5d420c467"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sat Oct 24 01:18:33 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 01:18:33 2026 +0100"
      },
      "message": "Merge pull request #9184 from sercuzz8/checkstyle-fix/storm-client-39331264304-1\n\nCheckstyle auto-fix of storm-client"
    },
    {
      "commit": "4705aadde9a88739aea4e651e173a1f5d420c467",
      "tree": "b19d66682a0d170a1479974bf703fa12fd1c5f99",
      "parents": [
        "a2c891a90d45dad2ad4b3d97e71a1ce190f6c93a",
        "b9f9b182a92c6fb333160fa088533e489f8b3645"
      ],
      "author": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sat Oct 24 00:43:06 2026 +0100"
      },
      "committer": {
        "name": "Rui Abreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sat Oct 24 00:43:06 2026 +0100"
      },
      "message": "Merge master into checkstyle-fix/storm-client-39331264304-1\n"
    },
    {
      "commit": "b9f9b182a92c6fb333160fa088533e489f8b3645",
      "tree": "88ea85e50a986f011e955c054444319f2630b55e",
      "parents": [
        "aedb629289026c96edde8c39f16e35bc91c8a198"
      ],
      "author": {
        "name": "ErnestasVaiciukeviciusAdform",
        "email": "ernestas.vaiciukevicius@adform.com",
        "time": "Fri Oct 23 20:59:02 2026 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 19:59:02 2026 +0200"
      },
      "message": "Deliver upstream feedback to remote tasks and stop spurious \"No remote destination available\" warnings (#9175)\n\n* Deliver upstream feedback to remote tasks and stop spurious \"No remote destination available\" warnings\n\nWhen topology.upstream.feedback.enable is true, feedback tuples are routed\ndirectly to upstream (source) component tasks, but a worker\u0027s routable remote\ndestinations (cachedTaskToNodePort) and connections are built only from\noutboundTasks, which contained just the downstream-target components of local\ntasks. Feedback recipients were therefore missing, so TransferDrainer logged\n\"No remote destination available for task\" and silently dropped the tuple;\ncross-worker feedback was never delivered. Whether the warning appeared depended\non task placement, which was misleading.\n\nInclude the non-system source (upstream) components of local tasks in\noutboundTasks when feedback is enabled, mirroring Executor.computeUpstreamTaskIds\nat worker granularity, so feedback recipients are routable and connected.\n\nCo-authored-by: Copilot \u003c223556219+Copilot@users.noreply.github.com\u003e\n\n* Remove unnecessary test, cleanup comments\n\n* Upstream feedback setup: use topologyConf and exclude system components\n\n* Enhance WorkerOutboundTasksTest: add tests for feedback routing and acker task behavior\n\n* Refactor WorkerState test utilities: enhance getWorkerState method and add feedback configuration tests\n\n* Apply suggestions from compiler warnings\n\n* Move testTopologyConfigEnabledFeedback/testTopologyConfigDisabledFeedback to WorkerOutboundTasksTest\n\n* Improve testTopologyConfigDisabledFeedback testcase\n\n* Refactor NoopSpout and NoopBolt classes: remove unnecessary interface implementations and simplify method signatures\n\n* Enhance documentation for upstream feedback: clarify connection overhead and security implications in Config.java and Performance.md\n\n* WorkerOutboundTasksTest: made test naming consistent\n\n* New test cases for sink-only worker, with/without ackers\n\n* Extracted common logic of upstream components for feedback from WorkerState and Executor into StormCommon.upstreamFeedbackSourceComponents\n\n---------\n\nCo-authored-by: Copilot \u003c223556219+Copilot@users.noreply.github.com\u003e"
    },
    {
      "commit": "aedb629289026c96edde8c39f16e35bc91c8a198",
      "tree": "cbd3639979626c3e801019d5e80ae406238135c8",
      "parents": [
        "2c71e6527548cee1bcce1f104d493118dfc9eb54"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Fri Oct 23 19:43:17 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 19:43:17 2026 +0200"
      },
      "message": "Serve only worker files that resolve inside the log root (#9182)\n\n* Serve only worker files that resolve inside the log root\n\nThe Logviewer no longer follows symbolic links below the worker log root\nfor downloads, log pages, searches and dump files. Worker files must be\ndirect children of a port directory; links are answered like missing files\nand are left out of file listings. Link-free paths and a linked log root\nkeep working, and daemon logs are unchanged.\n\n* Leave symbolic links out of the log list and answer a late link like a missing file\n\nThe log list and getAllLogsForRootDir leave out topology, port and file links.\nA worker file that turns into a link between the check and the open is answered\nlike a missing file instead of a read error, and the daemon log page takes its\nlength from the opened file like the worker log page does.\n\n* Answer a file removed before the open like a missing file and drop unused helpers\n\nA log or dump file removed between the check and the open is answered with 404 and not counted as an error.\nOnly numeric ports name a dump directory; the unused file based download helper is removed and zipFileSize is deprecated.\n\n* Close downloaded files and check port directories in deep search and dump listing\n\nDeep search and the dump file listing now leave out port directories that\nare reached through a symbolic link, like the log listing already does.\nWorker files are opened through LogFilePaths.openWorkerFile, which checks\nthe file before opening it. The download stream is closed once it has been\nwritten. The port of a host:port is the part after the last \u0027:\u0027, so IPv6\nhosts work. Tests creating symbolic links are skipped where links can not\nbe created."
    },
    {
      "commit": "2c71e6527548cee1bcce1f104d493118dfc9eb54",
      "tree": "184174f9f9ad1af246893efb5c31b1750a469f20",
      "parents": [
        "b1af9b3b6c7d158a9798c3760a9388317eacdd9a"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Fri Oct 23 19:43:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 19:43:01 2026 +0200"
      },
      "message": "Apply the impersonation authorizer to DRPC requests (#9183)\n\n* Apply the impersonation authorizer to DRPC requests\n\nDRPC now checks nimbus.impersonation.authorizer for requests made on\nbehalf of another user, like Nimbus and the UI already do. The HTTP\nrequest context now carries the remote address so host lists in\nnimbus.impersonation.acl apply there too. Behaviour without an\nimpersonation authorizer is unchanged.\n\n* Handle doAsUser without an authenticated user in DRPC\n\nMake SingleUserPrincipal equality null-safe so such requests are treated\nas impersonation, and deny them in ImpersonationAuthorizer and the UI.\nCheck host addresses before names, reduce per-request INFO logging, name\nthe DRPC function in denials and document reverse proxy behaviour.\n\n* Deny doAsUser without an authenticated user in DRPC\n\nDRPC now rejects a request that sets doAsUser without an authenticated user,\nwhether or not an impersonation authorizer is configured. Update tests and docs.\n\n* Parse the remote address as a literal and reject anonymous doAsUser before Nimbus\n\nReqContextFilter uses InetAddress.ofLiteral, so a remote address that is\nnot an IP literal can never cause a name lookup. The UI rejects doAsUser\nwithout an authenticated user before it fetches the topology conf, so such\na request costs no call to Nimbus."
    },
    {
      "commit": "b1af9b3b6c7d158a9798c3760a9388317eacdd9a",
      "tree": "4f555537a346566902a3b79272969ebfb2a4e5ab",
      "parents": [
        "4a4d17bb86d6564fd0db4d4be0ad27725ce42247",
        "38d79a257729be3fb006a49e40a14fcce347a477"
      ],
      "author": {
        "name": "Julien Nioche",
        "email": "julien@digitalpebble.com",
        "time": "Fri Oct 23 07:16:51 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 07:16:51 2026 +0100"
      },
      "message": "Merge pull request #9186 from sharanggupta/restore-lost-test-annotations\n\nRestore two test annotations lost in the JUnit 5 migration"
    },
    {
      "commit": "a2c891a90d45dad2ad4b3d97e71a1ce190f6c93a",
      "tree": "651125bcd33e52cc32d72dbc04c18e4e7dd48f8b",
      "parents": [
        "4a4d17bb86d6564fd0db4d4be0ad27725ce42247"
      ],
      "author": {
        "name": "github-actions[bot]",
        "email": "41898282+github-actions[bot]@users.noreply.github.com",
        "time": "Mon Oct 19 21:59:22 2026 +0000"
      },
      "committer": {
        "name": "Richard Zowalla",
        "email": "rzo1@apache.org",
        "time": "Thu Oct 22 21:38:04 2026 +0200"
      },
      "message": "Checkstyle auto-fix of storm-client\n"
    },
    {
      "commit": "38d79a257729be3fb006a49e40a14fcce347a477",
      "tree": "4f555537a346566902a3b79272969ebfb2a4e5ab",
      "parents": [
        "4a4d17bb86d6564fd0db4d4be0ad27725ce42247"
      ],
      "author": {
        "name": "Sharang Gupta",
        "email": "sharang@sharanggupta.dev",
        "time": "Wed Oct 21 20:52:11 2026 +0100"
      },
      "committer": {
        "name": "Richard Zowalla",
        "email": "rzo1@apache.org",
        "time": "Thu Oct 22 21:38:00 2026 +0200"
      },
      "message": "Restore two test annotations lost in the JUnit 5 migration\n\nThe STORM-3832 migration replaced @Test(expected \u003d IllegalArgumentException.class)\nwith assertThrows in TCKTest.testInvalidTopologySource and the storm-hdfs bolt\nTestSimpleFileNameFormat.testTimeFormat, but dropped the @Test annotation, so\nneither test has run since.\n\nAdd @Test back to both. In testTimeFormat the exception comes from\nwithTimeFormat, not prepare, so move that call into assertThrows, as the\ntrident TestSimpleFileNameFormat already does.\n"
    },
    {
      "commit": "4a4d17bb86d6564fd0db4d4be0ad27725ce42247",
      "tree": "4019c1d7b3832a0ee496284a4fb8d3f45f0c9501",
      "parents": [
        "d93c7cbf393943ed385797cce475c0439017d937"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Thu Oct 22 21:34:31 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 21:34:31 2026 +0200"
      },
      "message": "Fix the worker-launcher build with gcc 15 and glibc 2.43 (#9187)\n\n* Fix the worker-launcher build with gcc 15 and glibc 2.43\n\nglibc 2.43 makes strrchr return a const pointer for a const argument in\nC23, which -Werror turns into a build failure in oci.c. Also check the\nreturn values of setuid/setgid, replace length-bounded strncpy calls with\nmemcpy and initialize the overlay descriptor before the first goto, so the\nlauncher and its test also build cleanly with -O2.\n\n* Clarify the launcher errors and the test cleanup message\n\nDescribe the required owner, group and mode when setuid(0) fails, print the\ngroup id as unsigned, and report a failed test directory cleanup as a warning."
    },
    {
      "commit": "d93c7cbf393943ed385797cce475c0439017d937",
      "tree": "18031476496a9277aa6120e3c68d54b1d7fbb674",
      "parents": [
        "3e933c55322745b52732dfa65ddb438f08b1629d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 22 09:32:35 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 09:32:35 2026 +0200"
      },
      "message": "build(deps-dev): bump follow-redirects in /storm-webapp (#9185)\n\nBumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.16.0 to 1.16.1.\n- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)\n- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.16.0...v1.16.1)\n\n---\nupdated-dependencies:\n- dependency-name: follow-redirects\n  dependency-version: 1.16.1\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3e933c55322745b52732dfa65ddb438f08b1629d",
      "tree": "64e8848abe0e0a53c10c62906555a8b56a043e3e",
      "parents": [
        "7fd101352c06f743256fd682fc259862e2a5ab06",
        "ccebfb16ef6fcf781bfbe16455a55501fea8d1f3"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Mon Oct 19 06:41:08 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 06:41:08 2026 +0100"
      },
      "message": "Merge pull request #9178 from sercuzz8/checkstyle-autofix-indentation\n\nFix the indentation the checkstyle auto-fix gets wrong"
    },
    {
      "commit": "7fd101352c06f743256fd682fc259862e2a5ab06",
      "tree": "1db058c48634276703d5bce496c770ef0e8244b3",
      "parents": [
        "5536f46bfbd5f27e8120f4e3b33481a64fa140d3",
        "7af5b85c346c8519d2cb4107b96cc8b4135ad324"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Mon Oct 19 06:38:26 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 06:38:26 2026 +0100"
      },
      "message": "Merge pull request #9180 from apache/dependabot/github_actions/actions/setup-java-6.1.0\n\nbuild(deps): bump actions/setup-java from 6.0.1 to 6.1.0"
    },
    {
      "commit": "5536f46bfbd5f27e8120f4e3b33481a64fa140d3",
      "tree": "451aa8e3b17f877434b6ffcad3cf695cb1f33d67",
      "parents": [
        "01dff05146edcc8bd428bab1d55d798f5917bfe9",
        "2e36995c98350a8ce04ef9a30b81e9ab2aeb8cb9"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Mon Oct 19 06:37:42 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 06:37:42 2026 +0100"
      },
      "message": "Merge pull request #9179 from apache/dependabot/github_actions/actions/upload-artifact-7.0.2\n\nbuild(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2"
    },
    {
      "commit": "01dff05146edcc8bd428bab1d55d798f5917bfe9",
      "tree": "ca562c27d92be689c608929f6321ea21d04fb999",
      "parents": [
        "015b6ba6a8817664529b106ce05064d3dbae3c63",
        "5d38707d47103a0df5fb3bc5b60fe592b798f3f5"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Mon Oct 19 06:36:03 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 06:36:03 2026 +0100"
      },
      "message": "Merge pull request #9181 from apache/dependabot/github_actions/burnett01/rsync-deployments-9.0.2\n\nbuild(deps): bump burnett01/rsync-deployments from 9.0.1 to 9.0.2"
    },
    {
      "commit": "5d38707d47103a0df5fb3bc5b60fe592b798f3f5",
      "tree": "ca562c27d92be689c608929f6321ea21d04fb999",
      "parents": [
        "015b6ba6a8817664529b106ce05064d3dbae3c63"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 19 04:52:20 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 04:52:20 2026 +0000"
      },
      "message": "build(deps): bump burnett01/rsync-deployments from 9.0.1 to 9.0.2\n\nBumps [burnett01/rsync-deployments](https://github.com/burnett01/rsync-deployments) from 9.0.1 to 9.0.2.\n- [Release notes](https://github.com/burnett01/rsync-deployments/releases)\n- [Commits](https://github.com/burnett01/rsync-deployments/compare/155b6d6c1219ab2224c20c58d423a3f1b850395f...2cbb5ed94b73d111d07a40b071b1c7d3c0272435)\n\n---\nupdated-dependencies:\n- dependency-name: burnett01/rsync-deployments\n  dependency-version: 9.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "7af5b85c346c8519d2cb4107b96cc8b4135ad324",
      "tree": "660d12e56445b8e585109bed66d4a180a534644b",
      "parents": [
        "015b6ba6a8817664529b106ce05064d3dbae3c63"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 19 04:51:46 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 04:51:46 2026 +0000"
      },
      "message": "build(deps): bump actions/setup-java from 6.0.1 to 6.1.0\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 6.0.1 to 6.1.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/de7274f081f381c8f8158605e0321c36c376e2e6...b843ebf9b913146b38da2eaa7aeddf76074ae1ad)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "2e36995c98350a8ce04ef9a30b81e9ab2aeb8cb9",
      "tree": "765217f873afa737e0433f833887ed2d3c247933",
      "parents": [
        "015b6ba6a8817664529b106ce05064d3dbae3c63"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 19 04:49:47 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 04:49:47 2026 +0000"
      },
      "message": "build(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v7.0.1...cf430e030ddbb5b0abf93d22962f4752f3646cd9)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: 7.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "015b6ba6a8817664529b106ce05064d3dbae3c63",
      "tree": "a4f6a94b40e05d754a30ceaaa782bf2a85350d3f",
      "parents": [
        "ae671a50dec2ac688c8f0fee89ef25dc1f130ea0"
      ],
      "author": {
        "name": "Mohit Nehete",
        "email": "mohitnehete6@gmail.com",
        "time": "Mon Oct 19 00:37:32 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 21:07:32 2026 +0200"
      },
      "message": "Remove deprecated NIMBUS_SUPERVISOR_TIMEOUT_SECS and defaults entry (#8994) (#9170)"
    },
    {
      "commit": "ccebfb16ef6fcf781bfbe16455a55501fea8d1f3",
      "tree": "8f60f87d5232dae35b33f01d000d7712a2139d49",
      "parents": [
        "be45c93b48f8ad05a06bb12f2af68dc5b944b5a1"
      ],
      "author": {
        "name": "sercuzz8",
        "email": "cuzzucolisergio@gmail.com",
        "time": "Sun Oct 18 20:14:10 2026 +0200"
      },
      "committer": {
        "name": "sercuzz8",
        "email": "cuzzucolisergio@gmail.com",
        "time": "Sun Oct 18 20:44:21 2026 +0200"
      },
      "message": "Fix the indentation the checkstyle auto-fix gets wrong\n\nOpenRewrite\u0027s TabsAndIndents re-indent pass puts array initializer elements at the\ncontinuation indent and misplaces the bodies of some anonymous classes and enum constants,\nwhich Checkstyle\u0027s Indentation check rejects (27 errors on storm-client). Replace that pass\nwith the checkstyle-autofix-indentation execution, which runs the Groovy stage again with only\nnew Indentation and CommentsIndentation fixers. They move each reported line (and the rest of\na reported declaration header, or a whole block comment) to the level Checkstyle\u0027s message\nexpects. The auto-fix still runs three passes.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "ae671a50dec2ac688c8f0fee89ef25dc1f130ea0",
      "tree": "009c4ee865da0baa4d5b0b4f4447dcd74bac5e13",
      "parents": [
        "512b7382cb2a87319a51f7f257c37353e49916a8"
      ],
      "author": {
        "name": "sergio",
        "email": "37807516+sercuzz8@users.noreply.github.com",
        "time": "Sun Oct 18 20:15:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 20:15:12 2026 +0200"
      },
      "message": "Checkstyle auto-fix of external/storm-metrics (#9177)\n\nCo-authored-by: github-actions[bot] \u003c41898282+github-actions[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "512b7382cb2a87319a51f7f257c37353e49916a8",
      "tree": "d1baa7c4deceb15e8ac385e793ef20e56be7a226",
      "parents": [
        "be45c93b48f8ad05a06bb12f2af68dc5b944b5a1"
      ],
      "author": {
        "name": "github-actions[bot]",
        "email": "41898282+github-actions[bot]@users.noreply.github.com",
        "time": "Sun Oct 18 20:14:23 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 20:14:23 2026 +0200"
      },
      "message": "Checkstyle auto-fix of examples/storm-perf (#9176)\n\nCo-authored-by: github-actions[bot] \u003c41898282+github-actions[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "be45c93b48f8ad05a06bb12f2af68dc5b944b5a1",
      "tree": "55430f2b9457ddec892b5831bb3abe07aea77b4b",
      "parents": [
        "807939a63b51d4ec9cee1945a491dedf665d6bef"
      ],
      "author": {
        "name": "sergio",
        "email": "37807516+sercuzz8@users.noreply.github.com",
        "time": "Sun Oct 18 15:20:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 18 15:20:51 2026 +0200"
      },
      "message": "Add checkstyle auto-fix tooling (#9017)\n\n* Add OpenRewrite + Groovy checkstyle auto-fix tooling (run on demand)\n\nOpenRewrite is preferred: everything it has a recipe for (fully or partly) runs\nthere, driven by a style in rewrite.yml that mirrors storm_checkstyle.xml. The\nGroovy script only keeps the rules with no recipe (LineLength, OneStatementPerLine,\nSeparatorWrap, Javadoc rules, member ordering, trivial text rules). A second\nOpenRewrite execution re-indents after the Groovy stage. A Groovy script normalizes\nlicense headers to the ASF template, leaving third-party works alone.\n\nWired into the root and module poms without binding it to validate.\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n\n* Add a workflow_dispatch GitHub Action to run the checkstyle auto-fix per module\n\nTakes the module as input, runs OpenRewrite, the Groovy stage and the re-indent\npass plus the license header normalization on it, and pushes the result to\ncheckstyle-fix/\u003cmodule\u003e so one pull request per module can be opened against master.\n\n---------\n\nCo-authored-by: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "807939a63b51d4ec9cee1945a491dedf665d6bef",
      "tree": "7268efe35bcb2e386d3bf047dabcd87b1ae29547",
      "parents": [
        "1b39f116c5fe4fe624a515747171f5d09f862afa"
      ],
      "author": {
        "name": "Mohit Nehete",
        "email": "mohitnehete6@gmail.com",
        "time": "Sun Oct 18 02:24:05 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 22:54:05 2026 +0200"
      },
      "message": "Formally mark Pacemaker subsystem and configs for removal (#9171)"
    },
    {
      "commit": "1b39f116c5fe4fe624a515747171f5d09f862afa",
      "tree": "1773b1572274f0ce9253c966555c3294d8866383",
      "parents": [
        "4fe5a57f4d9c2caff633caf24fdf79536aceb4a3",
        "bb8b63677daeda6defb4bf954a8bffb014ccbcfa"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sat Oct 17 16:19:14 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 16:19:14 2026 +0100"
      },
      "message": "Merge pull request #9163 from apache/dependabot/npm_and_yarn/storm-webapp/source-map-js-1.2.2\n\nbuild(deps): bump source-map-js from 1.2.1 to 1.2.2 in /storm-webapp"
    },
    {
      "commit": "4fe5a57f4d9c2caff633caf24fdf79536aceb4a3",
      "tree": "d090965c74159029652ee63b480c04295a15b0a8",
      "parents": [
        "69f7bfe14a976ee763875831b4b2f8c31e3181b2"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Fri Oct 16 19:11:50 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 19:11:50 2026 +0200"
      },
      "message": "build(deps-dev): bump proxy-addr from 2.0.7 to 2.0.8 in /storm-webapp (#9165)\n\nBumps [proxy-addr](https://github.com/jshttp/proxy-addr) from 2.0.7 to 2.0.8.\n- [Release notes](https://github.com/jshttp/proxy-addr/releases)\n- [Changelog](https://github.com/jshttp/proxy-addr/blob/master/HISTORY.md)\n- [Commits](https://github.com/jshttp/proxy-addr/compare/v2.0.7...v2.0.8)\n\n---\nupdated-dependencies:\n- dependency-name: proxy-addr\n  dependency-version: 2.0.8\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "69f7bfe14a976ee763875831b4b2f8c31e3181b2",
      "tree": "22d531546ab3d2c8326c65aecc64089314ad8c3a",
      "parents": [
        "a0d9915b42ffd6c3e3dbb32f3484aad668383b9e"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Fri Oct 16 19:10:42 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 19:10:42 2026 +0200"
      },
      "message": "Make strict deserialization mode fatal for IOException-wrapped failures (#9159)\n\n* Make strict deserialization mode fatal for IOException-wrapped failures\n\nWith topology.tuple.deserialization.strict.enable set, a decode failure is\nrethrown from DeserializingConnectionCallback.recv and reaches\nStormServerHandler.exceptionCaught, which swallows anything with an\nIOException in its cause chain. Failures from a corrupt or oversized\ncompressed frame wrap an IOException, so they closed the connection and\ndropped the batch instead of terminating the worker.\n\nStrict-mode failures are now wrapped in FatalDeserializationException, and\nStormServerHandler does not apply the IOException exemption to it. Genuine\nconnection errors keep the existing handling.\n\nFixes #9157\n\n* Handle strict deserialization failures directly in exceptionCaught\n\nFatalDeserializationException is now checked at the top of\nStormServerHandler.exceptionCaught instead of going through an empty\nallowed-exception set and the catch (Error) block.\n\nThe worker is terminated from a separate thread. Calling exit() on the\nnetty event loop thread blocks forever, because the worker shutdown hook\ncloses the netty server and waits for that same event loop to finish.\n\nThe tests now call exceptionCaught itself, with the terminator injected.\n\n* Address the review comments, moving reusable helper methods into Utils\n\n---------\n\nCo-authored-by: Gianluca Graziadei \u003cgraziadei.gianluca@gmail.com\u003e"
    },
    {
      "commit": "a0d9915b42ffd6c3e3dbb32f3484aad668383b9e",
      "tree": "4bc8dae2d14924ea9c0a28e9fc0d0104b86b06c3",
      "parents": [
        "e55b322c44f9e52f3e8d79bff370fc78062b6fb7",
        "b03f38f54c70caa734b997458c693257df9596e2"
      ],
      "author": {
        "name": "Julien Nioche",
        "email": "julien@digitalpebble.com",
        "time": "Wed Oct 14 11:36:05 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 11:36:05 2026 +0100"
      },
      "message": "Merge pull request #9158 from apache/prometheus-reporter\n\nAdd a Prometheus reporter for the V2 topology metrics"
    },
    {
      "commit": "e55b322c44f9e52f3e8d79bff370fc78062b6fb7",
      "tree": "667ebd62e2a6260e7e63a46bcaf78a51bb502bb7",
      "parents": [
        "77dfd0620502019fc57a101fa122ae727370e946"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 13 19:13:46 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 19:13:46 2026 +0200"
      },
      "message": "build(deps-dev): bump joi from 18.2.5 to 18.2.9 in /storm-webapp (#9166)\n\nBumps [joi](https://github.com/hapijs/joi) from 18.2.5 to 18.2.9.\n- [Commits](https://github.com/hapijs/joi/compare/v18.2.5...v18.2.9)\n\n---\nupdated-dependencies:\n- dependency-name: joi\n  dependency-version: 18.2.9\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "77dfd0620502019fc57a101fa122ae727370e946",
      "tree": "6c45be9fc6450e323bf70b4ece9e71b594209663",
      "parents": [
        "04e59031b85a09267ea5f97ea875f2967b7ce048"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 13 19:10:09 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 19:10:09 2026 +0200"
      },
      "message": "build(deps): bump postcss-selector-parser in /storm-webapp (#9164)\n\nBumps [postcss-selector-parser](https://github.com/postcss/postcss-selector-parser) from 7.1.5 to 7.1.6.\n- [Release notes](https://github.com/postcss/postcss-selector-parser/releases)\n- [Changelog](https://github.com/postcss/postcss-selector-parser/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/postcss/postcss-selector-parser/compare/7.1.5...7.1.6)\n\n---\nupdated-dependencies:\n- dependency-name: postcss-selector-parser\n  dependency-version: 7.1.6\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "04e59031b85a09267ea5f97ea875f2967b7ce048",
      "tree": "e21d249152177c2e4d89217588c6ce5b57b85680",
      "parents": [
        "726ff59afcfc0ed6130fcc793a21d5b4c22a3f1f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 13 01:07:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 01:07:58 2026 +0200"
      },
      "message": "build(deps): bump actions/setup-node from 7.0.0 to 7.1.0 (#9160)\n\nBumps [actions/setup-node](https://github.com/actions/setup-node) from 7.0.0 to 7.1.0.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/820762786026740c76f36085b0efc47a31fe5020...949feb2413d6458794dcd2491c4babbbce0c15c1)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: 7.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "bb8b63677daeda6defb4bf954a8bffb014ccbcfa",
      "tree": "42d28a47780cc783f84dcb94cc9f215691f161c5",
      "parents": [
        "726ff59afcfc0ed6130fcc793a21d5b4c22a3f1f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Oct 12 23:07:35 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 23:07:35 2026 +0000"
      },
      "message": "build(deps): bump source-map-js from 1.2.1 to 1.2.2 in /storm-webapp\n\nBumps [source-map-js](https://github.com/7rulnik/source-map-js) from 1.2.1 to 1.2.2.\n- [Release notes](https://github.com/7rulnik/source-map-js/releases)\n- [Changelog](https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2)\n\n---\nupdated-dependencies:\n- dependency-name: source-map-js\n  dependency-version: 1.2.2\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "726ff59afcfc0ed6130fcc793a21d5b4c22a3f1f",
      "tree": "eba2120ca1e4dc8b072127122eb489c464667af0",
      "parents": [
        "9d5b266cbdaac49de30ddbc5fd615e714a941bc1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 13 01:06:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 01:06:49 2026 +0200"
      },
      "message": "build(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 (#9161)\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a...cf430e030ddbb5b0abf93d22962f4752f3646cd9)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: 7.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9d5b266cbdaac49de30ddbc5fd615e714a941bc1",
      "tree": "e21c5eba79a3fad1434a9e82e2ea18beed646b02",
      "parents": [
        "118240016a3f555db35710a5b5bb41b834673ef6"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Oct 13 01:06:30 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 01:06:30 2026 +0200"
      },
      "message": "build(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 (#9162)\n\nBumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.1 to 8.0.2.\n- [Release notes](https://github.com/actions/download-artifact/releases)\n- [Commits](https://github.com/actions/download-artifact/compare/3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c...9000827ccba6bdab643e8b6fd33ac0654aef8333)\n\n---\nupdated-dependencies:\n- dependency-name: actions/download-artifact\n  dependency-version: 8.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b03f38f54c70caa734b997458c693257df9596e2",
      "tree": "128b6a91954e3c3103fc6dec00f96f848b30d6fd",
      "parents": [
        "329d3f0b73b2b82f09e8efe63c67185eb576f39e"
      ],
      "author": {
        "name": "Julien Nioche",
        "email": "julien@digitalpebble.com",
        "time": "Mon Oct 12 12:06:50 2026 +0100"
      },
      "committer": {
        "name": "Julien Nioche",
        "email": "julien@digitalpebble.com",
        "time": "Mon Oct 12 12:06:50 2026 +0100"
      },
      "message": "Address review comments on the Prometheus reporter\n\n- Convert counters and meters before gauges, and skip the .m1_rate gauge\n  of any RateCounter, not only those in Storm\u0027s namespace\n- Suffix every type when metrics of different types map to the same\n  family, so that nothing is dropped and the result does not depend on\n  the order in which tasks are reported\n- Turn the remote host and port of the Netty client gauges into labels\n- Catch IllegalArgumentException when starting the endpoint so that an\n  out of range port does not kill the worker\n- Warn when an explicit port is used under a supervisor, and when a\n  reporter sharing an endpoint has different host or jvm.metrics settings\n- Register the JVM metrics once per JVM to avoid leaking a registry and\n  a GC listener every time an endpoint is recreated\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "118240016a3f555db35710a5b5bb41b834673ef6",
      "tree": "7a3d82945bd0e2c7a7595f30b19f5523d3bfc319",
      "parents": [
        "8453c7a8e497108d2c3adcd71c4f45a98be653e1"
      ],
      "author": {
        "name": "L1nq",
        "email": "cryp71csec@gmail.com",
        "time": "Mon Oct 12 01:36:37 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 11 19:36:37 2026 +0200"
      },
      "message": "Throw a typed exception for tuples with unknown task or stream ids and add a deserialization strict mode (#9094)\n\n* Throw a typed exception for tuples with unknown task or stream ids and add a deserialization strict mode\n\n* Make TupleDeserializationException extend IllegalArgumentException and document the strict mode\n\nThe exception thrown for unknown task or stream ids now extends\nIllegalArgumentException, so handlers written against 3.1.0 keep matching,\nand it gains a (String, Throwable) constructor. The strict mode flag is\ndocumented in Serialization.md and Metrics.md, and the config javadoc spells\nout that a persistent bad frame puts the worker in a restart loop. The\nunknown-stream test no longer pins the exact message text and the strict\nmode is now covered for the typed exception as well.\n\n* Return null for unknown components in IdDictionary and document the strict-mode boundary for IOException-wrapped failures\n\nThe tolerated-failures set matches TupleDeserializationException through its\nIllegalArgumentException supertype, so the explicit entry and the unused\ntwo-argument constructor are removed. IdDictionary.getStreamName returns null\nwhen the component is unknown, so both unresolved-routing cases reach the typed\nexception instead of a NullPointerException that stays fatal in default mode.\nThe strict-mode documentation now separates the two outcomes: decode failures\nexit the worker, while failures wrapping an IOException close the connection and\ndrop the batch with the worker kept running. The unknown-stream test derives its\nid from the declared stream count instead of a hardcoded constant."
    },
    {
      "commit": "329d3f0b73b2b82f09e8efe63c67185eb576f39e",
      "tree": "5ffb0823e2dd34387c461529695bf3c603fd8099",
      "parents": [
        "8453c7a8e497108d2c3adcd71c4f45a98be653e1"
      ],
      "author": {
        "name": "Julien Nioche",
        "email": "julien@digitalpebble.com",
        "time": "Sun Oct 11 17:53:24 2026 +0100"
      },
      "committer": {
        "name": "Julien Nioche",
        "email": "julien@digitalpebble.com",
        "time": "Sun Oct 11 17:53:24 2026 +0100"
      },
      "message": "Add a Prometheus reporter for the V2 topology metrics\n\nStorm ships Console, CSV, JMX and Graphite reporters for the V2 metrics,\nand storm-metrics-prometheus only pushes the cluster metrics to a\nPushgateway. With JMX or Graphite the task dimensions end up flattened in\nthe metric names and have to be mapped back to labels with regular\nexpressions.\n\nPrometheusStormReporter is a StormReporter which serves the metrics of\neach worker over HTTP for Prometheus to scrape. It reads the metrics of\neach task from the MetricRegistryProvider, so the dimensions become the\nlabels topology, host, port, component, task and stream, and a metric\nreported by several tasks ends up in a single family:\n- a scoped metric such as fetcher_counter.status_200 becomes\n  fetcher_counter with scope\u003d\"status_200\"\n- a gauge whose value is a map, such as status.count, becomes\n  status_count with a key label per entry\n- Storm\u0027s own metrics such as __ack-count-spout:default become\n  storm_ack_count with source_component and stream labels; the .m1_rate\n  gauges registered next to Storm\u0027s counters are skipped\n\nCounters and meters are exposed as counters, histograms and timers as\nsummaries with a _max and a _mean gauge, timers in seconds.\n\nEach worker listens on its port plus port.offset (1000 by default),\nusing the worker.port system property set by the supervisor. In local\nmode the workers share a single endpoint on port (9400 by default). The\nJVM metrics are exposed as well unless jvm.metrics is false.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "8453c7a8e497108d2c3adcd71c4f45a98be653e1",
      "tree": "f9df9ff23e413f6ad51e198182b665a7bad39ad1",
      "parents": [
        "42147bda41ad65d705656122c1c47230e905b28c",
        "3459de05fb99f6079dccf0e1bb34092a419bea73"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Sat Oct 03 10:48:56 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 03 10:48:56 2026 +0100"
      },
      "message": "Merge pull request #9156 from Zir0-93/docs-stale-class-names\n\nFix class names in the codebase, cgroup, metrics and Kafka docs"
    },
    {
      "commit": "3459de05fb99f6079dccf0e1bb34092a419bea73",
      "tree": "837a0c2c7d359eebbaca76aa1083500aec0d702b",
      "parents": [
        "c2ac7b255d94f73e321e3e2d27e8492c90f0a7ea"
      ],
      "author": {
        "name": "Muntazir Fadhel",
        "email": "muntazirfadhel@gmail.com",
        "time": "Sat Oct 03 02:28:33 2026 +0300"
      },
      "committer": {
        "name": "Muntazir Fadhel",
        "email": "muntazirfadhel@gmail.com",
        "time": "Sat Oct 03 02:28:33 2026 +0300"
      },
      "message": "Correct class names in the codebase, cgroup, metrics and Kafka docs\n\nThe docs name six classes under names the code does not have:\n\n- Structure-of-the-codebase.md links org.apache.storm.daemon.DrpcServer,\n  removed in ea44062fd (STORM-2217); the DRPC server is\n  org.apache.storm.daemon.drpc.DRPCServer in storm-webapp.\n- cgroups_in_storm.md calls the CPU metric CGroupCPU; the class is\n  org.apache.storm.metrics2.cgroup.CGroupCpu and it registers\n  CGroupCpu.user-ms and CGroupCpu.sys-ms.\n- metrics_v2.md names the filter interface StormMetricFilter; it is\n  StormMetricsFilter, as the code block below that sentence shows.\n- storm-kafka-client.md names TridentState, TridentStateFactory and\n  TridentKafkaUpdater in org.apache.storm.kafka.trident; the classes are\n  TridentKafkaState, TridentKafkaStateFactory and\n  TridentKafkaStateUpdater.\n"
    },
    {
      "commit": "42147bda41ad65d705656122c1c47230e905b28c",
      "tree": "69f4e827b115ddee3310df405638b5fc95ca8d01",
      "parents": [
        "e93d1009f96e45de2cd278d541b2e450ac832d6a"
      ],
      "author": {
        "name": "L1nq",
        "email": "cryp71csec@gmail.com",
        "time": "Sat Oct 03 00:56:53 2026 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 18:56:53 2026 +0200"
      },
      "message": "Log at error level when the kafka spout gives up on a tuple; document max-retry give-up semantics (#9093)\n\n* Log at error level when the kafka spout gives up on a tuple; document max-retry give-up semantics\n\n* Reword the give-up error to hold for any retry service and pin the max-retry ack ordering\n\nKafkaSpoutRetryService#schedule may decline a message for reasons other than\nreaching the retry limit, so the give-up log no longer names the reason.\nKafkaSpoutRetryLimitTest now verifies that onMaxRetryReached runs before the\ntuple is acked, matching the documented contract."
    },
    {
      "commit": "e93d1009f96e45de2cd278d541b2e450ac832d6a",
      "tree": "c95cb1bc87daa75cb62facc38f6186eaeee50b92",
      "parents": [
        "653a0f878bd58aed5bd4bfd9d6cfb4301d49edb6",
        "c2995fe7a3b712586a6e2b0d45beb3b9ee82ea17"
      ],
      "author": {
        "name": "reiabreu",
        "email": "rui.abreu@gmail.com",
        "time": "Fri Oct 02 17:01:32 2026 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 02 17:01:32 2026 +0100"
      },
      "message": "Merge pull request #9147 from apache/update-license-files\n\n[Automated] Update license files after dependency changes"
    },
    {
      "commit": "c2995fe7a3b712586a6e2b0d45beb3b9ee82ea17",
      "tree": "c95cb1bc87daa75cb62facc38f6186eaeee50b92",
      "parents": [
        "653a0f878bd58aed5bd4bfd9d6cfb4301d49edb6"
      ],
      "author": {
        "name": "rzo1",
        "email": "rzo1@users.noreply.github.com",
        "time": "Thu Oct 01 10:47:22 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 10:47:22 2026 +0000"
      },
      "message": "Regenerate license files after dependency changes\n\nSigned-off-by: GitHub \u003cnoreply@github.com\u003e\n"
    },
    {
      "commit": "653a0f878bd58aed5bd4bfd9d6cfb4301d49edb6",
      "tree": "1985383b0e62c4c92ae9881dab548de8959bd4cc",
      "parents": [
        "0622642b4c1e83b7a9ad216365869f725cf23b26"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Thu Oct 01 12:43:51 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 12:43:51 2026 +0200"
      },
      "message": "Fix the integration test cluster and window test expectations (#9152)\n\n* Fix the integration test cluster and window test expectations\n\n- worker.childopts in the integration storm.yaml still used Java 8 GC\n  logging flags, so no worker JVM could start on Java 9+. Use the\n  unified -Xlog syntax and drop storm-java9.yaml, which was only\n  appended for JDK 11.\n- The window tests asserted IllegalArgumentException for invalid sizes\n  but then went on to build the topology again, failing with the same\n  exception. Return after the assertion.\n\n* Enable the logviewer HTTP binding on the integration test cluster\n\nTopoWrap fetches worker logs from http://\u003chost\u003e:8000, but the logviewer\nhas disabled its HTTP binding by default since 2018, so every window\ntest failed with Connection refused.\n\n* Ship the UI static files in the integration test distribution\n\nThe binary assembly builds public/ from storm-webapp/target/classes/WEB-INF.\nThe Integration-Test job only downloads the built jars, so that directory\nwas missing, the distribution had no public/, and the UI and logviewer\nfailed to start. Unpack WEB-INF from the storm-webapp jar first.\n\n* Create the extraction directory before unpacking WEB-INF\n\n* Parse worker log timestamps as UTC in the integration tests\n\nThe log date pattern carries no zone, so ZonedDateTime.parse failed for\nevery decorated log line."
    },
    {
      "commit": "0622642b4c1e83b7a9ad216365869f725cf23b26",
      "tree": "aadb082eaf897a288f35e1d804b80a0ff41520c8",
      "parents": [
        "853343a9f260323b6d0641d59bdc668805d066ed"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Thu Oct 01 10:36:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 10:36:11 2026 +0200"
      },
      "message": "Bump surefire from 3.5.6 to 3.6.0 (#9151)\n\n* Bump surefire from 3.5.6 to 3.6.0\n\nSurefire 3.6.0 drops the native TestNG provider and runs TestNG through\nthe JUnit Platform testng-engine, which instantiates test classes during\ndiscovery. Connect to the cluster in a @BeforeClass method instead of a\nfield initializer, and register the TestNG listener through the\ntestng.listeners configuration parameter.\n\n* Resolve node1 on the integration test host\n\nstorm.yaml points ZooKeeper, Nimbus and DRPC at node1, which does not\nresolve on GitHub runners. The tests never noticed because surefire\n3.5.6 ran none of the TestNG tests."
    },
    {
      "commit": "853343a9f260323b6d0641d59bdc668805d066ed",
      "tree": "71acbcf14b07597ef7678e52ee989975d97acc0e",
      "parents": [
        "9b04dfccbcd659bb28811233e4bbd1602978f9e2"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Thu Oct 01 09:30:36 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 09:30:36 2026 +0200"
      },
      "message": "Bump iceberg from 1.11.0 to 1.12.0 (#9150)\n\nIceberg 1.12 removes GenericAppenderFactory. Build the task writers on\nGenericFileWriterFactory instead and port the byte-counting wrapper from\nFileAppenderFactory to FileWriterFactory."
    },
    {
      "commit": "9b04dfccbcd659bb28811233e4bbd1602978f9e2",
      "tree": "8a114f930d14f7c247a3bc108a7a9d8e1ca05507",
      "parents": [
        "ecc8302de335d68e8f5abdfbff7e04c580ba80fc"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Thu Oct 01 09:30:32 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 09:30:32 2026 +0200"
      },
      "message": "Bump org.apache:apache parent from 39 to 40 (#9149)\n\nThe new parent brings apache-rat-plugin 0.18, which also checks the\nroot .gitignore and the Flux splash banner, and resolves excludes\nrelative to each module. Add a license header to .gitignore, exclude\nsplash.txt and match install-shade.txt in any module."
    },
    {
      "commit": "ecc8302de335d68e8f5abdfbff7e04c580ba80fc",
      "tree": "86f1a5f3cbb29551327eca0626e61a8aba14dc7a",
      "parents": [
        "230a3d08ff1df37a0968b11b7bb54ccee7369636"
      ],
      "author": {
        "name": "Richard Zowalla",
        "email": "13417392+rzo1@users.noreply.github.com",
        "time": "Thu Oct 01 09:30:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 09:30:29 2026 +0200"
      },
      "message": "Bump storm-webapp npm dependencies (#9148)\n\ndatatables.net, datatables.net-dt, datatables.net-bs5 3.0.2 -\u003e 3.1.2,\njs-yaml 5.4.1 -\u003e 5.4.2, cytoscape 3.34.2 -\u003e 3.34.3, moment 2.30.1 -\u003e 2.31.0,\ncypress 15.21.1 -\u003e 16.1.1, webpack 5.110.1 -\u003e 5.111.1.\n\nSupersedes #9099, #9140, #9141, #9142, #9143, #9144, #9145, #9146."
    },
    {
      "commit": "230a3d08ff1df37a0968b11b7bb54ccee7369636",
      "tree": "399b5f46ab9b71023276a56587da554d73c1203f",
      "parents": [
        "8122a186fb79a608873a6b35b5db58954fab406d"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 09:30:24 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 09:30:24 2026 +0200"
      },
      "message": "build(deps-dev): bump mockito.version from 5.23.0 to 5.24.0 in /examples (#9132)\n\nBumps `mockito.version` from 5.23.0 to 5.24.0.\n\nUpdates `org.mockito:mockito-core` from 5.23.0 to 5.24.0\n- [Release notes](https://github.com/mockito/mockito/releases)\n- [Commits](https://github.com/mockito/mockito/compare/v5.23.0...v5.24.0)\n\nUpdates `org.mockito:mockito-junit-jupiter` from 5.23.0 to 5.24.0\n- [Release notes](https://github.com/mockito/mockito/releases)\n- [Commits](https://github.com/mockito/mockito/compare/v5.23.0...v5.24.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.mockito:mockito-core\n  dependency-version: 5.24.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n- dependency-name: org.mockito:mockito-junit-jupiter\n  dependency-version: 5.24.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "8122a186fb79a608873a6b35b5db58954fab406d",
      "tree": "5535121ea93503e7baa1b24e57a37b144ad95a19",
      "parents": [
        "107164778dbe864a47abaaa67e775599490eebfd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:53:18 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:53:18 2026 +0200"
      },
      "message": "build(deps): bump org.yaml:snakeyaml from 2.6 to 2.7 in /examples (#9138)\n\nBumps org.yaml:snakeyaml from 2.6 to 2.7.\n\n---\nupdated-dependencies:\n- dependency-name: org.yaml:snakeyaml\n  dependency-version: \u00272.7\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "107164778dbe864a47abaaa67e775599490eebfd",
      "tree": "b0e8ba84c17380fba8efae9b020b0598aaee80bb",
      "parents": [
        "1ee3ff81098198cbfc6670411964098372655856"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:53:11 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:53:11 2026 +0200"
      },
      "message": "build(deps): bump io.netty:netty-bom in /examples (#9136)\n\nBumps [io.netty:netty-bom](https://github.com/netty/netty) from 4.2.17.Final to 4.2.18.Final.\n- [Release notes](https://github.com/netty/netty/releases)\n- [Commits](https://github.com/netty/netty/compare/netty-4.2.17.Final...netty-4.2.18.Final)\n\n---\nupdated-dependencies:\n- dependency-name: io.netty:netty-bom\n  dependency-version: 4.2.18.Final\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "1ee3ff81098198cbfc6670411964098372655856",
      "tree": "dbad3d8e20a2d0c500962621b371335c07aacfce",
      "parents": [
        "0e8aded9332949ec59701b4b87d97cb3f079f04a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:53:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:53:05 2026 +0200"
      },
      "message": "build(deps): bump com.fasterxml.jackson:jackson-bom in /examples (#9129)\n\nBumps [com.fasterxml.jackson:jackson-bom](https://github.com/FasterXML/jackson-bom) from 2.22.2 to 2.22.3.\n- [Commits](https://github.com/FasterXML/jackson-bom/compare/jackson-bom-2.22.2...jackson-bom-2.22.3)\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson:jackson-bom\n  dependency-version: 2.22.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "0e8aded9332949ec59701b4b87d97cb3f079f04a",
      "tree": "dbad3d8e20a2d0c500962621b371335c07aacfce",
      "parents": [
        "60827d90c400c82695d3daeec3b7ef32baf06b11"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:52:59 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:52:59 2026 +0200"
      },
      "message": "build(deps): bump com.fasterxml.jackson:jackson-bom (#9118)\n\nBumps [com.fasterxml.jackson:jackson-bom](https://github.com/FasterXML/jackson-bom) from 2.22.2 to 2.22.3.\n- [Commits](https://github.com/FasterXML/jackson-bom/compare/jackson-bom-2.22.2...jackson-bom-2.22.3)\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson:jackson-bom\n  dependency-version: 2.22.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "60827d90c400c82695d3daeec3b7ef32baf06b11",
      "tree": "c2a2dcca3b343cf6f8274fc7cb7e4943b48ca35e",
      "parents": [
        "3961207888fd45711824e0f700069d86226b3559"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:49:39 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:49:39 2026 +0200"
      },
      "message": "build(deps): bump com.puppycrawl.tools:checkstyle in /examples (#9139)\n\nBumps [com.puppycrawl.tools:checkstyle](https://github.com/checkstyle/checkstyle) from 14.0.0 to 14.3.0.\n- [Release notes](https://github.com/checkstyle/checkstyle/releases)\n- [Commits](https://github.com/checkstyle/checkstyle/compare/checkstyle-14.0.0...checkstyle-14.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.puppycrawl.tools:checkstyle\n  dependency-version: 14.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "3961207888fd45711824e0f700069d86226b3559",
      "tree": "c6c76d344731afe26f6d2ba5f295d4a2d07cea1c",
      "parents": [
        "9a81e0fc513ba89cdbb0aa54bfcf3dd0f439cd10"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:49:29 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:49:29 2026 +0200"
      },
      "message": "build(deps): bump org.apache.maven.plugins:maven-compiler-plugin (#9137)\n\nBumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.15.0 to 3.16.0.\n- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)\n- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.15.0...maven-compiler-plugin-3.16.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven.plugins:maven-compiler-plugin\n  dependency-version: 3.16.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "9a81e0fc513ba89cdbb0aa54bfcf3dd0f439cd10",
      "tree": "c6c76d344731afe26f6d2ba5f295d4a2d07cea1c",
      "parents": [
        "fe67e8e4c0080d5ef9af455c80cdf1188fa222db"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:49:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:49:19 2026 +0200"
      },
      "message": "build(deps): bump bouncycastle.version from 1.85 to 1.86 in /examples (#9135)\n\nBumps `bouncycastle.version` from 1.85 to 1.86.\n\nUpdates `org.bouncycastle:bcpkix-jdk18on` from 1.85 to 1.86\n- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md)\n- [Commits](https://github.com/bcgit/bc-java/commits)\n\nUpdates `org.bouncycastle:bcprov-jdk18on` from 1.85 to 1.86\n- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.md)\n- [Commits](https://github.com/bcgit/bc-java/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.bouncycastle:bcpkix-jdk18on\n  dependency-version: \u00271.86\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n- dependency-name: org.bouncycastle:bcprov-jdk18on\n  dependency-version: \u00271.86\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "fe67e8e4c0080d5ef9af455c80cdf1188fa222db",
      "tree": "c6c76d344731afe26f6d2ba5f295d4a2d07cea1c",
      "parents": [
        "cf714c1d91592906301dfe02dfadc8ca2cd4a43c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:49:13 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:49:13 2026 +0200"
      },
      "message": "build(deps): bump org.codehaus.mojo:exec-maven-plugin in /examples (#9133)\n\nBumps [org.codehaus.mojo:exec-maven-plugin](https://github.com/mojohaus/exec-maven-plugin) from 3.6.3 to 3.6.4.\n- [Release notes](https://github.com/mojohaus/exec-maven-plugin/releases)\n- [Commits](https://github.com/mojohaus/exec-maven-plugin/compare/3.6.3...3.6.4)\n\n---\nupdated-dependencies:\n- dependency-name: org.codehaus.mojo:exec-maven-plugin\n  dependency-version: 3.6.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cf714c1d91592906301dfe02dfadc8ca2cd4a43c",
      "tree": "c6c76d344731afe26f6d2ba5f295d4a2d07cea1c",
      "parents": [
        "6a53a2dc6e128f64d23d0ffd414395609e25f7e1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:49:06 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:49:06 2026 +0200"
      },
      "message": "build(deps-dev): bump org.apache.maven.plugins:maven-surefire-report-plugin (#9130)\n\nBumps [org.apache.maven.plugins:maven-surefire-report-plugin](https://github.com/apache/maven-surefire) from 3.5.6 to 3.6.0.\n- [Release notes](https://github.com/apache/maven-surefire/releases)\n- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.6...surefire-3.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven.plugins:maven-surefire-report-plugin\n  dependency-version: 3.6.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "6a53a2dc6e128f64d23d0ffd414395609e25f7e1",
      "tree": "c6c76d344731afe26f6d2ba5f295d4a2d07cea1c",
      "parents": [
        "469505f6b506a55bbd1e2f9477df62f6287d7771"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:48:55 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:48:55 2026 +0200"
      },
      "message": "build(deps): bump org.apache.commons:commons-lang3 in /examples (#9128)\n\nBumps org.apache.commons:commons-lang3 from 3.20.0 to 3.21.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.commons:commons-lang3\n  dependency-version: 3.21.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "469505f6b506a55bbd1e2f9477df62f6287d7771",
      "tree": "c6c76d344731afe26f6d2ba5f295d4a2d07cea1c",
      "parents": [
        "cdde177140117c01a2f4d84204d58c9be8dd7eee"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:48:49 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:48:49 2026 +0200"
      },
      "message": "build(deps): bump jetty.version from 12.1.12 to 12.1.13 in /examples (#9127)\n\nBumps `jetty.version` from 12.1.12 to 12.1.13.\n\nUpdates `org.eclipse.jetty:jetty-server` from 12.1.12 to 12.1.13\n\nUpdates `org.eclipse.jetty.ee10:jetty-ee10-servlet` from 12.1.12 to 12.1.13\n\nUpdates `org.eclipse.jetty.ee10:jetty-ee10-bom` from 12.1.12 to 12.1.13\n- [Release notes](https://github.com/jetty/jetty.project/releases)\n- [Commits](https://github.com/jetty/jetty.project/compare/jetty-12.1.12...jetty-12.1.13)\n\n---\nupdated-dependencies:\n- dependency-name: org.eclipse.jetty:jetty-server\n  dependency-version: 12.1.13\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-servlet\n  dependency-version: 12.1.13\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.eclipse.jetty.ee10:jetty-ee10-bom\n  dependency-version: 12.1.13\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "cdde177140117c01a2f4d84204d58c9be8dd7eee",
      "tree": "c6c76d344731afe26f6d2ba5f295d4a2d07cea1c",
      "parents": [
        "d3e354e3ebd22ea627f36e6906474a10af21bf6a"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:48:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:48:40 2026 +0200"
      },
      "message": "build(deps-dev): bump io.github.git-commit-id:git-commit-id-maven-plugin (#9126)\n\nBumps [io.github.git-commit-id:git-commit-id-maven-plugin](https://github.com/git-commit-id/git-commit-id-maven-plugin) from 10.0.0 to 10.0.1.\n- [Release notes](https://github.com/git-commit-id/git-commit-id-maven-plugin/releases)\n- [Commits](https://github.com/git-commit-id/git-commit-id-maven-plugin/compare/v10.0.0...v10.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: io.github.git-commit-id:git-commit-id-maven-plugin\n  dependency-version: 10.0.1\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d3e354e3ebd22ea627f36e6906474a10af21bf6a",
      "tree": "c6c76d344731afe26f6d2ba5f295d4a2d07cea1c",
      "parents": [
        "6c35aea3f8d93db0511ee24101f26552106d5998"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:48:32 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:48:32 2026 +0200"
      },
      "message": "build(deps): bump com.github.ben-manes.caffeine:caffeine in /examples (#9125)\n\nBumps [com.github.ben-manes.caffeine:caffeine](https://github.com/ben-manes/caffeine) from 3.2.4 to 3.3.0.\n- [Release notes](https://github.com/ben-manes/caffeine/releases)\n- [Commits](https://github.com/ben-manes/caffeine/compare/v3.2.4...v3.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: com.github.ben-manes.caffeine:caffeine\n  dependency-version: 3.3.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "6c35aea3f8d93db0511ee24101f26552106d5998",
      "tree": "46ae53cc2be62023368022e09721ac3d65a889e2",
      "parents": [
        "868a8b69d8f111c784d7a62fc9b5ba4ee7fe0625"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:48:26 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:48:26 2026 +0200"
      },
      "message": "build(deps): bump slf4j.version from 2.0.18 to 2.0.20 in /examples (#9124)\n\nBumps `slf4j.version` from 2.0.18 to 2.0.20.\n\nUpdates `org.slf4j:slf4j-api` from 2.0.18 to 2.0.20\n\nUpdates `org.slf4j:log4j-over-slf4j` from 2.0.18 to 2.0.20\n\nUpdates `org.slf4j:jcl-over-slf4j` from 2.0.18 to 2.0.20\n\nUpdates `org.slf4j:jul-to-slf4j` from 2.0.18 to 2.0.20\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:slf4j-api\n  dependency-version: 2.0.20\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.slf4j:log4j-over-slf4j\n  dependency-version: 2.0.20\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.slf4j:jcl-over-slf4j\n  dependency-version: 2.0.20\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.slf4j:jul-to-slf4j\n  dependency-version: 2.0.20\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "868a8b69d8f111c784d7a62fc9b5ba4ee7fe0625",
      "tree": "46ae53cc2be62023368022e09721ac3d65a889e2",
      "parents": [
        "984ac70eff7ed3fcf1714689db5c1b05ee950e72"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:48:19 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:48:19 2026 +0200"
      },
      "message": "build(deps): bump byte-buddy.version in /examples (#9123)\n\nBumps `byte-buddy.version` from 1.18.12 to 1.18.14.\n\nUpdates `net.bytebuddy:byte-buddy` from 1.18.12 to 1.18.14\n- [Release notes](https://github.com/raphw/byte-buddy/releases)\n- [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md)\n- [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.18.12...byte-buddy-1.18.14)\n\nUpdates `net.bytebuddy:byte-buddy-agent` from 1.18.12 to 1.18.14\n- [Release notes](https://github.com/raphw/byte-buddy/releases)\n- [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md)\n- [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.18.12...byte-buddy-1.18.14)\n\n---\nupdated-dependencies:\n- dependency-name: net.bytebuddy:byte-buddy\n  dependency-version: 1.18.14\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: net.bytebuddy:byte-buddy-agent\n  dependency-version: 1.18.14\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "984ac70eff7ed3fcf1714689db5c1b05ee950e72",
      "tree": "46ae53cc2be62023368022e09721ac3d65a889e2",
      "parents": [
        "b04ba6749ffce5b6434dd7036c7022cae8d75012"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:48:12 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:48:12 2026 +0200"
      },
      "message": "build(deps-dev): bump org.codehaus.mojo:taglist-maven-plugin (#9122)\n\nBumps [org.codehaus.mojo:taglist-maven-plugin](https://github.com/mojohaus/taglist-maven-plugin) from 3.2.2 to 3.2.3.\n- [Release notes](https://github.com/mojohaus/taglist-maven-plugin/releases)\n- [Commits](https://github.com/mojohaus/taglist-maven-plugin/compare/taglist-maven-plugin-3.2.2...3.2.3)\n\n---\nupdated-dependencies:\n- dependency-name: org.codehaus.mojo:taglist-maven-plugin\n  dependency-version: 3.2.3\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "b04ba6749ffce5b6434dd7036c7022cae8d75012",
      "tree": "46ae53cc2be62023368022e09721ac3d65a889e2",
      "parents": [
        "e707db03724291429747d1724070e22d0c00991f"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:48:05 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:48:05 2026 +0200"
      },
      "message": "build(deps): bump zookeeper.version from 3.9.5 to 3.9.6 in /examples (#9120)\n\nBumps `zookeeper.version` from 3.9.5 to 3.9.6.\n\nUpdates `org.apache.zookeeper:zookeeper` from 3.9.5 to 3.9.6\n\nUpdates `org.apache.zookeeper:zookeeper-jute` from 3.9.5 to 3.9.6\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.zookeeper:zookeeper\n  dependency-version: 3.9.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.zookeeper:zookeeper-jute\n  dependency-version: 3.9.6\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e707db03724291429747d1724070e22d0c00991f",
      "tree": "46ae53cc2be62023368022e09721ac3d65a889e2",
      "parents": [
        "577f5c545e29c862f9d85415b7583d4dd8a0d437"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:58 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:58 2026 +0200"
      },
      "message": "build(deps): bump io.github.git-commit-id:git-commit-id-maven-plugin (#9119)\n\nBumps [io.github.git-commit-id:git-commit-id-maven-plugin](https://github.com/git-commit-id/git-commit-id-maven-plugin) from 10.0.0 to 10.0.1.\n- [Release notes](https://github.com/git-commit-id/git-commit-id-maven-plugin/releases)\n- [Commits](https://github.com/git-commit-id/git-commit-id-maven-plugin/compare/v10.0.0...v10.0.1)\n\n---\nupdated-dependencies:\n- dependency-name: io.github.git-commit-id:git-commit-id-maven-plugin\n  dependency-version: 10.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "577f5c545e29c862f9d85415b7583d4dd8a0d437",
      "tree": "0d8c052645f906c35dfccce53680cb215691ad82",
      "parents": [
        "a093402dc78758b339839777f5e3e536f08be2aa"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:47 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:47 2026 +0200"
      },
      "message": "build(deps): bump org.apache.maven.plugins:maven-surefire-report-plugin (#9117)\n\nBumps [org.apache.maven.plugins:maven-surefire-report-plugin](https://github.com/apache/maven-surefire) from 3.5.6 to 3.6.0.\n- [Release notes](https://github.com/apache/maven-surefire/releases)\n- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.6...surefire-3.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven.plugins:maven-surefire-report-plugin\n  dependency-version: 3.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "a093402dc78758b339839777f5e3e536f08be2aa",
      "tree": "b42859d5dcfd6d7ef713d2e761326fae02b79ca9",
      "parents": [
        "97b9a6f8e754145d01e7123a0b30b48ce65843d3"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:40 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:40 2026 +0200"
      },
      "message": "build(deps): bump org.codehaus.mojo:exec-maven-plugin (#9116)\n\nBumps [org.codehaus.mojo:exec-maven-plugin](https://github.com/mojohaus/exec-maven-plugin) from 3.6.3 to 3.6.4.\n- [Release notes](https://github.com/mojohaus/exec-maven-plugin/releases)\n- [Commits](https://github.com/mojohaus/exec-maven-plugin/compare/3.6.3...3.6.4)\n\n---\nupdated-dependencies:\n- dependency-name: org.codehaus.mojo:exec-maven-plugin\n  dependency-version: 3.6.4\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "97b9a6f8e754145d01e7123a0b30b48ce65843d3",
      "tree": "de52594eb8961150776b00ea142c26149d412478",
      "parents": [
        "d3252fc640e91f86a7b826826fc95fae3e40275b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:34 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:34 2026 +0200"
      },
      "message": "build(deps): bump com.fasterxml.jackson.core:jackson-databind (#9115)\n\nBumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson-databind) from 2.22.2 to 2.22.3.\n- [Commits](https://github.com/FasterXML/jackson-databind/compare/jackson-databind-2.22.2...jackson-databind-2.22.3)\n\n---\nupdated-dependencies:\n- dependency-name: com.fasterxml.jackson.core:jackson-databind\n  dependency-version: 2.22.3\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "d3252fc640e91f86a7b826826fc95fae3e40275b",
      "tree": "659a563acd19b63f2d4b77a2048ba0813edc093f",
      "parents": [
        "5c9011e455414c6fba84d18e7a8be49e642884b9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:28 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:28 2026 +0200"
      },
      "message": "build(deps-dev): bump org.codehaus.mojo:taglist-maven-plugin (#9114)\n\nBumps [org.codehaus.mojo:taglist-maven-plugin](https://github.com/mojohaus/taglist-maven-plugin) from 3.2.2 to 3.2.3.\n- [Release notes](https://github.com/mojohaus/taglist-maven-plugin/releases)\n- [Commits](https://github.com/mojohaus/taglist-maven-plugin/compare/taglist-maven-plugin-3.2.2...3.2.3)\n\n---\nupdated-dependencies:\n- dependency-name: org.codehaus.mojo:taglist-maven-plugin\n  dependency-version: 3.2.3\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "5c9011e455414c6fba84d18e7a8be49e642884b9",
      "tree": "323a3ff6e5138eaa84ee6c6fc88a49708019aa8b",
      "parents": [
        "e8dc31c32024bdf54a0b83fbcd9ceffe091de1fe"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:21 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:21 2026 +0200"
      },
      "message": "build(deps): bump activemq.version from 6.3.1 to 6.3.2 (#9113)\n\nBumps `activemq.version` from 6.3.1 to 6.3.2.\n\nUpdates `org.apache.activemq:activemq-client` from 6.3.1 to 6.3.2\n- [Release notes](https://github.com/apache/activemq/releases)\n- [Commits](https://github.com/apache/activemq/compare/activemq-6.3.1...activemq-6.3.2)\n\nUpdates `org.apache.activemq:activemq-all` from 6.3.1 to 6.3.2\n- [Release notes](https://github.com/apache/activemq/releases)\n- [Commits](https://github.com/apache/activemq/compare/activemq-6.3.1...activemq-6.3.2)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.activemq:activemq-client\n  dependency-version: 6.3.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.apache.activemq:activemq-all\n  dependency-version: 6.3.2\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "e8dc31c32024bdf54a0b83fbcd9ceffe091de1fe",
      "tree": "b5ef3e12da145a4df617c3c79da6850eb58f9bdb",
      "parents": [
        "903f1c906aca08bb95424591573cf2988c524661"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:14 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:14 2026 +0200"
      },
      "message": "build(deps): bump org.apache.maven.plugins:maven-compiler-plugin (#9112)\n\nBumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.15.0 to 3.16.0.\n- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)\n- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.15.0...maven-compiler-plugin-3.16.0)\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.maven.plugins:maven-compiler-plugin\n  dependency-version: 3.16.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "903f1c906aca08bb95424591573cf2988c524661",
      "tree": "9c18f1f03bdfba4af8bb187563febe9135ef6094",
      "parents": [
        "ce347024a6b041d5ebf4b87134199b9ac5009186"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:07 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:07 2026 +0200"
      },
      "message": "build(deps): bump org.apache.commons:commons-lang3 from 3.20.0 to 3.21.0 (#9111)\n\nBumps org.apache.commons:commons-lang3 from 3.20.0 to 3.21.0.\n\n---\nupdated-dependencies:\n- dependency-name: org.apache.commons:commons-lang3\n  dependency-version: 3.21.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    },
    {
      "commit": "ce347024a6b041d5ebf4b87134199b9ac5009186",
      "tree": "87ecc38ea4c883e207e12558efcc50abbbffdbfa",
      "parents": [
        "8bae81248fd388563190238716e6b79e94bf0a7c"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Thu Oct 01 08:47:01 2026 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 01 08:47:01 2026 +0200"
      },
      "message": "build(deps): bump slf4j.version from 2.0.18 to 2.0.20 (#9108)\n\nBumps `slf4j.version` from 2.0.18 to 2.0.20.\n\nUpdates `org.slf4j:slf4j-api` from 2.0.18 to 2.0.20\n\nUpdates `org.slf4j:log4j-over-slf4j` from 2.0.18 to 2.0.20\n\nUpdates `org.slf4j:jcl-over-slf4j` from 2.0.18 to 2.0.20\n\nUpdates `org.slf4j:jul-to-slf4j` from 2.0.18 to 2.0.20\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:slf4j-api\n  dependency-version: 2.0.20\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.slf4j:log4j-over-slf4j\n  dependency-version: 2.0.20\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n- dependency-name: org.slf4j:jcl-over-slf4j\n  dependency-version: 2.0.20\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n- dependency-name: org.slf4j:jul-to-slf4j\n  dependency-version: 2.0.20\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e\nCo-authored-by: dependabot[bot] \u003c49699333+dependabot[bot]@users.noreply.github.com\u003e"
    }
  ],
  "next": "8bae81248fd388563190238716e6b79e94bf0a7c"
}
