diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LockingStatementOperations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LockingStatementOperations.java index 1b2449685d4fd..e5d68d0ba7d27 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LockingStatementOperations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/LockingStatementOperations.java @@ -93,6 +93,11 @@ public LockingStatementOperations( this.schemaStateDelegate = schemaStateDelegate; } + private Locks.Client getLocks( KernelStatement state ) + { + return state.locks().delegate(); // TODO: Horrible solution, but most simple + } + @Override public boolean nodeAddLabel( KernelStatement state, long nodeId, int labelId ) throws ConstraintValidationKernelException, EntityNotFoundException @@ -108,9 +113,9 @@ public boolean nodeAddLabel( KernelStatement state, long nodeId, int labelId ) // // It would be cleaner if the schema and data cakes were separated so that the SchemaReadOperations object used // by ConstraintEnforcingEntityOperations included the full cake, with locking included. - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); - state.locks().acquireExclusive( ResourceTypes.NODE, nodeId ); + getLocks( state ).acquireExclusive( ResourceTypes.NODE, nodeId ); state.assertOpen(); return entityWriteDelegate.nodeAddLabel( state, nodeId, labelId ); @@ -119,7 +124,7 @@ public boolean nodeAddLabel( KernelStatement state, long nodeId, int labelId ) @Override public boolean nodeRemoveLabel( KernelStatement state, long nodeId, int labelId ) throws EntityNotFoundException { - state.locks().acquireExclusive( ResourceTypes.NODE, nodeId ); + getLocks( state ).acquireExclusive( ResourceTypes.NODE, nodeId ); state.assertOpen(); return entityWriteDelegate.nodeRemoveLabel( state, nodeId, labelId ); } @@ -128,7 +133,7 @@ public boolean nodeRemoveLabel( KernelStatement state, long nodeId, int labelId public IndexDescriptor indexCreate( KernelStatement state, int labelId, int propertyKey ) throws AlreadyIndexedException, AlreadyConstrainedException { - state.locks().acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaWriteDelegate.indexCreate( state, labelId, propertyKey ); } @@ -136,7 +141,7 @@ public IndexDescriptor indexCreate( KernelStatement state, int labelId, int prop @Override public void indexDrop( KernelStatement state, IndexDescriptor descriptor ) throws DropIndexFailureException { - state.locks().acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); schemaWriteDelegate.indexDrop( state, descriptor ); } @@ -144,7 +149,7 @@ public void indexDrop( KernelStatement state, IndexDescriptor descriptor ) throw @Override public void uniqueIndexDrop( KernelStatement state, IndexDescriptor descriptor ) throws DropIndexFailureException { - state.locks().acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); schemaWriteDelegate.uniqueIndexDrop( state, descriptor ); } @@ -152,7 +157,7 @@ public void uniqueIndexDrop( KernelStatement state, IndexDescriptor descriptor ) @Override public V schemaStateGetOrCreate( KernelStatement state, K key, Function creator ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaStateDelegate.schemaStateGetOrCreate( state, key, creator ); } @@ -160,7 +165,7 @@ public V schemaStateGetOrCreate( KernelStatement state, K key, Function boolean schemaStateContains( KernelStatement state, K key ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaStateDelegate.schemaStateContains( state, key ); } @@ -168,7 +173,7 @@ public boolean schemaStateContains( KernelStatement state, K key ) @Override public void schemaStateFlush( KernelStatement state ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); schemaStateDelegate.schemaStateFlush( state ); } @@ -176,7 +181,7 @@ public void schemaStateFlush( KernelStatement state ) @Override public Iterator indexesGetForLabel( KernelStatement state, int labelId ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.indexesGetForLabel( state, labelId ); } @@ -184,7 +189,7 @@ public Iterator indexesGetForLabel( KernelStatement state, int @Override public IndexDescriptor indexesGetForLabelAndPropertyKey( KernelStatement state, int labelId, int propertyKey ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.indexesGetForLabelAndPropertyKey( state, labelId, propertyKey ); } @@ -192,7 +197,7 @@ public IndexDescriptor indexesGetForLabelAndPropertyKey( KernelStatement state, @Override public Iterator indexesGetAll( KernelStatement state ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.indexesGetAll( state ); } @@ -201,7 +206,7 @@ public Iterator indexesGetAll( KernelStatement state ) public InternalIndexState indexGetState( KernelStatement state, IndexDescriptor descriptor ) throws IndexNotFoundKernelException { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.indexGetState( state, descriptor ); } @@ -209,7 +214,7 @@ public InternalIndexState indexGetState( KernelStatement state, IndexDescriptor @Override public long indexSize( KernelStatement state, IndexDescriptor descriptor ) throws IndexNotFoundKernelException { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.indexSize( state, descriptor ); } @@ -218,7 +223,7 @@ public long indexSize( KernelStatement state, IndexDescriptor descriptor ) throw public double indexUniqueValuesPercentage( KernelStatement state, IndexDescriptor descriptor ) throws IndexNotFoundKernelException { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.indexUniqueValuesPercentage( state, descriptor ); } @@ -226,7 +231,7 @@ public double indexUniqueValuesPercentage( KernelStatement state, @Override public Long indexGetOwningUniquenessConstraintId( KernelStatement state, IndexDescriptor index ) throws SchemaRuleNotFoundException { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.indexGetOwningUniquenessConstraintId( state, index ); } @@ -235,7 +240,7 @@ public Long indexGetOwningUniquenessConstraintId( KernelStatement state, IndexDe public long indexGetCommittedId( KernelStatement state, IndexDescriptor index, SchemaStorage.IndexRuleKind kind ) throws SchemaRuleNotFoundException { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.indexGetCommittedId( state, index, kind ); } @@ -243,7 +248,7 @@ public long indexGetCommittedId( KernelStatement state, IndexDescriptor index, S @Override public Iterator uniqueIndexesGetForLabel( KernelStatement state, int labelId ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.uniqueIndexesGetForLabel( state, labelId ); } @@ -251,7 +256,7 @@ public Iterator uniqueIndexesGetForLabel( KernelStatement state @Override public Iterator uniqueIndexesGetAll( KernelStatement state ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.uniqueIndexesGetAll( state ); } @@ -259,7 +264,7 @@ public Iterator uniqueIndexesGetAll( KernelStatement state ) @Override public void nodeDelete( KernelStatement state, long nodeId ) throws EntityNotFoundException { - state.locks().acquireExclusive( ResourceTypes.NODE, nodeId ); + getLocks( state ).acquireExclusive( ResourceTypes.NODE, nodeId ); state.assertOpen(); entityWriteDelegate.nodeDelete( state, nodeId ); } @@ -306,7 +311,7 @@ public long relationshipCreate( KernelStatement state, long endNodeId ) throws EntityNotFoundException { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); lockRelationshipNodes( state, startNodeId, endNodeId ); return entityWriteDelegate.relationshipCreate( state, relationshipTypeId, startNodeId, endNodeId ); } @@ -320,7 +325,7 @@ public void visit(long relId, int type, long startNode, long endNode) { lockRelationshipNodes(state, startNode, endNode); } }); - state.locks().acquireExclusive(ResourceTypes.RELATIONSHIP, relationshipId); + getLocks( state ).acquireExclusive(ResourceTypes.RELATIONSHIP, relationshipId); state.assertOpen(); entityWriteDelegate.relationshipDelete(state, relationshipId); } @@ -328,10 +333,10 @@ public void visit(long relId, int type, long startNode, long endNode) { private void lockRelationshipNodes( KernelStatement state, long startNodeId, long endNodeId ) { // Order the locks to lower the risk of deadlocks with other threads creating/deleting rels concurrently - state.locks().acquireExclusive( ResourceTypes.NODE, min( startNodeId, endNodeId ) ); + getLocks( state ).acquireExclusive( ResourceTypes.NODE, min( startNodeId, endNodeId ) ); if ( startNodeId != endNodeId ) { - state.locks().acquireExclusive( ResourceTypes.NODE, max( startNodeId, endNodeId ) ); + getLocks( state ).acquireExclusive( ResourceTypes.NODE, max( startNodeId, endNodeId ) ); } } @@ -339,7 +344,7 @@ private void lockRelationshipNodes( KernelStatement state, long startNodeId, lon public UniquenessConstraint uniquePropertyConstraintCreate( KernelStatement state, int labelId, int propertyKeyId ) throws CreateConstraintFailureException, AlreadyConstrainedException, AlreadyIndexedException { - state.locks().acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaWriteDelegate.uniquePropertyConstraintCreate( state, labelId, propertyKeyId ); } @@ -348,7 +353,7 @@ public UniquenessConstraint uniquePropertyConstraintCreate( KernelStatement stat public NodePropertyExistenceConstraint nodePropertyExistenceConstraintCreate( KernelStatement state, int labelId, int propertyKeyId ) throws AlreadyConstrainedException, CreateConstraintFailureException { - state.locks().acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaWriteDelegate.nodePropertyExistenceConstraintCreate( state, labelId, propertyKeyId ); } @@ -357,7 +362,7 @@ public NodePropertyExistenceConstraint nodePropertyExistenceConstraintCreate( Ke public RelationshipPropertyExistenceConstraint relationshipPropertyExistenceConstraintCreate( KernelStatement state, int relTypeId, int propertyKeyId ) throws AlreadyConstrainedException, CreateConstraintFailureException { - state.locks().acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaWriteDelegate.relationshipPropertyExistenceConstraintCreate( state, relTypeId, propertyKeyId ); } @@ -367,7 +372,7 @@ public Iterator constraintsGetForLabelAndPropertyKey( Ke int labelId, int propertyKeyId ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.constraintsGetForLabelAndPropertyKey( state, labelId, propertyKeyId ); } @@ -375,7 +380,7 @@ public Iterator constraintsGetForLabelAndPropertyKey( Ke @Override public Iterator constraintsGetForLabel( KernelStatement state, int labelId ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.constraintsGetForLabel( state, labelId ); } @@ -385,7 +390,7 @@ public Iterator constraintsGetForRelationshipTyp KernelStatement state, int relTypeId, int propertyKeyId ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.constraintsGetForRelationshipTypeAndPropertyKey( state, relTypeId, propertyKeyId ); } @@ -394,7 +399,7 @@ public Iterator constraintsGetForRelationshipTyp public Iterator constraintsGetForRelationshipType( KernelStatement state, int typeId ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.constraintsGetForRelationshipType( state, typeId ); } @@ -402,7 +407,7 @@ public Iterator constraintsGetForRelationshipTyp @Override public Iterator constraintsGetAll( KernelStatement state ) { - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); return schemaReadDelegate.constraintsGetAll( state ); } @@ -411,7 +416,7 @@ public Iterator constraintsGetAll( KernelStatement state ) public void constraintDrop( KernelStatement state, NodePropertyConstraint constraint ) throws DropConstraintFailureException { - state.locks().acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); schemaWriteDelegate.constraintDrop( state, constraint ); } @@ -420,7 +425,7 @@ public void constraintDrop( KernelStatement state, NodePropertyConstraint constr public void constraintDrop( KernelStatement state, RelationshipPropertyConstraint constraint ) throws DropConstraintFailureException { - state.locks().acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.SCHEMA, schemaResource() ); state.assertOpen(); schemaWriteDelegate.constraintDrop( state, constraint ); } @@ -433,15 +438,15 @@ public void procedureCreate( KernelStatement state, ProcedureSignature signature // In order to keep other processes from creating procedures with conflicting names, we lock the procedure // name. We don't exclusively lock the schema, since creating a new procedure will not influence any running // operation. - state.locks().acquireExclusive( PROCEDURE, procedureResourceId( signature.name() ) ); + getLocks( state ).acquireExclusive( PROCEDURE, procedureResourceId( signature.name() ) ); schemaWriteDelegate.procedureCreate( state, signature, language, code ); } @Override public void procedureDrop( KernelStatement state, ProcedureName name ) throws ProcedureConstraintViolation, ProcedureException { - state.locks().acquireExclusive( SCHEMA, schemaResource() ); - state.locks().acquireExclusive( PROCEDURE, procedureResourceId( name ) ); + getLocks( state ).acquireExclusive( SCHEMA, schemaResource() ); + getLocks( state ).acquireExclusive( PROCEDURE, procedureResourceId( name ) ); schemaWriteDelegate.procedureDrop( state, name ); } @@ -472,9 +477,9 @@ public Property nodeSetProperty( KernelStatement state, long nodeId, DefinedProp // // It would be cleaner if the schema and data cakes were separated so that the SchemaReadOperations object used // by ConstraintEnforcingEntityOperations included the full cake, with locking included. - state.locks().acquireShared( ResourceTypes.SCHEMA, schemaResource() ); + getLocks( state ).acquireShared( ResourceTypes.SCHEMA, schemaResource() ); - state.locks().acquireExclusive( ResourceTypes.NODE, nodeId ); + getLocks( state ).acquireExclusive( ResourceTypes.NODE, nodeId ); state.assertOpen(); return entityWriteDelegate.nodeSetProperty( state, nodeId, property ); } @@ -483,7 +488,7 @@ public Property nodeSetProperty( KernelStatement state, long nodeId, DefinedProp public Property nodeRemoveProperty( KernelStatement state, long nodeId, int propertyKeyId ) throws EntityNotFoundException { - state.locks().acquireExclusive( ResourceTypes.NODE, nodeId ); + getLocks( state ).acquireExclusive( ResourceTypes.NODE, nodeId ); state.assertOpen(); return entityWriteDelegate.nodeRemoveProperty( state, nodeId, propertyKeyId ); } @@ -493,7 +498,7 @@ public Property relationshipSetProperty( KernelStatement state, long relationshipId, DefinedProperty property ) throws EntityNotFoundException { - state.locks().acquireExclusive( ResourceTypes.RELATIONSHIP, relationshipId ); + getLocks( state ).acquireExclusive( ResourceTypes.RELATIONSHIP, relationshipId ); state.assertOpen(); return entityWriteDelegate.relationshipSetProperty( state, relationshipId, property ); } @@ -503,7 +508,7 @@ public Property relationshipRemoveProperty( KernelStatement state, long relationshipId, int propertyKeyId ) throws EntityNotFoundException { - state.locks().acquireExclusive( ResourceTypes.RELATIONSHIP, relationshipId ); + getLocks( state ).acquireExclusive( ResourceTypes.RELATIONSHIP, relationshipId ); state.assertOpen(); return entityWriteDelegate.relationshipRemoveProperty( state, relationshipId, propertyKeyId ); } @@ -511,7 +516,7 @@ public Property relationshipRemoveProperty( KernelStatement state, @Override public Property graphSetProperty( KernelStatement state, DefinedProperty property ) { - state.locks().acquireExclusive( ResourceTypes.GRAPH_PROPS, ResourceTypes.graphPropertyResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.GRAPH_PROPS, ResourceTypes.graphPropertyResource() ); state.assertOpen(); return entityWriteDelegate.graphSetProperty( state, property ); } @@ -519,7 +524,7 @@ public Property graphSetProperty( KernelStatement state, DefinedProperty propert @Override public Property graphRemoveProperty( KernelStatement state, int propertyKeyId ) { - state.locks().acquireExclusive( ResourceTypes.GRAPH_PROPS, ResourceTypes.graphPropertyResource() ); + getLocks( state ).acquireExclusive( ResourceTypes.GRAPH_PROPS, ResourceTypes.graphPropertyResource() ); state.assertOpen(); return entityWriteDelegate.graphRemoveProperty( state, propertyKeyId ); } @@ -527,28 +532,28 @@ public Property graphRemoveProperty( KernelStatement state, int propertyKeyId ) @Override public void acquireExclusive( KernelStatement state, Locks.ResourceType resourceType, long resourceId ) { - state.locks().acquireExclusive( resourceType, resourceId ); + getLocks( state ).acquireExclusive( resourceType, resourceId ); state.assertOpen(); } @Override public void acquireShared(KernelStatement state, Locks.ResourceType resourceType, long resourceId ) { - state.locks().acquireShared( resourceType, resourceId ); + getLocks( state ).acquireShared( resourceType, resourceId ); state.assertOpen(); } @Override public void releaseExclusive( KernelStatement state, Locks.ResourceType type, long resourceId ) { - state.locks().releaseExclusive( type, resourceId ); + getLocks( state ).releaseExclusive( type, resourceId ); state.assertOpen(); } @Override public void releaseShared( KernelStatement state, Locks.ResourceType type, long resourceId ) { - state.locks().releaseShared( type, resourceId ); + getLocks( state ).releaseShared( type, resourceId ); state.assertOpen(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/DeferringLocks.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/DeferringLocks.java index 7047522ec489d..30e194fdf6671 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/DeferringLocks.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/DeferringLocks.java @@ -180,5 +180,11 @@ public int getLockSessionId() { return clientDelegate.getLockSessionId(); } + + @Override + public Client delegate() + { + return clientDelegate; + } } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/Locks.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/Locks.java index 4691b92cffc0f..3c8f25d2aa1ae 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/Locks.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/Locks.java @@ -117,6 +117,9 @@ interface Client extends AutoCloseable /** For slave transactions, this tracks an identifier for the lock session running on the master */ int getLockSessionId(); + + /** Get a potential delegate */ + Client delegate(); } /** diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/NoOpClient.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/NoOpClient.java index 6154ef190e8d0..f7169a11f1d5d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/NoOpClient.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/NoOpClient.java @@ -78,4 +78,10 @@ public int getLockSessionId() { return -1; } + + @Override + public Locks.Client delegate() + { + return this; + } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/community/CommunityLockClient.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/community/CommunityLockClient.java index 4749914df20c4..e6a7b0cb4e1af 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/community/CommunityLockClient.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/community/CommunityLockClient.java @@ -306,6 +306,12 @@ public int getLockSessionId() return lockTransaction.getId(); } + @Override + public Locks.Client delegate() + { + return this; + } + private PrimitiveLongObjectMap localShared( Locks.ResourceType resourceType ) { PrimitiveLongObjectMap map = sharedLocks.get( resourceType.typeId() ); diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLocksClient.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLocksClient.java index 238cc2ea3a87f..94350ff4e50e2 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLocksClient.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLocksClient.java @@ -294,6 +294,12 @@ private void endLockSessionOnMaster( boolean success ) } } + @Override + public Locks.Client delegate() + { + return client; + } + private boolean getReadLockOnMaster( Locks.ResourceType resourceType, long resourceId ) { if ( resourceType == ResourceTypes.NODE diff --git a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/lock/forseti/ForsetiClient.java b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/lock/forseti/ForsetiClient.java index b4efc295f7590..433fccb105d7d 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/lock/forseti/ForsetiClient.java +++ b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/lock/forseti/ForsetiClient.java @@ -574,6 +574,12 @@ public int getLockSessionId() return clientId; } + @Override + public Locks.Client delegate() + { + return this; + } + public int waitListSize() { return waitList.size();