private Store.MetadataSnapshot getMetadataSnapshotOrEmpty(IndexShard replica)
     throws IOException {
   Store.MetadataSnapshot result;
   try {
     result = replica.snapshotStoreMetadata();
   } catch (IndexNotFoundException e) {
     // OK!
     result = Store.MetadataSnapshot.EMPTY;
   } catch (IOException e) {
     logger.warn("failed read store, treating as empty", e);
     result = Store.MetadataSnapshot.EMPTY;
   }
   return result;
 }