Affects Version/s: 4.3
Fix Version/s: None
If none of the replicas for a shard are available, the "no servers hosting shard" exception is thrown. The code suggests that it will tell you which shard is available, but it does not. In fact, it can never do so.
The reason is that the code at that point doesn't actually know the shard name or ID. The "shard" string passed to HttpShardHandler#submit method is "the | delimited list of equivalent servers". But... that list, by definition, is empty if all the servers are down for a shard.
What I want to see is the actual shard name/ID, like "shard2".
Here's the shard.info section from a response where the replicas for a second shard of a two-shard cluster have all been intentionally killed.
The shards.info section for the same request after the two killed replicas are restarted:
Here's the cluster state for that cluster when all four nodes are up: