Skip to content

Commit

Permalink
Revert "Merge pull request #15 from davidegrohmann/3.3-global-cursor-…
Browse files Browse the repository at this point in the history
…cache"

This reverts commit 7b0b7a6, reversing
changes made to 530cd9d.
  • Loading branch information
MishaDemianenko committed May 25, 2017
1 parent 328e9c8 commit 13e3d20
Show file tree
Hide file tree
Showing 65 changed files with 1,201 additions and 850 deletions.
Expand Up @@ -42,7 +42,7 @@ import org.neo4j.kernel.impl.locking.LockTracer
import org.neo4j.kernel.impl.proc.Procedures
import org.neo4j.kernel.impl.query.clientconnection.ClientConnectionInfo
import org.neo4j.kernel.impl.query.{Neo4jTransactionalContext, Neo4jTransactionalContextFactory}
import org.neo4j.storageengine.api.SchemaResources
import org.neo4j.storageengine.api.StorageStatement
import org.neo4j.test.TestGraphDatabaseFactory

import scala.collection.JavaConverters._
Expand All @@ -61,7 +61,7 @@ class TransactionBoundQueryContextTest extends CypherFunSuite {
outerTx = mock[InternalTransaction]
val kernelTransaction = mock[KernelTransactionImplementation]
when(kernelTransaction.securityContext()).thenReturn(AUTH_DISABLED)
val storeStatement = mock[SchemaResources]
val storeStatement = mock[StorageStatement]
val operations = mock[StatementOperationParts](RETURNS_DEEP_STUBS)
statement = new KernelStatementImplementation(kernelTransaction, null, storeStatement, new Procedures(), new CanWrite(), LockTracer.NONE)
statement.initialize(null, operations, PageCursorTracerSupplier.NULL.get())
Expand Down
Expand Up @@ -87,6 +87,7 @@
import org.neo4j.kernel.impl.logging.LogService;
import org.neo4j.kernel.impl.proc.Procedures;
import org.neo4j.kernel.impl.storageengine.impl.recordstorage.RecordStorageEngine;
import org.neo4j.kernel.impl.storageengine.impl.recordstorage.StorageStatementFactory;
import org.neo4j.kernel.impl.store.MetaDataStore;
import org.neo4j.kernel.impl.store.StoreId;
import org.neo4j.kernel.impl.store.format.RecordFormatPropertyConfigurator;
Expand Down Expand Up @@ -264,6 +265,7 @@ boolean applicable( DiagnosticsPhase phase )
private final Map<String,IndexImplementation> indexProviders = new HashMap<>();
private final LegacyIndexProviderLookup legacyIndexProviderLookup;
private final ConstraintSemantics constraintSemantics;
private final StorageStatementFactory storageStatementFactory;
private final Procedures procedures;
private final IOLimiter ioLimiter;
private final AvailabilityGuard availabilityGuard;
Expand Down Expand Up @@ -318,6 +320,7 @@ public NeoStoreDataSource(
AutoIndexing autoIndexing,
PageCache pageCache,
ConstraintSemantics constraintSemantics,
StorageStatementFactory storageStatementFactory,
Monitors monitors,
Tracers tracers,
Procedures procedures,
Expand Down Expand Up @@ -356,6 +359,7 @@ public NeoStoreDataSource(
this.startupStatistics = startupStatistics;
this.guard = guard;
this.constraintSemantics = constraintSemantics;
this.storageStatementFactory = storageStatementFactory;
this.monitors = monitors;
this.tracers = tracers;
this.procedures = procedures;
Expand Down Expand Up @@ -586,7 +590,7 @@ private StorageEngine buildStorageEngine( PropertyKeyTokenHolder propertyKeyToke
RecordStorageEngine storageEngine =
new RecordStorageEngine( storeDir, config, idGeneratorFactory, eligibleForReuse,
idTypeConfigurationProvider, pageCache, fs, logProvider, propertyKeyTokenHolder, labelTokens,
relationshipTypeTokens, schemaStateChangeCallback, constraintSemantics,
relationshipTypeTokens, schemaStateChangeCallback, constraintSemantics, storageStatementFactory,
scheduler, tokenNameLookup, lockService, schemaIndexProvider, indexingServiceMonitor,
databaseHealth, labelScanStoreProvider, legacyIndexProviderLookup, indexConfigStore,
legacyIndexTransactionOrdering, transactionSnapshotSupplier, progressionFactory );
Expand Down
Expand Up @@ -19,6 +19,7 @@
*/
package org.neo4j.kernel.api;

import org.neo4j.storageengine.api.StorageStatement;
import org.neo4j.storageengine.api.StoreReadLayer;
import org.neo4j.storageengine.api.txstate.ReadableTransactionState;

Expand All @@ -34,7 +35,7 @@ interface Outcome
}

OUTCOME beforeCommit( ReadableTransactionState state, KernelTransaction transaction,
StoreReadLayer storeReadLayer );
StoreReadLayer storeReadLayer, StorageStatement statement );
void afterCommit( ReadableTransactionState state, KernelTransaction transaction, OUTCOME outcome );
void afterRollback( ReadableTransactionState state, KernelTransaction transaction, OUTCOME outcome );
}
Expand Up @@ -29,6 +29,7 @@
import org.neo4j.kernel.impl.api.CountsRecordState;
import org.neo4j.storageengine.api.NodeItem;
import org.neo4j.storageengine.api.RelationshipItem;
import org.neo4j.storageengine.api.StorageStatement;
import org.neo4j.storageengine.api.StoreReadLayer;
import org.neo4j.storageengine.api.txstate.ReadableTransactionState;
import org.neo4j.storageengine.api.txstate.TxStateVisitor;
Expand All @@ -39,14 +40,16 @@
public class TransactionCountingStateVisitor extends TxStateVisitor.Delegator
{
private final StoreReadLayer storeLayer;
private final StorageStatement statement;
private final CountsRecordState counts;
private final ReadableTransactionState txState;

public TransactionCountingStateVisitor( TxStateVisitor next, StoreReadLayer storeLayer,
public TransactionCountingStateVisitor( TxStateVisitor next, StoreReadLayer storeLayer, StorageStatement statement,
ReadableTransactionState txState, CountsRecordState counts )
{
super( next );
this.storeLayer = storeLayer;
this.statement = statement;
this.txState = txState;
this.counts = counts;
}
Expand All @@ -62,7 +65,7 @@ public void visitCreatedNode( long id )
public void visitDeletedNode( long id )
{
counts.incrementNodeCount( ANY_LABEL, -1 );
storeLayer.nodeGetSingleCursor( id, ReadableTransactionState.EMPTY )
storeLayer.nodeGetSingleCursor( statement, id, ReadableTransactionState.EMPTY )
.forAll( this::decrementCountForLabelsAndRelationships );
super.visitDeletedNode( id );
}
Expand All @@ -76,7 +79,7 @@ private void decrementCountForLabelsAndRelationships( NodeItem node )
return false;
} );

storeLayer.degrees( node,
storeLayer.degrees( statement, node,
( type, out, in ) -> updateRelationshipsCountsFromDegrees( labelIds, type, -out, -in ) );
}

Expand All @@ -91,7 +94,8 @@ public void visitCreatedRelationship( long id, int type, long startNode, long en
@Override
public void visitDeletedRelationship( long id )
{
try ( Cursor<RelationshipItem> cursor = storeLayer.relationshipGetSingleCursor( id, ReadableTransactionState.EMPTY ) )
try ( Cursor<RelationshipItem> cursor = storeLayer
.relationshipCursor( statement, id, ReadableTransactionState.EMPTY ) )
{
if ( !cursor.next() )
{
Expand Down Expand Up @@ -121,11 +125,12 @@ public void visitNodeLabelChanges( long id, final Set<Integer> added, final Set<
}
// get the relationship counts from *before* this transaction,
// the relationship changes will compensate for what happens during the transaction
storeLayer.nodeGetSingleCursor( id, ReadableTransactionState.EMPTY )
.forAll( node -> storeLayer.degrees( node, ( type, out, in ) ->
storeLayer.nodeGetSingleCursor( statement, id, ReadableTransactionState.EMPTY )
.forAll( node -> storeLayer.degrees( statement, node, ( type, out, in ) ->
{
added.forEach( label -> updateRelationshipsCountsFromDegrees( type, label, out, in ) );
removed.forEach( label -> updateRelationshipsCountsFromDegrees( type, label, -out, -in ) );
removed.forEach(
label -> updateRelationshipsCountsFromDegrees( type, label, -out, -in ) );
} ) );
}
super.visitNodeLabelChanges( id, added, removed );
Expand Down Expand Up @@ -156,6 +161,6 @@ private void updateRelationshipCount( long startNode, int type, long endNode, in

private void visitLabels( long nodeId, PrimitiveIntVisitor<RuntimeException> visitor )
{
storeLayer.nodeGetSingleCursor( nodeId, txState ).forAll( node -> node.labels().visitKeys( visitor ) );
storeLayer.nodeGetSingleCursor( statement, nodeId, txState ).forAll( node -> node.labels().visitKeys( visitor ) );
}
}
Expand Up @@ -26,7 +26,7 @@
import org.neo4j.kernel.api.txstate.TxStateHolder;
import org.neo4j.kernel.impl.locking.LockTracer;
import org.neo4j.kernel.impl.locking.StatementLocks;
import org.neo4j.storageengine.api.SchemaResources;
import org.neo4j.storageengine.api.StorageStatement;

public interface KernelStatement extends TxStateHolder, Statement
{
Expand All @@ -38,7 +38,7 @@ public interface KernelStatement extends TxStateHolder, Statement

PageCursorTracer pageCursorTracer();

SchemaResources schemaResources();
StorageStatement storageStatement();

KernelTransaction transaction();

Expand Down
Expand Up @@ -44,7 +44,7 @@
import org.neo4j.kernel.impl.locking.LockTracer;
import org.neo4j.kernel.impl.locking.StatementLocks;
import org.neo4j.kernel.impl.proc.Procedures;
import org.neo4j.storageengine.api.SchemaResources;
import org.neo4j.storageengine.api.StorageStatement;
import org.neo4j.storageengine.api.txstate.ReadableTransactionState;
import org.neo4j.storageengine.api.txstate.WritableTransactionState;

Expand All @@ -70,7 +70,7 @@
public class KernelStatementImplementation implements KernelStatement
{
private final TxStateHolder txStateHolder;
private final SchemaResources schemaResources;
private final StorageStatement storeStatement;
private final AccessCapability accessCapability;
private final KernelTransactionImplementation transaction;
private final OperationsFacade facade;
Expand All @@ -82,14 +82,14 @@ public class KernelStatementImplementation implements KernelStatement

public KernelStatementImplementation( KernelTransactionImplementation transaction,
TxStateHolder txStateHolder,
SchemaResources schemaResources,
StorageStatement storeStatement,
Procedures procedures,
AccessCapability accessCapability,
LockTracer systemLockTracer )
{
this.transaction = transaction;
this.txStateHolder = txStateHolder;
this.schemaResources = schemaResources;
this.storeStatement = storeStatement;
this.accessCapability = accessCapability;
this.facade = new OperationsFacade( transaction, this, procedures );
this.executingQueryList = ExecutingQueryList.EMPTY;
Expand Down Expand Up @@ -224,7 +224,10 @@ public PageCursorTracer pageCursorTracer()

public final void acquire()
{
referenceCount++;
if ( referenceCount++ == 0 )
{
storeStatement.acquire();
}
}

final boolean isAcquired()
Expand Down Expand Up @@ -267,15 +270,15 @@ public final void stopQueryExecution( ExecutingQuery executingQuery )
}

@Override
public SchemaResources schemaResources()
public StorageStatement storageStatement()
{
return schemaResources;
return storeStatement;
}

private void cleanupResources()
{
// closing is done by KTI
schemaResources.close();
storeStatement.release();
executingQueryList = ExecutingQueryList.EMPTY;
}

Expand Down
Expand Up @@ -65,7 +65,7 @@
import org.neo4j.kernel.impl.transaction.tracing.TransactionTracer;
import org.neo4j.storageengine.api.StorageCommand;
import org.neo4j.storageengine.api.StorageEngine;
import org.neo4j.storageengine.api.SchemaResources;
import org.neo4j.storageengine.api.StorageStatement;
import org.neo4j.storageengine.api.StoreReadLayer;
import org.neo4j.storageengine.api.txstate.ReadableTransactionState;
import org.neo4j.storageengine.api.txstate.TxStateVisitor;
Expand Down Expand Up @@ -117,7 +117,7 @@ public class KernelTransactionImplementation implements KernelTransaction, TxSta
private TransactionHooks.TransactionHooksState hooksState;
private StatementOperationParts currentTransactionOperations;
private final KernelStatementImplementation currentStatement;
private final SchemaResources schemaResources;
private final StorageStatement storageStatement;
private final List<CloseListener> closeListeners = new ArrayList<>( 2 );
private SecurityContext securityContext;
private volatile StatementLocks statementLocks;
Expand Down Expand Up @@ -178,9 +178,9 @@ public KernelTransactionImplementation( StatementOperationContainer operationCon
this.clock = clock;
this.transactionTracer = transactionTracer;
this.cursorTracerSupplier = cursorTracerSupplier;
this.schemaResources = storeLayer.schemaResources();
this.storageStatement = storeLayer.newStatement();
this.currentStatement =
new KernelStatementImplementation( this, this, schemaResources, procedures, accessCapability, lockTracer );
new KernelStatementImplementation( this, this, storageStatement, procedures, accessCapability, lockTracer );
this.userMetaData = Collections.emptyMap();
}

Expand Down Expand Up @@ -535,7 +535,7 @@ private long commit() throws TransactionFailureException
{
try
{
hooksState = hooks.beforeCommit( txState, this, storageEngine.storeReadLayer() );
hooksState = hooks.beforeCommit( txState, this, storageEngine.storeReadLayer(), storageStatement );
if ( hooksState != null && hooksState.failed() )
{
TransactionHookException cause = hooksState.failure();
Expand All @@ -560,7 +560,8 @@ private long commit() throws TransactionFailureException
Collection<StorageCommand> extractedCommands = new ArrayList<>();
storageEngine.createCommands(
extractedCommands,
txState, schemaResources,
txState,
storageStatement,
commitLocks,
lastTransactionIdWhenStarted );
if ( hasLegacyIndexChanges() )
Expand Down Expand Up @@ -805,7 +806,7 @@ public String toString()
@Override
public void dispose()
{
schemaResources.close();
storageStatement.close();
}

/**
Expand Down
Expand Up @@ -28,6 +28,7 @@

import org.neo4j.collection.pool.LinkedQueuePool;
import org.neo4j.collection.pool.MarshlandPool;
import org.neo4j.function.Factory;
import org.neo4j.graphdb.DatabaseShutdownException;
import org.neo4j.graphdb.TransactionFailureException;
import org.neo4j.kernel.AvailabilityGuard;
Expand Down

0 comments on commit 13e3d20

Please sign in to comment.