Skip to content

Commit

Permalink
Add support for secondary unit in commands
Browse files Browse the repository at this point in the history
Add support for secondary unit during RelationshipCommand, RelationshipGroupCommand, PropertyCommands serialization,
support secondary unit in PhysicalLogCommandReaderV3_0.
  • Loading branch information
MishaDemianenko committed Feb 29, 2016
1 parent a0e28c9 commit 57690cb
Show file tree
Hide file tree
Showing 16 changed files with 279 additions and 92 deletions.
Expand Up @@ -28,7 +28,8 @@


/** /**
* Wraps several {@link TransactionApplier}s. In this case, each individual visit-call will delegate to {@link * Wraps several {@link TransactionApplier}s. In this case, each individual visit-call will delegate to {@link
* #visit(Command)} instead, which will call each wrapped {@link TransactionApplier} in turn. In {@link #close()}, * #visit(StorageCommand)} instead, which will call each wrapped {@link TransactionApplier} in turn. In
* {@link #close()},
* the appliers are closed in reversed order. * the appliers are closed in reversed order.
*/ */
public class TransactionApplierFacade extends TransactionApplier.Adapter public class TransactionApplierFacade extends TransactionApplier.Adapter
Expand Down
Expand Up @@ -355,7 +355,7 @@ private BatchTransactionApplierFacade applier( TransactionApplicationMode mode )


// Schema index application // Schema index application
appliers.add( new IndexBatchTransactionApplier( indexingService, labelScanStoreSync, indexUpdatesSync, appliers.add( new IndexBatchTransactionApplier( indexingService, labelScanStoreSync, indexUpdatesSync,
neoStores.getNodeStore(), neoStores.getPropertyStore(), new PropertyLoader( neoStores ), neoStores.getNodeStore(), new PropertyLoader( neoStores ),
indexUpdatesConverter, mode ) ); indexUpdatesConverter, mode ) );


// Legacy index application // Legacy index application
Expand Down
Expand Up @@ -87,7 +87,7 @@ public void setId( long id )
} }


/** /**
* Sets a secondary record unit ID for this record. If this is set to something other than {@code -1} * Sets a secondary record unit ID for this record. If this is set to something other than {@link #NO_ID}
* then {@link #requiresSecondaryUnit()} will return {@code true}. * then {@link #requiresSecondaryUnit()} will return {@code true}.
* Setting this id is separate from setting {@link #requiresSecondaryUnit()} since this secondary unit id * Setting this id is separate from setting {@link #requiresSecondaryUnit()} since this secondary unit id
* may be used to just free that id at the time of updating in the store if a record goes from two to one unit. * may be used to just free that id at the time of updating in the store if a record goes from two to one unit.
Expand Down
Expand Up @@ -45,16 +45,19 @@ public enum Record
NO_LABELS_FIELD( (byte)0, 0 ); NO_LABELS_FIELD( (byte)0, 0 );


public static final byte CREATED_IN_TX = 2; public static final byte CREATED_IN_TX = 2;
public static final byte REQUIRE_SECONDARY_UNIT = 4;
public static final byte HAS_SECONDARY_UNIT = 8;



private byte byteValue; private byte byteValue;
private int intValue; private int intValue;


private Record( Record from ) Record( Record from )
{ {
this( from.byteValue, from.intValue ); this( from.byteValue, from.intValue );
} }


private Record( byte byteValue, int intValue ) Record( byte byteValue, int intValue )
{ {
this.byteValue = byteValue; this.byteValue = byteValue;
this.intValue = intValue; this.intValue = intValue;
Expand Down
Expand Up @@ -156,7 +156,10 @@ void writeDynamicRecord( WritableChannel channel, DynamicRecord record ) throws
{ {
inUse |= Record.FIRST_IN_CHAIN.byteValue(); inUse |= Record.FIRST_IN_CHAIN.byteValue();
} }
channel.putLong( record.getId() ).putInt( record.getType() ).put( inUse ).putInt( record.getLength() ) channel.putLong( record.getId() )
.putInt( record.getType() )
.put( inUse )
.putInt( record.getLength() )
.putLong( record.getNextBlock() ); .putLong( record.getNextBlock() );
byte[] data = record.getData(); byte[] data = record.getData();
assert data != null; assert data != null;
Expand All @@ -165,7 +168,9 @@ void writeDynamicRecord( WritableChannel channel, DynamicRecord record ) throws
else else
{ {
byte inUse = Record.NOT_IN_USE.byteValue(); byte inUse = Record.NOT_IN_USE.byteValue();
channel.putLong( record.getId() ).putInt( record.getType() ).put( inUse ); channel.putLong( record.getId() )
.putInt( record.getType() )
.put( inUse );
} }
} }


Expand Down Expand Up @@ -262,7 +267,9 @@ public void serialize( WritableChannel channel ) throws IOException
private void writeRelationshipRecord( WritableChannel channel, RelationshipRecord record ) throws IOException private void writeRelationshipRecord( WritableChannel channel, RelationshipRecord record ) throws IOException
{ {
byte flags = bitFlags( bitFlag( record.inUse(), Record.IN_USE.byteValue() ), byte flags = bitFlags( bitFlag( record.inUse(), Record.IN_USE.byteValue() ),
bitFlag( record.isCreated(), Record.CREATED_IN_TX ) ); bitFlag( record.isCreated(), Record.CREATED_IN_TX ),
bitFlag( record.requiresSecondaryUnit(), Record.REQUIRE_SECONDARY_UNIT ),
bitFlag( record.hasSecondaryUnitId(), Record.HAS_SECONDARY_UNIT ));
channel.put( flags ); channel.put( flags );
if ( record.inUse() ) if ( record.inUse() )
{ {
Expand All @@ -271,6 +278,10 @@ private void writeRelationshipRecord( WritableChannel channel, RelationshipRecor
.putLong( record.getSecondPrevRel() ).putLong( record.getSecondNextRel() ) .putLong( record.getSecondPrevRel() ).putLong( record.getSecondNextRel() )
.putLong( record.getNextProp() ) .putLong( record.getNextProp() )
.put( (byte) ((record.isFirstInFirstChain() ? 1 : 0) | (record.isFirstInSecondChain() ? 2 : 0)) ); .put( (byte) ((record.isFirstInFirstChain() ? 1 : 0) | (record.isFirstInSecondChain() ? 2 : 0)) );
if ( record.hasSecondaryUnitId() )
{
channel.putLong( record.getSecondaryUnitId() );
}
} }
else else
{ {
Expand Down Expand Up @@ -304,13 +315,20 @@ public void serialize( WritableChannel channel ) throws IOException
private void writeRelationshipGroupRecord( WritableChannel channel, RelationshipGroupRecord record ) private void writeRelationshipGroupRecord( WritableChannel channel, RelationshipGroupRecord record )
throws IOException throws IOException
{ {
channel.put( (byte) (record.inUse() ? Record.IN_USE.intValue() : Record.NOT_IN_USE.intValue()) ); byte flags = bitFlags( bitFlag( record.inUse(), Record.IN_USE.byteValue() ),
bitFlag( record.requiresSecondaryUnit(), Record.REQUIRE_SECONDARY_UNIT ),
bitFlag( record.hasSecondaryUnitId(), Record.HAS_SECONDARY_UNIT ) );
channel.put( flags );
channel.putShort( (short) record.getType() ); channel.putShort( (short) record.getType() );
channel.putLong( record.getNext() ); channel.putLong( record.getNext() );
channel.putLong( record.getFirstOut() ); channel.putLong( record.getFirstOut() );
channel.putLong( record.getFirstIn() ); channel.putLong( record.getFirstIn() );
channel.putLong( record.getFirstLoop() ); channel.putLong( record.getFirstLoop() );
channel.putLong( record.getOwningNode() ); channel.putLong( record.getOwningNode() );
if ( record.hasSecondaryUnitId() )
{
channel.putLong( record.getSecondaryUnitId() );
}
} }
} }


Expand Down Expand Up @@ -375,13 +393,12 @@ public void serialize( WritableChannel channel ) throws IOException


private void writePropertyRecord( WritableChannel channel, PropertyRecord record ) throws IOException private void writePropertyRecord( WritableChannel channel, PropertyRecord record ) throws IOException
{ {
byte inUse = record.inUse() ? Record.IN_USE.byteValue() : Record.NOT_IN_USE.byteValue(); byte flags = bitFlags( bitFlag( record.inUse(), Record.IN_USE.byteValue() ),
if ( record.getRelId() != -1 ) bitFlag( record.getRelId() != -1, Record.REL_PROPERTY.byteValue() ),
{ bitFlag( record.requiresSecondaryUnit(), Record.REQUIRE_SECONDARY_UNIT ),
// Here we add 2, i.e. set the second lsb. bitFlag( record.hasSecondaryUnitId(), Record.HAS_SECONDARY_UNIT ) );
inUse += Record.REL_PROPERTY.byteValue();
} channel.put( flags ); // 1
channel.put( inUse ); // 1
channel.putLong( record.getNextProp() ).putLong( record.getPrevProp() ); // 8 + 8 channel.putLong( record.getNextProp() ).putLong( record.getPrevProp() ); // 8 + 8
long nodeId = record.getNodeId(); long nodeId = record.getNodeId();
long relId = record.getRelId(); long relId = record.getRelId();
Expand All @@ -399,6 +416,10 @@ else if ( relId != -1 )
// prop chain // prop chain
channel.putLong( -1 ); // 8 channel.putLong( -1 ); // 8
} }
if ( record.hasSecondaryUnitId() )
{
channel.putLong( record.getSecondaryUnitId() );
}
channel.put( (byte) record.numberOfProperties() ); // 1 channel.put( (byte) record.numberOfProperties() ); // 1
for ( PropertyBlock block : record ) for ( PropertyBlock block : record )
{ {
Expand Down
Expand Up @@ -68,15 +68,15 @@ public class IndexBatchTransactionApplier extends BatchTransactionApplier.Adapte
public IndexBatchTransactionApplier( IndexingService indexingService, public IndexBatchTransactionApplier( IndexingService indexingService,
WorkSync<Supplier<LabelScanWriter>,LabelUpdateWork> labelScanStoreSync, WorkSync<Supplier<LabelScanWriter>,LabelUpdateWork> labelScanStoreSync,
WorkSync<IndexingService,IndexUpdatesWork> indexUpdatesSync, WorkSync<IndexingService,IndexUpdatesWork> indexUpdatesSync,
NodeStore nodeStore, PropertyStore propertyStore, PropertyLoader propertyLoader, NodeStore nodeStore, PropertyLoader propertyLoader,
PropertyPhysicalToLogicalConverter indexUpdateConverter, PropertyPhysicalToLogicalConverter indexUpdateConverter,
TransactionApplicationMode mode ) TransactionApplicationMode mode )
{ {
this.indexingService = indexingService; this.indexingService = indexingService;
this.labelScanStoreSync = labelScanStoreSync; this.labelScanStoreSync = labelScanStoreSync;
this.indexUpdatesSync = indexUpdatesSync; this.indexUpdatesSync = indexUpdatesSync;
this.indexUpdateConverter = indexUpdateConverter; this.indexUpdateConverter = indexUpdateConverter;
this.transactionApplier = new SingleTransactionApplier( nodeStore, propertyStore, propertyLoader, mode ); this.transactionApplier = new SingleTransactionApplier( nodeStore, propertyLoader, mode );
} }


@Override @Override
Expand Down Expand Up @@ -117,17 +117,15 @@ public void close() throws Exception
private class SingleTransactionApplier extends TransactionApplier.Adapter private class SingleTransactionApplier extends TransactionApplier.Adapter
{ {
private final NodeStore nodeStore; private final NodeStore nodeStore;
private final PropertyStore propertyStore;
private final PropertyLoader propertyLoader; private final PropertyLoader propertyLoader;
private final TransactionApplicationMode mode; private final TransactionApplicationMode mode;
private final NodePropertyCommandsExtractor indexUpdatesExtractor = new NodePropertyCommandsExtractor(); private final NodePropertyCommandsExtractor indexUpdatesExtractor = new NodePropertyCommandsExtractor();
private List<IndexRule> createdIndexes; private List<IndexRule> createdIndexes;


public SingleTransactionApplier( NodeStore nodeStore, PropertyStore propertyStore, public SingleTransactionApplier( NodeStore nodeStore, PropertyLoader propertyLoader,
PropertyLoader propertyLoader, TransactionApplicationMode mode ) TransactionApplicationMode mode )
{ {
this.nodeStore = nodeStore; this.nodeStore = nodeStore;
this.propertyStore = propertyStore;
this.propertyLoader = propertyLoader; this.propertyLoader = propertyLoader;
this.mode = mode; this.mode = mode;
} }
Expand Down Expand Up @@ -164,7 +162,7 @@ private IndexUpdates indexUpdates()
private IndexUpdates createIndexUpdates() private IndexUpdates createIndexUpdates()
{ {
return mode == TransactionApplicationMode.RECOVERY ? new RecoveryIndexUpdates() : return mode == TransactionApplicationMode.RECOVERY ? new RecoveryIndexUpdates() :
new OnlineIndexUpdates( nodeStore, propertyStore, propertyLoader, indexUpdateConverter ); new OnlineIndexUpdates( nodeStore, propertyLoader, indexUpdateConverter );
} }


@Override @Override
Expand Down
Expand Up @@ -58,7 +58,6 @@
import static org.neo4j.kernel.impl.transaction.command.CommandReading.PROPERTY_DELETED_DYNAMIC_RECORD_ADDER; import static org.neo4j.kernel.impl.transaction.command.CommandReading.PROPERTY_DELETED_DYNAMIC_RECORD_ADDER;
import static org.neo4j.kernel.impl.transaction.command.CommandReading.PROPERTY_INDEX_DYNAMIC_RECORD_ADDER; import static org.neo4j.kernel.impl.transaction.command.CommandReading.PROPERTY_INDEX_DYNAMIC_RECORD_ADDER;
import static org.neo4j.kernel.impl.util.Bits.bitFlag; import static org.neo4j.kernel.impl.util.Bits.bitFlag;
import static org.neo4j.kernel.impl.util.Bits.notFlag;
import static org.neo4j.kernel.impl.util.IoPrimitiveUtils.read2bLengthAndString; import static org.neo4j.kernel.impl.util.IoPrimitiveUtils.read2bLengthAndString;
import static org.neo4j.kernel.impl.util.IoPrimitiveUtils.read2bMap; import static org.neo4j.kernel.impl.util.IoPrimitiveUtils.read2bMap;
import static org.neo4j.kernel.impl.util.IoPrimitiveUtils.read3bLengthAndString; import static org.neo4j.kernel.impl.util.IoPrimitiveUtils.read3bLengthAndString;
Expand Down Expand Up @@ -206,12 +205,11 @@ private Command visitRelationshipGroupCommand( ReadableChannel channel ) throws
private RelationshipGroupRecord readRelationshipGroupRecord( long id, ReadableChannel channel ) private RelationshipGroupRecord readRelationshipGroupRecord( long id, ReadableChannel channel )
throws IOException throws IOException
{ {
byte inUseByte = channel.get(); byte flags = channel.get();
boolean inUse = inUseByte == Record.IN_USE.byteValue(); boolean inUse = bitFlag( flags, Record.IN_USE.byteValue() );
if ( inUseByte != Record.IN_USE.byteValue() && inUseByte != Record.NOT_IN_USE.byteValue() ) boolean requireSecondaryUnit = bitFlag( flags, Record.REQUIRE_SECONDARY_UNIT );
{ boolean hasSecondaryUnit = bitFlag( flags, Record.HAS_SECONDARY_UNIT );
throw new IOException( "Illegal in use flag: " + inUseByte );
}
int type = channel.getShort(); int type = channel.getShort();
RelationshipGroupRecord record = new RelationshipGroupRecord( id, type ); RelationshipGroupRecord record = new RelationshipGroupRecord( id, type );
record.setInUse( inUse ); record.setInUse( inUse );
Expand All @@ -220,6 +218,11 @@ private RelationshipGroupRecord readRelationshipGroupRecord( long id, ReadableCh
record.setFirstIn( channel.getLong() ); record.setFirstIn( channel.getLong() );
record.setFirstLoop( channel.getLong() ); record.setFirstLoop( channel.getLong() );
record.setOwningNode( channel.getLong() ); record.setOwningNode( channel.getLong() );
record.setRequiresSecondaryUnit( requireSecondaryUnit );
if ( hasSecondaryUnit )
{
record.setSecondaryUnitId( channel.getLong() );
}
return record; return record;
} }


Expand Down Expand Up @@ -430,20 +433,15 @@ record = new NodeRecord( id );
private RelationshipRecord readRelationshipRecord( long id, ReadableChannel channel ) throws IOException private RelationshipRecord readRelationshipRecord( long id, ReadableChannel channel ) throws IOException
{ {
byte flags = channel.get(); byte flags = channel.get();
boolean inUse = false; boolean inUse = bitFlag( flags, Record.IN_USE.byteValue() );
if ( notFlag( notFlag( flags, Record.IN_USE.byteValue() ), Record.CREATED_IN_TX ) != 0 ) boolean requiresSecondaryUnit = bitFlag( flags, Record.REQUIRE_SECONDARY_UNIT );
{ boolean hasSecondaryUnit = bitFlag( flags, Record.HAS_SECONDARY_UNIT );
throw new IOException( "Illegal in use flag: " + flags );
}
if ( bitFlag( flags, Record.IN_USE.byteValue() ) )
{
inUse = true;
}
RelationshipRecord record; RelationshipRecord record;
if ( inUse ) if ( inUse )
{ {
record = new RelationshipRecord( id, channel.getLong(), channel.getLong(), channel.getInt() ); record = new RelationshipRecord( id, channel.getLong(), channel.getLong(), channel.getInt() );
record.setInUse( true ); record.setInUse( true );
record.setRequiresSecondaryUnit( requiresSecondaryUnit );
record.setFirstPrevRel( channel.getLong() ); record.setFirstPrevRel( channel.getLong() );
record.setFirstNextRel( channel.getLong() ); record.setFirstNextRel( channel.getLong() );
record.setSecondPrevRel( channel.getLong() ); record.setSecondPrevRel( channel.getLong() );
Expand All @@ -452,6 +450,10 @@ record = new RelationshipRecord( id, channel.getLong(), channel.getLong(), chann
byte extraByte = channel.get(); byte extraByte = channel.get();
record.setFirstInFirstChain( (extraByte & 0x1) > 0 ); record.setFirstInFirstChain( (extraByte & 0x1) > 0 );
record.setFirstInSecondChain( (extraByte & 0x2) > 0 ); record.setFirstInSecondChain( (extraByte & 0x2) > 0 );
if (hasSecondaryUnit)
{
record.setSecondaryUnitId( channel.getLong() );
}
} }
else else
{ {
Expand Down Expand Up @@ -517,21 +519,20 @@ private PropertyRecord readPropertyRecord( long id, ReadableChannel channel ) th
// in_use(byte)+type(int)+key_indexId(int)+prop_blockId(long)+ // in_use(byte)+type(int)+key_indexId(int)+prop_blockId(long)+
// prev_prop_id(long)+next_prop_id(long) // prev_prop_id(long)+next_prop_id(long)
PropertyRecord record = new PropertyRecord( id ); PropertyRecord record = new PropertyRecord( id );
byte inUseFlag = channel.get(); // 1 byte flags = channel.get(); // 1

boolean inUse = bitFlag( flags, Record.IN_USE.byteValue() );
boolean nodeProperty = !bitFlag( flags, Record.REL_PROPERTY.byteValue() );
boolean requireSecondaryUnit = bitFlag( flags, Record.REQUIRE_SECONDARY_UNIT );
boolean hasSecondaryUnit = bitFlag( flags, Record.HAS_SECONDARY_UNIT );

record.setRequiresSecondaryUnit( requireSecondaryUnit );

long nextProp = channel.getLong(); // 8 long nextProp = channel.getLong(); // 8
long prevProp = channel.getLong(); // 8 long prevProp = channel.getLong(); // 8
record.setNextProp( nextProp ); record.setNextProp( nextProp );
record.setPrevProp( prevProp ); record.setPrevProp( prevProp );
boolean inUse = false;
if ( (inUseFlag & Record.IN_USE.byteValue()) == Record.IN_USE.byteValue() )
{
inUse = true;
}
boolean nodeProperty = true;
if ( (inUseFlag & Record.REL_PROPERTY.byteValue()) == Record.REL_PROPERTY.byteValue() )
{
nodeProperty = false;
}
long primitiveId = channel.getLong(); // 8 long primitiveId = channel.getLong(); // 8
if ( primitiveId != -1 && nodeProperty ) if ( primitiveId != -1 && nodeProperty )
{ {
Expand All @@ -541,6 +542,10 @@ else if ( primitiveId != -1 )
{ {
record.setRelId( primitiveId ); record.setRelId( primitiveId );
} }
if (hasSecondaryUnit)
{
record.setSecondaryUnitId( channel.getLong() );
}
int nrPropBlocks = channel.get(); int nrPropBlocks = channel.get();
assert nrPropBlocks >= 0; assert nrPropBlocks >= 0;
if ( nrPropBlocks > 0 ) if ( nrPropBlocks > 0 )
Expand Down
Expand Up @@ -42,16 +42,7 @@ public class LogEntryWriter
public LogEntryWriter( FlushableChannel channel ) public LogEntryWriter( FlushableChannel channel )
{ {
this.channel = channel; this.channel = channel;
this.serializer = new Visitor<StorageCommand,IOException>() this.serializer = new StorageCommandSerializer( channel );
{
@Override
public boolean visit( StorageCommand command ) throws IOException
{
writeLogEntryHeader( COMMAND );
command.serialize( channel );
return false;
}
};
} }


private void writeLogEntryHeader( byte type ) throws IOException private void writeLogEntryHeader( byte type ) throws IOException
Expand Down Expand Up @@ -92,4 +83,22 @@ public void writeCheckPointEntry( LogPosition logPosition ) throws IOException
channel.putLong( logPosition.getLogVersion() ). channel.putLong( logPosition.getLogVersion() ).
putLong( logPosition.getByteOffset() ); putLong( logPosition.getByteOffset() );
} }

private class StorageCommandSerializer implements Visitor<StorageCommand,IOException>
{
private final FlushableChannel channel;

public StorageCommandSerializer( FlushableChannel channel )
{
this.channel = channel;
}

@Override
public boolean visit( StorageCommand command ) throws IOException
{
writeLogEntryHeader( COMMAND );
command.serialize( channel );
return false;
}
}
} }
Expand Up @@ -64,19 +64,16 @@
public class OnlineIndexUpdates implements IndexUpdates public class OnlineIndexUpdates implements IndexUpdates
{ {
private final NodeStore nodeStore; private final NodeStore nodeStore;
private final PropertyStore propertyStore;
private final PropertyLoader propertyLoader; private final PropertyLoader propertyLoader;
private final PropertyPhysicalToLogicalConverter converter; private final PropertyPhysicalToLogicalConverter converter;
private final Collection<NodePropertyUpdate> updates = new ArrayList<>(); private final Collection<NodePropertyUpdate> updates = new ArrayList<>();
private NodeRecord nodeRecord; private NodeRecord nodeRecord;


public OnlineIndexUpdates( NodeStore nodeStore, public OnlineIndexUpdates( NodeStore nodeStore,
PropertyStore propertyStore,
PropertyLoader propertyLoader, PropertyLoader propertyLoader,
PropertyPhysicalToLogicalConverter converter ) PropertyPhysicalToLogicalConverter converter )
{ {
this.nodeStore = nodeStore; this.nodeStore = nodeStore;
this.propertyStore = propertyStore;
this.propertyLoader = propertyLoader; this.propertyLoader = propertyLoader;
this.converter = converter; this.converter = converter;
} }
Expand Down
Expand Up @@ -61,8 +61,8 @@ public void shouldProvideLabelScanStoreUpdatesSortedByNodeId() throws Exception
TransactionToApply tx = mock( TransactionToApply.class ); TransactionToApply tx = mock( TransactionToApply.class );
PropertyStore propertyStore = mock( PropertyStore.class ); PropertyStore propertyStore = mock( PropertyStore.class );
try ( IndexBatchTransactionApplier applier = new IndexBatchTransactionApplier( indexing, labelScanSync, try ( IndexBatchTransactionApplier applier = new IndexBatchTransactionApplier( indexing, labelScanSync,
indexUpdatesSync, mock( NodeStore.class ), propertyStore, indexUpdatesSync, mock( NodeStore.class ), mock( PropertyLoader.class ),
mock( PropertyLoader.class ), new PropertyPhysicalToLogicalConverter( propertyStore ), new PropertyPhysicalToLogicalConverter( propertyStore ),
TransactionApplicationMode.INTERNAL ) ) TransactionApplicationMode.INTERNAL ) )
{ {
try ( TransactionApplier txApplier = applier.startTx( tx ) ) try ( TransactionApplier txApplier = applier.startTx( tx ) )
Expand Down
Expand Up @@ -931,7 +931,7 @@ private BatchTransactionApplier newApplierFacade( BatchTransactionApplier... app
private BatchTransactionApplier newIndexApplier() private BatchTransactionApplier newIndexApplier()
{ {
return new IndexBatchTransactionApplier( indexingService, labelScanStoreSynchronizer, return new IndexBatchTransactionApplier( indexingService, labelScanStoreSynchronizer,
indexUpdatesSync, nodeStore, propertyStore, new PropertyLoader( neoStores ), indexUpdatesSync, nodeStore, new PropertyLoader( neoStores ),
new PropertyPhysicalToLogicalConverter( propertyStore ), INTERNAL ); new PropertyPhysicalToLogicalConverter( propertyStore ), INTERNAL );
} }
} }

0 comments on commit 57690cb

Please sign in to comment.