2013-03-01 53 views
1

一部開拓創新POSTNeo4J意外關機或配置錯誤?

讓我開始與我的代碼。這是出現錯誤的代碼片段。

DatabaseModuleInterface dbModule = new DatabaseModuleImpl(); 
System.out.println(dbModule.getDb()); 
Traverser t = dbModule.getGraphTree(usernode); 

System.out.println("DBMODULE = " + dbModule.toString()); 
System.out.println("USERNODE = " + usernode); 
System.out.println("TRAVERSER1 = " + dbModule.getGraphTree(usernode)); 

    System.out.println("T IS NOT NULL"); 
    if (t.nodes() != null) { 
     System.out.println("T NODES IS NOT NULL"); 
     for (Node node : t.nodes()) { 
      if (node != null) { 
       System.out.println("NODE IS NOT NULL"); 
      } else { 
       System.out.println("NODE IS NULL"); 
      } 
     } 
    } 

它返回

INFO: EmbeddedGraphDatabase [C:\impactordb] 
INFO: DBMODULE = be.arch[email protected]bed5ea 
INFO: USERNODE = Node[241] 
INFO: TRAVERSER1 = [email protected] 
INFO: T IS NOT NULL 
INFO: T NODES IS NOT NULL 

然後就是錯誤與以下堆棧跟蹤

java.lang.NullPointerException 
at org.neo4j.kernel.impl.nioneo.xa.ReadTransaction.nodeLoadLight(ReadTransaction.java:86) 
at org.neo4j.kernel.impl.persistence.PersistenceManager.loadLightNode(PersistenceManager.java:82) 
at org.neo4j.kernel.impl.core.NodeManager.getLightNode(NodeManager.java:423) 
at org.neo4j.kernel.impl.core.NodeManager.getNodeForProxy(NodeManager.java:440) 
at org.neo4j.kernel.InternalAbstractGraphDatabase$4.lookup(InternalAbstractGraphDatabase.java:660) 
at org.neo4j.kernel.impl.core.NodeProxy.getRelationships(NodeProxy.java:98) 
at org.neo4j.kernel.StandardExpander$RegularExpander.doExpand(StandardExpander.java:579) 
at org.neo4j.kernel.StandardExpander$RelationshipExpansion.iterator(StandardExpander.java:194) 
at org.neo4j.kernel.impl.traversal.TraversalBranchWithState.expandRelationshipsWithoutChecks(TraversalBranchWithState.java:78) 
at org.neo4j.kernel.impl.traversal.TraversalBranchImpl.expandRelationships(TraversalBranchImpl.java:104) 
at org.neo4j.kernel.impl.traversal.StartNodeTraversalBranch.next(StartNodeTraversalBranch.java:46) 
at org.neo4j.kernel.impl.traversal.AsOneStartBranch.next(AsOneStartBranch.java:100) 
at org.neo4j.kernel.PreorderDepthFirstSelector.next(PreorderDepthFirstSelector.java:52) 
at org.neo4j.kernel.impl.traversal.TraverserIterator.fetchNextOrNull(TraverserIterator.java:64) 
at org.neo4j.kernel.impl.traversal.TraverserIterator.fetchNextOrNull(TraverserIterator.java:33) 
at org.neo4j.helpers.collection.PrefetchingIterator.hasNext(PrefetchingIterator.java:55) 
at org.neo4j.helpers.collection.IteratorWrapper.hasNext(IteratorWrapper.java:42) 
at com.archimiddle.impactor.action.navigation.ViewGraphAction.getGraphTree(ViewGraphAction.java:107) 

這條線#107是在片段下面一行:

for(Node node : t.nodes()){ 

我已經檢查過每一個空值的東西,並找不到任何東西。如果有人能幫助我,將不勝感激。

編輯

我用這個方法來顯示樹藏在我的圖表。我知道這個方法可行,因爲我可以看到我的圖表。

只是在我使用tinkerpop藍圖中的Neo4jgraph添加節點後,我不再可以使用該方法查看我的圖。爲了讓Gremlin實際添加節點到我的Neo4J圖形中,我必須在節點被提交之前調用shutdown或stopTransaction。

Neo4jgraph graph = new Neo4jGraph(my_graphdatabaseservice); 
//ADD NODES HERE 
//I USED TO DO THIS 
neo4jgraph.shutdown(); 
//NOW I DO THIS 
neo4jgraph.stopTransaction(Conclusion.SUCCESS); 

我必須做任何一個這兩個或我的節點將不commomited。爲了一個特定的原因,我必須使用藍圖添加它們。

我懷疑它是與此,因爲它只是我做這之後會發生......

回答

0

問題是不與相關的代碼 - 摘錄您發佈。一切都工作正常。

問題在於你的neo4j實現。

嘗試添加以下參數到您的Neo4j配置

  • config.cache_classes =真
  • config.threadsafe!
+0

我知道如何將屬性文件附加到我的嵌入式Neo4J,但atm我使用從GraphDatabaseFactory獲得的默認配置。我需要在我的屬性文件中包含哪些其他設置,以便您提供的兩個設置是唯一可以更改的設置... – 2013-03-01 10:56:35

+0

我添加了cache_classes = true,但它沒有幫助。我認爲線程安全!只是爲了創業? 我在原始帖子中增加了一些內容,可能會對情況有所瞭解。 – 2013-03-01 11:33:21

+0

好的。所以你實際上正在關閉數據庫。這解釋了Neo4j ReadTranscation類中產生的NPE。我擔心stopTransaction會導致類似的問題。 如果只是提交你的節點 - 你是否嘗試以下操作:neo4jgraph.setTransactionMode(TransactionalGraph.Mode。自動); – elToro 2013-03-01 12:22:39