Merge remote-tracking branch 'origin/master' into copilot/fix-inverted-logic-substring-check
# Conflicts:
# opendj-server-legacy/src/test/java/org/opends/server/backends/ChangelogBackendTestCase.java
Co-authored-by: vharseko <6818498+vharseko@users.noreply.github.com>
| | |
| | | * information: "Portions Copyright [year] [name of copyright owner]". |
| | | * |
| | | * Copyright 2016 ForgeRock AS. |
| | | * Portions Copyright 2026 3A Systems, LLC. |
| | | */ |
| | | package org.forgerock.opendj.ldap.spi; |
| | | |
| | |
| | | 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> { |
| | |
| | | * |
| | | * Copyright 2008-2010 Sun Microsystems, Inc. |
| | | * Portions Copyright 2011-2013 ForgeRock AS. |
| | | * Portions Copyright 2026 3A Systems, LLC. |
| | | */ |
| | | |
| | | #include "service.h" |
| | |
| | | |
| | | 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."); |
| | |
| | | * |
| | | * Copyright 2006-2008 Sun Microsystems, Inc. |
| | | * Portions Copyright 2013-2016 ForgeRock AS. |
| | | * Portions Copyright 2026 3A Systems, LLC. |
| | | */ |
| | | package org.opends.server.core; |
| | | |
| | |
| | | { |
| | | 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; |
| | | } |
| | |
| | | // write 4 more changes starting from changenumber 5, and search them |
| | | testName = "Multiple/5"; |
| | | csns = generateAndPublishUpdateMsgForEachOperationType(testName, false); |
| | | // Wait until changenumber 8 is visible before searching |
| | | // Wait until all 8 changes are indexed before searching |
| | | assertChangelogAttributesInRootDSE(1, 8); |
| | | searchChangesForEachOperationTypeUsingChangeNumberMode(5, csns, testName); |
| | | |
| | |
| | | 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); |
| | |
| | | } |
| | | } |
| | | |
| | | private void waitForStableGenerationId(final long expectedGenId) throws Exception |
| | | private void waitForDomainsOnAllReplicationServers() throws Exception |
| | | { |
| | | TestTimer timer = new TestTimer.Builder() |
| | | .maxSleep(30, SECONDS) |
| | |
| | | @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); |
| | | } |
| | | }); |
| | |
| | | # 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 |
| | |
| | | - |
| | | 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 |