@Override public long getNumberOfNodeIdsInUse() { return idGeneratorFactory.get( IdType.NODE ).getNumberOfIdsInUse(); }
@Override public long getNumberOfRelationshipTypeIdsInUse() { return idGeneratorFactory.get( IdType.RELATIONSHIP_TYPE_TOKEN ).getNumberOfIdsInUse(); } }
@Override public long properties() { return idGeneratorFactory.get( PROPERTY ).getNumberOfIdsInUse(); }
@Override public long getNumberOfRelationshipIdsInUse() { return idGeneratorFactory.get( IdType.RELATIONSHIP ).getNumberOfIdsInUse(); }
@Override public long getNumberOfPropertyIdsInUse() { return idGeneratorFactory.get( IdType.PROPERTY ).getNumberOfIdsInUse(); }
@Override public IdGenerator get( IdType idType ) { IdGenerator generator = overriddenIdGenerators[idType.ordinal()]; return generator != null ? generator : delegate.get( idType ); }
@Override public long nodes() { return idGeneratorFactory.get( NODE ).getNumberOfIdsInUse(); }
@Override public long relationships() { return idGeneratorFactory.get( RELATIONSHIP ).getNumberOfIdsInUse(); }
@Override public long relationshipTypes() { return idGeneratorFactory.get( RELATIONSHIP_TYPE_TOKEN ).getNumberOfIdsInUse(); } }
private long getNumberOfIdsInUse( IdType type ) { return neoStoreDataSource.getDependencyResolver().resolveDependency( IdGeneratorFactory.class ).get( type ).getNumberOfIdsInUse(); }
public IdGenerator getIdGenerator( IdType idType ) { return graphDb.getDependencyResolver().resolveDependency( IdGeneratorFactory.class ).get( idType ); }
private void setHighId( IdType type, long highId ) { ((GraphDatabaseAPI)db).getDependencyResolver().resolveDependency( IdGeneratorFactory.class ).get( type ).setHighId( highId ); } }
@Test public void shouldOnlyChangeLockedRecordsWhenUpgradingToDenseNode() { // GIVEN long nodeId = createNodeWithRelationships( DENSE_NODE_THRESHOLD ); NeoStores neoStores = flipToNeoStores(); Tracker tracker = new Tracker( neoStores ); RelationshipGroupGetter groupGetter = new RelationshipGroupGetter( neoStores.getRelationshipGroupStore() ); RelationshipCreator relationshipCreator = new RelationshipCreator( groupGetter, 5 ); // WHEN relationshipCreator.relationshipCreate( idGeneratorFactory.get( IdType.RELATIONSHIP ).nextId(), 0, nodeId, nodeId, tracker, tracker ); // THEN assertEquals( tracker.relationshipLocksAcquired.size(), tracker.changedRelationships.size() ); assertFalse( tracker.relationshipLocksAcquired.isEmpty() ); }
@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 ); }
@Test public void testIt() { int sizePerJump = 1000; IdGeneratorFactory factory = new JumpingIdGeneratorFactory( sizePerJump ); IdGenerator generator = factory.get( IdType.NODE ); for ( int i = 0; i < sizePerJump / 2; i++ ) { assertEquals( i, generator.nextId() ); } for ( int i = 0; i < sizePerJump - 1; i++ ) { long expected = 0x100000000L - sizePerJump / 2 + i; if ( expected >= 0xFFFFFFFFL ) { expected++; } assertEquals( expected, generator.nextId() ); } for ( int i = 0; i < sizePerJump; i++ ) { assertEquals( 0x200000000L - sizePerJump / 2 + i, generator.nextId() ); } for ( int i = 0; i < sizePerJump; i++ ) { assertEquals( 0x300000000L - sizePerJump / 2 + i, generator.nextId() ); } }
@Override public long getNumberOfPropertyIdsInUse() { return idGeneratorFactory.get( IdType.PROPERTY ).getNumberOfIdsInUse(); }
@Override public long getNumberOfRelationshipIdsInUse() { return idGeneratorFactory.get( IdType.RELATIONSHIP ).getNumberOfIdsInUse(); }
@Override public long properties() { return idGeneratorFactory.get( PROPERTY ).getNumberOfIdsInUse(); }
private static Pair<Long, Long> getHighestNodeId(File source) { GraphDatabaseAPI api = (GraphDatabaseAPI) new GraphDatabaseFactory().newEmbeddedDatabase(source); IdGeneratorFactory idGenerators = api.getDependencyResolver().resolveDependency(IdGeneratorFactory.class); long highestNodeId = idGenerators.get(IdType.NODE).getHighestPossibleIdInUse(); long highestRelId = idGenerators.get(IdType.RELATIONSHIP).getHighestPossibleIdInUse(); api.shutdown(); return Pair.of(highestNodeId, highestRelId); }