Indeed! All tests pass! Thank you!

On Tuesday, October 28, 2014 9:52:22 AM UTC+1, Andrey Lomakin wrote:
>
> Fixed.
>
> On Fri, Oct 24, 2014 at 12:21 PM, Emanuele Milani <[email protected] 
> <javascript:>> wrote:
>
>> Thank you very much!
>>
>> On Friday, October 24, 2014 9:49:11 AM UTC+2, Andrey Lomakin wrote:
>>>
>>> HI,
>>> I will look at it https://github.com/orientechnologies/orientdb/
>>> issues/2977 next week .
>>>
>>>
>>>
>>> On Fri, Oct 24, 2014 at 10:44 AM, Rani Pinchuk <[email protected]> 
>>> wrote:
>>>
>>>> Hi all,
>>>>
>>>>  
>>>>
>>>> Could this question be clarified indeed? 
>>>>
>>>>  
>>>>
>>>> Is it correct that two Vertex objects which are referring to the same 
>>>> record cannot be used safely? So, when a change to the record is done 
>>>> using 
>>>> one of the Vertex object, is this change reflected always when using the 
>>>> other Vertex object (which refers to the same record)?
>>>>
>>>>  
>>>>
>>>> If this is not the case, then a cache which will cache Vertex objects 
>>>> could be used. The client will never get a Vertex object unless from the 
>>>> cache, and this way, the cache can make sure that there is at most one 
>>>> Vertex object available at each point in time for each record.
>>>>
>>>>  
>>>>
>>>> When working with threads, such a cache will have to be created per 
>>>> graph object, and the different caches will have to communicate with each 
>>>> other somehow (directly or indirectly), trigger refreshes to some Vertex 
>>>> objects that may have been updated by an object of the other cache. So not 
>>>> at all simple… 
>>>>
>>>>  
>>>>
>>>> Actually the local cache (mentioned here: http://www.orientechnologies.
>>>> com/docs/last/orientdb.wiki/Caching.html) may suggest that something 
>>>> like that is already implemented, although it seems that it does not work 
>>>> well in the example given by Emanuele. In addition, I am not sure how it 
>>>> behaves with respect to concurrency.
>>>>
>>>>  
>>>>
>>>> Is there already such mechanism designed in OrientDB, and this thread 
>>>> discusses a bug in this mechanism, or there is no such mechanism and we 
>>>> should never trust situations where two Vertex objects refer to the same 
>>>> record?
>>>>
>>>>  
>>>>
>>>> Thanks for clarifying this.
>>>>
>>>>  
>>>>
>>>> Rani
>>>>
>>>> On Tuesday, October 21, 2014 1:03:08 PM UTC+2, Andrey Lomakin wrote:
>>>>>
>>>>> Hi
>>>>> I got reason of your issue, could  you try 2.0-SNAPSHOT.
>>>>> Problem should be fixed there.
>>>>>
>>>>>
>>>>> On Tue, Oct 21, 2014 at 1:59 PM, Andrey Lomakin <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>> Do you have local cache enabled ? 
>>>>>> It explicitly created to avoid such problems.
>>>>>>
>>>>>> On Tue, Oct 21, 2014 at 12:48 PM, Emanuele Milani <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> Hi all!
>>>>>>>
>>>>>>> I am in the process of debugging an application based on OrientDB 
>>>>>>> (2.0M2). The problem I am facing are some 
>>>>>>> OConcurrentModificationException. 
>>>>>>> The issue appears with both the "memory" and the "plocal" storage 
>>>>>>> engines 
>>>>>>> (I did not try "remote"). It looks they are caused by the fact that 
>>>>>>> multiple OrientVertex objects which refer to the same database record 
>>>>>>> are 
>>>>>>> (in general) not in sync. This also means that there is no guarantee in 
>>>>>>> general that a value which is returned by a query is the most up to 
>>>>>>> date.
>>>>>>> The following code replicates the issue. I agree it may look a bit 
>>>>>>> awkward, but it is just the smallest example I could come up with from 
>>>>>>> our 
>>>>>>> code.
>>>>>>>
>>>>>>> OrientGraphFactory graphFactory = new OrientGraphFactory(DATABASE_UR
>>>>>>> L);
>>>>>>> graphFactory.setAutoStartTx(false);
>>>>>>> OrientGraph graph = graphFactory.getTx();
>>>>>>>
>>>>>>> graph.begin();
>>>>>>> OrientVertex firstVertexHandle = graph.addVertex(null, PROPERTY_NAME
>>>>>>> , 0);
>>>>>>> graph.commit();
>>>>>>> firstVertexHandle.setProperty(PROPERTY_NAME, 1);
>>>>>>>
>>>>>>> // Note that if any of the following 3 lines are commented, then the 
>>>>>>> problem does not appear
>>>>>>> graph.begin();
>>>>>>> graph.getVertices("someproperty", "somevalue").iterator().hasNext();
>>>>>>> graph.commit();
>>>>>>>         
>>>>>>> Object vertexId = firstVertexHandle.getId();
>>>>>>>
>>>>>>> Vertex secondVertexHandle = graph.getVertex(vertexId);
>>>>>>> secondVertexHandle.setProperty(PROPERTY_NAME, 2);
>>>>>>>
>>>>>>> // prints 1
>>>>>>> System.out.println(firstVertexHandle.getProperty(PROPERTY_NAME));
>>>>>>> // prints 2
>>>>>>> System.out.println("Value queried from the second vertex handle is " 
>>>>>>> + secondVertexHandle.getProperty(PROPERTY_NAME));
>>>>>>>
>>>>>>> // The following throws an OConcurrentModificationException
>>>>>>> firstVertexHandle.setProperty(PROPERTY_NAME, 3);
>>>>>>>
>>>>>>>
>>>>>>> Is this a bug in OrientDB?
>>>>>>> What should the expected behavior with respect to multiple Vertex 
>>>>>>> objects referring to the same database record?
>>>>>>>
>>>>>>> -- 
>>>>>>>
>>>>>>> --- 
>>>>>>> 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.
>>>>>>
>>>>>> Orient Technologies
>>>>>> the Company behind OrientDB
>>>>>>
>>>>>>  
>>>>>
>>>>>
>>>>> -- 
>>>>> Best regards,
>>>>> Andrey Lomakin.
>>>>>
>>>>> Orient Technologies
>>>>> the Company behind OrientDB
>>>>>
>>>>>   -- 
>>>>
>>>> --- 
>>>> 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.
>>>
>>> Orient Technologies
>>> the Company behind OrientDB
>>>
>>>   -- 
>>
>> --- 
>> 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.
>>
>
>
>
> -- 
> Best regards,
> Andrey Lomakin.
>
> Orient Technologies
> the Company behind OrientDB
>
> 

-- 

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