Hi guys, When you use the remote connection + fetchplan, OrientDB sends the connected records into the client's Level1 cache. So when the client loads the RecordID it finds the record in local cache, and the server is not involved.
The problem you are experimenting is related to the fact the db instance must be alive, even if the remote call is not made. If you need to operate without a database try calling: v.getRecord().detach(); Lvc@ On 11 August 2014 18:39, Shaun Barker <[email protected]> wrote: > Hi > > No news on this topic I see. I spoke with Vladimir and wanted to > paraphrase the issue: > > The reason he turned off orient db was to prove that all linked vertices > would be pre-loaded. Since the system died immediately is it correct to say > that the system was trying to call the db to load more data during that for > loop? > > We guess the connection was being called for more data, or is the client > on some keep alive and this caused the issue? > > regards > > S > > > On Wednesday, July 16, 2014 5:56:16 PM UTC+1, Vladimir Ziankevich wrote: >> >> Hi guys! >> In my test graph database I'm trying to retrive list of vertices with >> enabled fetching. >> I do the next: >> >> public List<Vertex> getPeopleByName(OrientGraph graph, String name) { >> >> Iterable<Vertex> people = graph.command( >> new OCommandSQL( >> "select from People where name CONTAINSTEXT '"+ >> name +"' " // Fulltext index was already built >> ) >> ).setFetchPlan("*:-1").execute(); >> >> return Lists.newArrayList(people); >> } >> >> ... >> OrientGraphFactory graphFactory = new OrientGraphFactory( " >> remote:localhost/ExampleDatabase", username, password); >> OrientGraph graph = graphFactory.getNoTx();// also tried with getTx() >> >> List<Vertex> people = graphDao.getPeople(graph, "Bi"); >> >> // Line 1, where I shutdown OrientDB >> for (Vertex person : people) { >> Iterator<Vertex> parentsIterator = person.getVertices(Direction.IN, >> "parent").iterator(); >> >> if (parentsIterator.hasNext()) { >> // some logic here >> // and here >> } >> } >> >> graph.shutdown(); >> ... >> >> >> So, enabling fetching "*:-1" I expected that all linked vertices would be >> pre-loaded. But in the debug mode staying on the breakpoint an line "Line >> 1" when I shutdown OrientDB the next code person.getVertices(Direction.IN, >> "parent") throws an exeption >> >> com.orientechnologies.orient.core.exception.ODatabaseException: Error on >> retrieving record #16:1829 >> ... >> Caused by: com.orientechnologies.common.io.OIOException: Error on >> connecting to 127.0.0.1:2424/ExampleDatabase >> ... >> Caused by: java.net.ConnectException: Connection refused: connect >> >> I googled a little bit, found some possible causes... >> >> I've checked if level 1 cache enabled. In orientdb-server-config.xml I >> have >> >> <entry value="true" name="cache.level1.enabled"/> >> <entry value="false" name="cache.level2.enabled"/> >> and >> OGlobalConfiguration.CACHE_LEVEL1_ENABLED.getValue() >> returns true >> >> Also I use remote connection >> new OrientGraphFactory( "remote:localhost/ExampleDatabase", username, >> password); >> >> I have no ideas what is the problem. >> >> Could someone help me to find what I'm doing wrong? Thanks in advance. >> >> P.S. I run OrientDB on Windows 7 if it makes sense. >> > -- > > --- > 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. > -- --- 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.
