Skip to content

Commit

Permalink
Less record logic instances created
Browse files Browse the repository at this point in the history
now creates one per database as opposed to one per transaction.
Classes like: RelationshipCreator, RelationshipDeletor and PropertyTraverser.
  • Loading branch information
tinwelint committed Jan 22, 2016
1 parent 3574c53 commit 5f52cce
Show file tree
Hide file tree
Showing 10 changed files with 299 additions and 447 deletions.
Expand Up @@ -28,6 +28,7 @@

import org.neo4j.concurrent.WorkSync;
import org.neo4j.graphdb.config.Setting;
import org.neo4j.graphdb.factory.GraphDatabaseSettings;
import org.neo4j.io.fs.FileSystemAbstraction;
import org.neo4j.io.pagecache.PageCache;
import org.neo4j.kernel.impl.store.id.IdGeneratorFactory;
Expand Down Expand Up @@ -80,8 +81,14 @@
import org.neo4j.kernel.impl.transaction.state.IntegrityValidator;
import org.neo4j.kernel.impl.transaction.state.Loaders;
import org.neo4j.kernel.impl.transaction.state.NeoStoreIndexStoreView;
import org.neo4j.kernel.impl.transaction.state.NeoStoreTransactionContext;
import org.neo4j.kernel.impl.transaction.state.PropertyCreator;
import org.neo4j.kernel.impl.transaction.state.PropertyDeleter;
import org.neo4j.kernel.impl.transaction.state.PropertyLoader;
import org.neo4j.kernel.impl.transaction.state.PropertyTraverser;
import org.neo4j.kernel.impl.transaction.state.RecordChangeSet;
import org.neo4j.kernel.impl.transaction.state.RelationshipCreator;
import org.neo4j.kernel.impl.transaction.state.RelationshipDeleter;
import org.neo4j.kernel.impl.transaction.state.RelationshipGroupGetter;
import org.neo4j.kernel.impl.transaction.state.TransactionRecordState;
import org.neo4j.kernel.impl.util.DependencySatisfier;
import org.neo4j.kernel.impl.util.IdOrderingQueue;
Expand Down Expand Up @@ -146,6 +153,10 @@ public class RecordStorageEngine implements StorageEngine, Lifecycle

// Immutable state for creating/applying commands
private final Loaders loaders;
private final RelationshipCreator relationshipCreator;
private final RelationshipDeleter relationshipDeleter;
private final PropertyCreator propertyCreator;
private final PropertyDeleter propertyDeleter;

public RecordStorageEngine(
File storeDir,
Expand Down Expand Up @@ -216,6 +227,14 @@ public RecordStorageEngine(

// Immutable state for creating/applying commands
loaders = new Loaders( neoStores );
RelationshipGroupGetter relationshipGroupGetter =
new RelationshipGroupGetter( neoStores.getRelationshipGroupStore() );
relationshipCreator = new RelationshipCreator( relationshipGroupGetter,
config.get( GraphDatabaseSettings.dense_node_threshold ) );
PropertyTraverser propertyTraverser = new PropertyTraverser();
propertyDeleter = new PropertyDeleter( neoStores.getPropertyStore(), propertyTraverser );
relationshipDeleter = new RelationshipDeleter( relationshipGroupGetter, propertyDeleter );
propertyCreator = new PropertyCreator( neoStores.getPropertyStore(), propertyTraverser );
}
catch ( Throwable failure )
{
Expand Down Expand Up @@ -260,9 +279,10 @@ public void createCommands(
{
if ( txState != null )
{
NeoStoreTransactionContext context = new NeoStoreTransactionContext( neoStores, loaders, locks );
TransactionRecordState recordState = new TransactionRecordState( neoStores, integrityValidator, context );
recordState.initialize( lastTransactionIdWhenStarted );
RecordChangeSet recordChangeSet = new RecordChangeSet( loaders );
TransactionRecordState recordState = new TransactionRecordState( neoStores, integrityValidator,
recordChangeSet, lastTransactionIdWhenStarted, locks,
relationshipCreator, relationshipDeleter, propertyCreator, propertyDeleter );

// Visit transaction state and populate these record state objects
TxStateVisitor txStateVisitor = new TransactionToRecordStateVisitor( recordState,
Expand Down

This file was deleted.

Expand Up @@ -52,5 +52,7 @@ public interface RecordAccessSet

boolean hasChanges();

int changeSize();

void close();
}
Expand Up @@ -132,6 +132,12 @@ public boolean hasChanges()
return changeCounter.value() > 0;
}

@Override
public int changeSize()
{
return changeCounter.value();
}

@Override
public void close()
{
Expand Down

0 comments on commit 5f52cce

Please sign in to comment.