Run manually for releases

Build: #6 was successful Manual run by daryl herzmann

Code commits

Openfire (master)

  • Guus der Kinderen

    Guus der Kinderen a095ff593b996405469e73464a619675642c2e4a

    Upgrade Smack in Integration Tests from 4.4.4 to 4.4.6
    Upgrading Smack to 4.4.6, which should include fixes that allow us to re-enable some tests that were flappy in older versions.

    • runIntegrationTests (version a095ff593b996405469e73464a619675642c2e4a)
  • Guus der Kinderen

    Guus der Kinderen 0f47b70df38bd7c2e7b12960655dbce0f2b6c90c

    OF-2448: Close correct BOSH connection when it's being replaced.
    As the intention is for the new connection to replace the old connection, the new connection should not be closed

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 0f47b70df38bd7c2e7b12960655dbce0f2b6c90c)
  • Guus der Kinderen

    Guus der Kinderen 1f0628652db3843e917a21103489d055b9705b06

    OF-2446: Use a more efficient List implementation for HttpSession's sentElements
    The code is using this List as a queue. Using an ArrayList for this isn't very efficient. A LinkedList (or any Queue) is expected to perform better.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 1f0628652db3843e917a21103489d055b9705b06)
  • Guus der Kinderen

    Guus der Kinderen 78a217b40409261b9257b98547c6b8269e57a8c5

    OF-2445: Prevent BOSH from queuing stanzas on closed connection
    When a connection is closed, any stanzas that are sent to it (to be delivered) should be failed.

    This change applies to newly supplied stanzas the same mechanism that is used for stanzas that are pending at the time the session is closed.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 78a217b40409261b9257b98547c6b8269e57a8c5)
  • Guus der Kinderen

    Guus der Kinderen 587f3eaaf8ac8f21357bb1596a65d7eb295676f3

    OF-2450: BOSH pause response should be given on the connection that requests the pause
    Probably due to a simple bug, the answer was given on the latest connection, rather than the connection that is being processed.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 587f3eaaf8ac8f21357bb1596a65d7eb295676f3)
  • Guus der Kinderen

    Guus der Kinderen 515ee20c1e923d80eb705387bc54fd1ff1ebca3b

    OF-2465: Fix implementation of org.jivesoftware.openfire.mediaproxy.Channel#removeListeners

    • xmppserver/src/main/java/org/jivesoftware/openfire/mediaproxy/Channel.java (version 515ee20c1e923d80eb705387bc54fd1ff1ebca3b)
  • Guus der Kinderen

    Guus der Kinderen 5ff3cb2f36d6cef1ff3182a2e7370b77239d3807

    OF-2421: Prevent ConcurrentModificationException in OccupantManager
    A CME has been observed while one thread is modifying the local occupants, while the other is reading from it.

    This commit adds a read/write lock that should prevent this.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/OccupantManager.java (version 5ff3cb2f36d6cef1ff3182a2e7370b77239d3807)
  • Guus der Kinderen

    Guus der Kinderen e8999798b7879cf6c74a207607657e1adecb5fbb

    OF-2444: Call 'close' outside of lock
    Calling 'close' will trigger event listeners, that in turn can try to consume queuedConnections. Deadlocks have been observed following this pattern.

    This commit calls the 'close' method outside of the mutex, which prevents that problem.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version e8999798b7879cf6c74a207607657e1adecb5fbb)
  • Guus der Kinderen

    Guus der Kinderen fd46423632c6213ee50b89fb30e3bc2a0fff9ef5

    OF-2424: Assert when LocalSession is null
    Under certain circumstances (notably, when a session is detached), a session's connection can be null.

    This commit adds assertions to identify the null-ability of a sessin's connection, and ensures that a null connection is not attempted to be used in a context where it is assumed to be non-null.

    • xmppserver/src/main/java/org/jivesoftware/openfire/LocalSessionManager.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSessionManager.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/net/ComponentStanzaHandler.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/net/SASLAuthentication.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/sasl/AnonymousSaslServer.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/sasl/ExternalClientSaslServer.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalClientSession.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalComponentSession.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalConnectionMultiplexerSession.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalServerSession.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalSession.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/spi/LocalRoutingTable.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
    • xmppserver/src/main/java/org/jivesoftware/openfire/streammanagement/StreamManager.java (version fd46423632c6213ee50b89fb30e3bc2a0fff9ef5)
  • Guus der Kinderen

    Guus der Kinderen 7a263910aad48cff1806c9cd99073e8950cebc06

    OF-2456: properly propagate a nickname change over the cluster.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/cluster/OccupantUpdatedTask.java (version 7a263910aad48cff1806c9cd99073e8950cebc06)
  • Guus der Kinderen

    Guus der Kinderen 04c3b5080ce87dc47ed3da6f2448c76ec35567c9

    Minor non-functional changes (mostly spelling)

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/MUCRole.java (version 04c3b5080ce87dc47ed3da6f2448c76ec35567c9)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/MUCRoom.java (version 04c3b5080ce87dc47ed3da6f2448c76ec35567c9)
  • Guus der Kinderen

    Guus der Kinderen dc44ebc479ddea92deff84aab8fbce72ba80ba68

    OF-2458: Guard access to field to prevent ConcurrentModificationException
    The internal field 'presence' should not be modified when read, as that has been observed to lead to ConcurrentModificationException being thrown.

    This commit adds a lock to all access to the 'presence' and related 'extendedInformation' fields, to prevent this from happening.

    Additionaly, the instance returned by the `getPresence()` method has been replaced with a defensive copy (much of the invoking code did immediately create such a copy after acquiring the instance, which now has been removed).

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/MUCRole.java (version dc44ebc479ddea92deff84aab8fbce72ba80ba68)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/MUCRoom.java (version dc44ebc479ddea92deff84aab8fbce72ba80ba68)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/FMUCHandler.java (version dc44ebc479ddea92deff84aab8fbce72ba80ba68)
    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/MultiUserChatServiceImpl.java (version dc44ebc479ddea92deff84aab8fbce72ba80ba68)
  • Guus der Kinderen

    Guus der Kinderen 040f5c501000337e81986b2d12a533550cfc0029

    Removed two redundant null-checks spotted by LGTM.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/MUCRoom.java (version 040f5c501000337e81986b2d12a533550cfc0029)
  • Guus der Kinderen

    Guus der Kinderen c19bfde33c4a81c6a782252e637de16d2a6d8b1d

    OF-2444: Improve comment based on review feedback.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version c19bfde33c4a81c6a782252e637de16d2a6d8b1d)
  • Guus der Kinderen

    Guus der Kinderen 7cd173c67c06fa422368f7980ce62f0f5aed6a3c

    OF-2444: Refactor HttpSession#connectionQueue to strictly contain usable connections
    Prior to this change, org.jivesoftware.openfire.http.HttpSession#connectionQueue could contain connections that were already consumed.

    This commit refactors this field from a list to a queue, in which only 'usable' connections are kept.

    The original thought behind this change was to switch to a thread-safe data type for this field, which would reduce the need for explicit locking. This is not achieved by this commit.

    Even though the original goal of the change is not achieved, the change does reduce a bit of complexity, which hopefully leads to a simpler locking strategy down the road.

    While evaluating usage, various issues in the code have been identified. This commit does not fix them directly. Instead, a TODO or FIXME comment was added and a JIRA ticked was raised for each of these.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 7cd173c67c06fa422368f7980ce62f0f5aed6a3c)
  • Guus der Kinderen

    Guus der Kinderen 35c14b9f01dfec1f9986a7b1d5b33d1884db7e5b

    OF-2444: Prefer Optional over null results
    As suggested by Greg during review: why not return an Optional instead of a null value? The Optional is slightly more descriptive.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 35c14b9f01dfec1f9986a7b1d5b33d1884db7e5b)
  • Guus der Kinderen

    Guus der Kinderen d80da9b40dbc05ed1e7082d2baea1708cdf4fc75

    OF-2444: Use dedicated lock for org.jivesoftware.openfire.http.HttpSession#sentElements
    Access to org.jivesoftware.openfire.http.HttpSession#sentElements was previously guarded by a lock that was re-used for other purposes.

    By replacing the lock for org.jivesoftware.openfire.http.HttpSession#sentElements with one that is dedicted the access of that field, the probability of resource contention related to the lock is reduced.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version d80da9b40dbc05ed1e7082d2baea1708cdf4fc75)
  • Guus der Kinderen

    Guus der Kinderen 94cad645841eb90271f65c4adfba6f5d18e2cff4

    OF-2444: Asynchronously deliver outbound data over BOSH
    When sending stanzas back to the client, this is now done in an asynchronous manner, outside of a lock held on the connectionQueue. The delivery of inbound data already occurred in an asynchronous manner. The threadpool that was used for that is now being used for both.

    To achieve this, the processing of (outbound) stanzas has been decoupled from the management of connectionQueue (adding/removing connections), allowing it to happen outside of the guard of a lock.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 94cad645841eb90271f65c4adfba6f5d18e2cff4)
    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSessionManager.java (version 94cad645841eb90271f65c4adfba6f5d18e2cff4)
  • Guus der Kinderen

    Guus der Kinderen 91a8b605020e24d4fa6db1e000a76cbbc83b1fda

    HttpSession: Grammar and spelling improvements

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 91a8b605020e24d4fa6db1e000a76cbbc83b1fda)
  • Guus der Kinderen

    Guus der Kinderen 2fb910ce8f53fec29baefd73b930b3a2ade7ecaa

    OF-2444: Access to HttpSession#pendingElements no longer needs to be guarded
    By removing the need for holding a particular lock when accessing org.jivesoftware.openfire.http.HttpSession#pendingElements, the duration of locks that are obtained and held can be reduced.

    Lower chances of lock contention will improve performance. Reduced lock usage will reduce to chance of deadlocks.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 2fb910ce8f53fec29baefd73b930b3a2ade7ecaa)
  • Guus der Kinderen

    Guus der Kinderen 3a04b70195cf20c9940cc3a6e5d1fc598edf15ab

    Replace 'size() == 0' with 'isEmpty()'
    For some Collections, a call to size() is not a constant-time operation. As a matter of principle, isEmpty() should be prefered over checking for a size that equals zero.

    • xmppserver/src/main/java/org/jivesoftware/openfire/http/HttpSession.java (version 3a04b70195cf20c9940cc3a6e5d1fc598edf15ab)
  • dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

    dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> ddba2ce767df2985ac0a410896144676907e83b7

    build(deps): bump mysql-connector-java in /build/ci/updater
    Bumps [mysql-connector-java](https://github.com/mysql/mysql-connector-j) from 8.0.27 to 8.0.28.
    - [Release notes](https://github.com/mysql/mysql-connector-j/releases)
    - [Changelog](https://github.com/mysql/mysql-connector-j/blob/release/8.0/CHANGES)
    - [Commits](https://github.com/mysql/mysql-connector-j/compare/8.0.27...8.0.28)

    ---
    updated-dependencies:
    - dependency-name: mysql:mysql-connector-java
      dependency-type: direct:production
    ...

    Signed-off-by: dependabot[bot] <support@github.com>

    • build/ci/updater/pom.xml (version ddba2ce767df2985ac0a410896144676907e83b7)
  • Guus der Kinderen

    Guus der Kinderen fe7e566d1d88df240506dd4f2966ca3e1c878292

    OF-2421: Make OccupantManager thread safe
    Access to the internal state of OccupantManager is now protected by a read/write lock, to help prevent concurrent access / modifications.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/OccupantManager.java (version fe7e566d1d88df240506dd4f2966ca3e1c878292)
  • Guus der Kinderen

    Guus der Kinderen 1232ac4d34b714e9f1e57d2dd34901d9b452a670

    Minor updates to javadoc, style and annotations of OccupantManager.

    • xmppserver/src/main/java/org/jivesoftware/openfire/muc/spi/OccupantManager.java (version 1232ac4d34b714e9f1e57d2dd34901d9b452a670)