structr / neo4j 数据库损坏
structr / neo4j Database corrupted
我正在 Linux VM w/2G 内存中使用 Structr。我执行了一个查询并使系统崩溃。尝试重新启动平台失败,嵌入式数据库出现以下错误,因此我正在寻找可能发生的事情的提示。
2016-03-07 05:19:19.235+0000 INFO [org.neo4j]: Recovery required for log with version 0
2016-03-07 05:19:36.119+0000 ERROR [org.neo4j]: setting TM not OK. Kernel has encountered some problem, please perform necessary action (tx recovery/restart) null
java.lang.NullPointerException
at org.neo4j.index.impl.lucene.IndexType.instantiateField(IndexType.java:318)
at org.neo4j.index.impl.lucene.IndexType.addToDocument(IndexType.java:63)
at org.neo4j.index.impl.lucene.LuceneCommandApplier.visitIndexAddRelationshipCommand(LuceneCommandApplier.java:79)
at org.neo4j.kernel.impl.api.LegacyIndexApplier.visitIndexAddRelationshipCommand(LegacyIndexApplier.java:143)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visitIndexAddRelationshipCommand(CommandApplierFacade.java:246)
at org.neo4j.kernel.impl.index.IndexCommand$AddRelationshipCommand.handle(IndexCommand.java:236)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:82)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:45)
at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:69)
at org.neo4j.kernel.impl.api.TransactionRepresentationStoreApplier.apply(TransactionRepresentationStoreApplier.java:111)
at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:70)
at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:36)
at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:54)
at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:32)
at org.neo4j.kernel.Recovery.init(Recovery.java:78)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:502)
at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:106)
at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:579)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:117)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330)
at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:59)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:108)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:95)
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:185)
at org.structr.neo4j.Neo4jDatabaseService.initialize(Neo4jDatabaseService.java:130)
at org.structr.core.graph.NodeService.initialize(NodeService.java:115)
at org.structr.core.Services.createService(Services.java:550)
at org.structr.core.Services.initialize(Services.java:325)
at org.structr.core.Services.initialize(Services.java:297)
at org.structr.core.Services.getInstance(Services.java:145)
at org.structr.Server.main(Server.java:36)
2016-03-07 05:19:36.300+0000 ERROR [org.neo4j]: Exception occurred while starting the datasource. Attempting to close things down. Component 'org.neo4j.kernel.Recovery@245b6b85' failed to initialize. Please see attached cause exception.
org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.Recovery@245b6b85' failed to initialize. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:508)
at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:106)
at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:579)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:117)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330)
at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:59)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:108)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:95)
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:185)
at org.structr.neo4j.Neo4jDatabaseService.initialize(Neo4jDatabaseService.java:130)
at org.structr.core.graph.NodeService.initialize(NodeService.java:115)
at org.structr.core.Services.createService(Services.java:550)
at org.structr.core.Services.initialize(Services.java:325)
at org.structr.core.Services.initialize(Services.java:297)
at org.structr.core.Services.getInstance(Services.java:145)
at org.structr.Server.main(Server.java:36)
Caused by: java.lang.NullPointerException
at org.neo4j.index.impl.lucene.IndexType.instantiateField(IndexType.java:318)
at org.neo4j.index.impl.lucene.IndexType.addToDocument(IndexType.java:63)
at org.neo4j.index.impl.lucene.LuceneCommandApplier.visitIndexAddRelationshipCommand(LuceneCommandApplier.java:79)
at org.neo4j.kernel.impl.api.LegacyIndexApplier.visitIndexAddRelationshipCommand(LegacyIndexApplier.java:143)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visitIndexAddRelationshipCommand(CommandApplierFacade.java:246)
at org.neo4j.kernel.impl.index.IndexCommand$AddRelationshipCommand.handle(IndexCommand.java:236)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:82)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:45)
at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:69)
at org.neo5j.kernel.impl.api.TransactionRepresentationStoreApplier.apply(TransactionRepresentationStoreApplier.java:111)
structr 日志有这个:
Mar 07, 2016 12:19:16 AM org.structr.core.Services initialize
INFO: Starting services
Mar 07, 2016 12:19:16 AM org.structr.neo4j.Neo4jDatabaseService initialize
INFO: Relationship cache size set to 10,000
Mar 07, 2016 12:19:16 AM org.structr.neo4j.Neo4jDatabaseService initialize
INFO: Node cache size set to 10,000
Mar 07, 2016 12:19:16 AM org.structr.neo4j.Neo4jDatabaseService initialize
INFO: Initializing database (./db) ...
java.lang.RuntimeException: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /usr/local/download/structr/binaries/structr-ui-2.0-SNAPSHOT-201603060822.5403e4/./db
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:334)
at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:59)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:108)
at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:95)
at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:185)
at org.structr.neo4j.Neo4jDatabaseService.initialize(Neo4jDatabaseService.java:130)
at org.structr.core.graph.NodeService.initialize(NodeService.java:115)
at org.structr.core.Services.createService(Services.java:550)
at org.structr.core.Services.initialize(Services.java:325)
at org.structr.core.Services.initialize(Services.java:297)
at org.structr.core.Services.getInstance(Services.java:145)
at org.structr.Server.main(Server.java:36)
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.impl.transaction.state.DataSourceManager@162be846' was successfully initialized, but failed to start. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:532)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330)
... 11 more
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.NeoStoreDataSource@191a8997' was successfully initialized, but failed to start. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:532)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:117)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526)
... 13 more
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.Recovery@245b6b85' failed to initialize. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:508)
at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72)
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:106)
at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:579)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526)
... 16 more
Caused by: java.lang.NullPointerException
at org.neo4j.index.impl.lucene.IndexType.instantiateField(IndexType.java:318)
at org.neo4j.index.impl.lucene.IndexType.addToDocument(IndexType.java:63)
at org.neo4j.index.impl.lucene.LuceneCommandApplier.visitIndexAddRelationshipCommand(LuceneCommandApplier.java:79)
at org.neo4j.kernel.impl.api.LegacyIndexApplier.visitIndexAddRelationshipCommand(LegacyIndexApplier.java:143)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visitIndexAddRelationshipCommand(CommandApplierFacade.java:246)
at org.neo4j.kernel.impl.index.IndexCommand$AddRelationshipCommand.handle(IndexCommand.java:236)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:82)
at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:45)
at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:69)
at org.neo4j.kernel.impl.api.TransactionRepresentationStoreApplier.apply(TransactionRepresentationStoreApplier.java:111)
at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:70)
at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:36)
at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:54)
at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:32)
at org.neo4j.kernel.Recovery.init(Recovery.java:78)
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:502)
... 20 more
Mar 07, 2016 12:19:36 AM org.structr.core.Services createService
SEVERE: Vital service NodeService failed to start: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /usr/local/download/structr/binaries/structr-ui-2.0-SNAPSHOT-201603060822.5403e4/./db. Aborting
这是我尝试使用 2.2.8 Neo4j 社区程序启动数据库时得到的结果。在这两种情况下,它都在某种 'null pointer' 上失败。
Starting Neo4j Server console-mode...
Using additional JVM arguments: -server -XX:+DisableExplicitGC -Dorg.neo4j.server.properties=conf/neo4j-server.properties -Djava.util.logging.config.file=conf/logging.properties -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:-OmitStackTraceInFastThrow -XX:hashCode=5 -Dneo4j.ext.udc.source=tarball
2016-03-07 13:18:44.618+0000 INFO [API] Setting startup timeout to: 120000ms based on 120000
Detected incorrectly shut down database, performing recovery..
2016-03-07 13:19:01.274+0000 INFO [API] Successfully shutdown Neo4j Server.
2016-03-07 13:19:01.275+0000 ERROR [API] Failed to start Neo Server on port [7474]
org.neo4j.server.ServerStartupException: Starting Neo4j Server failed: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /usr/local/download/structr/binaries/structr-ui-2.0-SNAPSHOT-201603060822.5403e4/db
at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:258) ~[neo4j-server-2.2.8.jar:2.2.8]
at org.neo4j.server.Bootstrapper.start(Bootstrapper.java:117) [neo4j-server-2.2.8.jar:2.2.8]
at org.neo4j.server.Bootstrapper.main(Bootstrapper.java:69) [neo4j-server-2.2.8.jar:2.2.8]
Caused by: java.lang.RuntimeException: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /usr/local/download/structr/binaries/structr-ui-2.0-SNAPSHOT-201603060822.5403e4/db
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:334) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:59) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.recovery.StoreRecoverer.recover(StoreRecoverer.java:96) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.server.preflight.PerformRecoveryIfNecessary.run(PerformRecoveryIfNecessary.java:65) ~[neo4j-server-2.2.8.jar:2.2.8]
at org.neo4j.server.preflight.PreFlightTasks.run(PreFlightTasks.java:71) ~[neo4j-server-2.2.8.jar:2.2.8]
at org.neo4j.server.AbstractNeoServer.runPreflightTasks(AbstractNeoServer.java:399) ~[neo4j-server-2.2.8.jar:2.2.8]
at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:195) ~[neo4j-server-2.2.8.jar:2.2.8]
... 2 common frames omitted
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.impl.transaction.state.DataSourceManager@2de4d378' was successfully initialized, but failed to start. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:532) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330) ~[neo4j-kernel-2.2.8.jar:2.2.8]
... 8 common frames omitted
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.NeoStoreDataSource@4b9b15' was successfully initialized, but failed to start. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:532) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:117) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) ~[neo4j-kernel-2.2.8.jar:2.2.8]
... 10 common frames omitted
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.Recovery@3016120' failed to initialize. Please see attached cause exception.
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:508) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:106) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:579) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) ~[neo4j-kernel-2.2.8.jar:2.2.8]
... 13 common frames omitted
Caused by: java.lang.NullPointerException: null
at org.neo4j.index.impl.lucene.IndexType.instantiateField(IndexType.java:318) ~[neo4j-lucene-index-2.2.8.jar:2.2.8]
at org.neo4j.index.impl.lucene.IndexType.addToDocument(IndexType.java:63) ~[neo4j-lucene-index-2.2.8.jar:2.2.8]
at org.neo4j.index.impl.lucene.LuceneCommandApplier.visitIndexAddRelationshipCommand(LuceneCommandApplier.java:79) ~[neo4j-lucene-index-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.api.LegacyIndexApplier.visitIndexAddRelationshipCommand(LegacyIndexApplier.java:143) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.api.CommandApplierFacade.visitIndexAddRelationshipCommand(CommandApplierFacade.java:246) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.index.IndexCommand$AddRelationshipCommand.handle(IndexCommand.java:236) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:82) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:45) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:69) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.api.TransactionRepresentationStoreApplier.apply(TransactionRepresentationStoreApplier.java:111) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:70) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:36) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:54) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:32) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.Recovery.init(Recovery.java:78) ~[neo4j-kernel-2.2.8.jar:2.2.8]
at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:502) ~[neo4j-kernel-2.2.8.jar:2.2.8]
... 17 common frames omitted
根本原因是 Structr 试图索引一个对象,其 toString() 方法 returns null。由于在 Lucene 和 Neo4j 中都没有针对此类对象的过滤器,这会导致数据库崩溃和无法恢复的数据库存储。
我们将尽快为 Structr 提供修复,我已提交 Neo4j 问题:https://github.com/neo4j/neo4j/issues/6685
我正在 Linux VM w/2G 内存中使用 Structr。我执行了一个查询并使系统崩溃。尝试重新启动平台失败,嵌入式数据库出现以下错误,因此我正在寻找可能发生的事情的提示。
2016-03-07 05:19:19.235+0000 INFO [org.neo4j]: Recovery required for log with version 0 2016-03-07 05:19:36.119+0000 ERROR [org.neo4j]: setting TM not OK. Kernel has encountered some problem, please perform necessary action (tx recovery/restart) null java.lang.NullPointerException at org.neo4j.index.impl.lucene.IndexType.instantiateField(IndexType.java:318) at org.neo4j.index.impl.lucene.IndexType.addToDocument(IndexType.java:63) at org.neo4j.index.impl.lucene.LuceneCommandApplier.visitIndexAddRelationshipCommand(LuceneCommandApplier.java:79) at org.neo4j.kernel.impl.api.LegacyIndexApplier.visitIndexAddRelationshipCommand(LegacyIndexApplier.java:143) at org.neo4j.kernel.impl.api.CommandApplierFacade.visitIndexAddRelationshipCommand(CommandApplierFacade.java:246) at org.neo4j.kernel.impl.index.IndexCommand$AddRelationshipCommand.handle(IndexCommand.java:236) at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:82) at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:45) at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:69) at org.neo4j.kernel.impl.api.TransactionRepresentationStoreApplier.apply(TransactionRepresentationStoreApplier.java:111) at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:70) at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:36) at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:54) at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:32) at org.neo4j.kernel.Recovery.init(Recovery.java:78) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:502) at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:106) at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:579) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:117) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330) at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:59) at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:108) at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:95) at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:185) at org.structr.neo4j.Neo4jDatabaseService.initialize(Neo4jDatabaseService.java:130) at org.structr.core.graph.NodeService.initialize(NodeService.java:115) at org.structr.core.Services.createService(Services.java:550) at org.structr.core.Services.initialize(Services.java:325) at org.structr.core.Services.initialize(Services.java:297) at org.structr.core.Services.getInstance(Services.java:145) at org.structr.Server.main(Server.java:36) 2016-03-07 05:19:36.300+0000 ERROR [org.neo4j]: Exception occurred while starting the datasource. Attempting to close things down. Component 'org.neo4j.kernel.Recovery@245b6b85' failed to initialize. Please see attached cause exception. org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.Recovery@245b6b85' failed to initialize. Please see attached cause exception. at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:508) at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:106) at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:579) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:117) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330) at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:59) at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:108) at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:95) at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:185) at org.structr.neo4j.Neo4jDatabaseService.initialize(Neo4jDatabaseService.java:130) at org.structr.core.graph.NodeService.initialize(NodeService.java:115) at org.structr.core.Services.createService(Services.java:550) at org.structr.core.Services.initialize(Services.java:325) at org.structr.core.Services.initialize(Services.java:297) at org.structr.core.Services.getInstance(Services.java:145) at org.structr.Server.main(Server.java:36) Caused by: java.lang.NullPointerException at org.neo4j.index.impl.lucene.IndexType.instantiateField(IndexType.java:318) at org.neo4j.index.impl.lucene.IndexType.addToDocument(IndexType.java:63) at org.neo4j.index.impl.lucene.LuceneCommandApplier.visitIndexAddRelationshipCommand(LuceneCommandApplier.java:79) at org.neo4j.kernel.impl.api.LegacyIndexApplier.visitIndexAddRelationshipCommand(LegacyIndexApplier.java:143) at org.neo4j.kernel.impl.api.CommandApplierFacade.visitIndexAddRelationshipCommand(CommandApplierFacade.java:246) at org.neo4j.kernel.impl.index.IndexCommand$AddRelationshipCommand.handle(IndexCommand.java:236) at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:82) at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:45) at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:69) at org.neo5j.kernel.impl.api.TransactionRepresentationStoreApplier.apply(TransactionRepresentationStoreApplier.java:111)
structr 日志有这个:
Mar 07, 2016 12:19:16 AM org.structr.core.Services initialize INFO: Starting services Mar 07, 2016 12:19:16 AM org.structr.neo4j.Neo4jDatabaseService initialize INFO: Relationship cache size set to 10,000 Mar 07, 2016 12:19:16 AM org.structr.neo4j.Neo4jDatabaseService initialize INFO: Node cache size set to 10,000 Mar 07, 2016 12:19:16 AM org.structr.neo4j.Neo4jDatabaseService initialize INFO: Initializing database (./db) ... java.lang.RuntimeException: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /usr/local/download/structr/binaries/structr-ui-2.0-SNAPSHOT-201603060822.5403e4/./db at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:334) at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:59) at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:108) at org.neo4j.graphdb.factory.GraphDatabaseFactory.newDatabase(GraphDatabaseFactory.java:95) at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:185) at org.structr.neo4j.Neo4jDatabaseService.initialize(Neo4jDatabaseService.java:130) at org.structr.core.graph.NodeService.initialize(NodeService.java:115) at org.structr.core.Services.createService(Services.java:550) at org.structr.core.Services.initialize(Services.java:325) at org.structr.core.Services.initialize(Services.java:297) at org.structr.core.Services.getInstance(Services.java:145) at org.structr.Server.main(Server.java:36) Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.impl.transaction.state.DataSourceManager@162be846' was successfully initialized, but failed to start. Please see attached cause exception. at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:532) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330) ... 11 more Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.NeoStoreDataSource@191a8997' was successfully initialized, but failed to start. Please see attached cause exception. at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:532) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:117) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) ... 13 more Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.Recovery@245b6b85' failed to initialize. Please see attached cause exception. at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:508) at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72) at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:106) at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:579) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) ... 16 more Caused by: java.lang.NullPointerException at org.neo4j.index.impl.lucene.IndexType.instantiateField(IndexType.java:318) at org.neo4j.index.impl.lucene.IndexType.addToDocument(IndexType.java:63) at org.neo4j.index.impl.lucene.LuceneCommandApplier.visitIndexAddRelationshipCommand(LuceneCommandApplier.java:79) at org.neo4j.kernel.impl.api.LegacyIndexApplier.visitIndexAddRelationshipCommand(LegacyIndexApplier.java:143) at org.neo4j.kernel.impl.api.CommandApplierFacade.visitIndexAddRelationshipCommand(CommandApplierFacade.java:246) at org.neo4j.kernel.impl.index.IndexCommand$AddRelationshipCommand.handle(IndexCommand.java:236) at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:82) at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:45) at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:69) at org.neo4j.kernel.impl.api.TransactionRepresentationStoreApplier.apply(TransactionRepresentationStoreApplier.java:111) at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:70) at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:36) at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:54) at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:32) at org.neo4j.kernel.Recovery.init(Recovery.java:78) at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:502) ... 20 more Mar 07, 2016 12:19:36 AM org.structr.core.Services createService SEVERE: Vital service NodeService failed to start: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /usr/local/download/structr/binaries/structr-ui-2.0-SNAPSHOT-201603060822.5403e4/./db. Aborting
这是我尝试使用 2.2.8 Neo4j 社区程序启动数据库时得到的结果。在这两种情况下,它都在某种 'null pointer' 上失败。
Starting Neo4j Server console-mode... Using additional JVM arguments: -server -XX:+DisableExplicitGC -Dorg.neo4j.server.properties=conf/neo4j-server.properties -Djava.util.logging.config.file=conf/logging.properties -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:-OmitStackTraceInFastThrow -XX:hashCode=5 -Dneo4j.ext.udc.source=tarball 2016-03-07 13:18:44.618+0000 INFO [API] Setting startup timeout to: 120000ms based on 120000 Detected incorrectly shut down database, performing recovery.. 2016-03-07 13:19:01.274+0000 INFO [API] Successfully shutdown Neo4j Server. 2016-03-07 13:19:01.275+0000 ERROR [API] Failed to start Neo Server on port [7474] org.neo4j.server.ServerStartupException: Starting Neo4j Server failed: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /usr/local/download/structr/binaries/structr-ui-2.0-SNAPSHOT-201603060822.5403e4/db at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:258) ~[neo4j-server-2.2.8.jar:2.2.8] at org.neo4j.server.Bootstrapper.start(Bootstrapper.java:117) [neo4j-server-2.2.8.jar:2.2.8] at org.neo4j.server.Bootstrapper.main(Bootstrapper.java:69) [neo4j-server-2.2.8.jar:2.2.8] Caused by: java.lang.RuntimeException: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /usr/local/download/structr/binaries/structr-ui-2.0-SNAPSHOT-201603060822.5403e4/db at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:334) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:59) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.recovery.StoreRecoverer.recover(StoreRecoverer.java:96) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.server.preflight.PerformRecoveryIfNecessary.run(PerformRecoveryIfNecessary.java:65) ~[neo4j-server-2.2.8.jar:2.2.8] at org.neo4j.server.preflight.PreFlightTasks.run(PreFlightTasks.java:71) ~[neo4j-server-2.2.8.jar:2.2.8] at org.neo4j.server.AbstractNeoServer.runPreflightTasks(AbstractNeoServer.java:399) ~[neo4j-server-2.2.8.jar:2.2.8] at org.neo4j.server.AbstractNeoServer.start(AbstractNeoServer.java:195) ~[neo4j-server-2.2.8.jar:2.2.8] ... 2 common frames omitted Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.impl.transaction.state.DataSourceManager@2de4d378' was successfully initialized, but failed to start. Please see attached cause exception. at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:532) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330) ~[neo4j-kernel-2.2.8.jar:2.2.8] ... 8 common frames omitted Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.NeoStoreDataSource@4b9b15' was successfully initialized, but failed to start. Please see attached cause exception. at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:532) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.transaction.state.DataSourceManager.start(DataSourceManager.java:117) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) ~[neo4j-kernel-2.2.8.jar:2.2.8] ... 10 common frames omitted Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.Recovery@3016120' failed to initialize. Please see attached cause exception. at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:508) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:106) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.NeoStoreDataSource.start(NeoStoreDataSource.java:579) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:526) ~[neo4j-kernel-2.2.8.jar:2.2.8] ... 13 common frames omitted Caused by: java.lang.NullPointerException: null at org.neo4j.index.impl.lucene.IndexType.instantiateField(IndexType.java:318) ~[neo4j-lucene-index-2.2.8.jar:2.2.8] at org.neo4j.index.impl.lucene.IndexType.addToDocument(IndexType.java:63) ~[neo4j-lucene-index-2.2.8.jar:2.2.8] at org.neo4j.index.impl.lucene.LuceneCommandApplier.visitIndexAddRelationshipCommand(LuceneCommandApplier.java:79) ~[neo4j-lucene-index-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.api.LegacyIndexApplier.visitIndexAddRelationshipCommand(LegacyIndexApplier.java:143) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.api.CommandApplierFacade.visitIndexAddRelationshipCommand(CommandApplierFacade.java:246) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.index.IndexCommand$AddRelationshipCommand.handle(IndexCommand.java:236) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:82) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.api.CommandApplierFacade.visit(CommandApplierFacade.java:45) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.transaction.log.PhysicalTransactionRepresentation.accept(PhysicalTransactionRepresentation.java:69) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.api.TransactionRepresentationStoreApplier.apply(TransactionRepresentationStoreApplier.java:111) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:70) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.transaction.state.RecoveryVisitor.visit(RecoveryVisitor.java:36) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:54) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.impl.transaction.log.LogFileRecoverer.visit(LogFileRecoverer.java:32) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.Recovery.init(Recovery.java:78) ~[neo4j-kernel-2.2.8.jar:2.2.8] at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:502) ~[neo4j-kernel-2.2.8.jar:2.2.8] ... 17 common frames omitted
根本原因是 Structr 试图索引一个对象,其 toString() 方法 returns null。由于在 Lucene 和 Neo4j 中都没有针对此类对象的过滤器,这会导致数据库崩溃和无法恢复的数据库存储。
我们将尽快为 Structr 提供修复,我已提交 Neo4j 问题:https://github.com/neo4j/neo4j/issues/6685