Beispiel #1
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public static <CURSOR extends org.neo4j.internal.kernel.api.NodeValueIndexCursor> long apply(org.neo4j.kernel.impl.locking.Locks_Client locks, org.neo4j.storageengine.api.lock.LockTracer lockTracer, System.Func<CURSOR> cursors, UniqueNodeIndexSeeker<CURSOR> nodeIndexSeeker, Read read, org.neo4j.internal.kernel.api.IndexReference index, org.neo4j.internal.kernel.api.IndexQuery.ExactPredicate... predicates) throws org.neo4j.internal.kernel.api.exceptions.schema.IndexNotApplicableKernelException, org.neo4j.internal.kernel.api.exceptions.schema.IndexNotFoundKernelException
        public static long Apply <CURSOR>(Org.Neo4j.Kernel.impl.locking.Locks_Client locks, LockTracer lockTracer, System.Func <CURSOR> cursors, UniqueNodeIndexSeeker <CURSOR> nodeIndexSeeker, Read read, IndexReference index, params IndexQuery.ExactPredicate[] predicates) where CURSOR : [email protected]
        {
            int[] entityTokenIds = index.Schema().EntityTokenIds;
            if (entityTokenIds.Length != 1)
            {
                throw new IndexNotApplicableKernelException("Multi-token index " + index + " does not support uniqueness.");
            }
            long indexEntryId = indexEntryResourceId(entityTokenIds[0], predicates);

            //First try to find node under a shared lock
            //if not found upgrade to exclusive and try again
            locks.AcquireShared(lockTracer, INDEX_ENTRY, indexEntryId);
            using (CURSOR cursor = cursors(), IndexReaders readers = new IndexReaders(index, read))
            {
                nodeIndexSeeker.NodeIndexSeekWithFreshIndexReader(cursor, readers.CreateReader(), predicates);
                if (!cursor.next())
                {
                    locks.ReleaseShared(INDEX_ENTRY, indexEntryId);
                    locks.AcquireExclusive(lockTracer, INDEX_ENTRY, indexEntryId);
                    nodeIndexSeeker.NodeIndexSeekWithFreshIndexReader(cursor, readers.CreateReader(), predicates);
                    if (cursor.next())                                // we found it under the exclusive lock
                    {
                        // downgrade to a shared lock
                        locks.AcquireShared(lockTracer, INDEX_ENTRY, indexEntryId);
                        locks.ReleaseExclusive(INDEX_ENTRY, indexEntryId);
                    }
                }

                return(cursor.nodeReference());
            }
        }
 public override void PrepareForCommit(LockTracer lockTracer)
 {
     // Locks where grabbed eagerly by client so no need to prepare
     _client.prepare();
 }
Beispiel #3
0
 internal TwoPhaseNodeForRelationshipLocking(ThrowingConsumer <long, KernelException> relIdAction, Org.Neo4j.Kernel.impl.locking.Locks_Client locks, LockTracer lockTracer)
 {
     this._relIdAction = relIdAction;
     this._locks       = locks;
     this._lockTracer  = lockTracer;
 }
Beispiel #4
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void acquireExclusive(org.neo4j.storageengine.api.lock.LockTracer tracer, org.neo4j.storageengine.api.lock.ResourceType resourceType, long... resourceIds) throws org.neo4j.storageengine.api.lock.AcquireLockTimeoutException
        public override void AcquireExclusive(LockTracer tracer, ResourceType resourceType, params long[] resourceIds)
        {
        }
Beispiel #5
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public void acquireShared(org.neo4j.storageengine.api.lock.LockTracer tracer, org.neo4j.storageengine.api.lock.ResourceType resourceType, long... resourceIds) throws org.neo4j.storageengine.api.lock.AcquireLockTimeoutException
        public override void AcquireShared(LockTracer tracer, ResourceType resourceType, params long[] resourceIds)
        {
        }
Beispiel #6
0
 public override void PrepareForCommit(LockTracer lockTracer)
 {
     @implicit.AcquireDeferredLocks(lockTracer);
     @explicit.Prepare();
 }
Beispiel #7
0
 public override void PrepareForCommit(LockTracer lockTracer)
 {
     @delegate.PrepareForCommit(lockTracer);
     (( SlaveLocksClient )Optimistic()).acquireDeferredSharedLocks(lockTracer);
 }