@Override public void close() { super.close(); monitor.nodesImported( nodeCount ); nodeStore.setHighestPossibleIdInUse( highestId ); // for the case of #id(long) } }
@Override public void createNode( long id, Map<String, Object> properties, Label... labels ) { IdValidator.assertValidId( IdType.NODE, id, maxNodeId ); if ( nodeStore.isInUse( id ) ) { throw new IllegalArgumentException( "id=" + id + " already in use" ); } long highId = nodeStore.getHighId(); if ( highId <= id ) { nodeStore.setHighestPossibleIdInUse( id ); } internalCreateNode( id, properties, labels ); }
@Test public void shouldApplyNodeCommandToTheStoreInRecoveryMode() throws Exception { // given final BatchTransactionApplier applier = newApplier( true ); final NodeRecord before = new NodeRecord( 11 ); before.setLabelField( 42, asList( one, two ) ); final NodeRecord after = new NodeRecord( 12 ); after.setInUse( true ); after.setLabelField( 42, asList( one, two, three ) ); final Command.NodeCommand command = new Command.NodeCommand( before, after ); // when boolean result = apply( applier, command::handle, transactionToApply ); // then assertFalse( result ); verify( lockService, times( 1 ) ).acquireNodeLock( command.getKey(), LockService.LockType.WRITE_LOCK ); verify( nodeStore, times( 1 ) ).setHighestPossibleIdInUse( after.getId() ); verify( nodeStore, times( 1 ) ).updateRecord( after ); verify( dynamicLabelStore, times( 1 ) ).setHighestPossibleIdInUse( three.getId() ); }
void updateCorrespondingIdGenerators( NeoStores neoStores ) { neoStores.getNodeStore().setHighestPossibleIdInUse( nodeId ); neoStores.getRelationshipStore().setHighestPossibleIdInUse( relId ); neoStores.getRelationshipGroupStore().setHighestPossibleIdInUse( relGroupId ); } }
@Test public void shouldFreeSecondaryUnitIdOfShrunkRecord() throws Exception { // GIVEN EphemeralFileSystemAbstraction fs = efs.get(); nodeStore = newNodeStore( fs ); NodeRecord record = new NodeRecord( 5L ); record.setRequiresSecondaryUnit( true ); record.setSecondaryUnitId( 10L ); record.setInUse( true ); nodeStore.updateRecord( record ); nodeStore.setHighestPossibleIdInUse( 10L ); // WHEN record.setRequiresSecondaryUnit( false ); nodeStore.updateRecord( record ); // THEN IdGenerator idGenerator = idGeneratorFactory.get( IdType.NODE ); verify( idGenerator, never() ).freeId( 5L ); verify( idGenerator ).freeId( 10L ); }
@Test public void shouldFreeSecondaryUnitIdOfDeletedRecord() throws Exception { // GIVEN EphemeralFileSystemAbstraction fs = efs.get(); nodeStore = newNodeStore( fs ); NodeRecord record = new NodeRecord( 5L ); record.setRequiresSecondaryUnit( true ); record.setSecondaryUnitId( 10L ); record.setInUse( true ); nodeStore.updateRecord( record ); nodeStore.setHighestPossibleIdInUse( 10L ); // WHEN record.setInUse( false ); nodeStore.updateRecord( record ); // THEN IdGenerator idGenerator = idGeneratorFactory.get( IdType.NODE ); verify( idGenerator ).freeId( 5L ); verify( idGenerator ).freeId( 10L ); }
store.updateRecord( record ); store.setHighestPossibleIdInUse( highestId );
store.updateRecord( record ); store.setHighestPossibleIdInUse( highestId );
@Override public void close() { super.close(); monitor.nodesImported( nodeCount ); nodeStore.setHighestPossibleIdInUse( highestId ); // for the case of #id(long) } }
@Override public void createNode( long id, Map<String, Object> properties, Label... labels ) { IdValidator.assertValidId( IdType.NODE, id, maxNodeId ); if ( nodeStore.isInUse( id ) ) { throw new IllegalArgumentException( "id=" + id + " already in use" ); } long highId = nodeStore.getHighId(); if ( highId <= id ) { nodeStore.setHighestPossibleIdInUse( id ); } internalCreateNode( id, properties, labels ); }