[
http://jira.jboss.com/jira/browse/JBESB-638?page=all ]
Kurt Stam closed JBESB-638.
---------------------------
Applied fix to put init in static block
https://issues.apache.org/jira/browse/JUDDI-103
Transient registry errors caused by jUDDI race condition
--------------------------------------------------------
Key: JBESB-638
URL:
http://jira.jboss.com/jira/browse/JBESB-638
Project: JBoss ESB
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Registry and Repository
Reporter: Kevin Conner
Assigned To: Kevin Conner
Fix For: 4.2
Kurt, can you raise the following with jUDDI and have it fixed?
Thanks.
There is a race condition in the jUDDI codebase which causes transient registry
failures.
The symptom of the race condition is the following error message
E_busy (10400) The request cannot be processed at the current time. The Registry is
currently unavailable.
The class containing the race condition is org.apache.juddi.registry.local.Registry
Every call to Registry.getRegistry() results in the recreation and initialisation of a
global variable (registry). As the assignment of the global variable is made *before* the
initialisation method is called there exists a window of opportunity whereby a caller can
obtain a reference to an uninitialised registry. The consequence of this is that calls to
RegistryEngine.isAvailable() can return false.
I'm not sure why the RegistryEngine is being recreated on every call but the current
code is unsafe (even if ignoring multiprocessor memory models). There should not be a
global reference to the registry if it is a requirement to recreate it on every
invocation. If it is not a requirement then the initialisation should really be occurring
within a static block.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira