diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractSwallowingIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractSwallowingIndexProxy.java
index 94cbe0626680..20a2c5478198 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractSwallowingIndexProxy.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/AbstractSwallowingIndexProxy.java
@@ -34,19 +34,12 @@
public abstract class AbstractSwallowingIndexProxy implements IndexProxy
{
- private final IndexDescriptor descriptor;
- private final IndexCapability indexCapability;
- private final SchemaIndexProvider.Descriptor providerDescriptor;
+ private final IndexMeta indexMeta;
private final IndexPopulationFailure populationFailure;
- AbstractSwallowingIndexProxy( IndexDescriptor descriptor,
- SchemaIndexProvider.Descriptor providerDescriptor,
- IndexCapability indexCapability,
- IndexPopulationFailure populationFailure )
+ AbstractSwallowingIndexProxy( IndexMeta indexMeta, IndexPopulationFailure populationFailure )
{
- this.descriptor = descriptor;
- this.providerDescriptor = providerDescriptor;
- this.indexCapability = indexCapability;
+ this.indexMeta = indexMeta;
this.populationFailure = populationFailure;
}
@@ -83,25 +76,25 @@ public void force()
@Override
public IndexCapability getIndexCapability()
{
- return indexCapability;
+ return indexMeta.indexCapability();
}
@Override
public IndexDescriptor getDescriptor()
{
- return descriptor;
+ return indexMeta.indexDescriptor();
}
@Override
public LabelSchemaDescriptor schema()
{
- return descriptor.schema();
+ return indexMeta.indexDescriptor().schema();
}
@Override
public SchemaIndexProvider.Descriptor getProviderDescriptor()
{
- return providerDescriptor;
+ return indexMeta.providerDescriptor();
}
@Override
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FailedIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FailedIndexProxy.java
index 01221bec7c66..cca0ccf41aad 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FailedIndexProxy.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FailedIndexProxy.java
@@ -24,12 +24,9 @@
import java.util.concurrent.Future;
import org.neo4j.graphdb.ResourceIterator;
-import org.neo4j.internal.kernel.api.IndexCapability;
import org.neo4j.kernel.api.exceptions.index.IndexPopulationFailedKernelException;
import org.neo4j.kernel.api.index.IndexPopulator;
import org.neo4j.kernel.api.index.InternalIndexState;
-import org.neo4j.kernel.api.index.SchemaIndexProvider;
-import org.neo4j.kernel.api.schema.index.IndexDescriptor;
import org.neo4j.logging.Log;
import org.neo4j.logging.LogProvider;
@@ -43,16 +40,14 @@ public class FailedIndexProxy extends AbstractSwallowingIndexProxy
private final IndexCountsRemover indexCountsRemover;
private final Log log;
- FailedIndexProxy( IndexDescriptor descriptor,
- SchemaIndexProvider.Descriptor providerDescriptor,
- IndexCapability indexCapability,
+ FailedIndexProxy( IndexMeta indexMeta,
String indexUserDescription,
IndexPopulator populator,
IndexPopulationFailure populationFailure,
IndexCountsRemover indexCountsRemover,
LogProvider logProvider )
{
- super( descriptor, providerDescriptor, indexCapability, populationFailure );
+ super( indexMeta, populationFailure );
this.populator = populator;
this.indexUserDescription = indexUserDescription;
this.indexCountsRemover = indexCountsRemover;
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FailedPopulatingIndexProxyFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FailedPopulatingIndexProxyFactory.java
index 669d89dcedf9..3be156a20756 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FailedPopulatingIndexProxyFactory.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FailedPopulatingIndexProxyFactory.java
@@ -19,35 +19,26 @@
*/
package org.neo4j.kernel.impl.api.index;
-import org.neo4j.internal.kernel.api.IndexCapability;
import org.neo4j.kernel.api.index.IndexPopulator;
-import org.neo4j.kernel.api.index.SchemaIndexProvider;
-import org.neo4j.kernel.api.schema.index.IndexDescriptor;
import org.neo4j.logging.LogProvider;
import static org.neo4j.kernel.impl.api.index.IndexPopulationFailure.failure;
public class FailedPopulatingIndexProxyFactory implements FailedIndexProxyFactory
{
- private final IndexDescriptor descriptor;
- private final SchemaIndexProvider.Descriptor providerDescriptor;
- private final IndexCapability indexCapability;
+ private final IndexMeta indexMeta;
private final IndexPopulator populator;
private final String indexUserDescription;
private final IndexCountsRemover indexCountsRemover;
private final LogProvider logProvider;
- FailedPopulatingIndexProxyFactory( IndexDescriptor descriptor,
- SchemaIndexProvider.Descriptor providerDescriptor,
- IndexCapability indexCapability,
- IndexPopulator populator,
- String indexUserDescription,
- IndexCountsRemover indexCountsRemover,
- LogProvider logProvider )
+ FailedPopulatingIndexProxyFactory( IndexMeta indexMeta,
+ IndexPopulator populator,
+ String indexUserDescription,
+ IndexCountsRemover indexCountsRemover,
+ LogProvider logProvider )
{
- this.descriptor = descriptor;
- this.providerDescriptor = providerDescriptor;
- this.indexCapability = indexCapability;
+ this.indexMeta = indexMeta;
this.populator = populator;
this.indexUserDescription = indexUserDescription;
this.indexCountsRemover = indexCountsRemover;
@@ -57,7 +48,7 @@ public class FailedPopulatingIndexProxyFactory implements FailedIndexProxyFactor
@Override
public IndexProxy create( Throwable failure )
{
- return new FailedIndexProxy( descriptor, providerDescriptor, indexCapability, indexUserDescription, populator, failure( failure ),
+ return new FailedIndexProxy( indexMeta, indexUserDescription, populator, failure( failure ),
indexCountsRemover, logProvider );
}
}
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FlippableIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FlippableIndexProxy.java
index 5e2f2c84bd52..d94ba1a814bc 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FlippableIndexProxy.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/FlippableIndexProxy.java
@@ -382,7 +382,7 @@ public PopulationProgress getIndexPopulationProgress()
}
}
- public void setFlipTarget( IndexProxyFactory flipTarget )
+ void setFlipTarget( IndexProxyFactory flipTarget )
{
lock.writeLock().lock();
try
@@ -395,7 +395,7 @@ public void setFlipTarget( IndexProxyFactory flipTarget )
}
}
- public void flipTo( IndexProxy targetDelegate )
+ void flipTo( IndexProxy targetDelegate )
{
lock.writeLock().lock();
try
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMeta.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMeta.java
new file mode 100644
index 000000000000..69113185a81c
--- /dev/null
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexMeta.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2002-2017 "Neo Technology,"
+ * Network Engine for Objects in Lund AB [http://neotechnology.com]
+ *
+ * This file is part of Neo4j.
+ *
+ * Neo4j is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package org.neo4j.kernel.impl.api.index;
+
+import org.neo4j.internal.kernel.api.IndexCapability;
+import org.neo4j.kernel.api.index.SchemaIndexProvider;
+import org.neo4j.kernel.api.schema.index.IndexDescriptor;
+
+public class IndexMeta
+{
+ private final IndexDescriptor indexDescriptor;
+ private final SchemaIndexProvider.Descriptor providerDescriptor;
+ private final IndexCapability indexCapability;
+
+ public IndexMeta( IndexDescriptor indexDescriptor, SchemaIndexProvider.Descriptor providerDescriptor, IndexCapability indexCapability )
+ {
+ this.indexDescriptor = indexDescriptor;
+ this.providerDescriptor = providerDescriptor;
+ this.indexCapability = indexCapability;
+ }
+
+ public IndexDescriptor indexDescriptor()
+ {
+ return indexDescriptor;
+ }
+
+ public SchemaIndexProvider.Descriptor providerDescriptor()
+ {
+ return providerDescriptor;
+ }
+
+ public IndexCapability indexCapability()
+ {
+ return indexCapability;
+ }
+}
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexPopulationJob.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexPopulationJob.java
index f1a31f8178f0..b1c26ebe5735 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexPopulationJob.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexPopulationJob.java
@@ -23,12 +23,9 @@
import java.util.concurrent.Future;
import org.neo4j.function.Suppliers;
-import org.neo4j.internal.kernel.api.IndexCapability;
import org.neo4j.kernel.api.exceptions.index.IndexPopulationFailedKernelException;
import org.neo4j.kernel.api.index.IndexEntryUpdate;
import org.neo4j.kernel.api.index.IndexPopulator;
-import org.neo4j.kernel.api.index.SchemaIndexProvider;
-import org.neo4j.kernel.api.schema.index.IndexDescriptor;
import org.neo4j.kernel.impl.api.SchemaState;
import org.neo4j.storageengine.api.schema.PopulationProgress;
@@ -38,8 +35,7 @@
/**
* A background job for initially populating one or more index over existing data in the database.
* Use provided store view to scan store. Participating {@link IndexPopulator} are added with
- * {@link #addPopulator(IndexPopulator, long, IndexDescriptor, SchemaIndexProvider.Descriptor, IndexCapability, String,
- * FlippableIndexProxy, FailedIndexProxyFactory)}
+ * {@link #addPopulator(IndexPopulator, long, IndexMeta, String, FlippableIndexProxy, FailedIndexProxyFactory)}
* before {@link #run() running} this job.
*/
public class IndexPopulationJob implements Runnable
@@ -64,25 +60,21 @@ public IndexPopulationJob( MultipleIndexPopulator multiPopulator, IndexingServic
* be added before calling {@link #run()}.
*
* @param populator {@link IndexPopulator} to participate.
- * @param descriptor {@link IndexDescriptor} describing the index.
- * @param providerDescriptor provider of this index.
- * @param indexCapability capability of this index.
+ * @param indexId id of index.
+ * @param indexMeta {@link IndexMeta} meta information about index.
* @param indexUserDescription user description of this index.
* @param flipper {@link FlippableIndexProxy} to call after a successful population.
* @param failedIndexProxyFactory {@link FailedIndexProxyFactory} to use after an unsuccessful population.
*/
void addPopulator( IndexPopulator populator,
long indexId,
- IndexDescriptor descriptor,
- SchemaIndexProvider.Descriptor providerDescriptor,
- IndexCapability indexCapability,
+ IndexMeta indexMeta,
String indexUserDescription,
FlippableIndexProxy flipper,
FailedIndexProxyFactory failedIndexProxyFactory )
{
assert storeScan == null : "Population have already started, too late to add populators at this point";
- this.multiPopulator.addPopulator( populator, indexId, descriptor, providerDescriptor, indexCapability,
- flipper, failedIndexProxyFactory, indexUserDescription );
+ this.multiPopulator.addPopulator( populator, indexId, indexMeta, flipper, failedIndexProxyFactory, indexUserDescription );
}
/**
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxyCreator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxyCreator.java
index 18ec8888a749..3f754164ada4 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxyCreator.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/IndexProxyCreator.java
@@ -68,22 +68,18 @@ IndexProxy createPopulatingIndexProxy( final long ruleId,
// TODO: This is here because there is a circular dependency from PopulatingIndexProxy to FlippableIndexProxy
final String indexUserDescription = indexUserDescription( descriptor, providerDescriptor );
IndexPopulator populator = populatorFromProvider( providerDescriptor, ruleId, descriptor, samplingConfig );
- IndexCapability indexCapability = indexCapabilityFromProvider( providerDescriptor, descriptor );
+ IndexMeta indexMeta = indexMetaFromProvider( providerDescriptor, descriptor );
FailedIndexProxyFactory failureDelegateFactory = new FailedPopulatingIndexProxyFactory(
- descriptor,
- providerDescriptor,
- indexCapability,
+ indexMeta,
populator,
indexUserDescription,
new IndexCountsRemover( storeView, ruleId ),
logProvider );
- PopulatingIndexProxy populatingIndex =
- new PopulatingIndexProxy( descriptor, providerDescriptor, indexCapability, populationJob );
+ PopulatingIndexProxy populatingIndex = new PopulatingIndexProxy( indexMeta, populationJob );
- populationJob.addPopulator( populator, ruleId, descriptor, providerDescriptor, indexCapability,
- indexUserDescription, flipper, failureDelegateFactory );
+ populationJob.addPopulator( populator, ruleId, indexMeta, indexUserDescription, flipper, failureDelegateFactory );
flipper.flipTo( populatingIndex );
@@ -94,9 +90,7 @@ IndexProxy createPopulatingIndexProxy( final long ruleId,
OnlineIndexProxy onlineProxy =
new OnlineIndexProxy(
ruleId,
- descriptor,
- providerDescriptor,
- indexCapabilityFromProvider( providerDescriptor, descriptor ),
+ indexMeta,
onlineAccessorFromProvider( providerDescriptor, ruleId, descriptor, samplingConfig ),
storeView,
true );
@@ -113,8 +107,8 @@ IndexProxy createPopulatingIndexProxy( final long ruleId,
IndexProxy createRecoveringIndexProxy( IndexDescriptor descriptor,
SchemaIndexProvider.Descriptor providerDescriptor )
{
- IndexCapability indexCapability = indexCapabilityFromProvider( providerDescriptor, descriptor );
- IndexProxy proxy = new RecoveringIndexProxy( descriptor, providerDescriptor, indexCapability );
+ IndexMeta indexMeta = indexMetaFromProvider( providerDescriptor, descriptor );
+ IndexProxy proxy = new RecoveringIndexProxy( indexMeta );
return new ContractCheckingIndexProxy( proxy, true );
}
@@ -127,9 +121,9 @@ IndexProxy createOnlineIndexProxy( long ruleId,
{
IndexAccessor onlineAccessor =
onlineAccessorFromProvider( providerDescriptor, ruleId, descriptor, samplingConfig );
- IndexCapability indexCapability = indexCapabilityFromProvider( providerDescriptor, descriptor );
+ IndexMeta indexMeta = indexMetaFromProvider( providerDescriptor, descriptor );
IndexProxy proxy;
- proxy = new OnlineIndexProxy( ruleId, descriptor, providerDescriptor, indexCapability, onlineAccessor, storeView, false );
+ proxy = new OnlineIndexProxy( ruleId, indexMeta, onlineAccessor, storeView, false );
proxy = new ContractCheckingIndexProxy( proxy, true );
return proxy;
}
@@ -148,12 +142,11 @@ IndexProxy createFailedIndexProxy( long ruleId,
IndexPopulationFailure populationFailure )
{
IndexPopulator indexPopulator = populatorFromProvider( providerDescriptor, ruleId, descriptor, samplingConfig );
- IndexCapability indexCapability = indexCapabilityFromProvider( providerDescriptor, descriptor );
+ IndexMeta indexMeta = indexMetaFromProvider( providerDescriptor, descriptor );
String indexUserDescription = indexUserDescription( descriptor, providerDescriptor );
IndexProxy proxy;
proxy = new FailedIndexProxy(
- descriptor,
- providerDescriptor, indexCapability,
+ indexMeta,
indexUserDescription,
indexPopulator,
populationFailure,
@@ -185,9 +178,9 @@ private IndexAccessor onlineAccessorFromProvider( SchemaIndexProvider.Descriptor
return indexProvider.getOnlineAccessor( ruleId, descriptor, samplingConfig );
}
- private IndexCapability indexCapabilityFromProvider( SchemaIndexProvider.Descriptor providerDescriptor,
- IndexDescriptor indexDescriptor )
+ private IndexMeta indexMetaFromProvider( SchemaIndexProvider.Descriptor providerDescriptor, IndexDescriptor indexDescriptor )
{
- return providerMap.apply( providerDescriptor ).getCapability( indexDescriptor );
+ IndexCapability indexCapability = providerMap.apply( providerDescriptor ).getCapability( indexDescriptor );
+ return new IndexMeta( indexDescriptor, providerDescriptor, indexCapability );
}
}
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulator.java
index 3ef6b30c0f57..ed1c91da5988 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulator.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulator.java
@@ -35,7 +35,6 @@
import org.neo4j.function.ThrowingConsumer;
import org.neo4j.helpers.collection.Pair;
import org.neo4j.helpers.collection.Visitor;
-import org.neo4j.internal.kernel.api.IndexCapability;
import org.neo4j.kernel.api.exceptions.index.FlipFailedKernelException;
import org.neo4j.kernel.api.exceptions.index.IndexEntryConflictException;
import org.neo4j.kernel.api.exceptions.index.IndexPopulationFailedKernelException;
@@ -43,11 +42,8 @@
import org.neo4j.kernel.api.index.IndexPopulator;
import org.neo4j.kernel.api.index.IndexUpdater;
import org.neo4j.kernel.api.index.PropertyAccessor;
-import org.neo4j.kernel.api.index.SchemaIndexProvider;
-import org.neo4j.kernel.api.index.SchemaIndexProvider.Descriptor;
import org.neo4j.kernel.api.schema.LabelSchemaDescriptor;
import org.neo4j.kernel.api.schema.LabelSchemaSupplier;
-import org.neo4j.kernel.api.schema.index.IndexDescriptor;
import org.neo4j.logging.Log;
import org.neo4j.logging.LogProvider;
import org.neo4j.storageengine.api.schema.IndexSample;
@@ -76,8 +72,8 @@
* Usage of this class should be something like:
*
* - Instantiation.
- * - One or more calls to {@link #addPopulator(IndexPopulator, long, IndexDescriptor, Descriptor, IndexCapability,
- * FlippableIndexProxy, FailedIndexProxyFactory, String)}.
+ * - One or more calls to {@link #addPopulator(IndexPopulator, long, IndexMeta, FlippableIndexProxy,
+ * FailedIndexProxyFactory, String)}.
* - Call to {@link #create()} to create data structures and files to start accepting updates.
* - Call to {@link #indexAllNodes()} (blocking call).
* - While all nodes are being indexed, calls to {@link #queue(IndexEntryUpdate)} are accepted.
@@ -116,25 +112,21 @@ public MultipleIndexPopulator( IndexStoreView storeView, LogProvider logProvider
IndexPopulation addPopulator(
IndexPopulator populator,
long indexId,
- IndexDescriptor descriptor,
- Descriptor providerDescriptor,
- IndexCapability indexCapability,
+ IndexMeta indexMeta,
FlippableIndexProxy flipper,
FailedIndexProxyFactory failedIndexProxyFactory,
String indexUserDescription )
{
- IndexPopulation population = createPopulation( populator, indexId, descriptor, providerDescriptor, indexCapability,
- flipper, failedIndexProxyFactory, indexUserDescription );
+ IndexPopulation population =
+ createPopulation( populator, indexId, indexMeta, flipper, failedIndexProxyFactory, indexUserDescription );
populations.add( population );
return population;
}
- protected IndexPopulation createPopulation( IndexPopulator populator, long indexId, IndexDescriptor descriptor,
- Descriptor providerDescriptor, IndexCapability indexCapability, FlippableIndexProxy flipper,
- FailedIndexProxyFactory failedIndexProxyFactory, String indexUserDescription )
+ protected IndexPopulation createPopulation( IndexPopulator populator, long indexId, IndexMeta indexMeta,
+ FlippableIndexProxy flipper, FailedIndexProxyFactory failedIndexProxyFactory, String indexUserDescription )
{
- return new IndexPopulation( populator, indexId, descriptor, providerDescriptor, indexCapability, flipper,
- failedIndexProxyFactory, indexUserDescription );
+ return new IndexPopulation( populator, indexId, indexMeta, flipper, failedIndexProxyFactory, indexUserDescription );
}
boolean hasPopulators()
@@ -264,7 +256,7 @@ public MultipleIndexUpdater newPopulatingUpdater( PropertyAccessor accessor )
forEachPopulation( population ->
{
IndexUpdater updater = population.populator.newPopulatingUpdater( accessor );
- updaters.put( population.descriptor.schema(), Pair.of( population, updater ) );
+ updaters.put( population.schema(), Pair.of( population, updater ) );
} );
return new MultipleIndexUpdater( this, updaters, logProvider );
}
@@ -470,32 +462,26 @@ public void close()
public class IndexPopulation implements LabelSchemaSupplier
{
public final IndexPopulator populator;
- final long indexId;
- final IndexDescriptor descriptor;
- final SchemaIndexProvider.Descriptor providerDescriptor;
- final IndexCountsRemover indexCountsRemover;
- private final IndexCapability indexCapability;
final FlippableIndexProxy flipper;
- final FailedIndexProxyFactory failedIndexProxyFactory;
- final String indexUserDescription;
+ private final long indexId;
+ private final IndexMeta indexMeta;
+ private final IndexCountsRemover indexCountsRemover;
+ private final FailedIndexProxyFactory failedIndexProxyFactory;
+ private final String indexUserDescription;
List> batchedUpdates;
IndexPopulation(
IndexPopulator populator,
long indexId,
- IndexDescriptor descriptor,
- Descriptor providerDescriptor,
- IndexCapability indexCapability,
+ IndexMeta indexMeta,
FlippableIndexProxy flipper,
FailedIndexProxyFactory failedIndexProxyFactory,
String indexUserDescription )
{
this.populator = populator;
this.indexId = indexId;
- this.descriptor = descriptor;
- this.providerDescriptor = providerDescriptor;
- this.indexCapability = indexCapability;
+ this.indexMeta = indexMeta;
this.flipper = flipper;
this.failedIndexProxyFactory = failedIndexProxyFactory;
this.indexUserDescription = indexUserDescription;
@@ -505,8 +491,8 @@ public class IndexPopulation implements LabelSchemaSupplier
private void flipToFailed( Throwable t )
{
- flipper.flipTo( new FailedIndexProxy( descriptor, providerDescriptor, indexCapability,
- indexUserDescription, populator, failure( t ), indexCountsRemover, logProvider ) );
+ flipper.flipTo(
+ new FailedIndexProxy( indexMeta, indexUserDescription, populator, failure( t ), indexCountsRemover, logProvider ) );
}
private void onUpdate( IndexEntryUpdate> update )
@@ -536,7 +522,7 @@ private void flip() throws FlipFailedKernelException
@Override
public LabelSchemaDescriptor schema()
{
- return descriptor.schema();
+ return indexMeta.indexDescriptor().schema();
}
public boolean batch( IndexEntryUpdate> update )
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxy.java
index 4a5fa8589360..4bde8879700b 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxy.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxy.java
@@ -43,11 +43,9 @@
public class OnlineIndexProxy implements IndexProxy
{
private final long indexId;
- private final IndexDescriptor descriptor;
+ private final IndexMeta indexMeta;
final IndexAccessor accessor;
private final IndexStoreView storeView;
- private final SchemaIndexProvider.Descriptor providerDescriptor;
- private final IndexCapability indexCapability;
private final IndexCountsRemover indexCountsRemover;
private boolean started;
@@ -78,19 +76,15 @@ public class OnlineIndexProxy implements IndexProxy
private final boolean forcedIdempotentMode;
OnlineIndexProxy( long indexId,
- IndexDescriptor descriptor,
- SchemaIndexProvider.Descriptor providerDescriptor,
- IndexCapability indexCapability,
+ IndexMeta indexMeta,
IndexAccessor accessor,
IndexStoreView storeView,
boolean forcedIdempotentMode )
{
this.indexId = indexId;
- this.descriptor = descriptor;
+ this.indexMeta = indexMeta;
this.accessor = accessor;
this.storeView = storeView;
- this.providerDescriptor = providerDescriptor;
- this.indexCapability = indexCapability;
this.forcedIdempotentMode = forcedIdempotentMode;
this.indexCountsRemover = new IndexCountsRemover( storeView, indexId );
}
@@ -124,19 +118,19 @@ public Future drop() throws IOException
@Override
public IndexDescriptor getDescriptor()
{
- return descriptor;
+ return indexMeta.indexDescriptor();
}
@Override
public LabelSchemaDescriptor schema()
{
- return descriptor.schema();
+ return indexMeta.indexDescriptor().schema();
}
@Override
public SchemaIndexProvider.Descriptor getProviderDescriptor()
{
- return providerDescriptor;
+ return indexMeta.providerDescriptor();
}
@Override
@@ -148,7 +142,7 @@ public InternalIndexState getState()
@Override
public IndexCapability getIndexCapability()
{
- return indexCapability;
+ return indexMeta.indexCapability();
}
@Override
@@ -209,7 +203,7 @@ public ResourceIterator snapshotFiles() throws IOException
@Override
public String toString()
{
- return getClass().getSimpleName() + "[accessor:" + accessor + ", descriptor:" + descriptor + "]";
+ return getClass().getSimpleName() + "[accessor:" + accessor + ", descriptor:" + indexMeta.indexDescriptor() + "]";
}
@Override
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/PopulatingIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/PopulatingIndexProxy.java
index e0fc06cf9cc9..3c486fa0f376 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/PopulatingIndexProxy.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/PopulatingIndexProxy.java
@@ -42,19 +42,12 @@
public class PopulatingIndexProxy implements IndexProxy
{
- private final IndexDescriptor descriptor;
- private final IndexCapability indexCapability;
- private final SchemaIndexProvider.Descriptor providerDescriptor;
+ private final IndexMeta indexMeta;
private final IndexPopulationJob job;
- PopulatingIndexProxy( IndexDescriptor descriptor,
- SchemaIndexProvider.Descriptor providerDescriptor,
- IndexCapability indexCapability,
- IndexPopulationJob job )
+ PopulatingIndexProxy( IndexMeta indexMeta, IndexPopulationJob job )
{
- this.descriptor = descriptor;
- this.providerDescriptor = providerDescriptor;
- this.indexCapability = indexCapability;
+ this.indexMeta = indexMeta;
this.job = job;
}
@@ -99,19 +92,19 @@ public Future drop()
@Override
public IndexDescriptor getDescriptor()
{
- return descriptor;
+ return indexMeta.indexDescriptor();
}
@Override
public LabelSchemaDescriptor schema()
{
- return descriptor.schema();
+ return indexMeta.indexDescriptor().schema();
}
@Override
public SchemaIndexProvider.Descriptor getProviderDescriptor()
{
- return providerDescriptor;
+ return indexMeta.providerDescriptor();
}
@Override
@@ -123,7 +116,7 @@ public InternalIndexState getState()
@Override
public IndexCapability getIndexCapability()
{
- return indexCapability;
+ return indexMeta.indexCapability();
}
@Override
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/RecoveringIndexProxy.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/RecoveringIndexProxy.java
index 1ea1837836c1..d2a8748825ea 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/RecoveringIndexProxy.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/index/RecoveringIndexProxy.java
@@ -23,22 +23,17 @@
import java.util.concurrent.Future;
import org.neo4j.graphdb.ResourceIterator;
-import org.neo4j.internal.kernel.api.IndexCapability;
import org.neo4j.kernel.api.exceptions.index.IndexPopulationFailedKernelException;
import org.neo4j.kernel.api.index.InternalIndexState;
-import org.neo4j.kernel.api.index.SchemaIndexProvider;
-import org.neo4j.kernel.api.schema.index.IndexDescriptor;
import org.neo4j.storageengine.api.schema.PopulationProgress;
import static org.neo4j.helpers.FutureAdapter.VOID;
public class RecoveringIndexProxy extends AbstractSwallowingIndexProxy
{
- RecoveringIndexProxy( IndexDescriptor descriptor,
- SchemaIndexProvider.Descriptor providerDescriptor,
- IndexCapability indexCapability )
+ RecoveringIndexProxy( IndexMeta indexMeta )
{
- super( descriptor, providerDescriptor, indexCapability, null );
+ super( indexMeta, null );
}
@Override
diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java
index 4ad453dd3710..0b1fe78bb3a0 100644
--- a/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java
+++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/newapi/AllStoreHolder.java
@@ -148,14 +148,15 @@ public CapableIndexReference index( int label, int... properties )
{
return CapableIndexReference.NO_INDEX;
}
+ boolean unique = indexDescriptor.type() == IndexDescriptor.Type.UNIQUE;
try
{
IndexCapability indexCapability = read.indexGetCapability( indexDescriptor );
- return new IndexReference( indexDescriptor.type() == IndexDescriptor.Type.UNIQUE, indexCapability, label, properties );
+ return new IndexReference( unique, indexCapability, label, properties );
}
catch ( IndexNotFoundKernelException e )
{
- throw new IllegalStateException( e );
+ throw new IllegalStateException( "Could not find capability for index " + indexDescriptor, e );
}
}
diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/BatchingMultipleIndexPopulatorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/BatchingMultipleIndexPopulatorTest.java
index 276c0a79825b..58dfef475ea2 100644
--- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/BatchingMultipleIndexPopulatorTest.java
+++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/BatchingMultipleIndexPopulatorTest.java
@@ -349,8 +349,8 @@ private static IndexPopulator addPopulator( BatchingMultipleIndexPopulator batch
flipper.setFlipTarget( indexProxyFactory );
batchingPopulator.addPopulator(
- populator, descriptor.schema().getLabelId(), descriptor,
- new SchemaIndexProvider.Descriptor( "foo", "1" ), NO_CAPABILITY,
+ populator, descriptor.schema().getLabelId(),
+ new IndexMeta( descriptor, new SchemaIndexProvider.Descriptor( "foo", "1" ), NO_CAPABILITY ),
flipper, failedIndexProxyFactory, "testIndex" );
return populator;
diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/FailedIndexProxyTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/FailedIndexProxyTest.java
index e095eafe8057..f02e7afc7675 100644
--- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/FailedIndexProxyTest.java
+++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/FailedIndexProxyTest.java
@@ -26,6 +26,7 @@
import org.neo4j.internal.kernel.api.IndexCapability;
import org.neo4j.kernel.api.index.IndexPopulator;
import org.neo4j.kernel.api.index.SchemaIndexProvider;
+import org.neo4j.kernel.api.schema.index.IndexDescriptor;
import org.neo4j.kernel.api.schema.index.IndexDescriptorFactory;
import org.neo4j.logging.AssertableLogProvider;
import org.neo4j.logging.NullLogProvider;
@@ -39,7 +40,6 @@ public class FailedIndexProxyTest
{
private final SchemaIndexProvider.Descriptor providerDescriptor = mock( SchemaIndexProvider.Descriptor.class );
private final IndexCapability indexCapability = mock( IndexCapability.class );
- private final String userDescription = "description";
private final IndexPopulator indexPopulator = mock( IndexPopulator.class );
private final IndexPopulationFailure indexPopulationFailure = mock( IndexPopulationFailure.class );
private final IndexCountsRemover indexCountsRemover = mock( IndexCountsRemover.class );
@@ -48,8 +48,8 @@ public class FailedIndexProxyTest
public void shouldRemoveIndexCountsWhenTheIndexItselfIsDropped() throws IOException
{
// given
- FailedIndexProxy index = new FailedIndexProxy(
- IndexDescriptorFactory.forLabel( 1, 2 ), providerDescriptor, indexCapability,
+ String userDescription = "description";
+ FailedIndexProxy index = new FailedIndexProxy( indexMeta( IndexDescriptorFactory.forLabel( 1, 2 ) ),
userDescription, indexPopulator, indexPopulationFailure, indexCountsRemover, NullLogProvider.getInstance() );
// when
@@ -68,7 +68,7 @@ public void shouldLogReasonForDroppingIndex() throws IOException
AssertableLogProvider logProvider = new AssertableLogProvider();
// when
- new FailedIndexProxy( IndexDescriptorFactory.forLabel( 0, 0 ), new SchemaIndexProvider.Descriptor( "foo", "bar" ), indexCapability,
+ new FailedIndexProxy( indexMeta( IndexDescriptorFactory.forLabel( 0, 0 ) ),
"foo", mock( IndexPopulator.class ), IndexPopulationFailure.failure( "it broke" ),
indexCountsRemover, logProvider ).drop();
@@ -77,4 +77,9 @@ public void shouldLogReasonForDroppingIndex() throws IOException
inLog( FailedIndexProxy.class ).info( "FailedIndexProxy#drop index on foo dropped due to:\nit broke" )
);
}
+
+ private IndexMeta indexMeta( IndexDescriptor descriptor )
+ {
+ return new IndexMeta( descriptor, providerDescriptor, indexCapability );
+ }
}
diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexPopulationJobTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexPopulationJobTest.java
index 9c6d6787d176..0d7d1c387651 100644
--- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexPopulationJobTest.java
+++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/IndexPopulationJobTest.java
@@ -618,7 +618,7 @@ private IndexPopulationJob newIndexPopulationJob( FailedIndexProxyFactory failur
MultipleIndexPopulator multiPopulator = new MultipleIndexPopulator( storeView, logProvider );
IndexPopulationJob job = new IndexPopulationJob( multiPopulator, NO_MONITOR, stateHolder );
- job.addPopulator( populator, indexId, descriptor, PROVIDER_DESCRIPTOR, NO_CAPABILITY,
+ job.addPopulator( populator, indexId, new IndexMeta( descriptor, PROVIDER_DESCRIPTOR, NO_CAPABILITY ),
format( ":%s(%s)", FIRST.name(), name ), flipper, failureDelegateFactory );
return job;
}
diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulatorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulatorTest.java
index ddcc46f24797..5a1173faf32a 100644
--- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulatorTest.java
+++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulatorTest.java
@@ -432,8 +432,8 @@ private IndexPopulation addPopulator( MultipleIndexPopulator multipleIndexPopula
IndexDescriptor descriptor, IndexPopulator indexPopulator,
FlippableIndexProxy flippableIndexProxy, FailedIndexProxyFactory failedIndexProxyFactory )
{
- return multipleIndexPopulator.addPopulator( indexPopulator, indexId, descriptor,
- mock( SchemaIndexProvider.Descriptor.class ), NO_CAPABILITY,
+ return multipleIndexPopulator.addPopulator( indexPopulator, indexId,
+ new IndexMeta( descriptor, mock( SchemaIndexProvider.Descriptor.class ), NO_CAPABILITY ),
flippableIndexProxy, failedIndexProxyFactory, "userIndexDescription" );
}
diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulatorUpdatesTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulatorUpdatesTest.java
index 6c5a121b4de6..cf3ef0a3ca3d 100644
--- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulatorUpdatesTest.java
+++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/MultipleIndexPopulatorUpdatesTest.java
@@ -125,8 +125,8 @@ private MultipleIndexPopulator.IndexPopulation addPopulator( MultipleIndexPopula
long indexId, IndexDescriptor descriptor, IndexPopulator indexPopulator,
FlippableIndexProxy flippableIndexProxy, FailedIndexProxyFactory failedIndexProxyFactory )
{
- return multipleIndexPopulator.addPopulator( indexPopulator, indexId, descriptor,
- mock( SchemaIndexProvider.Descriptor.class ), NO_CAPABILITY,
+ return multipleIndexPopulator.addPopulator( indexPopulator, indexId,
+ new IndexMeta( descriptor, mock( SchemaIndexProvider.Descriptor.class ), NO_CAPABILITY ),
flippableIndexProxy, failedIndexProxyFactory, "userIndexDescription" );
}
@@ -172,7 +172,7 @@ public StoreScan visitNodes( int[] labelIds
propertyUpdatesVisitor, labelIds, propertyKeyIdFilter, processListener );
}
- public void setProcessListener( Listener processListener )
+ void setProcessListener( Listener processListener )
{
this.processListener = processListener;
}
diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxyTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxyTest.java
index 421bc5521896..c7af1e090263 100644
--- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxyTest.java
+++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/index/OnlineIndexProxyTest.java
@@ -45,8 +45,8 @@ public class OnlineIndexProxyTest
public void shouldRemoveIndexCountsWhenTheIndexItselfIsDropped() throws IOException
{
// given
- OnlineIndexProxy index = new OnlineIndexProxy( indexId, descriptor, providerDescriptor, NO_CAPABILITY, accessor,
- storeView, false );
+ OnlineIndexProxy index = new OnlineIndexProxy( indexId, new IndexMeta( descriptor, providerDescriptor, NO_CAPABILITY ),
+ accessor, storeView, false );
// when
index.drop();
diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/storeview/LabelScanViewNodeStoreScanTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/storeview/LabelScanViewNodeStoreScanTest.java
index 53aa35dc66c4..cf58b572ab92 100644
--- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/storeview/LabelScanViewNodeStoreScanTest.java
+++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/state/storeview/LabelScanViewNodeStoreScanTest.java
@@ -30,12 +30,10 @@
import org.neo4j.collection.primitive.PrimitiveLongIterator;
import org.neo4j.collection.primitive.PrimitiveLongResourceIterator;
import org.neo4j.helpers.collection.Visitor;
-import org.neo4j.internal.kernel.api.IndexCapability;
import org.neo4j.kernel.api.index.IndexPopulator;
-import org.neo4j.kernel.api.index.SchemaIndexProvider;
import org.neo4j.kernel.api.labelscan.LabelScanStore;
import org.neo4j.kernel.api.labelscan.NodeLabelUpdate;
-import org.neo4j.kernel.api.schema.index.IndexDescriptor;
+import org.neo4j.kernel.impl.api.index.IndexMeta;
import org.neo4j.kernel.impl.api.index.FailedIndexProxyFactory;
import org.neo4j.kernel.impl.api.index.FlippableIndexProxy;
import org.neo4j.kernel.impl.api.index.IndexStoreView;
@@ -50,7 +48,6 @@
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import static org.neo4j.internal.kernel.api.IndexCapability.NO_CAPABILITY;
public class LabelScanViewNodeStoreScanTest
{
@@ -88,7 +85,7 @@ public void iterateOverLabeledNodeIds() throws Exception
private MultipleIndexPopulator.IndexPopulation getPopulation( LabelScanTestMultipleIndexPopulator indexPopulator )
{
- return indexPopulator.createPopulation( mock( IndexPopulator.class ), 1, null, null, NO_CAPABILITY, null, null, null );
+ return indexPopulator.createPopulation( mock( IndexPopulator.class ), 1, null, null, null, null );
}
private LabelScanViewNodeStoreScan getLabelScanViewStoreScan( int[] labelIds )
@@ -106,11 +103,11 @@ private class LabelScanTestMultipleIndexPopulator extends MultipleIndexPopulator
@Override
public IndexPopulation createPopulation( IndexPopulator populator, long indexId,
- IndexDescriptor descriptor, SchemaIndexProvider.Descriptor providerDescriptor,
- IndexCapability indexCapability, FlippableIndexProxy flipper, FailedIndexProxyFactory failedIndexProxyFactory,
+ IndexMeta indexMeta, FlippableIndexProxy flipper,
+ FailedIndexProxyFactory failedIndexProxyFactory,
String indexUserDescription )
{
- return super.createPopulation( populator, indexId, descriptor, providerDescriptor, indexCapability, flipper,
+ return super.createPopulation( populator, indexId, indexMeta, flipper,
failedIndexProxyFactory, indexUserDescription );
}
}