-
Notifications
You must be signed in to change notification settings - Fork 111
Open
Description
Describe the bug
We use OpenDJ 4.9.4 and PostgreSQL 16.9. OS: Windows 10. When I try to make seach request , there is no response and I see deadlock in threaddump.
To Reproduce
Steps to reproduce the behavior:
- Install OpenDJ 4.9.4 Add postgresql-42.7.7.jar in OpenDJ folder lib\extensions
- Install PostgreSQL 16.9
- Create a database in Postgesql:
CREATE DATABASE opendj_db;
CREATE USER opendj_user WITH PASSWORD 'opendj_password';
GRANT ALL PRIVILEGES ON DATABASE opendj_db TO opendj_user;
- Create a jdbc backend and import the data.
bat\dsconfig -h localhost -p 4444 -D "cn=Directory Manager" -w my_password --trustAll create-backend --backend-name postgresBackend --type jdbc --set enabled:true --set base-dn:dc=example,dc=pg --set "db-directory:jdbc:postgresql://127.0.0.1:5432/opendj_db?user=opendj_user&password=opendj_password&ssl=false&defaultRowFetchSize=100&loginTimeout=30&socketTimeout=300&cancelSignalTimeout=10&stringtype=unspecified&maxPoolSize=50" -X -n
My configuration in config.ldif:
dn: ds-cfg-backend-id=postgresBackend,cn=Backends,cn=config
createTimestamp: 20250709223132Z
creatorsName: cn=Directory Manager,cn=Root DNs,cn=config
ds-cfg-backend-id: postgresBackend
ds-cfg-base-dn: dc=example,dc=pg
ds-cfg-db-directory: jdbc:postgresql://127.0.0.1:5432/opendj_db?user=opendj_user&password=opendj_password&ssl=false&defaultRowFetchSize=100&loginTimeout=30&socketTimeout=300&cancelSignalTimeout=10&stringtype=unspecified&maxPoolSize=50
ds-cfg-enabled: TRUE
ds-cfg-java-class: org.opends.server.backends.jdbc.Backend
ds-cfg-writability-mode: enabled
entryUUID: 6ec1c714-d1ca-4fe8-9d78-d02bba3782de
modifiersName: cn=Internal Client,cn=Root DNs,cn=config
modifyTimestamp: 20250710093313Z
objectClass: ds-cfg-backend
objectClass: ds-cfg-jdbc-backend
objectClass: ds-cfg-local-backend
objectClass: ds-cfg-pluggable-backend
objectClass: top
- The OpenDJ started successfully. I see in the logs:
category=BACKEND severity=NOTICE msgID=513 msg=The database backend postgresBackend containing 100052 entries has started
- Then I make a search request . For example,
bat\ldapsearch -h localhost -p 389 -D "cn=Directory Manager" -w admin -b "dc=example,dc=pg" -s base "(objectclass=*)"
Expected behavior
The result of the search is succeessful.
Actual result
The requset is hanging. Threaddump:
"Worker Thread 29" #96 [9436] prio=5 os_prio=0 cpu=0.00ms elapsed=976.61s tid=0x000002100c8b81c0 nid=9436 waiting on condition [0x000000a9e63fe000]
java.lang.Thread.State: WAITING (parking)
at jdk.internal.misc.Unsafe.park(java.base@21/Native Method)
- parking to wait for <0x00000007af961820> (a com.google.common.util.concurrent.SettableFuture)
at java.util.concurrent.locks.LockSupport.park(java.base@21/LockSupport.java:221)
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:561)
at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:111)
at com.google.common.util.concurrent.Uninterruptibles.getUninterruptibly(Uninterruptibles.java:247)
at com.google.common.cache.LocalCache$LoadingValueReference.waitForValue(LocalCache.java:3621)
at com.google.common.cache.LocalCache$Segment.waitForLoadingValue(LocalCache.java:2210)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2197)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2080)
at com.google.common.cache.LocalCache.get(LocalCache.java:4012)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4035)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5011)
at org.opends.server.backends.jdbc.CachedConnection.close(CachedConnection.java:131)
at org.opends.server.backends.jdbc.CachedConnection$2.onRemoval(CachedConnection.java:39)
at com.google.common.cache.LocalCache.processPendingNotifications(LocalCache.java:1850)
at com.google.common.cache.LocalCache$Segment.runUnlockedCleanup(LocalCache.java:3503)
at com.google.common.cache.LocalCache$Segment.postWriteCleanup(LocalCache.java:3479)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2181)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2080)
at com.google.common.cache.LocalCache.get(LocalCache.java:4012)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4035)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5011)
at org.opends.server.backends.jdbc.CachedConnection.getConnection(CachedConnection.java:64)
at org.opends.server.backends.jdbc.CachedConnection.getConnection(CachedConnection.java:60)
at org.opends.server.backends.jdbc.Storage.getConnection(Storage.java:92)
at org.opends.server.backends.jdbc.Storage.read(Storage.java:178)
at org.opends.server.backends.pluggable.TracedStorage.read(TracedStorage.java:496)
at org.opends.server.backends.pluggable.EntryContainer.search(EntryContainer.java:672)
at org.opends.server.backends.pluggable.BackendImpl.search(BackendImpl.java:565)
at org.opends.server.workflowelement.localbackend.LocalBackendSearchOperation.processSearch(LocalBackendSearchOperation.java:255)
at org.opends.server.workflowelement.localbackend.LocalBackendSearchOperation.processLocalSearch(LocalBackendSearchOperation.java:109)
at org.opends.server.workflowelement.localbackend.LocalBackendWorkflowElement.executeOperation(LocalBackendWorkflowElement.java:608)
at org.opends.server.workflowelement.localbackend.LocalBackendWorkflowElement.execute(LocalBackendWorkflowElement.java:743)
at org.opends.server.core.SearchOperationBasis.run(SearchOperationBasis.java:1025)
at org.opends.server.extensions.TraditionalWorkerThread.run(TraditionalWorkerThread.java:148)
vharseko
Metadata
Metadata
Assignees
Labels
No labels