diff --git a/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/ElasticLastShardRouter.java b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/ElasticLastShardRouter.java new file mode 100644 index 000000000..5aaa6f9cc --- /dev/null +++ b/search-services/alfresco-search/src/main/java/org/alfresco/solr/tracker/ElasticLastShardRouter.java @@ -0,0 +1,33 @@ +package org.alfresco.solr.tracker; + +import org.alfresco.solr.client.Acl; +import org.alfresco.solr.client.Node; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Routes a document only if the shardInstance matches the provided shardId + */ +public class ElasticLastShardRouter implements DocRouter { + + protected final static Logger log = LoggerFactory.getLogger(ExplicitRouter.class); + private final DBIDRouter fallback = new DBIDRouter(); + + public ElasticLastShardRouter() { + } + + @Override + public boolean routeAcl(int shardCount, int shardInstance, Acl acl) { + //all acls go to all shards. + return true; + } + + @Override + public boolean routeNode(int shardCount, int shardInstance, Node node) { + + + int explicitShardId = node.getExplicitShardId(); + return explicitShardId == shardInstance; + + } +}