You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2015/06/08 18:43:53 UTC

incubator-usergrid git commit: Change from static index to location strategy

Repository: incubator-usergrid
Updated Branches:
  refs/heads/USERGRID-652 bfb5885a0 -> 3ebe8e9b9


Change from static index to location strategy


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/3ebe8e9b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/3ebe8e9b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/3ebe8e9b

Branch: refs/heads/USERGRID-652
Commit: 3ebe8e9b95434eb97985b85a613de7327977d2d4
Parents: bfb5885
Author: Shawn Feldman <sf...@apache.org>
Authored: Mon Jun 8 10:43:41 2015 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Mon Jun 8 10:43:41 2015 -0600

----------------------------------------------------------------------
 .../usergrid/corepersistence/CpSetup.java       |  1 -
 .../corepersistence/index/IndexServiceImpl.java | 23 +++------
 .../search/AbstractElasticSearchFilter.java     | 11 +++--
 .../read/search/CandidateEntityFilter.java      | 10 ++--
 .../pipeline/read/search/CandidateIdFilter.java | 16 +++---
 .../read/search/SearchCollectionFilter.java     |  9 +++-
 .../read/search/SearchConnectionFilter.java     |  7 ++-
 .../org/apache/usergrid/CoreApplication.java    |  8 ++-
 .../corepersistence/StaleIndexCleanupTest.java  |  6 ++-
 .../index/AsyncIndexServiceTest.java            | 15 +++---
 .../corepersistence/index/IndexServiceTest.java | 51 +++++++++++---------
 .../PerformanceEntityRebuildIndexTest.java      |  8 ++-
 .../src/test/resources/log4j.properties         |  2 +-
 13 files changed, 96 insertions(+), 71 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java
index d3a1dcc..c93d443 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpSetup.java
@@ -23,7 +23,6 @@ import com.google.inject.Binding;
 import org.apache.usergrid.corepersistence.util.CpNamingUtils;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
 import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
 import org.apache.usergrid.persistence.index.EntityIndex;
 import org.apache.usergrid.persistence.index.EntityIndexFactory;
 import org.apache.usergrid.persistence.model.entity.SimpleId;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/IndexServiceImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/IndexServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/IndexServiceImpl.java
index 96b0792..b8531f8 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/IndexServiceImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/index/IndexServiceImpl.java
@@ -23,6 +23,7 @@ package org.apache.usergrid.corepersistence.index;
 import java.util.Iterator;
 import java.util.UUID;
 
+import org.apache.usergrid.persistence.index.*;
 import org.apache.usergrid.utils.UUIDUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -31,24 +32,14 @@ import org.apache.usergrid.corepersistence.util.CpNamingUtils;
 import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
 import org.apache.usergrid.persistence.core.metrics.ObservableTimer;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.entities.Application;
 import org.apache.usergrid.persistence.graph.Edge;
 import org.apache.usergrid.persistence.graph.GraphManager;
 import org.apache.usergrid.persistence.graph.GraphManagerFactory;
 import org.apache.usergrid.persistence.graph.impl.SimpleEdge;
 import org.apache.usergrid.persistence.graph.serialization.EdgesObservable;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
-import org.apache.usergrid.persistence.index.CandidateResult;
-import org.apache.usergrid.persistence.index.CandidateResults;
-import org.apache.usergrid.persistence.index.EntityIndexBatch;
-import org.apache.usergrid.persistence.index.EntityIndexFactory;
-import org.apache.usergrid.persistence.index.IndexEdge;
-import org.apache.usergrid.persistence.index.IndexFig;
-import org.apache.usergrid.persistence.index.SearchEdge;
 import org.apache.usergrid.persistence.index.impl.IndexOperationMessage;
 import org.apache.usergrid.persistence.model.entity.Entity;
 import org.apache.usergrid.persistence.model.entity.Id;
-import org.apache.usergrid.persistence.schema.CollectionInfo;
 import org.apache.usergrid.utils.InflectionUtils;
 
 import com.codahale.metrics.Timer;
@@ -76,17 +67,19 @@ public class IndexServiceImpl implements IndexService {
     private final EntityIndexFactory entityIndexFactory;
     private final EdgesObservable edgesObservable;
     private final IndexFig indexFig;
+    private final IndexLocationStrategyFactory indexLocationStrategyFactory;
     private final Timer indexTimer;
     private final Timer addTimer;
 
 
     @Inject
     public IndexServiceImpl( final GraphManagerFactory graphManagerFactory, final EntityIndexFactory entityIndexFactory,
-                             final EdgesObservable edgesObservable, final IndexFig indexFig, final MetricsFactory metricsFactory ) {
+                             final EdgesObservable edgesObservable, final IndexFig indexFig, final IndexLocationStrategyFactory indexLocationStrategyFactory, final MetricsFactory metricsFactory ) {
         this.graphManagerFactory = graphManagerFactory;
         this.entityIndexFactory = entityIndexFactory;
         this.edgesObservable = edgesObservable;
         this.indexFig = indexFig;
+        this.indexLocationStrategyFactory = indexLocationStrategyFactory;
         this.indexTimer = metricsFactory.getTimer( IndexServiceImpl.class, "index.update_all");
         this.addTimer = metricsFactory.getTimer( IndexServiceImpl.class, "index.add" );
     }
@@ -97,7 +90,7 @@ public class IndexServiceImpl implements IndexService {
                                                           final Entity entity ) {
         //bootstrap the lower modules from their caches
         final GraphManager gm = graphManagerFactory.createEdgeManager( applicationScope );
-        final ApplicationEntityIndex ei = entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex ei = entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope));
 
 
         final Id entityId = entity.getId();
@@ -145,7 +138,7 @@ public class IndexServiceImpl implements IndexService {
             throw new IllegalArgumentException("target not equal to entity + "+entity.getId());
         } ).flatMap( indexEdge -> {
 
-            final ApplicationEntityIndex ei = entityIndexFactory.createApplicationEntityIndex( applicationScope );
+            final AliasedEntityIndex ei = entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
             final EntityIndexBatch batch = ei.createBatch();
 
@@ -172,7 +165,7 @@ public class IndexServiceImpl implements IndexService {
 
         final Observable<IndexOperationMessage> batches =
             Observable.just( edge ).flatMap( edgeValue -> {
-                final ApplicationEntityIndex ei = entityIndexFactory.createApplicationEntityIndex( applicationScope );
+                final AliasedEntityIndex ei = entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
                 EntityIndexBatch batch = ei.createBatch();
 
 
@@ -209,7 +202,7 @@ public class IndexServiceImpl implements IndexService {
                                                                   final Id entityId, final UUID markedVersion ) {
 
         //bootstrap the lower modules from their caches
-        final ApplicationEntityIndex ei = entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex ei = entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         CandidateResults crs = ei.getAllEntityVersionsBeforeMarkedVersion( entityId, markedVersion );
 

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/AbstractElasticSearchFilter.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/AbstractElasticSearchFilter.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/AbstractElasticSearchFilter.java
index 2fdffd2..40a96cf 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/AbstractElasticSearchFilter.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/AbstractElasticSearchFilter.java
@@ -20,6 +20,7 @@
 package org.apache.usergrid.corepersistence.pipeline.read.search;
 
 
+import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
 import org.apache.usergrid.persistence.index.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -47,6 +48,7 @@ public abstract class AbstractElasticSearchFilter extends AbstractPathFilter<Id,
     private static final Logger log = LoggerFactory.getLogger( AbstractElasticSearchFilter.class );
 
     private final EntityIndexFactory entityIndexFactory;
+    private final IndexLocationStrategyFactory indexLocationStrategyFactory;
     private final String query;
     private final Timer searchTimer;
 
@@ -55,8 +57,11 @@ public abstract class AbstractElasticSearchFilter extends AbstractPathFilter<Id,
      * Create a new instance of our command
      */
     public AbstractElasticSearchFilter( final EntityIndexFactory entityIndexFactory,
-                                        final MetricsFactory metricsFactory, final String query ) {
+                                        final MetricsFactory metricsFactory,
+                                        final IndexLocationStrategyFactory indexLocationStrategyFactory,
+                                        final String query ) {
         this.entityIndexFactory = entityIndexFactory;
+        this.indexLocationStrategyFactory = indexLocationStrategyFactory;
         this.query = query;
         this.searchTimer = metricsFactory.getTimer( AbstractElasticSearchFilter.class, "query" );
     }
@@ -66,8 +71,8 @@ public abstract class AbstractElasticSearchFilter extends AbstractPathFilter<Id,
     public Observable<FilterResult<Candidate>> call( final Observable<FilterResult<Id>> observable ) {
 
         //get the graph manager
-        final ApplicationEntityIndex applicationEntityIndex =
-            entityIndexFactory.createApplicationEntityIndex( pipelineContext.getApplicationScope() );
+        final AliasedEntityIndex applicationEntityIndex =
+            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(pipelineContext.getApplicationScope()) );
 
 
         final int limit = pipelineContext.getLimit();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java
index d8a9c68..5303bf5 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java
@@ -22,6 +22,7 @@ package org.apache.usergrid.corepersistence.pipeline.read.search;
 
 import java.util.*;
 
+import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
 import org.apache.usergrid.persistence.index.*;
 import org.apache.usergrid.persistence.model.field.Field;
 import org.slf4j.Logger;
@@ -54,13 +55,16 @@ public class CandidateEntityFilter extends AbstractFilter<FilterResult<Candidate
 
     private final EntityCollectionManagerFactory entityCollectionManagerFactory;
     private final EntityIndexFactory entityIndexFactory;
+    private final IndexLocationStrategyFactory indexLocationStrategyFactory;
 
 
     @Inject
     public CandidateEntityFilter( final EntityCollectionManagerFactory entityCollectionManagerFactory,
-                                  final EntityIndexFactory entityIndexFactory ) {
+                                  final EntityIndexFactory entityIndexFactory,
+                                  final IndexLocationStrategyFactory indexLocationStrategyFactory) {
         this.entityCollectionManagerFactory = entityCollectionManagerFactory;
         this.entityIndexFactory = entityIndexFactory;
+        this.indexLocationStrategyFactory = indexLocationStrategyFactory;
     }
 
 
@@ -80,8 +84,8 @@ public class CandidateEntityFilter extends AbstractFilter<FilterResult<Candidate
             entityCollectionManagerFactory.createCollectionManager( applicationScope );
 
 
-        final ApplicationEntityIndex applicationIndex =
-            entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex applicationIndex =
+            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         //buffer them to get a page size we can make 1 network hop
         final Observable<FilterResult<Entity>> searchIdSetObservable = candidateResultsObservable.buffer( pipelineContext.getLimit() )

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateIdFilter.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateIdFilter.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateIdFilter.java
index 1ef358a..49acfa6 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateIdFilter.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateIdFilter.java
@@ -24,6 +24,8 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.UUID;
 
+import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
+import org.apache.usergrid.persistence.index.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -34,11 +36,6 @@ import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory
 import org.apache.usergrid.persistence.collection.MvccLogEntry;
 import org.apache.usergrid.persistence.collection.VersionSet;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
-import org.apache.usergrid.persistence.index.CandidateResult;
-import org.apache.usergrid.persistence.index.EntityIndexBatch;
-import org.apache.usergrid.persistence.index.EntityIndexFactory;
-import org.apache.usergrid.persistence.index.SearchEdge;
 import org.apache.usergrid.persistence.model.entity.Id;
 
 import com.fasterxml.uuid.UUIDComparator;
@@ -55,13 +52,16 @@ public class CandidateIdFilter extends AbstractFilter<FilterResult<Candidate>, F
 
     private final EntityCollectionManagerFactory entityCollectionManagerFactory;
     private final EntityIndexFactory entityIndexFactory;
+    private final IndexLocationStrategyFactory indexLocationStrategyFactory;
 
 
     @Inject
     public CandidateIdFilter( final EntityCollectionManagerFactory entityCollectionManagerFactory,
-                              final EntityIndexFactory entityIndexFactory ) {
+                              final EntityIndexFactory entityIndexFactory,
+                              final IndexLocationStrategyFactory indexLocationStrategyFactory) {
         this.entityCollectionManagerFactory = entityCollectionManagerFactory;
         this.entityIndexFactory = entityIndexFactory;
+        this.indexLocationStrategyFactory = indexLocationStrategyFactory;
     }
 
 
@@ -80,8 +80,8 @@ public class CandidateIdFilter extends AbstractFilter<FilterResult<Candidate>, F
             entityCollectionManagerFactory.createCollectionManager( applicationScope );
 
 
-        final ApplicationEntityIndex applicationIndex =
-            entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex applicationIndex =
+            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope));
 
         final Observable<FilterResult<Id>> searchIdSetObservable =
             filterResultObservable.buffer( pipelineContext.getLimit() ).flatMap( candidateResults -> {

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchCollectionFilter.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchCollectionFilter.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchCollectionFilter.java
index a6edd56..f95cb88 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchCollectionFilter.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchCollectionFilter.java
@@ -20,6 +20,7 @@
 package org.apache.usergrid.corepersistence.pipeline.read.search;
 
 
+import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
 import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
 import org.apache.usergrid.persistence.index.EntityIndexFactory;
 import org.apache.usergrid.persistence.index.SearchEdge;
@@ -34,6 +35,7 @@ import static org.apache.usergrid.corepersistence.util.CpNamingUtils.createColle
 
 public class SearchCollectionFilter extends AbstractElasticSearchFilter {
 
+    private final IndexLocationStrategyFactory indexLocationStrategyFactory;
     private final String collectionName;
     private final String entityType;
 
@@ -46,11 +48,14 @@ public class SearchCollectionFilter extends AbstractElasticSearchFilter {
      * @param entityType The entity type
      */
     @Inject
-    public SearchCollectionFilter( final EntityIndexFactory entityIndexFactory, final MetricsFactory metricsFactory,
+    public SearchCollectionFilter( final EntityIndexFactory entityIndexFactory,
+                                   final IndexLocationStrategyFactory indexLocationStrategyFactory,
+                                   final MetricsFactory metricsFactory,
                                    @Assisted( "query" ) final String query,
                                    @Assisted( "collectionName" ) final String collectionName,
                                    @Assisted( "entityType" ) final String entityType ) {
-        super( entityIndexFactory, metricsFactory, query );
+        super( entityIndexFactory, metricsFactory, indexLocationStrategyFactory, query );
+        this.indexLocationStrategyFactory = indexLocationStrategyFactory;
         this.collectionName = collectionName;
         this.entityType = entityType;
     }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchConnectionFilter.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchConnectionFilter.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchConnectionFilter.java
index 82d7377..27a12a8 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchConnectionFilter.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/SearchConnectionFilter.java
@@ -20,6 +20,7 @@
 package org.apache.usergrid.corepersistence.pipeline.read.search;
 
 
+import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
 import org.apache.usergrid.persistence.core.metrics.MetricsFactory;
 import org.apache.usergrid.persistence.index.EntityIndexFactory;
 import org.apache.usergrid.persistence.index.SearchEdge;
@@ -44,11 +45,13 @@ public class SearchConnectionFilter extends AbstractElasticSearchFilter {
      * Create a new instance of our command
      */
     @Inject
-    public SearchConnectionFilter( final EntityIndexFactory entityIndexFactory, final MetricsFactory metricsFactory,
+    public SearchConnectionFilter( final EntityIndexFactory entityIndexFactory,
+                                   final MetricsFactory metricsFactory,
+                                   final IndexLocationStrategyFactory indexLocationStrategyFactory,
                                    @Assisted( "query" ) final String query,
                                    @Assisted( "connectionName" ) final String connectionName,
                                    @Assisted( "connectedEntityType" ) final Optional<String> connectedEntityType ) {
-        super( entityIndexFactory, metricsFactory, query );
+        super( entityIndexFactory, metricsFactory, indexLocationStrategyFactory, query );
 
         this.connectionName = connectionName;
         this.connectedEntityType = connectedEntityType;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java b/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java
index 00cadd0..217aeb9 100644
--- a/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java
+++ b/stack/core/src/test/java/org/apache/usergrid/CoreApplication.java
@@ -24,6 +24,7 @@ import java.util.UUID;
 import java.util.concurrent.ExecutionException;
 
 import com.google.inject.Injector;
+import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
 import org.apache.usergrid.corepersistence.util.CpNamingUtils;
 import org.apache.usergrid.persistence.index.*;
 import org.apache.usergrid.persistence.model.entity.Id;
@@ -57,7 +58,7 @@ public class CoreApplication implements Application, TestRule {
     protected Map<String, Object> properties = new LinkedHashMap<String, Object>();
     private EntityIndex entityIndex;
     private EntityIndexFactory entityIndexFactory;
-    private ApplicationEntityIndex applicationIndex;
+    private AliasedEntityIndex applicationIndex;
     private EntityManager managementEm;
 
 
@@ -178,8 +179,11 @@ public class CoreApplication implements Application, TestRule {
         em = setup.getEmf().getEntityManager(id);
         Injector injector = setup.getInjector();
         entityIndex = injector.getInstance(EntityIndex.class);
+        IndexLocationStrategyFactory indexLocationStrategyFactory = injector.getInstance(IndexLocationStrategyFactory.class);
         entityIndexFactory = injector.getInstance(EntityIndexFactory.class);
-        applicationIndex =  entityIndexFactory.createApplicationEntityIndex(CpNamingUtils.getApplicationScope(id));
+        applicationIndex =  entityIndexFactory.createEntityIndex(
+            indexLocationStrategyFactory.getIndexLocationStrategy(CpNamingUtils.getApplicationScope(id))
+        );
         assertNotNull(em);
 
         LOG.info( "Created new application {} in organization {}", appName, orgName );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
index 29dc549..bb3f0b6 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/StaleIndexCleanupTest.java
@@ -24,6 +24,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
+import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
@@ -45,7 +46,7 @@ import org.apache.usergrid.persistence.collection.EntityCollectionManager;
 import org.apache.usergrid.persistence.collection.EntityCollectionManagerFactory;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
 import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
+import org.apache.usergrid.persistence.index.AliasedEntityIndex;
 import org.apache.usergrid.persistence.index.CandidateResults;
 import org.apache.usergrid.persistence.index.EntityIndexFactory;
 import org.apache.usergrid.persistence.index.SearchEdge;
@@ -496,7 +497,8 @@ public class StaleIndexCleanupTest extends AbstractCoreIT {
 
         ApplicationScope as = new ApplicationScopeImpl(
             new SimpleId( em.getApplicationId(), TYPE_APPLICATION ) );
-        ApplicationEntityIndex ei = eif.createApplicationEntityIndex(as);
+        IndexLocationStrategyFactory indexLocationStrategyFactory = SpringResource.getInstance().getBean( Injector.class ).getInstance(IndexLocationStrategyFactory.class);
+        AliasedEntityIndex ei = eif.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(as));
 
         final Id rootId = createId(em.getApplicationId(), TYPE_APPLICATION);
         SearchEdge is = CpNamingUtils.createCollectionSearchEdge( rootId, collName );

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/AsyncIndexServiceTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/AsyncIndexServiceTest.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/AsyncIndexServiceTest.java
index 00c082f..7096a4b 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/AsyncIndexServiceTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/AsyncIndexServiceTest.java
@@ -84,6 +84,9 @@ public abstract class AsyncIndexServiceTest {
     @Inject
     public EntityIndex entityIndex;
 
+    @Inject
+    public IndexLocationStrategyFactory indexLocationStrategyFactory;
+
 
     private AsyncEventService asyncEventService;
 
@@ -144,13 +147,13 @@ public abstract class AsyncIndexServiceTest {
 
         //        Thread.sleep( 1000000000000l );
 
-        final ApplicationEntityIndex applicationEntityIndex =
-            entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex AliasedEntityIndex =
+            entityIndexFactory.createEntityIndex( indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         final SearchEdge collectionSearchEdge = CpNamingUtils.createSearchEdgeFromSource( collectionEdge );
 
         //query until it's available
-        final CandidateResults collectionResults = getResults( applicationEntityIndex, collectionSearchEdge,
+        final CandidateResults collectionResults = getResults( AliasedEntityIndex, collectionSearchEdge,
             SearchTypes.fromTypes( testEntity.getId().getType() ),  1, 100 );
 
         assertEquals( 1, collectionResults.size() );
@@ -162,7 +165,7 @@ public abstract class AsyncIndexServiceTest {
 
 
         //query until it's available
-        final CandidateResults connectionResults = getResults( applicationEntityIndex, connectionSearchEdge,
+        final CandidateResults connectionResults = getResults( AliasedEntityIndex, connectionSearchEdge,
             SearchTypes.fromTypes( testEntity.getId().getType() ), 1, 100 );
 
         assertEquals( 1, connectionResults.size() );
@@ -171,13 +174,13 @@ public abstract class AsyncIndexServiceTest {
     }
 
 
-    private CandidateResults getResults( final ApplicationEntityIndex applicationEntityIndex,
+    private CandidateResults getResults( final AliasedEntityIndex AliasedEntityIndex,
                                          final SearchEdge searchEdge, final SearchTypes searchTypes, final int expectedSize, final int attempts ) {
 
 
         for ( int i = 0; i < attempts; i++ ) {
             final CandidateResults candidateResults =
-                applicationEntityIndex.search( searchEdge, searchTypes, "select *", 100, 0 );
+                AliasedEntityIndex.search( searchEdge, searchTypes, "select *", 100, 0 );
 
             if ( candidateResults.size() == expectedSize ) {
                 return candidateResults;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/IndexServiceTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/IndexServiceTest.java b/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/IndexServiceTest.java
index 5c926c8..d52ef21 100644
--- a/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/IndexServiceTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/corepersistence/index/IndexServiceTest.java
@@ -40,7 +40,7 @@ import org.apache.usergrid.persistence.core.test.UseModules;
 import org.apache.usergrid.persistence.graph.Edge;
 import org.apache.usergrid.persistence.graph.GraphManager;
 import org.apache.usergrid.persistence.graph.GraphManagerFactory;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
+import org.apache.usergrid.persistence.index.AliasedEntityIndex;
 import org.apache.usergrid.persistence.index.CandidateResults;
 import org.apache.usergrid.persistence.index.EntityIndexFactory;
 import org.apache.usergrid.persistence.index.IndexFig;
@@ -86,6 +86,9 @@ public class IndexServiceTest {
     public EntityIndexFactory entityIndexFactory;
 
     @Inject
+    public IndexLocationStrategyFactory indexLocationStrategyFactory;
+
+    @Inject
     public  IndexFig indexFig;
 
     public GraphManager graphManager;
@@ -172,13 +175,13 @@ public class IndexServiceTest {
 
         assertEquals(1, batches);
 
-        final ApplicationEntityIndex applicationEntityIndex =
-            entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex AliasedEntityIndex =
+            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         //query until the collection edge is available
         final SearchEdge collectionSearchEdge = CpNamingUtils.createSearchEdgeFromSource( collectionEdge );
 
-        final CandidateResults collectionResults = getResults( applicationEntityIndex, collectionSearchEdge,
+        final CandidateResults collectionResults = getResults( AliasedEntityIndex, collectionSearchEdge,
             SearchTypes.fromTypes( testEntity.getId().getType() ), 1);
 
         assertEquals( 1, collectionResults.size() );
@@ -189,7 +192,7 @@ public class IndexServiceTest {
         //query until the connection edge is available
         final SearchEdge connectionSearchEdge = CpNamingUtils.createSearchEdgeFromSource( connectionSearch );
 
-        final CandidateResults connectionResults = getResults( applicationEntityIndex, connectionSearchEdge,
+        final CandidateResults connectionResults = getResults( AliasedEntityIndex, connectionSearchEdge,
             SearchTypes.fromTypes( testEntity.getId().getType() ), 1 );
 
         assertEquals( 1, connectionResults.size() );
@@ -259,14 +262,14 @@ public class IndexServiceTest {
 
         assertEquals(expectedSize, batches);
 
-        final ApplicationEntityIndex applicationEntityIndex =
-            entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex AliasedEntityIndex =
+            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         final SearchEdge collectionSearchEdge = CpNamingUtils.createSearchEdgeFromSource( collectionEdge );
 
 
         //query until it's available
-        final CandidateResults collectionResults = getResults( applicationEntityIndex, collectionSearchEdge,
+        final CandidateResults collectionResults = getResults( AliasedEntityIndex, collectionSearchEdge,
             SearchTypes.fromTypes( testEntity.getId().getType() ), 1 );
 
         assertEquals( 1, collectionResults.size() );
@@ -278,7 +281,7 @@ public class IndexServiceTest {
 
 
         //query until it's available
-        final CandidateResults connectionResults = getResults( applicationEntityIndex, connectionSearchEdge,
+        final CandidateResults connectionResults = getResults( AliasedEntityIndex, connectionSearchEdge,
             SearchTypes.fromTypes( testEntity.getId().getType() ), 1 );
 
         assertEquals( 1, connectionResults.size() );
@@ -290,7 +293,7 @@ public class IndexServiceTest {
 
 
         //query until it's available
-        final CandidateResults lastConnectionResults = getResults( applicationEntityIndex, lastConnectionSearchEdge,
+        final CandidateResults lastConnectionResults = getResults( AliasedEntityIndex, lastConnectionSearchEdge,
             SearchTypes.fromTypes( testEntity.getId().getType() ),  1 );
 
         assertEquals( 1, lastConnectionResults.size() );
@@ -313,8 +316,8 @@ public class IndexServiceTest {
         ApplicationScope applicationScope =
             new ApplicationScopeImpl( new SimpleId( UUID.randomUUID(), "application" ) );
 
-        final ApplicationEntityIndex applicationEntityIndex =
-            entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex AliasedEntityIndex =
+            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         final GraphManager graphManager = graphManagerFactory.createEdgeManager( applicationScope );
 
@@ -341,7 +344,7 @@ public class IndexServiceTest {
         assertEquals( 1, indexOperationMessage.getDeIndexRequests().size() );
 
         //ensure that no edges remain
-        final CandidateResults connectionResultsEmpty = applicationEntityIndex.search( connectionSearchEdge,
+        final CandidateResults connectionResultsEmpty = AliasedEntityIndex.search( connectionSearchEdge,
             SearchTypes.fromTypes( "things" ),"select *",10,0 );
 
         assertEquals(0,connectionResultsEmpty.size());
@@ -353,8 +356,8 @@ public class IndexServiceTest {
         ApplicationScope applicationScope =
             new ApplicationScopeImpl( new SimpleId( UUID.randomUUID(), "application" ) );
 
-        final ApplicationEntityIndex applicationEntityIndex =
-            entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex AliasedEntityIndex =
+            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         final GraphManager graphManager = graphManagerFactory.createEdgeManager( applicationScope );
 
@@ -373,14 +376,14 @@ public class IndexServiceTest {
 
         //query until results are available for collections
         final SearchEdge collectionSearchEdge = CpNamingUtils.createSearchEdgeFromSource( collectionEdge );
-        getResults( applicationEntityIndex, collectionSearchEdge,
+        getResults( AliasedEntityIndex, collectionSearchEdge,
             SearchTypes.fromTypes( testEntity.getId().getType() ), 1 );
 
         for(int i = 0; i < edgeCount; i++) {
             //query until results are available for connections
 
             final SearchEdge connectionSearchEdge = CpNamingUtils.createSearchEdgeFromSource( connectionSearchEdges.get( i ) );
-            getResults( applicationEntityIndex, connectionSearchEdge, SearchTypes.fromTypes( testEntity.getId().getType() ),
+            getResults( AliasedEntityIndex, connectionSearchEdge, SearchTypes.fromTypes( testEntity.getId().getType() ),
                  1 );
         }
 
@@ -399,7 +402,7 @@ public class IndexServiceTest {
             assertEquals( 1, indexOperationMessage.getDeIndexRequests().size() );
 
             //ensure that no edges remain
-            final CandidateResults connectionResultsEmpty = applicationEntityIndex.search( connectionSearchEdge,
+            final CandidateResults connectionResultsEmpty = AliasedEntityIndex.search( connectionSearchEdge,
                 SearchTypes.fromTypes( "things" ),"select *",10,0 );
 
             assertEquals(0,connectionResultsEmpty.size());
@@ -419,8 +422,8 @@ public class IndexServiceTest {
         final EntityCollectionManager collectionManager =
             entityCollectionManagerFactory.createCollectionManager( applicationScope );
 
-        final ApplicationEntityIndex applicationEntityIndex =
-            entityIndexFactory.createApplicationEntityIndex( applicationScope );
+        final AliasedEntityIndex AliasedEntityIndex =
+            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         final Edge collectionEdge =
             createEntityandCollectionEdge( applicationScope, graphManager, testEntity );
@@ -437,12 +440,12 @@ public class IndexServiceTest {
 
         //query until results are available for collections
         final SearchEdge collectionSearchEdge = CpNamingUtils.createSearchEdgeFromSource( collectionEdge );
-        getResults( applicationEntityIndex, collectionSearchEdge, SearchTypes.fromTypes( testEntity.getId().getType() ),
+        getResults( AliasedEntityIndex, collectionSearchEdge, SearchTypes.fromTypes( testEntity.getId().getType() ),
             1 );
 
         //query until results are available for connections
         final SearchEdge connectionSearchEdge = CpNamingUtils.createSearchEdgeFromSource( connectionSearch );
-        getResults( applicationEntityIndex, connectionSearchEdge, SearchTypes.fromTypes( testEntity.getId().getType() ),
+        getResults( AliasedEntityIndex, connectionSearchEdge, SearchTypes.fromTypes( testEntity.getId().getType() ),
             1 );
 
         return connectionSearch;
@@ -492,7 +495,7 @@ public class IndexServiceTest {
     }
 
 
-    private CandidateResults getResults( final ApplicationEntityIndex applicationEntityIndex,
+    private CandidateResults getResults( final AliasedEntityIndex AliasedEntityIndex,
                                          final SearchEdge searchEdge, final SearchTypes searchTypes,
                                          final int expectedSize ) {
         final int attempts = 100;
@@ -500,7 +503,7 @@ public class IndexServiceTest {
         String ql = "select *";
         for ( int i = 0; i < attempts; i++ ) {
             final CandidateResults candidateResults =
-                applicationEntityIndex.search( searchEdge, searchTypes, ql , 100, 0 );
+                AliasedEntityIndex.search( searchEdge, searchTypes, ql , 100, 0 );
 
             if ( candidateResults.size() == expectedSize ) {
                 return candidateResults;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/core/src/test/java/org/apache/usergrid/persistence/PerformanceEntityRebuildIndexTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/PerformanceEntityRebuildIndexTest.java b/stack/core/src/test/java/org/apache/usergrid/persistence/PerformanceEntityRebuildIndexTest.java
index 318a378..560971f 100644
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/PerformanceEntityRebuildIndexTest.java
+++ b/stack/core/src/test/java/org/apache/usergrid/persistence/PerformanceEntityRebuildIndexTest.java
@@ -23,6 +23,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
+import org.apache.usergrid.corepersistence.index.IndexLocationStrategyFactory;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -37,7 +38,7 @@ import org.apache.usergrid.corepersistence.index.ReIndexRequestBuilder;
 import org.apache.usergrid.corepersistence.index.ReIndexService;
 import org.apache.usergrid.persistence.core.scope.ApplicationScope;
 import org.apache.usergrid.persistence.core.scope.ApplicationScopeImpl;
-import org.apache.usergrid.persistence.index.ApplicationEntityIndex;
+import org.apache.usergrid.persistence.index.AliasedEntityIndex;
 import org.apache.usergrid.persistence.index.EntityIndexFactory;
 import org.apache.usergrid.persistence.model.entity.Id;
 import org.apache.usergrid.persistence.model.entity.SimpleId;
@@ -329,11 +330,14 @@ public class PerformanceEntityRebuildIndexTest extends AbstractCoreIT {
     private void deleteIndex( UUID appUuid ) {
 
         Injector injector = SpringResource.getInstance().getBean( Injector.class );
+        IndexLocationStrategyFactory indexLocationStrategyFactory = injector.getInstance(IndexLocationStrategyFactory.class);
         EntityIndexFactory eif = injector.getInstance( EntityIndexFactory.class );
 
         Id appId = new SimpleId( appUuid, Schema.TYPE_APPLICATION );
         ApplicationScope scope = new ApplicationScopeImpl( appId );
-        ApplicationEntityIndex ei = eif.createApplicationEntityIndex( scope );
+        AliasedEntityIndex ei = eif.createEntityIndex(
+            indexLocationStrategyFactory.getIndexLocationStrategy(scope)
+        );
 
         ei.deleteApplication().toBlocking().lastOrDefault( null );
         app.refreshIndex();

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/3ebe8e9b/stack/corepersistence/queryindex/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/resources/log4j.properties b/stack/corepersistence/queryindex/src/test/resources/log4j.properties
index 5d5f7c2..43b833c 100644
--- a/stack/corepersistence/queryindex/src/test/resources/log4j.properties
+++ b/stack/corepersistence/queryindex/src/test/resources/log4j.properties
@@ -37,7 +37,7 @@ log4j.appender.stdout.layout.ConversionPattern=%d %p (%t) %c{1} - %m%n
 #log4j.logger.org.apache.cassandra.service.StorageProxy=DEBUG, stdout
 
 #Debug our queries
-log4j.logger.org.apache.usergrid.persistence.index.impl.EsApplicationEntityIndexImpl=DEBUG
+log4j.logger.org.apache.usergrid.persistence.index.impl.EsEntityIndexImpl=DEBUG
 #Debug our writes
 #log4j.logger.org.apache.usergrid.persistence.index.impl.EsIndexBufferConsumerImpl=DEBUG
 #Batch debugging