Hi, Could you create small test case so we should run it ? On Fri, Feb 20, 2015 at 1:22 PM, Bjorn Cintra <bcin...@gmail.com> wrote:
> Oh, I also get OConcurrentModificationExceptions, wich seems a bit weird > as well, since I am the only user, commiting 1 record at a time... > > > On Friday, February 20, 2015 at 12:16:06 PM UTC+1, Bjorn Cintra wrote: >> >> Yeah, I figured yours was the same problem >> >> It seems that if I wait long enough, the connections get syncronized, and >> they see the same result. I can live with an eventual type of consistency >> (as I can mask it using client side JavaScript), but only if it takes <1 >> second to update. >> >> The Gremlin shell never updates. >> >> On Friday, February 20, 2015 at 12:03:18 PM UTC+1, Aris Alexis wrote: >>> >>> https://groups.google.com/forum/#!topic/orient-database/ERs4eaSGAjI >>> >>> I have been debugging the same problem and it drives me crazy! >>> >>> On Friday, February 20, 2015 at 11:20:09 AM UTC+1, Bjorn Cintra wrote: >>>> >>>> Hi >>>> >>>> My use case scenario is a web app, where the OrientGraphFactory is >>>> instanced as a Singleton Provider using Google Guice, and each use of >>>> OrientGraph is bound to the ResuestScope, aka each request get a potential >>>> different graph thread instance. I am the only user at the moment. >>>> >>>> All Vertexes and Edges extends ORestricted, and the OrientGraphFactory >>>> is created using a tenant user and password to limit visibility towards >>>> other tenants. >>>> >>>> I have a GroupDAO that has a method updateRoles that takes a Group and >>>> a List of roles, and first remove all exiting edges between the Group and >>>> the Roles, and then re-add the Edges. >>>> >>>> @Override >>>> void updateRoles(IGroup group, List<String> roles) { >>>> try { >>>> // 1.) Remove old connections >>>> graph.getVertex(group.getId()).outE('member').remove() >>>> >>>> // 2.) Add all new >>>> Vertex vGroup = graph.getVertex(group.getId()) >>>> >>>> roles.each { String role -> >>>> Vertex vRole = graph.getVertex(role) >>>> Edge member = graph.addEdge(null, vGroup, vRole, "member"); >>>> log.info('log: role: {}, member: {}', role, member) >>>> } >>>> graph.commit() >>>> } catch( Exception e ) { >>>> log.error(e.getMessage(), e) >>>> graph.rollback(); >>>> throw e >>>> } >>>> } >>>> >>>> >>>> Using the web-flow of POST->redirect->GET, the get call after the >>>> update will in turn call getRoles to get the updated list of Roles from the >>>> database >>>> >>>> @Override >>>> List<IRole> getRoles(IGroup group) { >>>> List<IRole> roles = [] >>>> graph.commit() >>>> def result = graph.getVertex(group.getId()).outE('member').inV >>>> while(result.hasNext()){ >>>> roles << OrientHelper.fromVertex(result.next(), Role.class) >>>> } >>>> >>>> return roles >>>> } >>>> >>>> >>>> OritentHelper.fromVertex is a helper class i use to reflect Vertex onto >>>> a bean instance. >>>> >>>> So to my actual problem(s): >>>> >>>> 1.) The get request contains a result that is not consistent. As each >>>> request uses a different thread, and graph instance from the pool, it will >>>> sometimes get the updated result, and sometimes the old result. The old >>>> result does not go away until another update, but then the result reflect >>>> the new updates, with the same problem. It seems like a cache issue to me. >>>> >>>> 2.) Using the Gremlin shell, the Edges never gets updated. It will keep >>>> listing the old Edges until the graph is closed and reopened. The web >>>> interface shows the updated Edges. >>>> >>>> I am using OrientDb 2.0.2, Java 8, Linux and Groovy 2.3.7 on a remote >>>> (localhost) connection. I am using Gremlin 2.6.0. >>>> >>> -- > > --- > 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 orient-database+unsubscr...@googlegroups.com. > 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 orient-database+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.