From 0a988ad8f78e6f0d6667d161e6433488ca4bdac0 Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Thu, 10 Jul 2014 17:25:47 +0200 Subject: [PATCH] [STORE] Treat reading past EOF as an corrupted index when we fail to read segment infos --- src/main/java/org/elasticsearch/index/store/Store.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/elasticsearch/index/store/Store.java b/src/main/java/org/elasticsearch/index/store/Store.java index eeaec2af51f..eb66b929d3c 100644 --- a/src/main/java/org/elasticsearch/index/store/Store.java +++ b/src/main/java/org/elasticsearch/index/store/Store.java @@ -45,10 +45,7 @@ import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.index.store.distributor.Distributor; import org.elasticsearch.index.store.support.ForceSyncDirectory; -import java.io.Closeable; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; +import java.io.*; import java.nio.file.NoSuchFileException; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; @@ -396,6 +393,9 @@ public class Store extends AbstractIndexShardComponent implements CloseableIndex // no segments file -- can't read metadata logger.trace("Can't read segment infos", ex); return ImmutableMap.of(); + } catch (EOFException eof) { + // TODO this should be caught by lucene - EOF is almost certainly an index corruption + throw new CorruptIndexException("Read past EOF while reading segment infos", eof); } Version maxVersion = Version.LUCENE_3_0; // we don't know which version was used to write so we take the max version. Set added = new HashSet<>();