Hi,
When I add a statement and then delete a different statement within
a single transaction begin/end block, Tomcat is complaining about a
dangling thread. Here is what I am doing:
1. Tx begin
2. Add a statement
3. If add succeeded, Tx.success()
4. Delete a statement
5. If delete failed, Tx.failure()
6. In the finally block of the try statement, I call Tx.finish(),
shutdown the store, etc.
I have a workaround by creating 2 separate transactions (one for the
add and the other for the delete) and managing them independently with
associated status codes, which works fine. However, what I would really
like is to be able to do multiple DB modifying operations within a
single transaction block.
Assuming this is doable, would be nice to have a Tx.state() method that
returns whether Tx.success() or Tx.failure() was last called.
Thanks
madhu
Tomcat log:
Apr 13, 2010 9:51:27 PM org.apache.catalina.loader.WebappClassLoader
clearThreadLocalMap
SEVERE: A web application created a ThreadLocal with key of type [null]
(value [null]) and a value of type [org.neo4j.index.Isolation] (value
[SAME_TX]) but failed to remove it when the web application was
stopped. To prevent a memory leak, the ThreadLocal has been forcibly
removed.
Apr 13, 2010 9:51:27 PM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreadLocals
WARNING: Failed to clear ThreadLocal references
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja
va:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso
rImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.catalina.loader.WebappClassLoader.clearThreadLocalMap(Webapp
ClassLoader.java:2102)
at
org.apache.catalina.loader.WebappClassLoader.clearReferencesThreadLocal
s(WebappClassLoader.java:2027)
at
org.apache.catalina.loader.WebappClassLoader.clearReferences(WebappClas
sLoader.java:1710)
at
org.apache.catalina.loader.WebappClassLoader.stop(WebappClassLoader.jav
a:1622)
at
org.apache.catalina.loader.WebappLoader.stop(WebappLoader.java:710)
at
org.apache.catalina.core.StandardContext.stop(StandardContext.java:4649
)
at
org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:9
24)
at
org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1
174)
at
org.apache.catalina.startup.HostConfig.check(HostConfig.java:1342)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:3
03)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleS
upport.java:119)
at
org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.
java:1337)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.pro
cessChildren(ContainerBase.java:1601)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.pro
cessChildren(ContainerBase.java:1610)
at
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run
(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:637)
Caused by: java.lang.NullPointerException
at java.lang.ThreadLocal.access$400(ThreadLocal.java:53)
at
java.lang.ThreadLocal$ThreadLocalMap.remove(ThreadLocal.java:436)
... 20 more
_______________________________________________
Neo mailing list
[email protected]
https://lists.neo4j.org/mailman/listinfo/user