| 02.58.2026 | Valery Kharseko | ![]() |
| 02.39.2026 | Copilot | ![]() |
| 02.01.2026 | Copilot | ![]() |
| 02.01.2026 | Maxim Thomas | ![]() |
| 02.00.2026 | Copilot | ![]() |
| 02.59.2026 | Copilot | ![]() |
| 02.59.2026 | Copilot | ![]() |
.github/workflows/build.yml
@@ -4,7 +4,6 @@ push: branches: [ 'sustaining/4.10.x','master' ] pull_request: branches: [ 'sustaining/4.10.x','master' ] jobs: build-maven: @@ -28,17 +27,17 @@ wine --version version="9.4.0"; sudo wget "https://dl.winehq.org/wine/wine-mono/$version/wine-mono-$version-x86.msi" -O /tmp/wine-mono.msi wine msiexec /i /tmp/wine-mono.msi - uses: actions/checkout@v4 - uses: actions/checkout@v6 with: fetch-depth: 0 submodules: recursive - name: Java ${{ matrix.Java }} (${{ matrix.os }}) uses: actions/setup-java@v4 uses: actions/setup-java@v5 with: java-version: ${{ matrix.java }} distribution: 'zulu' - name: Cache Maven packages uses: actions/cache@v4 uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} @@ -254,14 +253,14 @@ - name: Upload Windows exe artifacts if: runner.os == 'Windows' uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: windows-exe-${{ matrix.java }} retention-days: 5 path: opendj-server-legacy/src/build-tools/windows/*.exe - name: Upload artifacts OpenDJ Server uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: ${{ matrix.os }}-${{ matrix.java }} retention-days: 5 @@ -286,7 +285,7 @@ - 5000:5000 steps: - name: Download artifacts uses: actions/download-artifact@v4 uses: actions/download-artifact@v8 with: name: ubuntu-latest-11 - name: Get latest release version @@ -296,16 +295,16 @@ echo "release_version=$git_version_last" >> $GITHUB_ENV - name: Docker meta id: meta uses: docker/metadata-action@v5 uses: docker/metadata-action@v6 with: images: | localhost:5000/${{ github.repository }} tags: | type=raw,value=${{ env.release_version }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v4 with: driver-opts: network=host - name: Prepare Dockerfile @@ -315,7 +314,7 @@ cp ./opendj-server-legacy/target/package/opendj-*.zip ./opendj-packages/opendj-docker sed -i -E '/^#COPY opendj/s/^#//' ./opendj-packages/opendj-docker/Dockerfile - name: Build image (default) uses: docker/build-push-action@v5 uses: docker/build-push-action@v7 with: context: ./opendj-packages/opendj-docker file: ./opendj-packages/opendj-docker/Dockerfile @@ -350,7 +349,7 @@ - 5000:5000 steps: - name: Download artifacts uses: actions/download-artifact@v4 uses: actions/download-artifact@v8 with: name: ubuntu-latest-11 - name: Get latest release version @@ -360,7 +359,7 @@ echo "release_version=$git_version_last" >> $GITHUB_ENV - name: Docker meta id: meta uses: docker/metadata-action@v5 uses: docker/metadata-action@v6 with: images: | localhost:5000/${{ github.repository }} @@ -368,9 +367,9 @@ type=raw,value=alpine type=raw,value=${{ env.release_version }}-alpine - name: Set up QEMU uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v4 with: driver-opts: network=host - name: Prepare Dockerfile @@ -380,7 +379,7 @@ cp ./opendj-server-legacy/target/package/opendj-*.zip ./opendj-packages/opendj-docker sed -i -E '/^#COPY opendj/s/^#//' ./opendj-packages/opendj-docker/Dockerfile-alpine - name: Build image uses: docker/build-push-action@v5 uses: docker/build-push-action@v7 with: context: ./opendj-packages/opendj-docker file: ./opendj-packages/opendj-docker/Dockerfile-alpine .github/workflows/deploy.yml
@@ -27,13 +27,13 @@ wine --version version="9.4.0"; sudo wget "https://dl.winehq.org/wine/wine-mono/$version/wine-mono-$version-x86.msi" -O /tmp/wine-mono.msi wine msiexec /i /tmp/wine-mono.msi - uses: actions/checkout@v4 - uses: actions/checkout@v6 with: fetch-depth: 0 submodules: recursive ref: ${{ github.event.workflow_run.head_branch }} - name: Set up Java for publishing to Maven Central Repository OSS uses: actions/setup-java@v4 uses: actions/setup-java@v5 with: java-version: ${{ github.event.workflow_run.head_branch == 'sustaining/4.10.x' && '8' || '11'}} distribution: 'temurin' @@ -41,7 +41,7 @@ server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD - name: Cache Maven packages uses: actions/cache@v4 uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} @@ -71,52 +71,52 @@ continue-on-error: true run: mvn javadoc:aggregate - name: Upload artifacts OpenDJ Server uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ Server path: opendj-server-legacy/target/package/*.zip - name: Upload artifacts OpenDJ SDK Toolkit uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ SDK Toolkit path: opendj-ldap-toolkit/target/*.zip - name: Upload artifacts OpenDJ Debian Package uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ Debian Package path: opendj-packages/opendj-deb/opendj-deb-standard/target/*.deb - name: Upload artifacts OpenDJ RPM Package uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ RPM Package path: opendj-packages/opendj-rpm/opendj-rpm-standard/target/rpm/opendj/RPMS/noarch/*.rpm - name: Upload artifacts OpenDJ MSI Package uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ MSI Package path: opendj-packages/opendj-msi/opendj-msi-standard/target/*.msi - name: Upload artifacts OpenDJ Docker Packages uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ Docker Packages path: opendj-packages/opendj-docker/target/Dockerfile.zip - name: Upload artifacts OpenDJ Openshift template uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ Openshift template path: opendj-packages/opendj-openshift-template/*.yaml - name: Upload artifacts OpenDJ Doc Generated Reference uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ Doc Generated References path: opendj-doc-generated-ref/target/*.zip - name: Upload artifacts OpenDJ DSML Gateway uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ DSML Gateway path: opendj-dsml-servlet/target/*.war - name: Upload artifacts OpenDJ Commons REST LDAP Gateway uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v7 with: name: OpenDJ Commons REST LDAP Gateway path: opendj-rest2ldap-servlet/target/*.war @@ -125,7 +125,7 @@ git config --global user.name "Open Identity Platform Community" git config --global user.email "open-identity-platform-opendj@googlegroups.com" cd .. - uses: actions/checkout@v4 - uses: actions/checkout@v6 continue-on-error: true with: repository: ${{ github.repository }}.wiki @@ -145,7 +145,7 @@ git commit -a -m "upload docs after deploy ${{ github.sha }}" git push --quiet --force - uses: actions/checkout@v4 - uses: actions/checkout@v6 continue-on-error: true with: repository: OpenIdentityPlatform/doc.openidentityplatform.org .github/workflows/release.yml
@@ -31,12 +31,12 @@ wine --version version="9.4.0"; sudo wget "https://dl.winehq.org/wine/wine-mono/$version/wine-mono-$version-x86.msi" -O /tmp/wine-mono.msi wine msiexec /i /tmp/wine-mono.msi - uses: actions/checkout@v4 - uses: actions/checkout@v6 with: fetch-depth: 0 submodules: recursive - name: Set up Java for publishing to Maven Central Repository OSS uses: actions/setup-java@v4 uses: actions/setup-java@v5 with: java-version: ${{ github.event.workflow_run.head_branch == 'sustaining/4.10.x' && '8' || '11'}} distribution: 'temurin' @@ -44,7 +44,7 @@ server-username: MAVEN_USERNAME server-password: MAVEN_PASSWORD - name: Cache Maven packages uses: actions/cache@v4 uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-m2-repository-${{ hashFiles('**/pom.xml') }} @@ -90,7 +90,7 @@ target/checkout/opendj-doc-generated-ref/target/*.zip target/checkout/opendj-dsml-servlet/target/*.war target/checkout/opendj-rest2ldap-servlet/target/*.war - uses: actions/checkout@v4 - uses: actions/checkout@v6 continue-on-error: true with: repository: ${{ github.repository }}.wiki @@ -113,7 +113,7 @@ git push --quiet --force git push --quiet --force origin ${{ github.event.inputs.releaseVersion }} - uses: actions/checkout@v4 - uses: actions/checkout@v6 continue-on-error: true with: repository: OpenIdentityPlatform/doc.openidentityplatform.org @@ -136,14 +136,14 @@ needs: - release-maven steps: - uses: actions/checkout@v4 - uses: actions/checkout@v6 with: ref: ${{ github.event.inputs.releaseVersion }} fetch-depth: 1 submodules: recursive - name: Docker meta id: meta uses: docker/metadata-action@v5 uses: docker/metadata-action@v6 with: images: | ${{ github.repository }} @@ -152,22 +152,22 @@ type=raw,value=latest type=raw,value=${{ github.event.inputs.releaseVersion }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v4 - name: Login to DockerHub uses: docker/login-action@v3 uses: docker/login-action@v4 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GHCR uses: docker/login-action@v3 uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push image uses: docker/build-push-action@v5 uses: docker/build-push-action@v7 continue-on-error: true with: context: ./opendj-packages/opendj-docker @@ -184,14 +184,14 @@ needs: - release-maven steps: - uses: actions/checkout@v4 - uses: actions/checkout@v6 with: ref: ${{ github.event.inputs.releaseVersion }} fetch-depth: 1 submodules: recursive - name: Docker meta id: meta uses: docker/metadata-action@v5 uses: docker/metadata-action@v6 with: images: | ${{ github.repository }} @@ -200,23 +200,23 @@ type=raw,value=alpine type=raw,value=${{ github.event.inputs.releaseVersion }}-alpine - name: Set up QEMU uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v4 - name: Login to DockerHub uses: docker/login-action@v3 uses: docker/login-action@v4 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GHCR uses: docker/login-action@v3 uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and push image continue-on-error: true uses: docker/build-push-action@v5 uses: docker/build-push-action@v7 with: context: ./opendj-packages/opendj-docker file: ./opendj-packages/opendj-docker/Dockerfile-alpine opendj-core/src/main/java/org/forgerock/opendj/ldap/spi/LdapMessages.java
@@ -12,6 +12,7 @@ * information: "Portions Copyright [year] [name of copyright owner]". * * Copyright 2016 ForgeRock AS. * Portions Copyright 2026 3A Systems, LLC. */ package org.forgerock.opendj.ldap.spi; @@ -106,6 +107,13 @@ private LdapResponseMessage(final byte messageType, final int messageId, final Response content) { super(messageType, messageId, content); } @Override public String toString() { return "LdapResponseMessage(messageType=" + getMessageType() + ", messageId=" + getMessageId() + ", content=" + getContent() + ")"; } } private static abstract class LdapMessageEnvelope<T> { opendj-server-legacy/lib/launcher_administrator.exeBinary files differ
opendj-server-legacy/lib/opendj_service.exeBinary files differ
opendj-server-legacy/lib/winlauncher.exeBinary files differ
opendj-server-legacy/src/build-tools/windows/service.c
@@ -13,6 +13,7 @@ * * Copyright 2008-2010 Sun Microsystems, Inc. * Portions Copyright 2011-2013 ForgeRock AS. * Portions Copyright 2026 3A Systems, LLC. */ #include "service.h" @@ -563,12 +564,44 @@ if (createOk && waitOk) { BOOL running; // Just check once if the server is running or not: since the wait // wait was successful, if the server is getting the lock, it already // got it. isServerRunning(&running, TRUE); if (running) // The batch file process completed successfully, but the Java server // process may not have acquired the lock file yet (especially on // Windows 11 where JVM startup can be slower). Retry with a loop // similar to the else-if branch below. // See: https://github.com/OpenIdentityPlatform/OpenDJ/issues/259 const DWORD DEFAULT_TRIES = 100; int nTries = DEFAULT_TRIES; char * nTriesEnv = getenv("OPENDJ_WINDOWS_SERVICE_START_NTRIES"); BOOL running = FALSE; if (nTriesEnv != NULL) { debug("OPENDJ_WINDOWS_SERVICE_START_NTRIES env var set to %s", nTriesEnv); nTries = (int)strtol(nTriesEnv, (char **)NULL, 10); if (nTries <= 0) { nTries = DEFAULT_TRIES; } } else { debug("OPENDJ_WINDOWS_SERVICE_START_NTRIES is not set. Using default %d tries.", nTries); } while ((nTries > 0) && !running) { nTries--; if (isServerRunning(&running, TRUE) != SERVICE_RETURN_OK) { break; } if (!running) { debug("Sleeping for 5 seconds to allow the process to get the lock. %d tries remaining.", nTries); Sleep(5000); } } if (running) { returnValue = SERVICE_RETURN_OK; debug("doStartApplication: server running."); opendj-server-legacy/src/main/java/org/opends/server/core/LoggerConfigManager.java
@@ -13,6 +13,7 @@ * * Copyright 2006-2008 Sun Microsystems, Inc. * Portions Copyright 2013-2016 ForgeRock AS. * Portions Copyright 2026 3A Systems, LLC. */ package org.opends.server.core; @@ -109,8 +110,13 @@ { SLF4JBridgeHandler.removeHandlersForRootLogger(); // This is needed to avoid major performance issue. See: http://www.slf4j.org/legacy.html#jul-to-slf4j // Limit Grizzly JUL logging to FINE to prevent a ClassCastException in // FilterChainContext.toString() (Grizzly bug) when debug logging is enabled. // Grizzly 3.0.1 DefaultFilterChain.executeFilter() checks isLoggable(FINEST) but // its FilterChainContext.toString() incorrectly casts the message to char[]. LogManager.getLogManager().readConfiguration( new ByteArrayInputStream((".level=" + newLevel).getBytes())); new ByteArrayInputStream( (".level=" + newLevel + "\norg.glassfish.grizzly.level=FINE").getBytes())); SLF4JBridgeHandler.install(); currentJulLogLevel = newLevel; } opendj-server-legacy/src/test/java/org/opends/server/backends/ChangelogBackendTestCase.java
@@ -590,6 +590,8 @@ // write 4 more changes starting from changenumber 5, and search them testName = "Multiple/5"; csns = generateAndPublishUpdateMsgForEachOperationType(testName, false); // Wait until all 8 changes are indexed before searching assertChangelogAttributesInRootDSE(1, 8); searchChangesForEachOperationTypeUsingChangeNumberMode(5, csns, testName); // search from the provided change number: 6 (should be the add msg) opendj-server-legacy/src/test/java/org/opends/server/replication/GenerationIdTest.java
@@ -921,7 +921,7 @@ replServer3 = createReplicationServer(replServerId3, true, testCase); connectServer1ToReplServer(replServer1); Thread.sleep(2000); //wait for all RS handshakes to complete waitForDomainsOnAllReplicationServers(); debugInfo("Expect genId are set in all replServers."); waitForStableGenerationId(EMPTY_DN_GENID); @@ -990,7 +990,7 @@ } } private void waitForStableGenerationId(final long expectedGenId) throws Exception private void waitForDomainsOnAllReplicationServers() throws Exception { TestTimer timer = new TestTimer.Builder() .maxSleep(30, SECONDS) @@ -1001,6 +1001,24 @@ @Override public void call() throws Exception { assertNotNull(replServer1.getReplicationServerDomain(baseDN), "domain missing on replServer1"); assertNotNull(replServer2.getReplicationServerDomain(baseDN), "domain missing on replServer2"); assertNotNull(replServer3.getReplicationServerDomain(baseDN), "domain missing on replServer3"); } }); } private void waitForStableGenerationId(final long expectedGenId) throws Exception { TestTimer timer = new TestTimer.Builder() .maxSleep(60, SECONDS) .sleepTimes(100, MILLISECONDS) .toTimer(); timer.repeatUntilSuccess(new CallableVoid() { @Override public void call() throws Exception { assertGenIdEquals(expectedGenId); } }); opendj-server-legacy/tests/unit-tests-testng/resource/config-changes.ldif
@@ -11,6 +11,7 @@ # information: "Portions Copyright [year] [name of copyright owner]". # # Copyright 2016 ForgeRock AS. # Portions Copyright 2026 3A Systems LLC. dn: cn=config changetype: modify replace: ds-cfg-notify-abandoned-operations @@ -1610,3 +1611,8 @@ - replace: ds-cfg-default-throwable-stack-frames ds-cfg-default-throwable-stack-frames: 500 dn: cn=Multimaster Synchronization,cn=Synchronization Providers,cn=config changetype: modify replace: ds-cfg-connection-timeout ds-cfg-connection-timeout: 30000 ms