0
votes

Deployed NEO4j on a hardened RHEL7 using ansible. No constraint can be created even though the DB is empty. Any idea on how to debug this or what could be the cause? Other objects can be created. It seems to be a problem with some core library... We have the same install on another instance which works fine, so I suppose it must be something related to the deployment...even though there were not install errors

Thanks.

Error logs below:

020-07-09 12:11:13.898+0000 ERROR [o.n.b.v.r.ErrorReporter] Client triggered an unexpected error [Neo.DatabaseError.Schema.ConstraintCreationFailed]: Unable to create CONSTRAINT ON ( equipment:Equipment ) ASSERT equipment.UUID IS UNIQUE: , reference 0a5adcde-dbeb-4ef0-b9aa-9bf32ef58e63. 2020-07-09 12:11:13.898+0000 ERROR [o.n.b.v.r.ErrorReporter] Client triggered an unexpected error [Neo.DatabaseError.Schema.ConstraintCreationFailed]: Unable to create CONSTRAINT ON ( equipment:Equipment ) ASSERT equipment.UUID IS UNIQUE: , reference 0a5adcde-dbeb-4ef0-b9aa-9bf32ef58e63. Unable to create CONSTRAINT ON ( equipment:Equipment ) ASSERT equipment.UUID IS UNIQUE:

org.neo4j.kernel.impl.query.QueryExecutionKernelException: Unable to create CONSTRAINT ON ( equipment:Equipment ) ASSERT equipment.UUID IS UNIQUE:

           at org.neo4j.bolt.v1.runtime.TransactionStateMachineSPI$1.start(TransactionStateMachineSPI.java:158)
           at org.neo4j.bolt.v1.runtime.TransactionStateMachine$State.startExecution(TransactionStateMachine.java:444)
           at org.neo4j.bolt.v1.runtime.TransactionStateMachine$State$1.execute(TransactionStateMachine.java:259)
           at org.neo4j.bolt.v1.runtime.TransactionStateMachine$State$1.run(TransactionStateMachine.java:240)
           at org.neo4j.bolt.v1.runtime.TransactionStateMachine.run(TransactionStateMachine.java:81)
           at org.neo4j.bolt.v1.runtime.BoltStateMachine$State$2.run(BoltStateMachine.java:457)
           at org.neo4j.bolt.v1.runtime.BoltStateMachine.run(BoltStateMachine.java:225)
           at org.neo4j.bolt.v1.messaging.BoltMessageRouter.lambda$onRun$3(BoltMessageRouter.java:93)
           at org.neo4j.bolt.runtime.MetricsReportingBoltConnection.lambda$enqueue$0(MetricsReportingBoltConnection.java:69)
           at org.neo4j.bolt.runtime.DefaultBoltConnection.processNextBatch(DefaultBoltConnection.java:195)
           at org.neo4j.bolt.runtime.MetricsReportingBoltConnection.processNextBatch(MetricsReportingBoltConnection.java:87)
           at org.neo4j.bolt.runtime.DefaultBoltConnection.processNextBatch(DefaultBoltConnection.java:143)
           at org.neo4j.bolt.runtime.ExecutorBoltScheduler.executeBatch(ExecutorBoltScheduler.java:170)
           at org.neo4j.bolt.runtime.ExecutorBoltScheduler.lambda$scheduleBatchOrHandleError$2(ExecutorBoltScheduler.java:153)
           at java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
           at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
           at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
           at java.lang.Thread.run(Unknown Source)

Caused by: org.neo4j.kernel.impl.query.QueryExecutionKernelException: Unable to create CONSTRAINT ON ( equipment:Equipment ) ASSERT equipment.UUID IS UNIQUE:

           at org.neo4j.cypher.internal.javacompat.ExecutionEngine.executeQuery(ExecutionEngine.java:65)
           at org.neo4j.bolt.v1.runtime.TransactionStateMachineSPI$1.start(TransactionStateMachineSPI.java:144)
           ... 17 more

Caused by: org.neo4j.cypher.CypherExecutionException: Unable to create CONSTRAINT ON ( equipment:Equipment ) ASSERT equipment.UUID IS UNIQUE:

           at org.neo4j.cypher.internal.compatibility.v3_4.ExceptionTranslationSupport$class.translateException(ExceptionTranslationSupport.scala:35)
           at org.neo4j.cypher.internal.compatibility.v3_4.ExceptionTranslatingQueryContext.translateException(ExceptionTranslatingQueryContext.scala:41)
           at org.neo4j.cypher.internal.compatibility.v3_4.ExceptionTranslatingQueryContext.createUniqueConstraint(ExceptionTranslatingQueryContext.scala:128)
           at org.neo4j.cypher.internal.runtime.interpreted.UpdateCountingQueryContext.createUniqueConstraint(UpdateCountingQueryContext.scala:125)
           at org.neo4j.cypher.internal.compatibility.v3_4.runtime.executionplan.procs.ProcedureCallOrSchemaCommandExecutionPlanBuilder$$anonfun$6.apply(ProcedureCallOrSchemaCommandExecutionPlanBuilder.scala:80)
           at org.neo4j.cypher.internal.compatibility.v3_4.runtime.executionplan.procs.ProcedureCallOrSchemaCommandExecutionPlanBuilder$$anonfun$6.apply(ProcedureCallOrSchemaCommandExecutionPlanBuilder.scala:78)
           at org.neo4j.cypher.internal.compatibility.v3_4.runtime.executionplan.procs.PureSideEffectExecutionPlan.run(PureSideEffectExecutionPlan.scala:55)
           at org.neo4j.cypher.internal.compatibility.LatestRuntimeVariablePlannerCompatibility$ExecutionPlanWrapper$$anonfun$run$1.apply(LatestRuntimeVariablePlannerCompatibility.scala:128)
           at org.neo4j.cypher.internal.compatibility.LatestRuntimeVariablePlannerCompatibility$ExecutionPlanWrapper$$anonfun$run$1.apply(LatestRuntimeVariablePlannerCompatibility.scala:124)
           at org.neo4j.cypher.exceptionHandler$runSafely$.apply(exceptionHandler.scala:89)
           at org.neo4j.cypher.internal.compatibility.LatestRuntimeVariablePlannerCompatibility$ExecutionPlanWrapper.run(LatestRuntimeVariablePlannerCompatibility.scala:124)
           at org.neo4j.cypher.internal.PreparedPlanExecution.execute(PreparedPlanExecution.scala:29)
           at org.neo4j.cypher.internal.ExecutionEngine.execute(ExecutionEngine.scala:119)
           at org.neo4j.cypher.internal.javacompat.ExecutionEngine.executeQuery(ExecutionEngine.java:61)
           ... 18 more

Caused by: org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException: Unable to create constraint org.neo4j.kernel.api.schema.constaints.UniquenessConstraintDescriptor@6: Existing data does not satisfy CONSTRAINT ON ( label[1]:label[1] ) ASSERT label[1].property[0] IS UNIQUE: Failed to populate index for :Equipment(UUID) [provider: {key=lucene+native, version=2.0}] [labelId: 1, properties [0]] at org.neo4j.kernel.impl.newapi.Operations.indexBackedConstraintCreate(Operations.java:1239) at org.neo4j.kernel.impl.newapi.Operations.uniquePropertyConstraintCreate(Operations.java:943) at org.neo4j.internal.kernel.api.SchemaWrite.uniquePropertyConstraintCreate(SchemaWrite.java:66) at org.neo4j.cypher.internal.runtime.interpreted.TransactionBoundQueryContext.createUniqueConstraint(TransactionBoundQueryContext.scala:670) at org.neo4j.cypher.internal.compatibility.v3_4.ExceptionTranslatingQueryContext$$anonfun$createUniqueConstraint$1.apply$mcZ$sp(ExceptionTranslatingQueryContext.scala:128) at org.neo4j.cypher.internal.compatibility.v3_4.ExceptionTranslatingQueryContext$$anonfun$createUniqueConstraint$1.apply(ExceptionTranslatingQueryContext.scala:128) at org.neo4j.cypher.internal.compatibility.v3_4.ExceptionTranslatingQueryContext$$anonfun$createUniqueConstraint$1.apply(ExceptionTranslatingQueryContext.scala:128) at org.neo4j.cypher.internal.compatibility.v3_4.ExceptionTranslationSupport$class.translateException(ExceptionTranslationSupport.scala:33) ... 31 more Caused by: org.neo4j.kernel.api.exceptions.schema.UniquePropertyValueValidationException: Existing data does not satisfy CONSTRAINT ON ( label[1]:label[1] ) ASSERT label[1].property[0] IS UNIQUE: Failed to populate index for :Equipment(UUID) [provider: {key=lucene+native, version=2.0}] [labelId: 1, properties [0]] at org.neo4j.kernel.impl.api.state.ConstraintIndexCreator.awaitConstrainIndexPopulation(ConstraintIndexCreator.java:244) at org.neo4j.kernel.impl.api.state.ConstraintIndexCreator.createUniquenessConstraintIndex(ConstraintIndexCreator.java:135) at org.neo4j.kernel.impl.newapi.Operations.indexBackedConstraintCreate(Operations.java:1224) ... 38 more Caused by: org.neo4j.kernel.api.exceptions.index.IndexPopulationFailedKernelException: Failed to populate index for :Equipment(UUID) [provider: {key=lucene+native, version=2.0}] [labelId: 1, properties [0]] at org.neo4j.kernel.impl.api.index.IndexPopulationFailure$1.asIndexPopulationFailure(IndexPopulationFailure.java:47) at org.neo4j.kernel.impl.api.index.FailedIndexProxy.failureCause(FailedIndexProxy.java:80) at org.neo4j.kernel.impl.api.index.FailedIndexProxy.awaitStoreScanCompleted(FailedIndexProxy.java:75) at org.neo4j.kernel.impl.api.index.FlippableIndexProxy.awaitStoreScanCompleted(FlippableIndexProxy.java:325) at org.neo4j.kernel.impl.api.index.AbstractDelegatingIndexProxy.awaitStoreScanCompleted(AbstractDelegatingIndexProxy.java:122) at org.neo4j.kernel.impl.api.state.ConstraintIndexCreator.awaitConstrainIndexPopulation(ConstraintIndexCreator.java:232) ... 40 more Caused by: java.lang.NoSuchMethodError: org.apache.lucene.codecs.blocktree.BlockTreeTermsWriter.validateAutoPrefixSettings(II)V at org.apache.lucene.codecs.autoprefix.AutoPrefixPostingsFormat.(AutoPrefixPostingsFormat.java:77) at org.apache.lucene.codecs.autoprefix.AutoPrefixPostingsFormat.(AutoPrefixPostingsFormat.java:52) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:72) at org.apache.lucene.util.NamedSPILoader.(NamedSPILoader.java:51) at org.apache.lucene.util.NamedSPILoader.(NamedSPILoader.java:38) at org.apache.lucene.codecs.PostingsFormat$Holder.(PostingsFormat.java:49) at org.apache.lucene.codecs.PostingsFormat.forName(PostingsFormat.java:112) at org.apache.lucene.codecs.lucene62.Lucene62Codec.(Lucene62Codec.java:167) at org.apache.lucene.codecs.lucene62.Lucene62Codec.(Lucene62Codec.java:82) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.apache.lucene.util.NamedSPILoader.reload(NamedSPILoader.java:72) at org.apache.lucene.util.NamedSPILoader.(NamedSPILoader.java:51) at org.apache.lucene.util.NamedSPILoader.(NamedSPILoader.java:38) at org.apache.lucene.codecs.Codec$Holder.(Codec.java:47) at org.apache.lucene.codecs.Codec.getDefault(Codec.java:143) at org.apache.lucene.index.LiveIndexWriterConfig.(LiveIndexWriterConfig.java:121) at org.apache.lucene.index.IndexWriterConfig.(IndexWriterConfig.java:151) at org.neo4j.kernel.api.impl.index.IndexWriterConfigs.standard(IndexWriterConfigs.java:81) at org.neo4j.kernel.api.impl.index.IndexWriterConfigs.population(IndexWriterConfigs.java:119) at org.neo4j.kernel.api.impl.index.IndexWriterConfigs.population(IndexWriterConfigs.java:114) at org.neo4j.kernel.api.impl.index.partition.WritableIndexPartitionFactory.createPartition(WritableIndexPartitionFactory.java:45) at org.neo4j.kernel.api.impl.index.AbstractLuceneIndex.open(AbstractLuceneIndex.java:103) at org.neo4j.kernel.api.impl.index.WritableAbstractDatabaseIndex.open(WritableAbstractDatabaseIndex.java:62) at org.neo4j.kernel.api.impl.schema.populator.LuceneIndexPopulator.create(LuceneIndexPopulator.java:51) at org.neo4j.kernel.impl.index.schema.fusion.InstanceSelector.consume(InstanceSelector.java:147) at org.neo4j.kernel.impl.index.schema.fusion.InstanceSelector.forAll(InstanceSelector.java:90) at org.neo4j.kernel.impl.index.schema.fusion.FusionIndexPopulator.create(FusionIndexPopulator.java:56) at org.neo4j.kernel.impl.api.index.MultipleIndexPopulator$IndexPopulation.create(MultipleIndexPopulator.java:525) at org.neo4j.kernel.impl.api.index.MultipleIndexPopulator.lambda$create$0(MultipleIndexPopulator.java:144) at org.neo4j.kernel.impl.api.index.MultipleIndexPopulator.forEachPopulation(MultipleIndexPopulator.java:408) at org.neo4j.kernel.impl.api.index.MultipleIndexPopulator.create(MultipleIndexPopulator.java:141) at org.neo4j.kernel.impl.api.index.IndexPopulationJob.run(IndexPopulationJob.java:103) at org.neo4j.kernel.impl.api.index.IndexPopulationJobController$IndexPopulationJobWrapper.run(IndexPopulationJobController.java:82) at org.neo4j.kernel.impl.scheduler.ThreadPool.lambda$submit$0(ThreadPool.java:58) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) ... 3 more

2

2 Answers

0
votes

It would seem the database might not be empty due to this error:

Existing data does not satisfy CONSTRAINT ON ( label[1]:label[1] ) ASSERT label[1].property[0] IS UNIQUE

It complains that the constraint cannot be created as the existing data does not satisfy the constraint.

You can find the culprit with this query:

MATCH ( e:Equipment ) 
WITH e.UUID as id, count(*) as count
WHERE count > 1
RETURN id;
0
votes

In the end, it was a problem with the deployment. A newer lucene library was deployed, one that did not contain that method.