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_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]. > 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.
