I'm getting these OCM errors a lot too in 2.0.2. Only one thread runs at a
time in a servlet environment. Sometimes, I get old data from a cache and
get an OCM. Everything works if I invalidate the cache everytime.
I get connections using a single instance of OrientGraphFactory:
OrientGraph g = factory.getTx();
try {
On Thursday, January 29, 2015 at 3:13:22 AM UTC-7, Lvc@ wrote:
>
> Hi,
> How you get/release db instances?
>
> Lvc@
>
>
> On 29 January 2015 at 10:45, odbuser <[email protected] <javascript:>>
> wrote:
>
>> I still get the error occasionally without the clearing the cache before
>> use. Only one thread reads and writes these particular records at a time.
>> It is happening fairly frequently in this particular test which has 3
>> concurrent threads from a pool of 10. Every 30 seconds, records are
>> updated. In other words a write to a specific record occurs and then 30
>> seconds later that record is updated by a different thread. I've seen 20
>> of these errors over about 30 minutes. I don't think the cache working as
>> stated so I must clear it with the code I mentioned.
>>
>> com.orientechnologies.orient.core.exception.
>> OConcurrentModificationException: Cannot UPDATE the record #22:0 because
>> the version is not the latest. Probably you are updating an old record or
>> it has been modified by another user (db=v1247 your=v1229)
>> at com.orientechnologies.orient.core.conflict.
>> OVersionRecordConflictStrategy.checkVersions(
>> OVersionRecordConflictStrategy.java:54) ~[na:na]
>> at com.orientechnologies.orient.core.conflict.
>> OVersionRecordConflictStrategy.onUpdate(OVersionRecordConflictStrategy.
>> java:41) ~[na:na]
>> at com.orientechnologies.orient.core.storage.impl.local.
>> OAbstractPaginatedStorage.checkAndIncrementVersion(
>> OAbstractPaginatedStorage.java:2009) ~[na:na]
>> at com.orientechnologies.orient.core.storage.impl.local.
>> OAbstractPaginatedStorage.doUpdateRecord(OAbstractPaginatedStorage.java:
>> 1643) ~[na:na]
>> at com.orientechnologies.orient.core.storage.impl.local.
>> OAbstractPaginatedStorage.updateRecord(OAbstractPaginatedStorage.java:726
>> ) ~[na:na]
>> at com.orientechnologies.orient.core.db.document.
>> ODatabaseDocumentTx.executeSaveRecord(ODatabaseDocumentTx.java:1719) ~[na
>> :na]
>> at com.orientechnologies.orient.core.tx.OTransactionNoTx.
>> saveRecord(OTransactionNoTx.java:94) ~[na:na]
>> at com.orientechnologies.orient.core.db.document.
>> ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:2271) ~[na:na]
>> at com.orientechnologies.orient.core.db.document.
>> ODatabaseDocumentTx.save(ODatabaseDocumentTx.java:117) ~[na:na]
>> at com.orientechnologies.orient.core.record.impl.ODocument.save(
>> ODocument.java:1747) ~[na:na]
>> at com.orientechnologies.orient.core.record.impl.ODocument.save(
>> ODocument.java:1738) ~[na:na]
>> at com.tinkerpop.blueprints.impls.orient.OrientElement.save(
>> OrientElement.java:304) ~[na:na]
>> at com.tinkerpop.blueprints.impls.orient.OrientElement.save(
>> OrientElement.java:284) ~[na:na]
>> at com.tinkerpop.blueprints.impls.orient.OrientElement.
>> setProperty(OrientElement.java:186) ~[na:na]
>> at com.tinkerpop.frames.annotations.PropertyAnnotationHandler.
>> processElement(PropertyAnnotationHandler.java:34) ~[na:na]
>> at com.tinkerpop.frames.annotations.PropertyAnnotationHandler.
>> processElement(PropertyAnnotationHandler.java:11) ~[na:na]
>> at com.tinkerpop.frames.FramedElement.invoke(FramedElement.java:
>> 89) ~[na:na]
>>
>>
>>
>>
>> On Monday, January 26, 2015 at 5:25:16 AM UTC-5, Andrey Lomakin wrote:
>>>
>>> HI,
>>> You should not do this. It would be very inconvenient, it is done
>>> automatically now. We had issue with DB life cycle management in previous
>>> pool implementation now it is fixed.
>>> I remember that we had similar kind of discussion with you in mailing
>>> list and I promised you that it will be fixed in 2.0 :-) .
>>>
>>>
>>> On Sat, Jan 24, 2015 at 10:34 AM, odbuser <[email protected]> wrote:
>>>
>>>> Luca, the cache behavior still needs to be clarified in the
>>>> documentation. I've seen this question asked a few times but not fully
>>>> addressed unless I am missing something.
>>>>
>>>> In other words before every "request" in my app I have to do the
>>>> following to the open graph otherwise writing in a thread followed by a
>>>> read from another where that data was cached results in a dirty read:
>>>>
>>>> OrientGraph orientGraph = ...
>>>> ODatabaseDocumentTx rawGraph = orientGraph.getRawGraph();
>>>> OLocalRecordCache localCache = rawGraph.getLocalCache();
>>>> localCache.invalidate();
>>>>
>>>> Is this what users are expected to do? If so, it's a major use case
>>>> that needs to be explicit in the documentation.
>>>>
>>>> --
>>>>
>>>> ---
>>>> 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] <javascript:>.
>> 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.