Search in sources :

Example 1 with TokenStore

use of org.neo4j.kernel.impl.store.TokenStore in project neo4j by neo4j.

the class RecordLoading method safeLoadTokens.

static <RECORD extends TokenRecord> List<NamedToken> safeLoadTokens(TokenStore<RECORD> tokenStore, CursorContext cursorContext) {
    long highId = tokenStore.getHighId();
    List<NamedToken> tokens = new ArrayList<>();
    DynamicStringStore nameStore = tokenStore.getNameStore();
    List<DynamicRecord> nameRecords = new ArrayList<>();
    MutableLongSet seenRecordIds = new LongHashSet();
    int nameBlockSize = nameStore.getRecordDataSize();
    try (RecordReader<RECORD> tokenReader = new RecordReader<>(tokenStore, true, cursorContext);
        RecordReader<DynamicRecord> nameReader = new RecordReader<>(nameStore, false, cursorContext)) {
        for (long id = 0; id < highId; id++) {
            RECORD record = tokenReader.read(id);
            nameRecords.clear();
            if (record.inUse()) {
                String name;
                if (!NULL_REFERENCE.is(record.getNameId()) && safeLoadDynamicRecordChain(r -> nameRecords.add(r.copy()), nameReader, seenRecordIds, record.getNameId(), nameBlockSize)) {
                    record.addNameRecords(nameRecords);
                    name = tokenStore.getStringFor(record, cursorContext);
                } else {
                    name = format("<name not loaded due to token(%d) referencing unused name record>", id);
                }
                tokens.add(new NamedToken(name, toIntExact(id), record.isInternal()));
            }
        }
    }
    return tokens;
}
Also used : DynamicRecord(org.neo4j.kernel.impl.store.record.DynamicRecord) ThrowingIntFunction(org.neo4j.function.ThrowingIntFunction) CursorContext(org.neo4j.io.pagecache.context.CursorContext) Value(org.neo4j.values.storable.Value) ArrayList(java.util.ArrayList) IntObjectMap(org.eclipse.collections.api.map.primitive.IntObjectMap) InlineNodeLabels(org.neo4j.kernel.impl.store.InlineNodeLabels) NodeLabelsField(org.neo4j.kernel.impl.store.NodeLabelsField) TokenHolder(org.neo4j.token.api.TokenHolder) MutableLongCollection(org.eclipse.collections.api.collection.primitive.MutableLongCollection) NeoStores(org.neo4j.kernel.impl.store.NeoStores) LongHashSet(org.eclipse.collections.impl.set.mutable.primitive.LongHashSet) BiConsumer(java.util.function.BiConsumer) AbstractBaseRecord(org.neo4j.kernel.impl.store.record.AbstractBaseRecord) ConsistencyReport(org.neo4j.consistency.report.ConsistencyReport) TokenRecord(org.neo4j.kernel.impl.store.record.TokenRecord) Math.toIntExact(java.lang.Math.toIntExact) NO_VALUE(org.neo4j.values.storable.Values.NO_VALUE) MutableIntCollection(org.eclipse.collections.api.collection.primitive.MutableIntCollection) MutablePrimitiveObjectMap(org.eclipse.collections.api.map.primitive.MutablePrimitiveObjectMap) NULL_REFERENCE(org.neo4j.kernel.impl.store.record.Record.NULL_REFERENCE) PropertyRecord(org.neo4j.kernel.impl.store.record.PropertyRecord) RecordType(org.neo4j.consistency.RecordType) TokenStore(org.neo4j.kernel.impl.store.TokenStore) String.format(java.lang.String.format) DynamicRecord(org.neo4j.kernel.impl.store.record.DynamicRecord) MutableLongSet(org.eclipse.collections.api.set.primitive.MutableLongSet) Consumer(java.util.function.Consumer) DynamicNodeLabels(org.neo4j.kernel.impl.store.DynamicNodeLabels) RecordStore(org.neo4j.kernel.impl.store.RecordStore) List(java.util.List) PrimitiveRecord(org.neo4j.kernel.impl.store.record.PrimitiveRecord) RelationshipGroupRecord(org.neo4j.kernel.impl.store.record.RelationshipGroupRecord) TokenNotFoundException(org.neo4j.token.api.TokenNotFoundException) SchemaDescriptor(org.neo4j.internal.schema.SchemaDescriptor) NamedToken(org.neo4j.token.api.NamedToken) DynamicStringStore(org.neo4j.kernel.impl.store.DynamicStringStore) NodeRecord(org.neo4j.kernel.impl.store.record.NodeRecord) PropertySchemaType(org.neo4j.internal.schema.PropertySchemaType) RecordLoad(org.neo4j.kernel.impl.store.record.RecordLoad) RelationshipRecord(org.neo4j.kernel.impl.store.record.RelationshipRecord) DynamicStringStore(org.neo4j.kernel.impl.store.DynamicStringStore) ArrayList(java.util.ArrayList) LongHashSet(org.eclipse.collections.impl.set.mutable.primitive.LongHashSet) MutableLongSet(org.eclipse.collections.api.set.primitive.MutableLongSet) NamedToken(org.neo4j.token.api.NamedToken)

Aggregations

Math.toIntExact (java.lang.Math.toIntExact)1 String.format (java.lang.String.format)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 BiConsumer (java.util.function.BiConsumer)1 Consumer (java.util.function.Consumer)1 MutableIntCollection (org.eclipse.collections.api.collection.primitive.MutableIntCollection)1 MutableLongCollection (org.eclipse.collections.api.collection.primitive.MutableLongCollection)1 IntObjectMap (org.eclipse.collections.api.map.primitive.IntObjectMap)1 MutablePrimitiveObjectMap (org.eclipse.collections.api.map.primitive.MutablePrimitiveObjectMap)1 MutableLongSet (org.eclipse.collections.api.set.primitive.MutableLongSet)1 LongHashSet (org.eclipse.collections.impl.set.mutable.primitive.LongHashSet)1 RecordType (org.neo4j.consistency.RecordType)1 ConsistencyReport (org.neo4j.consistency.report.ConsistencyReport)1 ThrowingIntFunction (org.neo4j.function.ThrowingIntFunction)1 PropertySchemaType (org.neo4j.internal.schema.PropertySchemaType)1 SchemaDescriptor (org.neo4j.internal.schema.SchemaDescriptor)1 CursorContext (org.neo4j.io.pagecache.context.CursorContext)1 DynamicNodeLabels (org.neo4j.kernel.impl.store.DynamicNodeLabels)1 DynamicStringStore (org.neo4j.kernel.impl.store.DynamicStringStore)1