use of org.neo4j.internal.recordstorage.Command.NodeCommand in project neo4j by neo4j.
the class LabelAndIndexUpdateBatchingIT method findCutoffIndex.
private static int findCutoffIndex(Collection<TransactionRepresentation> transactions) throws IOException {
Iterator<TransactionRepresentation> iterator = transactions.iterator();
for (int i = 0; iterator.hasNext(); i++) {
TransactionRepresentation tx = iterator.next();
CommandExtractor extractor = new CommandExtractor();
tx.accept(extractor);
List<StorageCommand> nodeCommands = extractor.commands.stream().filter(command -> command instanceof NodeCommand).collect(toList());
if (nodeCommands.size() == 1) {
return i;
}
}
throw new AssertionError("Couldn't find the transaction which would be the cut-off point");
}
use of org.neo4j.internal.recordstorage.Command.NodeCommand in project neo4j by neo4j.
the class HighIdTransactionApplierTest method shouldTrackSecondaryUnitIdsAsWell.
@Test
void shouldTrackSecondaryUnitIdsAsWell() throws Exception {
// GIVEN
HighIdTransactionApplier tracker = new HighIdTransactionApplier(neoStores);
NodeRecord node = new NodeRecord(5).initialize(true, 123, true, 456, 0);
node.setSecondaryUnitIdOnLoad(6);
RelationshipRecord relationship = new RelationshipRecord(10).initialize(true, 1, 2, 3, 4, 5, 6, 7, 8, true, true);
relationship.setSecondaryUnitIdOnLoad(12);
RelationshipGroupRecord relationshipGroup = new RelationshipGroupRecord(8).initialize(true, 0, 1, 2, 3, 4, 5);
relationshipGroup.setSecondaryUnitIdOnLoad(20);
// WHEN
tracker.visitNodeCommand(new NodeCommand(new NodeRecord(node.getId()), node));
tracker.visitRelationshipCommand(new RelationshipCommand(new RelationshipRecord(relationship.getId()), relationship));
tracker.visitRelationshipGroupCommand(new RelationshipGroupCommand(new RelationshipGroupRecord(relationshipGroup.getId()), relationshipGroup));
tracker.close();
// THEN
assertEquals(node.getSecondaryUnitId() + 1, neoStores.getNodeStore().getHighId());
assertEquals(relationship.getSecondaryUnitId() + 1, neoStores.getRelationshipStore().getHighId());
assertEquals(relationshipGroup.getSecondaryUnitId() + 1, neoStores.getRelationshipGroupStore().getHighId());
}
use of org.neo4j.internal.recordstorage.Command.NodeCommand in project neo4j by neo4j.
the class ApplyRecoveredTransactionsTest method shouldSetCorrectHighIdWhenApplyingExternalTransactions.
@Test
void shouldSetCorrectHighIdWhenApplyingExternalTransactions() throws Exception {
// WHEN recovering a transaction that creates some data
long nodeId = neoStores.getNodeStore().nextId(NULL);
long relationshipId = neoStores.getRelationshipStore().nextId(NULL);
int type = 1;
applyExternalTransaction(1, new NodeCommand(new NodeRecord(nodeId), inUse(created(new NodeRecord(nodeId)))), new RelationshipCommand(null, inUse(created(with(new RelationshipRecord(relationshipId), nodeId, nodeId, type)))));
// and when, later on, recovering a transaction deleting some of those
applyExternalTransaction(2, new NodeCommand(inUse(created(new NodeRecord(nodeId))), new NodeRecord(nodeId)), new RelationshipCommand(null, new RelationshipRecord(relationshipId)));
// THEN that should be possible and the high ids should be correct, i.e. highest applied + 1
assertEquals(nodeId + 1, neoStores.getNodeStore().getHighId());
assertEquals(relationshipId + 1, neoStores.getRelationshipStore().getHighId());
}
use of org.neo4j.internal.recordstorage.Command.NodeCommand in project neo4j by neo4j.
the class Commands method createNode.
public static NodeCommand createNode(long id, long... dynamicLabelRecordIds) {
NodeRecord record = new NodeRecord(id);
record.setInUse(true);
record.setCreated();
if (dynamicLabelRecordIds.length > 0) {
Collection<DynamicRecord> dynamicRecords = dynamicRecords(dynamicLabelRecordIds);
record.setLabelField(DynamicNodeLabels.dynamicPointer(dynamicRecords), dynamicRecords);
}
return new NodeCommand(new NodeRecord(id), record);
}
use of org.neo4j.internal.recordstorage.Command.NodeCommand in project neo4j by neo4j.
the class TransactionRecordStateTest method shouldPrepareRelevantRecords.
@Test
void shouldPrepareRelevantRecords() throws Exception {
PrepareTrackingRecordFormats format = new PrepareTrackingRecordFormats(Standard.LATEST_RECORD_FORMATS);
neoStores = createStores(Config.defaults(dense_node_threshold, 1), format);
// WHEN
TransactionRecordState state = newTransactionRecordState();
state.nodeCreate(0);
state.relModify(singleCreate(0, 0, 0, 0));
state.relModify(singleCreate(1, 0, 0, 0));
state.relModify(singleCreate(2, 0, 0, 0));
List<StorageCommand> commands = new ArrayList<>();
state.extractCommands(commands, INSTANCE);
// THEN
int nodes = 0;
int rels = 0;
int groups = 0;
for (StorageCommand command : commands) {
if (command instanceof NodeCommand) {
assertTrue(format.node().prepared(((NodeCommand) command).getAfter()));
nodes++;
} else if (command instanceof RelationshipCommand) {
assertTrue(format.relationship().prepared(((RelationshipCommand) command).getAfter()));
rels++;
} else if (command instanceof RelationshipGroupCommand) {
assertTrue(format.relationshipGroup().prepared(((RelationshipGroupCommand) command).getAfter()));
groups++;
}
}
assertEquals(1, nodes);
assertEquals(3, rels);
assertEquals(1, groups);
}
Aggregations