在某些时候,基于日志,我的Neo4j服务器被阻止了,并且在我重新启动它之前表现不合理。我没有显示导致问题的原因的日志,但是关闭序列将几个例外转储到日志中,主要是:
2015-01-29 22:10:04.204+0000 INFO [API] Neo4j Server shutdown initiated by request
...
22:10:20.911 [Thread-13] WARN o.e.j.util.thread.QueuedThreadPool - qtp313783031{STOPPING,2<=1<=20,i=0,q=0} Couldn't stop Thread[qtp313783031-22088,5,main]
2015-01-29 22:10:20.923+0000 INFO [API] Successfully shutdown Neo4j Server.
2015-01-29 22:10:20.936+0000 ERROR [org.neo4j]: Exception when stopping org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource@68698d61 Failed to flush file channel /var/lib/neo4j/data/graph.db/neostore.propertystore.db
org.neo4j.kernel.impl.nioneo.store.UnderlyingStorageException: Failed to flush file channel /var/lib/neo4j/data/graph.db/neostore.propertystore.db
... stack dump of exception ...
在重新启动之前的三天时间段内,创建了一些能够在系统中找到但没有附加适当或完整标签的节点和关系。有关该谜的示例,请参阅以下查询。
neo4j-sh (?)$ match (b:Book {book_id: 25937}) return b;
+---+
| b |
+---+
+---+
0 row
105 ms
neo4j-sh (?)$ match (b {book_id: 25937}) return b;
+-------------------------------------------------------------+
| b |
+-------------------------------------------------------------+
| Node[97574]{book_id:25937,title:"Writing an autobiography"} |
+-------------------------------------------------------------+
1 row
189 ms
neo4j-sh (?)$ match (b {book_id: 25937}) return id(b), labels(b);
+----------------------+
| id(b) | labels(b) |
+----------------------+
| 97574 | ["Book"] |
+----------------------+
1 row
165 ms
即使我然后明确添加标签和查询:再次预订,它仍然不会返回。
neo4j-sh (?)$ match (b {book_id: 25937}) set b :Book return b;
+-------------------------------------------------------------+
| b |
+-------------------------------------------------------------+
| Node[97574]{book_id:25937,title:"Writing an autobiography"} |
+-------------------------------------------------------------+
1 row
143 ms
neo4j-sh (?)$ match (b:Book {book_id: 25937}) return b;
+---+
| b |
+---+
+---+
0 row
48 ms
同样没有帮助的是删除并重新创建我在这些节点上的索引。
这些标签不能正常运行的事实导致我的代码开始创建第二个,#34;重复&#34; (与工作标签完全相同)节点用于我的按需架构。
我开始相信这些节点永远不会起作用。在我开始重现在这三天时间内创建的所有节点和关系之前,是否可以修复现有的节点?
- 编辑 -
似乎删除并重新创建索引可解决此问题。我在删除后立即进行测试,并在重新创建后立即进行测试,忘记索引可能需要一段时间才能构建。在没有索引的情况下操作系统仍然行为不端,所以我认为它根本不起作用。
TL / DR:尝试在损坏的节点上创建索引。