- if (Shard.DEFAULT_NAME.equals(shardName)) {
- ActorPath defaultShardPath = localShards.get(shardName);
- if(defaultShardPath == null){
- throw new IllegalStateException("local default shard not found");
+ List<String> members =
+ configuration.getMembersFromShardName(shardName);
+
+ for(String memberName : members) {
+ if (memberName.equals(cluster.getCurrentMemberName())) {
+ // This is a local shard
+ ActorPath shardPath = localShards.get(shardName);
+ // FIXME: This check may be redundant
+ if (shardPath == null) {
+ getSender()
+ .tell(new PrimaryNotFound(shardName), getSelf());
+ return;
+ }
+ getSender().tell(new PrimaryFound(shardPath.toString()),
+ getSelf());
+ return;
+ } else {
+ Address address = memberNameToAddress.get(shardName);
+ if(address != null){
+ String path =
+ address.toString() + "/user/" + getShardActorName(
+ memberName, shardName);
+ getSender().tell(new PrimaryFound(path), getSelf());
+ }
+
+