diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java index c17616596a6bc..8928950e01a9b 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java @@ -724,9 +724,14 @@ public SchemaWrite schemaWrite() } @Override - public org.neo4j.internal.kernel.api.Locks locks() + public StatementLocks locks() { - throw new UnsupportedOperationException( "not implemented" ); + return statementLocks; + } + + public LockTracer lockTracer() + { + return currentStatement.lockTracer(); } private void afterCommit( long txId ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/StatementLocks.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/StatementLocks.java index 4d109346d1a84..a4a7e58218341 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/StatementLocks.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/locking/StatementLocks.java @@ -27,7 +27,7 @@ * Component used by {@link KernelStatement} to acquire {@link #pessimistic() pessimistic} and * {@link #optimistic() optimistic} locks. */ -public interface StatementLocks extends AutoCloseable +public interface StatementLocks extends AutoCloseable, org.neo4j.internal.kernel.api.Locks { /** * Get {@link Locks.Client} responsible for pessimistic locks. Such locks will be grabbed right away. diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java index a2faf4b3e898b..1d0716c1e904d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/Operations.java @@ -26,8 +26,8 @@ import org.neo4j.graphdb.TransactionTerminatedException; import org.neo4j.internal.kernel.api.CapableIndexReference; import org.neo4j.internal.kernel.api.ExplicitIndexRead; -import org.neo4j.internal.kernel.api.IndexOrder; import org.neo4j.internal.kernel.api.ExplicitIndexWrite; +import org.neo4j.internal.kernel.api.IndexOrder; import org.neo4j.internal.kernel.api.IndexQuery; import org.neo4j.internal.kernel.api.IndexReference; import org.neo4j.internal.kernel.api.NodeCursor; @@ -48,6 +48,7 @@ import org.neo4j.kernel.api.explicitindex.AutoIndexing; import org.neo4j.kernel.impl.api.KernelTransactionImplementation; import org.neo4j.kernel.impl.index.ExplicitIndexStore; +import org.neo4j.kernel.impl.locking.ResourceTypes; import org.neo4j.storageengine.api.EntityType; import org.neo4j.storageengine.api.StorageEngine; import org.neo4j.storageengine.api.StorageStatement; @@ -353,6 +354,7 @@ public boolean nodeDelete( long node ) throws KernelException } } + ktx.locks().optimistic().acquireExclusive( ktx.lockTracer(), ResourceTypes.NODE, node ); if ( allStoreHolder.nodeExists( node ) ) { autoIndexing.nodes().entityRemoved( this, node );