Build: #2694 was successful
Job: Debian Workflow was successful
Code commits
Openfire (master)
-
Guus der Kinderen 866d954312aa52e1d9adbc7e560dc6269c77c4fd
OF-3181: Allow static configuration of cluster node ID
Previously, an Openfire server generated a new cluster node ID on every startup, causing the identifier to change after each restart. This commit ensures that a server reuses the same node ID over time by persisting the initially generated value.
The node ID is now stored in `openfire.xml` under a new property: `clustering.nodeid`
- If the property does not exist at startup, a random node ID is generated and persisted.
- If the property exists, its value is reused.
This allows administrators to optionally define stable, human-recognizable node IDs. When doing so, administrators are responsible for ensuring uniqueness across all cluster members.
This change also removes the concept of a "default" node ID. Since Openfire 4.4.0 (OF-1705), node IDs no longer change when joining a cluster, making the distinction between default and runtime IDs obsolete. As a result, there is now a single node ID per server.
As a functional consequence, the node ID is no longer available until after server initialization (it is no longer a static field). This is expected to have little to no practical impact, as the previous static value was not publicly accessible.- xmppserver/src/main/java/org/jivesoftware/openfire/XMPPServer.java (version 866d954312aa52e1d9adbc7e560dc6269c77c4fd)
- xmppserver/src/main/java/org/jivesoftware/openfire/cluster/ClusterManager.java (version 866d954312aa52e1d9adbc7e560dc6269c77c4fd)
-
copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> a9638e30a3fb0a88f8e95ae2ae016abcebac0396
Update jmdns dependency from 1.0 to 3.6.3 (OF-536)
Co-authored-by: akrherz <210858+akrherz@users.noreply.github.com>- xmppserver/pom.xml (version a9638e30a3fb0a88f8e95ae2ae016abcebac0396)
- xmppserver/src/main/java/org/jivesoftware/openfire/net/MulticastDNSService.java (version a9638e30a3fb0a88f8e95ae2ae016abcebac0396)
-
Guus der Kinderen 3c55066eb3b9b57f9709f1f21fc533817045a06b
OF-3164: Avoid user lookup for JIDs without node to reduce exception overhead
Prevent execution of user lookup logic when the provided JID has no node. JIDs without a node part cannot represent a local user, yet currently flow through UserManager.isRegisteredUser(), which relies on exception-based control flow when the user does not exist.
Thread dumps show significant CPU time spent constructing UserNotFoundException instances (Throwable.fillInStackTrace) on this hot path.
This change short-circuits the lookup for node-less JIDs, avoiding the exception-heavy path and reducing unnecessary CPU usage under load.
Note: This is a partial workaround. A full fix should refactor user existence checks to avoid exceptions for normal control flow.
Additionally, more unit tests were added.- xmppserver/src/main/java/org/jivesoftware/openfire/user/UserManager.java (version 3c55066eb3b9b57f9709f1f21fc533817045a06b)
- xmppserver/src/test/java/org/jivesoftware/openfire/user/UserManagerTest.java (version 3c55066eb3b9b57f9709f1f21fc533817045a06b)
-
daryl herzmann eedd51fc881e7a568167dc799d0db57f17b8b700
Merge pull request #3112 from guusdk/OF-3161_Netty-4.1.130.Final
OF-3161: Upgrade Netty from 4.1.118.Final to 4.1.131.Final -
daryl herzmann 81d66bdeca1d485d050197ec0604cb67399fa02f
Merge pull request #3183 from guusdk/OF-3204_DefaultExternalizableUtil-fixes
OF-3204: Fix readSerializableMap incorrectly narrowing key type to String -
daryl herzmann 5941f71b5913b4be0a7b8ca474c56de5040ed646
Merge pull request #3182 from guusdk/OF-3203_HappyEyeballs-done
OF-3203: Rename HappyEyeballsResolver#isDone() to isExhausted() for clarity -
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 52295a00c6947a5b891b5f0483c363f67b5675d7
chore(deps): bump org.junit:junit-bom from 5.13.4 to 6.0.3
Bumps [org.junit:junit-bom](https://github.com/junit-team/junit-framework) from 5.13.4 to 6.0.3.
- [Release notes](https://github.com/junit-team/junit-framework/releases)
- [Commits](https://github.com/junit-team/junit-framework/compare/r5.13.4...r6.0.3)
---
updated-dependencies:
- dependency-name: org.junit:junit-bom
dependency-version: 6.0.3
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>- xmppserver/pom.xml (version 52295a00c6947a5b891b5f0483c363f67b5675d7)
-
Guus der Kinderen 4eeb8608d28791a45fcad463521188e6a3ae4c35
Additional bumps of junit to version 6.0.3
- .github/actions/connectivitytests-action/conntest/pom.xml (version 4eeb8608d28791a45fcad463521188e6a3ae4c35)
- starter/pom.xml (version 4eeb8608d28791a45fcad463521188e6a3ae4c35)
-
copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> 7fa46f86a561831be3f7697a5bad6941ac882ea7
Add unit tests for NettyXMPPDecoder and additional XMLLightweightParser coverage
Co-authored-by: akrherz <210858+akrherz@users.noreply.github.com>- xmppserver/src/test/java/org/jivesoftware/openfire/nio/NettyXMPPDecoderTest.java (version 7fa46f86a561831be3f7697a5bad6941ac882ea7)
- xmppserver/src/test/java/org/jivesoftware/openfire/nio/XMLLightweightParserTest.java (version 7fa46f86a561831be3f7697a5bad6941ac882ea7)
-
Guus der Kinderen d4097c73c1335bfed1517218b54a92aa17515ec5 m
OF-3119: Fix flaky tests on macOS by reducing short-delay solver sleep duration
On macOS, coarser JVM timer granularity meant Thread.sleep(25) could overshoot the 50ms deadline, causing the resolver to fall through to getAlternativeImmediately() and return the lower-priority host instead of waiting for the preferred one.
Reduce the sleep duration used in short-delay test solvers from RESOLUTION_DELAY/2 (25ms) to RESOLUTION_DELAY/10 (5ms), leaving a 45ms margin within the 50ms resolution delay window.- xmppserver/src/test/java/org/jivesoftware/openfire/net/HappyEyeballsResolverTest.java (version d4097c73c1335bfed1517218b54a92aa17515ec5)
-
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 249e8b81c32271222951579ba345a60ca087de8e
chore(deps): bump docker/build-push-action from 6 to 7
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6 to 7.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6...v7)
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-version: '7'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>- .github/workflows/continuous-integration-workflow.yml (version 249e8b81c32271222951579ba345a60ca087de8e)
-
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> ebd68c7bb7f0672baeb980a95e2237680d47f408
chore(deps): bump docker/setup-buildx-action from 3 to 4
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4)
---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>- .github/workflows/continuous-integration-workflow.yml (version ebd68c7bb7f0672baeb980a95e2237680d47f408)
-
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> c19bb86603956ea8bc776d36734bd816648e3b08
chore(deps): bump docker/login-action from 3 to 4
Bumps [docker/login-action](https://github.com/docker/login-action) from 3 to 4.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3...v4)
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>- .github/workflows/continuous-integration-workflow.yml (version c19bb86603956ea8bc776d36734bd816648e3b08)
-
Guus der Kinderen 9481d34642054567a90f3388484b5a43d29a87bf m
OF-3161: Upgrade Netty from 4.1.130.Final to 4.1.131.Final
- pom.xml (version 9481d34642054567a90f3388484b5a43d29a87bf)
-
Guus der Kinderen 060bcc0b85546f9fd76ee709137c81063c4deb55 m
OF-3161: Upgrade Netty from 4.1.118.Final to 4.1.130.Final
Updates all Netty dependencies to 4.1.130.Final to incorporate the latest security fixes and improvements in the 4.1.x branch. This reduces exposure to reported Netty CVEs and addresses vulnerability scan findings, while maintaining compatibility with Openfire.- pom.xml (version 060bcc0b85546f9fd76ee709137c81063c4deb55)
-
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 0797f7ce74e718618ca8771bda19c93f11d894b4
chore(deps): bump org.apache.logging.log4j:log4j-core
Bumps org.apache.logging.log4j:log4j-core from 2.20.0 to 2.25.3.
---
updated-dependencies:
- dependency-name: org.apache.logging.log4j:log4j-core
dependency-version: 2.25.3
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>- pom.xml (version 0797f7ce74e718618ca8771bda19c93f11d894b4)
-
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> bcdd76b30f71bdfd236c1848aa082f60b1afd2ad
chore(deps): bump org.apache.commons:commons-lang3 from 3.18.0 to 3.20.0
Bumps org.apache.commons:commons-lang3 from 3.18.0 to 3.20.0.
---
updated-dependencies:
- dependency-name: org.apache.commons:commons-lang3
dependency-version: 3.20.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>- xmppserver/pom.xml (version bcdd76b30f71bdfd236c1848aa082f60b1afd2ad)
-
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 34c31aa845b3dd25dd7d46bff4016e37d6a7943d
chore(deps): bump docker/metadata-action from 5 to 6
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5 to 6.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/v5...v6)
---
updated-dependencies:
- dependency-name: docker/metadata-action
dependency-version: '6'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>- .github/workflows/continuous-integration-workflow.yml (version 34c31aa845b3dd25dd7d46bff4016e37d6a7943d)
-
Guus der Kinderen d5fd709d63c40d6cc9230e0dbee3a4dd35765a28 m
OF-3204: Fix readSerializableMap incorrectly narrowing key type to String
The deserialized result was cast to Map<String, Serializable> despite the method signature accepting Map<? extends Serializable, ? extends Serializable>. Due to type erasure this succeeded silently, but would cause failures at the call site for any map with non-String keys. Widened the cast to Map<Serializable, Serializable> to match the declared contract.
Test coverage for readSerializableMap and several other previously disabled or missing cases added in DefaultExternalizableUtilTest.
Replaced an incorrect javadoc statement.- xmppserver/src/main/java/org/jivesoftware/util/cache/DefaultExternalizableUtil.java (version d5fd709d63c40d6cc9230e0dbee3a4dd35765a28)
- xmppserver/src/main/java/org/jivesoftware/util/cache/ExternalizableUtil.java (version d5fd709d63c40d6cc9230e0dbee3a4dd35765a28)
- xmppserver/src/test/java/org/jivesoftware/util/cache/DefaultExternalizableUtilTest.java (version d5fd709d63c40d6cc9230e0dbee3a4dd35765a28)
-
Guus der Kinderen f42d7bddfd79ff4dc83c6c2b47fd648b0779f36e m
OF-3203: Rename HappyEyeballsResolver#isDone() to isExhausted() for clarity
The previous name `isDone()` implied that the method signals completion of DNS resolution, whereas it actually returns `true` only once all resolved addresses have been consumed by the caller. The name `isExhausted()` more accurately reflects this semantics, which aligns with the Happy Eyeballs concept of iterating through candidate addresses until none remain.
Additionally, a NullPointerException in solve() has been fixed. The exceptionally() handler previously returned null, which was passed to addResults() and caused a NullPointerException on the completion thread whenever DNS resolution failed. The handler now returns an empty Set, ensuring the failure is handled cleanly without masking the original exception.
Unit tests have been added to cover `isExhausted()` and mixed resolution failure scenarios.- xmppserver/src/main/java/org/jivesoftware/openfire/net/HappyEyeballsResolver.java (version f42d7bddfd79ff4dc83c6c2b47fd648b0779f36e)
- xmppserver/src/main/java/org/jivesoftware/openfire/net/SocketUtil.java (version f42d7bddfd79ff4dc83c6c2b47fd648b0779f36e)
- xmppserver/src/test/java/org/jivesoftware/openfire/net/HappyEyeballsResolverTest.java (version f42d7bddfd79ff4dc83c6c2b47fd648b0779f36e)