Hi,
I've been working on upgrading our graph code from OrientDB 1.7 to OrientDB
2.0M2. Since we're using the blueprints API's this was quite easy, however
I noticed a difference regarding transactions with the new OrientDB version.
Using the TransactionalGraph API a transaction is supposed to be bound to a
thread, so commit() and rollback() invocations on different threads should
not have effect on each other. This appears not to be the case with the new
version.
See the following code:
final TransactionalGraph graph = m_graph.getGraph();
Runnable r1 = new Runnable() {
@Override
public void run() {
Vertex vertex = graph.addVertex(null);
System.out.println("add v1");
vertex.setProperty("name", "v1");
vertex.setProperty("category", "v");
// delay the commit to check whether the rollback on the other thread has
any effect on what we're doing here
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
System.out.println("graph commit");
graph.commit();
}
};
// Thread 2 appears to roll-back the work that was done but not yet
committed in thread 1.
Runnable r2 = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
System.out.println("graph rollback");
graph.rollback();
}
};
new Thread(r1).start();
new Thread(r2).start();
try {
Thread.sleep(1500);
}
catch (InterruptedException e) {
}
System.out.println("wake and check");
Iterable<Vertex> vertices = graph.getVertices("category", "v");
long count = StreamSupport.stream(vertices.spliterator(), false).count();
assertEquals(1, count);
To me this seems like a bug, or am I overlooking something ?
Thanks,
Xander
--
---
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.