Closed
Bug 28005
Opened 25 years ago
Closed 25 years ago
Exceptions thrown in connect and disconnect
Categories
(Directory :: LDAP Java SDK, defect, P3)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: Thomas.Beyer, Assigned: miodrag)
Details
Under heavy load we get from time to time the following exceptions
(LDAP-SDK 4.0, Sun's JDK 1.2.2, Solaris 2.6 and Windows NT 4.0):
------------------------ on Windows NT --------------------------------------
java.util.NoSuchElementException: Vector Enumeration
at java.util.Vector$1.nextElement(Vector.java, Compiled Code)
at netscape.ldap.LDAPConnection.getNewThread(LDAPConnection.java,
Compiled Code)
at netscape.ldap.LDAPConnection.connect(LDAPConnection.java, Compiled
Code)
at netscape.ldap.LDAPConnection.connect(LDAPConnection.java, Compiled
Code)
at netscape.ldap.LDAPConnection.connect(LDAPConnection.java, Compiled
Code)
at LDAP.Bind(LDAP.java, Compiled Code)
at thr.run(thr.java, Compiled Code)
java.lang.NullPointerException
at netscape.ldap.LDAPConnection.deleteThreadConnEntry
(LDAPConnection.java, Compiled Code)
at netscape.ldap.LDAPConnection.disconnect(LDAPConnection.java,
Compiled Code)
at LDAP.Unbind(LDAP.java, Compiled Code)
at thr.run(thr.java, Compiled Code)
------------------------ on SUN -----------------------------------------------
java.util.NoSuchElementException: Vector Enumeration
at java.lang.Throwable.fillInStackTrace(Native Method)
at java.lang.Throwable.fillInStackTrace(Compiled Code)
at java.lang.Throwable.<init>(Compiled Code)
at java.lang.Exception.<init>(Exception.java:42)
at java.lang.RuntimeException.<init>(RuntimeException.java:47)
at java.util.NoSuchElementException.<init>
(NoSuchElementException.java:46)
at java.util.Vector$1.nextElement(Compiled Code)
at netscape.ldap.LDAPConnection.deleteThreadConnEntry(Compiled Code)
at netscape.ldap.LDAPConnection.disconnect(LDAPConnection.java:1772)
at LDAP.Unbind(Compiled Code)
at thr.run(Compiled Code)
java.lang.NullPointerException
at netscape.ldap.LDAPConnection.deleteThreadConnEntry
(LDAPConnection.java, Compiled Code)
at netscape.ldap.LDAPConnection.disconnect(LDAPConnection.java,
Compiled Code)
at LDAP.Unbind(LDAP.java, Compiled Code)
at thr.run(thr.java, Compiled Code)
-----------------------------------------------------------------------------
The exceptions can be easily reproduced with a program that creates
some (e.g. 16) threads and each threads run methods goes like this:
LDAPConnection ld = new LDAPConnection ();
for (int i = 1; i <= numRuns; i++) {
try {
ld.connect (host,port);
ld.disconnect ();
} catch (LDAPException e) { ...}
}
If we synchronize the connect and disconnect calls with the same
object:
try {
synchronized (obj) {
ld.connect (host,port);
}
synchronized (obj) {
ld.disconnect ();
}
} catch (LDAPException lde) { ...}
the problems don't occur. But the SDK is proposed to be threadsafe,
so the synchronization shouldn't be necessary.
The problem is caused by the lack of synchronization in deleteThreadConnEntry
method.
The fix has been cheked in 05-06-00.
Checking in ldapjdk/netscape/ldap/LDAPConnection.java;
/cvsroot/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPConnection.java,v
<-- LDAPConnection.java
new revision: 1.17; previous revision: 1.16
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•