Hi.

Any chance this issue has been tackled?

I'm having the same problem when performing an update with the OCommandSQL 
command (Orient 1.7.0). 

I need to roolback sometimes because of OConcurrentModificationException 
exceptions. The problem is since this a transaction on itself it doesn't 
roolback.

If there is any workaround I would appreciate it ;)

Kind regards,
Manuel Coutinho



On Saturday, June 2, 2012 at 6:40:29 PM UTC+1, Salvatore Piccione wrote:
>
> Hello,
>
> I've defined some tests on transactions (both Blueprints and Orient native 
> ones) in order to verify if SQL statements are aware of the transaction 
> context in which they are executed.
> You can find a test case about the execution of SQL INSERTs into an index 
> and a class inside a transaction at https://gist.github.com/2859180.
> It seems that such SQL statements are not aware of the transaction scope 
> defined in the code. In particular I found the following issues:
>
>    - the graph element created through a SQL INSERT is not deleted when 
>    the transaction is rolled back 
>    - the SQL INSERT into an index doesn't work if the graph element to be 
>    added has been defined in a transaction by using Java API (it's got a 
>    temporary RID). In particular I get [1] if the vertex has been defined 
>    through Blueprints API while I get [2] if the vertex has been defined 
>    through native API. Additionally, I've discovered that: 
>    - if you use the Blueprints API to define the vertex, you get a 
>       temporary RID with the right cluster id (6 for Vertex and 7 for Edge)
>       - if you use native graph API to define the vertex, you get a 
>       temporary RID with a temporary (i.e. negative) cluster id. This happens 
>       even passing the name of the class in the method 
>       OGraphDatabase.createVertex(). Any idea about this?
>       
> I'd like to know if the SQL statement's unawareness of the transaction 
> scope is a known issue or I did something wrong in mt code. At the moment, 
> I'm forced to use only Java API to change (insert, modify and delete) my 
> data inside a transaction to make transaction working fine.
>
> TIA,
>
> Salvatore
>
> [1] Stack trace got using Blueprints API
> com.orientechnologies.orient.core.exception.OCommandExecutionException: 
> Error on execution of command: OCommandSQL [text=INSERT INTO 
> index:aManualIdx(key,rid) VALUES (52,#6:-2)]
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> Method)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown 
> Source)
>     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown 
> Source)
>     at java.lang.reflect.Constructor.newInstance(Unknown Source)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.createException(OChannelBinary.java:409)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.handleStatus(OChannelBinary.java:364)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:145)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:60)
>     at 
> com.orientechnologies.orient.client.remote.OStorageRemote.beginResponse(OStorageRemote.java:1492)
>     at 
> com.orientechnologies.orient.client.remote.OStorageRemote.command(OStorageRemote.java:703)
>     at 
> com.orientechnologies.orient.client.remote.OStorageRemoteThread.command(OStorageRemoteThread.java:191)
>     at 
> com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:60)
>     at 
> org.example.orientdb.TestIndexUsageInTransaction.testBlueprintsAPI(TestIndexUsageInTransaction.java:117)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>     at java.lang.reflect.Method.invoke(Unknown Source)
>     at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
>     at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>     at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
>     at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>     at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
>     at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>     at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: java.lang.NullPointerException
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> Method)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown 
> Source)
>     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown 
> Source)
>     at java.lang.reflect.Constructor.newInstance(Unknown Source)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.createException(OChannelBinary.java:411)
>     ... 32 more
>
> [2] Stack trace got using native API
> com.orientechnologies.orient.core.exception.OCommandExecutionException: 
> Error on execution of command: OCommandSQL [text=INSERT INTO 
> index:aManualIdx(key,rid) VALUES (52,#-1:-1)]
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> Method)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown 
> Source)
>     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown 
> Source)
>     at java.lang.reflect.Constructor.newInstance(Unknown Source)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.createException(OChannelBinary.java:409)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.handleStatus(OChannelBinary.java:364)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:145)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinaryAsynch.beginResponse(OChannelBinaryAsynch.java:60)
>     at 
> com.orientechnologies.orient.client.remote.OStorageRemote.beginResponse(OStorageRemote.java:1492)
>     at 
> com.orientechnologies.orient.client.remote.OStorageRemote.command(OStorageRemote.java:703)
>     at 
> com.orientechnologies.orient.client.remote.OStorageRemoteThread.command(OStorageRemoteThread.java:191)
>     at 
> com.orientechnologies.orient.core.command.OCommandRequestTextAbstract.execute(OCommandRequestTextAbstract.java:60)
>     at 
> org.example.orientdb.TestIndexUsageInTransaction.testNativeAPI(TestIndexUsageInTransaction.java:164)
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
>     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
>     at java.lang.reflect.Method.invoke(Unknown Source)
>     at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
>     at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>     at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
>     at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
>     at 
> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
>     at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
>     at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
>     at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
>     at 
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
>     at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: java.lang.ClassCastException
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 
> Method)
>     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown 
> Source)
>     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown 
> Source)
>     at java.lang.reflect.Constructor.newInstance(Unknown Source)
>     at 
> com.orientechnologies.orient.enterprise.channel.binary.OChannelBinary.createException(OChannelBinary.java:411)
>     ... 32 more
>
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to