Verifies the integrety of the projects, as builds are executed immediately after a code change was detected. This plan provides no artifiacts (use a nightly build instead).

Build: #2681 was successful

Job: Build was successful

Stages & jobs

  1. Default Stage

  2. Continuous Integration

Code commits

Openfire (master)

  • daryl herzmann

    daryl herzmann b9f01e339ff8816ce175ae870f61a05e7d7aeba5

    Merge pull request #2643 from guusdk/OF-2941_Snapshot-version-comparison
    OF-2941: Improve Version comparison that involve SNAPSHOTs

  • daryl herzmann

    daryl herzmann 92cd5c545271b9b6cef3afbb3844d6fdf859cd4b

    Merge pull request #2644 from guusdk/tests-improve-speed
    Reduce runtime of long-running S2S unit tests (and fix OF-2942 as a byproduct)

  • daryl herzmann

    daryl herzmann cdece9b7f0ee949b3ee2a273aab646352473dfc7

    Merge pull request #2635 from guusdk/OF-2921_Deadlock
    OF-2921: Prevent deadlock by not broadcasting synchronously

  • daryl herzmann

    daryl herzmann 54992b695d676c44878a8521eae513e3047f0c98

    Merge pull request #2645 from guusdk/OF-2943_Unit-test-db-update
    OF-2943: Update database used by unit test

  • Guus der Kinderen

    Guus der Kinderen 697b8f452d3cb926fc885106c083e5c76919b0ad

    Admin console: Hover over plugins makes background change

    • xmppserver/src/main/webapp/available-plugins.jsp (version 697b8f452d3cb926fc885106c083e5c76919b0ad)
    • xmppserver/src/main/webapp/plugin-admin.jsp (version 697b8f452d3cb926fc885106c083e5c76919b0ad)
  • Sergey Ponomarev <stokito@gmail.com>

    Sergey Ponomarev <stokito@gmail.com> 8db6a1034ffd068b1e9d7e1d29b2cb781103178e

    OF-2892: admin console Plugins pages: fix colspan

    • xmppserver/src/main/webapp/available-plugins.jsp (version 8db6a1034ffd068b1e9d7e1d29b2cb781103178e)
  • Sergey Ponomarev <stokito@gmail.com>

    Sergey Ponomarev <stokito@gmail.com> 70c698f961d59ebfd119a4846f7028667e1d35f4

    OF-2892: admin console Available Plugins page: use plugin.available.name instead of plugin.available.open_source
    And remove the unused open_source key

    • i18n/src/main/resources/openfire_i18n.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_cs_CZ.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_de.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_es.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_fr.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_he.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_ja_JP.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_nl.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_pl_PL.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_pt_BR.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_pt_PT.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_ru_RU.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_sk.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_uk_UA.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • i18n/src/main/resources/openfire_i18n_zh_CN.properties (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
    • xmppserver/src/main/webapp/available-plugins.jsp (version 70c698f961d59ebfd119a4846f7028667e1d35f4)
  • Sergey Ponomarev <stokito@gmail.com>

    Sergey Ponomarev <stokito@gmail.com> bda8283b6d1ad36c7c121419904645bfeeb62810

    OF-2892: admin console Plugins pages: merge version, releaseDate and changelog

    • xmppserver/src/main/webapp/available-plugins.jsp (version bda8283b6d1ad36c7c121419904645bfeeb62810)
    • xmppserver/src/main/webapp/plugin-admin.jsp (version bda8283b6d1ad36c7c121419904645bfeeb62810)
  • Sergey Ponomarev <stokito@gmail.com>

    Sergey Ponomarev <stokito@gmail.com> ca79ee4dadf794f43915c4685e75494cbc6e043a

    OF-2892: admin console Available Plugins page: show releaseDate in ISO and store it

    • xmppserver/src/main/java/org/jivesoftware/openfire/update/AvailablePlugin.java (version ca79ee4dadf794f43915c4685e75494cbc6e043a)
    • xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java (version ca79ee4dadf794f43915c4685e75494cbc6e043a)
  • Sergey Ponomarev <stokito@gmail.com>

    Sergey Ponomarev <stokito@gmail.com> 8f7e51c6957049581fff1467ee6a40720fd82a35

    OF-2892: admin console Plugins pages: use text instead of icons

    • xmppserver/src/main/webapp/available-plugins.jsp (version 8f7e51c6957049581fff1467ee6a40720fd82a35)
    • xmppserver/src/main/webapp/plugin-admin.jsp (version 8f7e51c6957049581fff1467ee6a40720fd82a35)
  • Sergey Ponomarev <stokito@gmail.com>

    Sergey Ponomarev <stokito@gmail.com> 02f28ff79a6f242463613b2bace78e2dbdab2962

    OF-2892: admin console plugins pages: wrap description

    • xmppserver/src/main/webapp/available-plugins.jsp (version 02f28ff79a6f242463613b2bace78e2dbdab2962)
    • xmppserver/src/main/webapp/plugin-admin.jsp (version 02f28ff79a6f242463613b2bace78e2dbdab2962)
  • Sergey Ponomarev <stokito@gmail.com>

    Sergey Ponomarev <stokito@gmail.com> fe8eb02ca05cc17998d683b04397c2d2230fb8f8

    OF-2892: admin console Plugins pages: fix column width

    • xmppserver/src/main/webapp/available-plugins.jsp (version fe8eb02ca05cc17998d683b04397c2d2230fb8f8)
    • xmppserver/src/main/webapp/plugin-admin.jsp (version fe8eb02ca05cc17998d683b04397c2d2230fb8f8)
  • Sergey Ponomarev <stokito@gmail.com>

    Sergey Ponomarev <stokito@gmail.com> 0cd7c17d0e6f044375402d40cad39de13f2bc4c2

    OF-2892: admin console Plugins pages: merge name and description

    • xmppserver/src/main/webapp/available-plugins.jsp (version 0cd7c17d0e6f044375402d40cad39de13f2bc4c2)
    • xmppserver/src/main/webapp/plugin-admin.jsp (version 0cd7c17d0e6f044375402d40cad39de13f2bc4c2)
  • Guus der Kinderen

    Guus der Kinderen ab2a07eb13c97526a994c8628f8a78c25c9c7cb5

    OF-2943: Update database used by unit test
    By using an up-to-date database, the unit test doesn't need to perform updates when it executes.

    • xmppserver/src/test/resources/datasets/openfire.script (version ab2a07eb13c97526a994c8628f8a78c25c9c7cb5)
  • Guus der Kinderen

    Guus der Kinderen 858edac4d281aac22a4784530af704bdd9ee6a23

    Speed up LocalOutgoingServerSessionTest
    This test uses an older SocketAcceptor, that cannot be interrupted. This means that we wait until SO_TIMEOUT before the test ends.

    This commit reduces the SO_TIMEOUT value. This runs the risk of introducing instability.

    • xmppserver/src/test/java/org/jivesoftware/openfire/session/RemoteReceivingServerDummy.java (version 858edac4d281aac22a4784530af704bdd9ee6a23)
  • Guus der Kinderen

    Guus der Kinderen 8362724384b6b225a899c71cfd7b6963d09a9f68

    Add debug logging for ServerSessionTest
    No functional changes to the unit tests, but adds a simple mechanism to record how much time passed between logged statements.

    • xmppserver/src/test/java/org/jivesoftware/openfire/session/AbstractRemoteServerDummy.java (version 8362724384b6b225a899c71cfd7b6963d09a9f68)
    • xmppserver/src/test/java/org/jivesoftware/openfire/session/LocalIncomingServerSessionTest.java (version 8362724384b6b225a899c71cfd7b6963d09a9f68)
    • xmppserver/src/test/java/org/jivesoftware/openfire/session/LocalOutgoingServerSessionTest.java (version 8362724384b6b225a899c71cfd7b6963d09a9f68)
    • xmppserver/src/test/java/org/jivesoftware/openfire/session/RemoteInitiatingServerDummy.java (version 8362724384b6b225a899c71cfd7b6963d09a9f68)
    • xmppserver/src/test/java/org/jivesoftware/openfire/session/RemoteReceivingServerDummy.java (version 8362724384b6b225a899c71cfd7b6963d09a9f68)
  • Guus der Kinderen

    Guus der Kinderen 2aa58ea15c5268289ef00352a6d9bf04deceb124

    Speed up LocalIncomingServerSessionTest
    The test teardown waits for inbound stream IDs to be registered with the session manager. Many streams (those that have errored out or have been replaced with an encrypted stream) won't ever be registered in the Session Manager. The test teardown doesn't need to wait for those.

    This commit introduces a change that tracks the streams that are still in-flight. Test teardown will now only wait for those.

    • xmppserver/src/test/java/org/jivesoftware/openfire/session/RemoteInitiatingServerDummy.java (version 2aa58ea15c5268289ef00352a6d9bf04deceb124)
  • Guus der Kinderen

    Guus der Kinderen c5c1648f71e39a163846be49f1a3f97d45b8ba41

    Speed up LocalIncomingServerSessionTest
    This test uses an older SocketAcceptor, that cannot be interrupted. This means that we wait until SO_TIMEOUT before the test ends.

    This commit reduces the SO_TIMEOUT value. This runs the risk of introducing instability.

    • xmppserver/src/test/java/org/jivesoftware/openfire/session/RemoteInitiatingServerDummy.java (version c5c1648f71e39a163846be49f1a3f97d45b8ba41)
  • Guus der Kinderen

    Guus der Kinderen d9726157f06f39b8b43f307d1f0e656f82855488

    Speed up LocalIncomingServerSessionTest
    By properly detecting a stream error, the test needs not to wait for proper session teardown.

    • xmppserver/src/test/java/org/jivesoftware/openfire/session/RemoteInitiatingServerDummy.java (version d9726157f06f39b8b43f307d1f0e656f82855488)
  • Guus der Kinderen

    Guus der Kinderen a340aa9c743c26b302aa94bb4eae3e80e74aa659

    OF-2942: Give up S2S attempts immediately on conflicting settings
    Abort outbound server-to-server attempts immediately (rather than waiting for a timeout), when:
    - the remote peer requires encryption, but the local server cannot do encryption
    - authentication mechanisms are exhausted (eg: no client cert for EXTERNAL, and Dialback unavailable)

    • xmppserver/src/main/java/org/jivesoftware/openfire/net/RespondingServerStanzaHandler.java (version a340aa9c743c26b302aa94bb4eae3e80e74aa659)
  • Guus der Kinderen

    Guus der Kinderen d16bdf1e440cfa9097f8c85c450c7822cf403eb3

    Speed up LocalIncomingServerSessionTest and LocalOutgoingServerSessionTest
    Both tests use a ServerSocket that is 'slow' to shut down. By explicitly closing it, it shuts down faster, improving the duration of the test fixture teardown.

    • xmppserver/src/test/java/org/jivesoftware/openfire/session/RemoteInitiatingServerDummy.java (version d16bdf1e440cfa9097f8c85c450c7822cf403eb3)
    • xmppserver/src/test/java/org/jivesoftware/openfire/session/RemoteReceivingServerDummy.java (version d16bdf1e440cfa9097f8c85c450c7822cf403eb3)
  • Guus der Kinderen

    Guus der Kinderen 72b67cb80078c1f8069ef26cdaaedbda6e0499da

    OF-2941: Improve Version comparison that involve SNAPSHOTs
    For certain versions of plugins, Openfire incorrectly identifies that an update is available.

    When Openfire has installed `10.1.7.3-SNAPSHOT` it incorrectly identifies that version `10.1.7.2` is an update.

    This seems to be caused by Openfire’s abuse of the 4th numeric value in a version. It was originally intended to be a classifier for the status (eg: ‘the second beta release’). When that 4th value is used as part of a four-digit version, things do not quite compare as expected.

    To illustrate, compare these two scenarios. The numbers 3 and 2 are all stored in the same field, which gets interpreted differently.

    - `10.1.7 beta 3` is older than `10.1.7 release 2`

    - `10.1.7.3-SNAPSHOT` is expected to be newer than `10.1.7.2` (release).

    Prior to this commit, Openfire did not flag that `10.1.7.3-SNAPSHOT` is newer than `10.1.7.2`, which was causing confusion.

    In this commit, _only_ the `SNAPSHOT` release status is now compared differently (as if the 4th value is part of the version string).

    • xmppserver/src/main/java/org/jivesoftware/openfire/update/Update.java (version 72b67cb80078c1f8069ef26cdaaedbda6e0499da)
    • xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java (version 72b67cb80078c1f8069ef26cdaaedbda6e0499da)
    • xmppserver/src/main/java/org/jivesoftware/util/Version.java (version 72b67cb80078c1f8069ef26cdaaedbda6e0499da)
    • xmppserver/src/test/java/org/jivesoftware/util/VersionTest.java (version 72b67cb80078c1f8069ef26cdaaedbda6e0499da)
  • Guus der Kinderen

    Guus der Kinderen bdcf8e22cc50d228460d84f49671413f1fdc2ac6

    Apply IDE hints to ProfiledConnection.java
    Multiple small, non-functional changes have been applied to the code of ProfiledConnection. This class now requires Java 17.

    • xmppserver/src/main/java/org/jivesoftware/database/ProfiledConnection.java (version bdcf8e22cc50d228460d84f49671413f1fdc2ac6)
  • Guus der Kinderen

    Guus der Kinderen 15831beb9364e4ac870428be7d70a1a72857e71f

    Use java.time when collecting database statistics
    Use the more type-safe Instant and Duration representations from `java.time` (rather than long values representing a timestamp and durations) in the code that profiles database statistics

    • xmppserver/src/main/java/org/jivesoftware/database/ProfiledConnection.java (version 15831beb9364e4ac870428be7d70a1a72857e71f)
    • xmppserver/src/main/java/org/jivesoftware/database/ProfiledConnectionEntry.java (version 15831beb9364e4ac870428be7d70a1a72857e71f)
    • xmppserver/src/main/webapp/server-db-stats.jsp (version 15831beb9364e4ac870428be7d70a1a72857e71f)
    • xmppserver/src/test/java/org/jivesoftware/database/ProfiledConnectionTest.java (version 15831beb9364e4ac870428be7d70a1a72857e71f)
  • Guus der Kinderen

    Guus der Kinderen 6bd84559332e175357b41a391ac10c4a1516f12c

    Update Database Query Statistics page
    Mostly converts the page from scriptlet to JSTL.

    Makes the tables that contain SQL wider

    Other minor CSS tweaks.

    • i18n/src/main/resources/openfire_i18n.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_cs_CZ.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_de.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_es.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_fa_IR.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_he.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_ja_JP.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_nl.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_pl_PL.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_pt_BR.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_pt_PT.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_ru_RU.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_sk.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_uk_UA.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • i18n/src/main/resources/openfire_i18n_zh_CN.properties (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • xmppserver/src/main/java/org/jivesoftware/database/ProfiledConnectionEntry.java (version 6bd84559332e175357b41a391ac10c4a1516f12c)
    • xmppserver/src/main/webapp/server-db-stats.jsp (version 6bd84559332e175357b41a391ac10c4a1516f12c)
  • Guus der Kinderen

    Guus der Kinderen 2e1b7a0254d7f86d76d4c29a8c7a6dad17b720f4

    OF-2913: Fix db statistics
    The end-time of a profiling session is now observed when calculating rates. Prior to this change, no new data was recorded, but the end-time that was used was 'now', leading to decreasing rates over time.

    When (re)starting a profiling session, all old data should be discarded, to avoid skewed averages and rates.

    • xmppserver/src/main/java/org/jivesoftware/database/ProfiledConnection.java (version 2e1b7a0254d7f86d76d4c29a8c7a6dad17b720f4)
    • xmppserver/src/test/java/org/jivesoftware/database/ProfiledConnectionTest.java (version 2e1b7a0254d7f86d76d4c29a8c7a6dad17b720f4)
  • Guus der Kinderen

    Guus der Kinderen d2b25dea28991d723a52a8373ff0396666092e16

    OF-2717: Additional content for Plugin-to-Jetty12 upgrade guide

    • documentation/plugin-dev-jetty12.html (version d2b25dea28991d723a52a8373ff0396666092e16)
  • Guus der Kinderen

    Guus der Kinderen 350218698324c40e2fdda31d45eaa395aacc9b38

    OF-2717: Rework Jetty 12 plugin documentation
    This rewords the provided documentation into an upgrade guide for Openfire plugin developers.

    • documentation/plugin-dev-jetty12.html (version 350218698324c40e2fdda31d45eaa395aacc9b38)
    • documentation/plugins-affected-by-jetty12-upgrade.html (version 350218698324c40e2fdda31d45eaa395aacc9b38)
  • Dave Cridland <dave@cridland.net>

    Dave Cridland <dave@cridland.net> 364f44a3fa8f8023b3d668ed66c275299fd4faa4

    Get mvnw working

    • .dockerignore (version 364f44a3fa8f8023b3d668ed66c275299fd4faa4)
    • Dockerfile (version 364f44a3fa8f8023b3d668ed66c275299fd4faa4)
  • Dan Caseley

    Dan Caseley 88b10a5fbca9f2eb3a80d3a22071f1d3fa6aa845

    Fix groups and missing sudo for entrypoint

    • Dockerfile (version 88b10a5fbca9f2eb3a80d3a22071f1d3fa6aa845)
  • Guus der Kinderen

    Guus der Kinderen 61e563b5a36b49978fc093a6a61e5f7bdd81bf67

    Replace Fank with with Dwd and Fishbowler as maintainer of Dockerfile

    • Dockerfile (version 61e563b5a36b49978fc093a6a61e5f7bdd81bf67)
  • Dave Cridland <dave+trippy@cridland.net>

    Dave Cridland <dave+trippy@cridland.net> 08562c77d9073962591795b94a0c7bf77b286462

    Don't require sudo at runtime
    Or, indeed, at all.

    • Dockerfile (version 08562c77d9073962591795b94a0c7bf77b286462)
    • build/docker/entrypoint.sh (version 08562c77d9073962591795b94a0c7bf77b286462)
  • Dave Cridland <dave@cridland.net>

    Dave Cridland <dave@cridland.net> c835573dce03af39901fa1c8fe0606577d37fe17

    Add docker building to workflow (fix)

    • .github/workflows/continuous-integration-workflow.yml (version c835573dce03af39901fa1c8fe0606577d37fe17)
  • Dave Cridland <dave@cridland.net>

    Dave Cridland <dave@cridland.net> db7b062b936e5f7bac6a8e16c075dae08d5af113

    Add docker building to workflow (fix)

    • .github/workflows/continuous-integration-workflow.yml (version db7b062b936e5f7bac6a8e16c075dae08d5af113)
  • Dave Cridland <dave+trippy@cridland.net>

    Dave Cridland <dave+trippy@cridland.net> d117b35bc99fca031f80704fc111f0d8a4fafd2f

    Better caching, use mvnw

    • Dockerfile (version d117b35bc99fca031f80704fc111f0d8a4fafd2f)
  • Dave Cridland <dave+trippy@cridland.net>

    Dave Cridland <dave+trippy@cridland.net> dc076a84af1f7857111015b267b670bf67cdfe9e

    main:HEAD is now latest

    • .github/workflows/continuous-integration-workflow.yml (version dc076a84af1f7857111015b267b670bf67cdfe9e)
  • Dave Cridland <dave@cridland.net>

    Dave Cridland <dave@cridland.net> 84477c493e986a79b68176073602cfce909e81ab

    Add docker building to workflow (fix)

    • .github/workflows/continuous-integration-workflow.yml (version 84477c493e986a79b68176073602cfce909e81ab)
  • Dave Cridland <dave+trippy@cridland.net>

    Dave Cridland <dave+trippy@cridland.net> 4635076a99c8ae076ca4bd9ac42486759fc3102a

    Get offline mode to work
    My word this is broken in Maven.

    • Dockerfile (version 4635076a99c8ae076ca4bd9ac42486759fc3102a)
    • pom.xml (version 4635076a99c8ae076ca4bd9ac42486759fc3102a)
  • Dave Cridland <dave@cridland.net>

    Dave Cridland <dave@cridland.net> 9b862792a607090b5d4818dd6676a314b6e2e200

    Add docker building to workflow

    • .github/workflows/continuous-integration-workflow.yml (version 9b862792a607090b5d4818dd6676a314b6e2e200)
  • Dave Cridland <dave@cridland.net>

    Dave Cridland <dave@cridland.net> fe73ecfe53f01221584112ab979d893cd88cb8db

    Switch to eclipse-temurin images
    Also build skeleton runtime as a distinct stage

    • Dockerfile (version fe73ecfe53f01221584112ab979d893cd88cb8db)
  • Dave Cridland <dave@cridland.net>

    Dave Cridland <dave@cridland.net> ee1a65d74b7c6c21b76be4f4bd1e5e01b526f259

    Add docker building to workflow (fix)

    • .github/workflows/continuous-integration-workflow.yml (version ee1a65d74b7c6c21b76be4f4bd1e5e01b526f259)
  • Dave Cridland <dave+trippy@cridland.net>

    Dave Cridland <dave+trippy@cridland.net> b9d6417dd4e118a7102ea02cff4ad49fdab85281

    Improvements to Docker file
    This changes the Dockerfile quite radically, so that
    Openfire is built within Docker rather than outside
    of it. This should simplify building the image, and
    also make the results more repeatable.

    In order to maximize the use of the cache while
    keeping the image size under control, this
    uses three stages.

    The first stage locates and extracts all the POM
    files and any JAR files. This stage will be re-run on
    any change, but it short.

    The second stage takes the output of the first stage
    and gathers dependencies. These will be cached, unless
    the output of the first stage (ie, the dependency
    information) changes.

    Then it copies in the full source, and builds it.

    Finally, the runtime container is setup much as it
    was before, except that the runtime files are copied
    from the build stage rather than the filesystem
    directly.

    The result is that a repeat build of the docker image
    now takes about two minutes, but can trivially be done
    on any docker platform (even without Java installed
    locally).

    Notes:
    * The build stage should be able to run the `mvn package` in offline mode, but maven (being maven) wants to download more during this stage.
    * The `.dockerignore` file has of course been changed, but someone who understands Java better than I might well improve it further.

    • .dockerignore (version b9d6417dd4e118a7102ea02cff4ad49fdab85281)
    • Dockerfile (version b9d6417dd4e118a7102ea02cff4ad49fdab85281)
  • Guus der Kinderen

    Guus der Kinderen 6428f385b288345f4fcbdaa1e7f06a4952508284 m

    OF-2921: Don't process websocket error under mutex
    When a websocket error is raised while holding another mutex (eg: when processing a MUC stanza) then having _another_ mutex introduces a deadlock risk. This has been observed to happen in the wild.

    In this commit, the mutex held when processing a websocket error is removed.

    • xmppserver/src/main/java/org/jivesoftware/openfire/websocket/WebSocketClientConnectionHandler.java (version 6428f385b288345f4fcbdaa1e7f06a4952508284)
  • Guus der Kinderen

    Guus der Kinderen debf053d07b363752aa421dd688e97ee830534c4 m

    OF-2921: Reduce Websocket operations under mutex
    When stream management is enabled, deliver and record stanzas under a mutex. If it's not enabled, don't acquire the lock to reduce lock contention.

    • xmppserver/src/main/java/org/jivesoftware/openfire/session/LocalClientSession.java (version debf053d07b363752aa421dd688e97ee830534c4)
  • Guus der Kinderen

    Guus der Kinderen b98a83d3470e06b66fbe718a304cfcf39bfba8c5 m

    OF-2921: Prevent deadlock by not broadcasting synchronously
    When a client drops offline, a presence update is broadcast on behalf of that client. We've observed deadlocks occurring when this happens (as the broadcast itself, especially when it occurs in context in of MUC rooms, will acquire mutexes).

    There appears to be little reason for this broadcast to happen synchronous to the process of session termination process. To reduce the likelihood of deadlocks, this commit makes the broadcast happen in an asynchronous process.

    • xmppserver/src/main/java/org/jivesoftware/openfire/SessionManager.java (version b98a83d3470e06b66fbe718a304cfcf39bfba8c5)