Matthieu,
I ran into a similar issue recently and after hours of debugging, I
suspect the problem is when you creating a new edge from C to B, even
though you just used createEdge method call and did not change anything to
Vertex B, after createEdge call, vertex B is actually changed in database.
I think it is because OrientDB also stored some information on Vertex B for
this newly created edge. (C->B). At that moment, the vertex B instance you
hold in your application is no longer the latest version.
Tai
On Wednesday, March 9, 2016 at 11:52:33 AM UTC-5, matthieu marseille wrote:
>
> Hi Luca,
>
> We are thinking of creating a very small sample that reproduces the
> exception. We are lacking time at the moment, but maybe in the weeks to
> come.
>
> Cheers,
>
> On Tuesday, March 8, 2016 at 9:54:18 PM UTC+1, l.garulli wrote:
>>
>> Hi Matthieu,
>>
>> You shouldn't have such exception if you have just one thread with no
>> concurrency, so there should be something in your code. Could you remove
>> the sensitive data, namely name and value of fields, and post here the
>> piece of code that gets this exception?
>>
>> Best Regards,
>>
>> Luca Garulli
>> Founder & CEO
>> OrientDB <http://orientdb.com/>
>>
>>
>> On 8 March 2016 at 18:23, matthieu marseille <[email protected]>
>> wrote:
>>
>>> Hi Hung,
>>>
>>> Unfortunately I cannot share the code due to project security reasons.
>>>
>>> To be more precise, we have a single thread with a *single* connection.
>>> After further investigations, we are in a part of the code where we have
>>> the following situation :
>>>
>>> 1. A -> B (read : vertex A is linked to B with an edge)
>>> 2. A&C -> B (now A and C are linked to B with one edge each)
>>> 3. update of B : this is where the exception is thrown.
>>>
>>> Is it clearer ?
>>>
>>>
>>> On Tuesday, March 8, 2016 at 5:02:45 PM UTC+1, Hung Tran wrote:
>>>>
>>>> Hi matthieu,
>>>>
>>>> What Michela said is exactly right. You will need to find it out, it is
>>>> not too hard to figure it out. From Studio, you could make a query to
>>>> check
>>>> version of that row, your row version in your code should be smaller than
>>>> the row current version in your database at commit time, that's a reason
>>>> why you got this exception.
>>>>
>>>> With a single thread client, you may have two instances of the same row
>>>> loaded by different connections in your context, and one of your logic is
>>>> trying to persist the one with older version.
>>>>
>>>> Could you upload a sample code to duplicate the error here?
>>>>
>>>> My Best,
>>>> Hung Tran
>>>>
>>>> On Tuesday, March 8, 2016 at 6:47:48 PM UTC+7, matthieu marseille wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> You'll find attached to this post the full stack trace that we obtain
>>>>> while we are updating a Vertex in client/server mode, from a
>>>>> single-threaded client and no concurrent use of the DB (v2.1.10). DB
>>>>> engine
>>>>> transactions are turned on.
>>>>>
>>>>> Here is just the final exception trace that we got :
>>>>>
>>>>> Caused by:
>>>>> com.orientechnologies.orient.core.exception.OConcurrentModificationException:
>>>>>
>>>>> Cannot UPDATE the record #20:0 because the version is not the latest.
>>>>> Probably you are updating an old record or it has been modified by
>>>>> another
>>>>> user (db=v12 your=v10)
>>>>> at
>>>>> com.orientechnologies.orient.core.conflict.OVersionRecordConflictStrategy.checkVersions(OVersionRecordConflictStrategy.java:55)
>>>>> at
>>>>> com.orientechnologies.orient.core.conflict.OVersionRecordConflictStrategy.onUpdate(OVersionRecordConflictStrategy.java:42)
>>>>> at
>>>>> com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.checkAndIncrementVersion(OAbstractPaginatedStorage.java:2394)
>>>>> ...
>>>>>
>>>>> On our side, we guess that it might be a "reload" problem in the
>>>>> client cache. However, we expected not to have such an exception in our
>>>>> very simple use case.
>>>>>
>>>>> --
>>>
>>> ---
>>> 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.
>>>
>>
>>
--
---
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.