private static Map<IdType,Long> getHighIds( GraphDatabaseAPI db ) { final Map<IdType,Long> highIds = new HashMap<>(); NeoStores neoStores = db.getDependencyResolver().resolveDependency( RecordStorageEngine.class ).testAccessNeoStores(); Visitor<CommonAbstractStore,RuntimeException> visitor = store -> { highIds.put( store.getIdType(), store.getHighId() ); return true; }; neoStores.visitStore( visitor ); return highIds; }
@Override public <EXCEPTION extends Exception> void scanAllRecords( Visitor<RECORD,EXCEPTION> visitor ) throws EXCEPTION { try ( PageCursor cursor = openPageCursorForReading( 0 ) ) { RECORD record = newRecord(); long highId = getHighId(); for ( long id = getNumberOfReservedLowIds(); id < highId; id++ ) { getRecordByCursor( id, record, CHECK, cursor ); if ( record.inUse() ) { visitor.visit( record ); } } } }
public static long getHighestIdInUseForStore(DependencyResolver dependencyResolver, GlobalOperationsTypes type) { NeoStores neoStores = dependencyResolver.resolveDependency(RecordStorageEngine.class).testAccessNeoStores(); CommonAbstractStore store; switch (type) { case NODES: store = neoStores.getNodeStore(); break; case RELATIONSHIPS: store = neoStores.getRelationshipStore(); break; default: throw new IllegalArgumentException("invalid type " + type); } return store.getHighId(); }
@Override public <EXCEPTION extends Exception> void scanAllRecords( Visitor<RECORD,EXCEPTION> visitor ) throws EXCEPTION { try ( PageCursor cursor = openPageCursorForReading( 0 ) ) { RECORD record = newRecord(); long highId = getHighId(); for ( long id = getNumberOfReservedLowIds(); id < highId; id++ ) { getRecordByCursor( id, record, CHECK, cursor ); if ( record.inUse() ) { visitor.visit( record ); } } } }