@Test
public void testCreateRollback() {
    String name = null;
        
    try {
        name = UUID.randomUUID();
        MyClass newClass = new MyClass();
        myClass.setName(name);


        db.begin();
        // Remove from here
         

*String q = "SELECT FROM (SELECT expand(out('" + 
RandomEdge.class.getSimpleName() + "')) FROM #21:0)";        
 db.command(new OSQLSynchQuery(q)).execute();*        // Remove to here
            
        MyClass savedClass = db.save(newClass);
        db.rollback();

        List<ODocument> oDocs = db.getUnderlying().command(new 
OSQLSynchQuery("SELECT FROM MyClass WHERE name = '" + name + "'")).execute
();
        Assert.assertTrue(oDocs.isEmpty());
        if (oDocs.isEmpty()) {
            name = null;
        }
    } finally {
        if (name != null) {
            db.command(new OCommandSQL("DELETE VERTEX MyClass WHERE name = 
'" + name + "'")).execute();
        }
    }
}

Consider the test case above. I'm running an embedded plocal server using 
the object API.

If I run this test, it fails. If I run this test and remove the code marked 
by the comments, it works.

In other words, the transaction doesn't rollback when I expand a completly 
random edge. 
I'm not even using the result of the select (in this code), but it still 
cases the rollback to fail. Super weird behavior..
Am I missing something with transactions or is this a weird and severe bug?


-- 

--- 
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