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] > <javascript:>> 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_URL >>>>> ); >>>>> 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] <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.
