-
Bug
-
Resolution: Fixed
-
P4
-
1.4.0
-
None
-
ladybird
-
sparc
-
solaris_2.6
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2110082 | 1.4.0 | Rosanna Lee | P4 | Resolved | Fixed | beta |
The use of locks in the LDAP provider could be improved.
NamingEventNotifier: rename finalize() to cleanup(). cleanup() is always called
before the thread exits (in finally clause) so no need for a finalize()
EventSupport: removeDeadNotifier() needs sync in case 'notifiers' is not
completely constructed before this method is called (consistent with other
access of 'notifiers';
- fireUnsolicited() and cleanup() needs sync because they access unsolicited
and notifiers
Connection:
- abandonRequeset(), ldapUnbind(): move synchronized closer to shared
data access
- replaceInputStream(), run(): expanded scope of synchronized to include
update of inStream
- Removed finalize(); thread's finally clause already calls cleanup()
LdapClient:
- finalize(): call forceClose() instead of close()
- added internal version of getSearchReply() that skips some checks and setup
- 'unsolicited' now initialized by default (instead of on-demand)
- *Unsolicited() methods synchronize on 'unsolicited' instead of LdapClient
to prevent possible deadlock
LdapCtx:
- reconnect(): removed synchronized modifier (not needed)
- synchronize access to clnt.referenceCount and closing connection
- *Unsolicited() methods synchronize on eventSupport instead of LdapCtx;
syncing on LdapCtx is problemmatic when caller syncs on Context (prevents
firing of Unsolicited Notifications).
NamingEventNotifier: rename finalize() to cleanup(). cleanup() is always called
before the thread exits (in finally clause) so no need for a finalize()
EventSupport: removeDeadNotifier() needs sync in case 'notifiers' is not
completely constructed before this method is called (consistent with other
access of 'notifiers';
- fireUnsolicited() and cleanup() needs sync because they access unsolicited
and notifiers
Connection:
- abandonRequeset(), ldapUnbind(): move synchronized closer to shared
data access
- replaceInputStream(), run(): expanded scope of synchronized to include
update of inStream
- Removed finalize(); thread's finally clause already calls cleanup()
LdapClient:
- finalize(): call forceClose() instead of close()
- added internal version of getSearchReply() that skips some checks and setup
- 'unsolicited' now initialized by default (instead of on-demand)
- *Unsolicited() methods synchronize on 'unsolicited' instead of LdapClient
to prevent possible deadlock
LdapCtx:
- reconnect(): removed synchronized modifier (not needed)
- synchronize access to clnt.referenceCount and closing connection
- *Unsolicited() methods synchronize on eventSupport instead of LdapCtx;
syncing on LdapCtx is problemmatic when caller syncs on Context (prevents
firing of Unsolicited Notifications).
- backported by
-
JDK-2110082 minor synchronization fixes and elimination of some unneeded finalizers
-
- Resolved
-