Generates the latest/greatest Maven-based artifacts for the Openfire project, every night.

Build: #3190 failed Scheduled with changes by daryl herzmann and Guus der Kinderen

Stages & jobs

  1. Build and Package

Build result summary

Details

Completed
Queue duration
1 second
Duration
8 minutes
Labels
None
Revision
008321fad877190f8b33a04d7621a6344f7b14bb
Total tests
1866
Fixed in
#3191 (Scheduled)

Tests

Responsible

  • daryl herzmann daryl herzmann Automatically assigned
  • Guus der Kinderen Guus der Kinderen Automatically assigned

Code commits

Author Commit Message Commit date
daryl herzmann daryl herzmann 008321fad877190f8b33a04d7621a6344f7b14bb Merge pull request #3140 from guusdk/OF-3180_OF-3179_Connection-closure-improvements
OF-3179 & OF-3180: Safe, ordered, and async ConnectionCloseListener execution
Guus der Kinderen Guus der Kinderen 562ba69705769fc4ec664c40e67b10defa9c7187 OF-3180: Refactor ConnectionCloseListener implementations for async dispatcher
The dispatcher for ConnectionCloseListener events was updated in a previous commit (for OF-3180) to ensure all listener invocations are executed asynchronously and offloaded from the calling thread. This change allows for significant simplification of the listener implementations, as they no longer need to manually wrap their logic in CompletableFuture.runAsync or thenRunAsync.

This commit removes redundant async wrapping in all ConnectionCloseListener implementations and uses the same executor for all async work.
Guus der Kinderen Guus der Kinderen f37cd69d6039b14a404e8794078a0bba1a2d64a8 OF-3179: Priority-based ConnectionCloseListener execution
Ensures consistency in listener execution. Critical cleanup runs before third-party listeners to prevent stale session state.

- Added `getPriority()` to `ConnectionCloseListener` (default: 0, built-in: 100)
- Updated `notifyCloseListeners()` to sort and execute listeners sequentially by priority
- Preserves insertion order for same-priority listeners
Guus der Kinderen Guus der Kinderen 965d2d0abb5b0b98fd273cff2b30cf2d0a299c12 OF-3180: Offload ConnectionCloseListener invocation to a dedicated thread pool
Add a dedicated thread pool executor to ConnectionManagerImpl for processing connection events asynchronously.

The notifyCloseListeners() method in AbstractConnection now dispatches listener invocations on this executor rather than invoking them on the calling thread. This prevents blocking or long-running listener implementations (e.g., those performing database or network I/O) from interfering with connection shutdown or I/O processing.

While all connection types benefit, this is particularly important for Netty-based connections where blocking the event loop thread can cause widespread connection stalls.

The new thread pool is configurable via system properties:
- `xmpp.connectionmanager.eventexecutor.threads` (default: 16)
- `xmpp.connectionmanager.eventexecutor.timeout` (default: 60s)
Guus der Kinderen Guus der Kinderen 86c970602b3904723d4e9dea125de845c5b11307 Clarify connection close semantics in listener Javadoc
Expand the listener Javadoc to clearly document that a connection closure does not necessarily imply session closure. Add guidance warning implementers not to make this assumption and direct them to SessionEventListener for reliable session lifecycle events.

Tests

New test failures 1
Status Test View job Duration
Collapse Failed LocalOutgoingServerSessionTest outgoingTest(ServerSettings, ServerSettings)[266]
Workflow < 1 sec
org.mockito.exceptions.misusing.WrongTypeOfReturnValue: 
CertificateStoreManager cannot be returned by getConnectionManager()
getConnectionManager() should return ConnectionManager
***
If you're unsure why you're getting above error read on.
Due to the nature of the syntax above problem might occur because:
1. This exception *might* occur in wrongly written multi-threaded tests.
   Please refer to Mockito FAQ on limitations of concurrency testing.
(58 more lines...)

Jira issues

IssueDescriptionStatus
Unknown Issue TypeOF-3179Could not obtain issue details from Jira
Unknown Issue TypeOF-3180Could not obtain issue details from Jira

Shared artifacts

Artifact File size
install4j-generated media 5 KB