HI,
Please do not do locking, it is unsafe in tx mode.
You need to repeat tx in case of concurrent modification exception.

On Thu, Jan 29, 2015 at 1:32 AM, Jing Chen <[email protected]> wrote:

> Hi there,
>
> I have a question about a concurrency issue. I have 3 nodes A, B and C in
> the database. There is a lightweight edge from A to B. There is also an
> edge from C to B. Now I have 2 threads running concurrently, Thread 1 is
> deleting node A using OrientVertex.remove() function.  Thread 2 is deleting
> node C using OrientVertex.remove() function in the same time. Right now I
> am getting this error
>
> com.orientechnologies.orient.core.exception.OConcurrentModificationException:
> Cannot UPDATE the record #18:1 because the version is not the latest.
> Probably you are updating an old record or it has been modified by another
> user (db=v72 your=v71)
>
> #18:1 is my node B. what would be the best practice to handle this? Should
> I do something like this in the thread?
>
> OrientVertex b = graph.getVertex(#18:1);
> b.lock(false);
> OrientVertex a = graph.getVertex(id_of_A);
> a.remove();
> b.unlock();
>
> When thread 1 called b.lock(false) and locked the vertex, what will happen
> if thread 2 calls b.lock(false)? does the call return an exception or the
> call will return when b is unlocked by thread 1?
>
> Thanks,
> Jing
>
> --
>
> ---
> 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.
>



-- 
Best regards,
Andrey Lomakin.

-- 

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