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

Build: #3190 failed

Job: Workflow failed

Stages & jobs

  1. Build and Package

Code commits

Openfire (master)

  • 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.

    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version 562ba69705769fc4ec664c40e67b10defa9c7187)
    • xmppserver/src/main/java/org/jivesoftware/openfire/net/ComponentStanzaHandler.java (version 562ba69705769fc4ec664c40e67b10defa9c7187)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalComponentSession.java (version 562ba69705769fc4ec664c40e67b10defa9c7187)
  • 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

    • xmppserver/src/main/java/org/jivesoftware/openfire/ConnectionCloseListener.java (version f37cd69d6039b14a404e8794078a0bba1a2d64a8)
    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version f37cd69d6039b14a404e8794078a0bba1a2d64a8)
    • xmppserver/src/main/java/org/jivesoftware/openfire/net/AbstractConnection.java (version f37cd69d6039b14a404e8794078a0bba1a2d64a8)
    • xmppserver/src/main/java/org/jivesoftware/openfire/net/ComponentStanzaHandler.java (version f37cd69d6039b14a404e8794078a0bba1a2d64a8)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalComponentSession.java (version f37cd69d6039b14a404e8794078a0bba1a2d64a8)
  • 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)

    • i18n/src/main/resources/openfire_i18n.properties (version 965d2d0abb5b0b98fd273cff2b30cf2d0a299c12)
    • i18n/src/main/resources/openfire_i18n_nl.properties (version 965d2d0abb5b0b98fd273cff2b30cf2d0a299c12)
    • xmppserver/src/main/java/org/jivesoftware/openfire/net/AbstractConnection.java (version 965d2d0abb5b0b98fd273cff2b30cf2d0a299c12)
    • xmppserver/src/main/java/org/jivesoftware/openfire/spi/ConnectionManagerImpl.java (version 965d2d0abb5b0b98fd273cff2b30cf2d0a299c12)
  • 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.

    • xmppserver/src/main/java/org/jivesoftware/openfire/ConnectionCloseListener.java (version 86c970602b3904723d4e9dea125de845c5b11307)