Skip to content

Commit

Permalink
Migrate some instances of TokenNameLookup
Browse files Browse the repository at this point in the history
  • Loading branch information
fickludd committed Feb 22, 2018
1 parent 480a9e7 commit a8041b5
Show file tree
Hide file tree
Showing 11 changed files with 46 additions and 30 deletions.
Expand Up @@ -521,7 +521,7 @@ final class TransactionBoundQueryContext(tc: TransactionalContextWrapper)

def relationshipEndNode(rel: Relationship) = rel.getEndNode

private val tokenNameLookup = new StatementTokenNameLookup(tc.statement.readOperations())
private val tokenNameLookup = new SilentTokenNameLookup(tc.kernelTransaction.tokenRead())

override def commitAndRestartTx() { tc.commitAndRestartTx() }

Expand Down
Expand Up @@ -531,7 +531,7 @@ final class TransactionBoundQueryContext(txContext: TransactionalContextWrapper)

override def relationshipEndNode(rel: Relationship) = rel.getEndNode

private lazy val tokenNameLookup = new StatementTokenNameLookup(txContext.statement.readOperations())
private lazy val tokenNameLookup = new SilentTokenNameLookup(txContext.kernelTransaction.tokenRead())

// Legacy dependency between kernel and compiler
override def variableLengthPathExpand(node: PatternNode,
Expand Down
Expand Up @@ -25,7 +25,7 @@ import org.neo4j.kernel.GraphDatabaseQueryService
import org.neo4j.kernel.api.KernelTransaction.Revertable
import org.neo4j.kernel.api.dbms.DbmsOperations
import org.neo4j.kernel.api.txstate.TxStateHolder
import org.neo4j.kernel.api.{ReadOperations, ResourceTracker, Statement}
import org.neo4j.kernel.api.{KernelTransaction, ReadOperations, ResourceTracker, Statement}
import org.neo4j.kernel.impl.query.TransactionalContext

case class TransactionalContextWrapper(tc: TransactionalContext) extends QueryTransactionalContext {
Expand All @@ -42,6 +42,8 @@ case class TransactionalContextWrapper(tc: TransactionalContext) extends QueryTr

def statement: Statement = tc.statement()

def kernelTransaction: KernelTransaction = tc.kernelTransaction()

def stateView: TxStateHolder = tc.stateView()

override def readOperations: ReadOperations = tc.readOperations()
Expand Down
Expand Up @@ -789,7 +789,7 @@ final class TransactionBoundQueryContext(val transactionalContext: Transactional

override def edgeGetEndNode(edge: RelationshipValue) = edge.endNode()

private lazy val tokenNameLookup = new StatementTokenNameLookup(transactionalContext.statement.readOperations())
private lazy val tokenNameLookup = new SilentTokenNameLookup(transactionalContext.kernelTransaction.tokenRead())

// Legacy dependency between kernel and compiler
override def variableLengthPathExpand(realNode: Long,
Expand Down
Expand Up @@ -30,6 +30,14 @@ public interface TokenRead
*/
int NO_TOKEN = -1;

/**
* Return the id of the provided label, or NO_TOKEN if the label isn't known to the graph.
*
* @param name The label name.
* @return the label id, or NO_TOKEN
*/
int nodeLabel( String name );

/**
* Returns the name of a label given its label id
*
Expand All @@ -39,14 +47,6 @@ public interface TokenRead
*/
String nodeLabelName( int labelId ) throws LabelNotFoundKernelException;

/**
* Return the id of the provided label, or NO_TOKEN if the label isn't known to the graph.
*
* @param name The label name.
* @return the label id, or NO_TOKEN
*/
int nodeLabel( String name );

/**
* Return the id of the provided relationship type, or NO_TOKEN if the type isn't known to the graph.
*
Expand Down
Expand Up @@ -46,8 +46,8 @@
import org.neo4j.kernel.api.ExplicitIndexHits;
import org.neo4j.kernel.api.KernelTransaction;
import org.neo4j.kernel.api.ReadOperations;
import org.neo4j.kernel.api.SilentTokenNameLookup;
import org.neo4j.kernel.api.Statement;
import org.neo4j.kernel.api.StatementTokenNameLookup;
import org.neo4j.kernel.api.exceptions.ProcedureException;
import org.neo4j.kernel.api.exceptions.Status;
import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException;
Expand Down Expand Up @@ -144,7 +144,7 @@ public Stream<IndexResult> listIndexes() throws ProcedureException
try ( Statement statement = tx.acquireStatement() )
{
ReadOperations operations = statement.readOperations();
TokenNameLookup tokens = new StatementTokenNameLookup( operations );
TokenNameLookup tokens = new SilentTokenNameLookup( tx.tokenRead() );

List<IndexDescriptor> indexes = asList( operations.indexesGetAll() );
indexes.sort( Comparator.comparing( a -> a.userDescription( tokens ) ) );
Expand Down Expand Up @@ -233,7 +233,7 @@ public Stream<ConstraintResult> listConstraints()
try ( Statement statement = tx.acquireStatement() )
{
ReadOperations operations = statement.readOperations();
TokenNameLookup tokens = new StatementTokenNameLookup( operations );
TokenNameLookup tokens = new SilentTokenNameLookup( tx.tokenRead() );

return asList( operations.constraintsGetAll() )
.stream()
Expand Down
Expand Up @@ -38,11 +38,12 @@
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.ResourceIterator;
import org.neo4j.graphdb.Transaction;
import org.neo4j.internal.kernel.api.TokenNameLookup;
import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor;
import org.neo4j.kernel.api.KernelTransaction;
import org.neo4j.kernel.api.ReadOperations;
import org.neo4j.kernel.api.SilentTokenNameLookup;
import org.neo4j.kernel.api.Statement;
import org.neo4j.kernel.api.StatementTokenNameLookup;
import org.neo4j.kernel.api.schema.index.IndexDescriptor;
import org.neo4j.kernel.impl.coreapi.schema.PropertyNameUtils;
import org.neo4j.kernel.internal.GraphDatabaseAPI;
Expand All @@ -69,7 +70,7 @@ public GraphResult buildSchemaGraph()
try ( Statement statement = kernelTransaction.acquireStatement() )
{
ReadOperations readOperations = statement.readOperations();
StatementTokenNameLookup statementTokenNameLookup = new StatementTokenNameLookup( readOperations );
TokenNameLookup tokenNameLookup = new SilentTokenNameLookup( kernelTransaction.tokenRead() );

try ( Transaction transaction = graphDatabaseAPI.beginTx() )
{
Expand All @@ -90,7 +91,7 @@ public GraphResult buildSchemaGraph()
if ( index.type() == GENERAL )
{
String[] propertyNames = PropertyNameUtils.getPropertyKeys(
statementTokenNameLookup, index.schema().getPropertyIds() );
tokenNameLookup, index.schema().getPropertyIds() );
indexes.add( String.join( ",", propertyNames ) );
}
}
Expand All @@ -102,7 +103,7 @@ public GraphResult buildSchemaGraph()
while ( nodePropertyConstraintIterator.hasNext() )
{
ConstraintDescriptor constraint = nodePropertyConstraintIterator.next();
constraints.add( constraint.prettyPrint( statementTokenNameLookup ) );
constraints.add( constraint.prettyPrint( tokenNameLookup ) );
}
properties.put( "constraints", constraints );

Expand Down
Expand Up @@ -38,6 +38,7 @@
import org.neo4j.helpers.collection.Iterators;
import org.neo4j.helpers.collection.MapUtil;
import org.neo4j.internal.kernel.api.InternalIndexState;
import org.neo4j.internal.kernel.api.TokenRead;
import org.neo4j.internal.kernel.api.security.SecurityContext;
import org.neo4j.kernel.api.KernelTransaction;
import org.neo4j.kernel.api.ReadOperations;
Expand Down Expand Up @@ -88,6 +89,7 @@ public class BuiltInProceduresTest
private final Map<Integer,String> relTypes = new HashMap<>();

private final ReadOperations read = mock( ReadOperations.class );
private final TokenRead tokens = mock( TokenRead.class );
private final Statement statement = mock( Statement.class );
private final KernelTransaction tx = mock( KernelTransaction.class );
private final DependencyResolver resolver = mock( DependencyResolver.class );
Expand Down Expand Up @@ -482,6 +484,7 @@ public void setup() throws Exception
procs.registerProcedure( BuiltInDbmsProcedures.class );

when( tx.acquireStatement() ).thenReturn( statement );
when( tx.tokenRead() ).thenReturn( tokens );
when( statement.readOperations() ).thenReturn( read );

when( read.propertyKeyGetAllTokens() ).thenAnswer( asTokens( propKeys ) );
Expand All @@ -492,10 +495,10 @@ public void setup() throws Exception
when( read.constraintsGetAll() ).thenAnswer( i -> constraints.iterator() );
when( read.proceduresGetAll() ).thenReturn( procs.getAllProcedures() );

when( read.propertyKeyGetName( anyInt() ) )
when( tokens.propertyKeyName( anyInt() ) )
.thenAnswer( invocation -> propKeys.get( invocation.getArgument( 0 ) ) );
when( read.labelGetName( anyInt() ) ).thenAnswer( invocation -> labels.get( invocation.getArgument( 0 ) ) );
when( read.relationshipTypeGetName( anyInt() ) )
when( tokens.nodeLabelName( anyInt() ) ).thenAnswer( invocation -> labels.get( invocation.getArgument( 0 ) ) );
when( tokens.relationshipTypeName( anyInt() ) )
.thenAnswer( invocation -> relTypes.get( invocation.getArgument( 0 ) ) );

// Make it appear that labels are in use
Expand Down
Expand Up @@ -107,6 +107,11 @@ protected ReadOperations readOperationsInNewTransaction() throws TransactionFail
return statement.readOperations();
}

protected KernelTransaction newTransaction() throws TransactionFailureException
{
return kernel.newTransaction( KernelTransaction.Type.implicit, AnonymousContext.read() );
}

protected DbmsOperations dbmsOperations()
{
return dbmsOperations;
Expand Down
Expand Up @@ -43,10 +43,12 @@
import org.neo4j.helpers.collection.Iterators;
import org.neo4j.helpers.collection.Visitor;
import org.neo4j.internal.kernel.api.InternalIndexState;
import org.neo4j.internal.kernel.api.TokenNameLookup;
import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor;
import org.neo4j.kernel.api.KernelTransaction;
import org.neo4j.kernel.api.ReadOperations;
import org.neo4j.kernel.api.SilentTokenNameLookup;
import org.neo4j.kernel.api.Statement;
import org.neo4j.kernel.api.StatementTokenNameLookup;
import org.neo4j.kernel.api.exceptions.index.IndexActivationFailedKernelException;
import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException;
import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException;
Expand Down Expand Up @@ -267,13 +269,13 @@ private void launchCustomIndexPopulation( Map<String,Integer> labelNameIdMap, in
ThreadToStatementContextBridge transactionStatementContextBridge = getTransactionStatementContextBridge();

try ( Transaction transaction = embeddedDatabase.beginTx();
Statement statement = transactionStatementContextBridge.get() )
KernelTransaction ktx = transactionStatementContextBridge.getKernelTransactionBoundToThisThread( true ) )
{
DynamicIndexStoreView storeView = dynamicIndexStoreViewWrapper( updates, neoStores, labelScanStore );

SchemaIndexProviderMap providerMap = getSchemaIndexProvider();
JobScheduler scheduler = getJobScheduler();
StatementTokenNameLookup tokenNameLookup = new StatementTokenNameLookup( statement.readOperations() );
TokenNameLookup tokenNameLookup = new SilentTokenNameLookup( ktx.tokenRead() );

indexService = IndexingServiceFactory.createIndexingService( Config.defaults(), scheduler,
providerMap, storeView, tokenNameLookup, getIndexRules( neoStores ),
Expand Down
Expand Up @@ -27,15 +27,17 @@
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.ResourceIterator;
import org.neo4j.internal.kernel.api.TokenNameLookup;
import org.neo4j.internal.kernel.api.exceptions.KernelException;
import org.neo4j.internal.kernel.api.exceptions.schema.ConstraintValidationException;
import org.neo4j.internal.kernel.api.schema.LabelSchemaDescriptor;
import org.neo4j.internal.kernel.api.schema.constraints.ConstraintDescriptor;
import org.neo4j.internal.kernel.api.security.LoginContext;
import org.neo4j.kernel.api.KernelTransaction;
import org.neo4j.kernel.api.ReadOperations;
import org.neo4j.kernel.api.SchemaWriteOperations;
import org.neo4j.kernel.api.SilentTokenNameLookup;
import org.neo4j.kernel.api.Statement;
import org.neo4j.kernel.api.StatementTokenNameLookup;
import org.neo4j.kernel.api.TokenWriteOperations;
import org.neo4j.kernel.api.exceptions.TransactionFailureException;
import org.neo4j.kernel.api.exceptions.schema.CreateConstraintFailureException;
Expand Down Expand Up @@ -285,9 +287,10 @@ public void shouldDropConstraintIndexWhenDroppingConstraint() throws Exception
private String userMessage( ConstraintValidationException cause )
throws TransactionFailureException
{
StatementTokenNameLookup lookup = new StatementTokenNameLookup( readOperationsInNewTransaction() );
String actualMessage = cause.getUserMessage( lookup );
commit();
return actualMessage;
try ( KernelTransaction tx = newTransaction() )
{
TokenNameLookup lookup = new SilentTokenNameLookup( tx.tokenRead() );
return cause.getUserMessage( lookup );
}
}
}

0 comments on commit a8041b5

Please sign in to comment.