Keep latest index always present. (#4655)

* Keep latest index always present.
  * Avoid TTL timer to remove latest index
  * Create a latest index even without any data.

Signed-off-by: Gao Hongtao <hanahmily@gmail.com>
This commit is contained in:
Gao Hongtao 2020-04-15 15:08:38 +08:00 committed by GitHub
parent ccb65ff27f
commit 12703fa54e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 7 additions and 5 deletions

View File

@ -54,19 +54,21 @@ public class HistoryDeleteEsDAO extends EsDAO implements IHistoryDeleteDAO {
List<String> indexes = client.retrievalIndexByAliases(model.getName()); List<String> indexes = client.retrievalIndexByAliases(model.getName());
List<String> prepareDeleteIndexes = new ArrayList<>(); List<String> prepareDeleteIndexes = new ArrayList<>();
List<String> leftIndices = new ArrayList<>();
for (String index : indexes) { for (String index : indexes) {
long timeSeries = TimeSeriesUtils.isolateTimeFromIndexName(index); long timeSeries = TimeSeriesUtils.isolateTimeFromIndexName(index);
if (deadline >= timeSeries) { if (deadline >= timeSeries) {
prepareDeleteIndexes.add(index); prepareDeleteIndexes.add(index);
} else {
leftIndices.add(index);
} }
} }
if (indexes.size() == prepareDeleteIndexes.size()) {
client.createIndex(TimeSeriesUtils.latestWriteIndexName(model));
}
for (String prepareDeleteIndex : prepareDeleteIndexes) { for (String prepareDeleteIndex : prepareDeleteIndexes) {
client.deleteByIndexName(prepareDeleteIndex); client.deleteByIndexName(prepareDeleteIndex);
} }
String latestIndex = TimeSeriesUtils.latestWriteIndexName(model);
if (!leftIndices.contains(latestIndex)) {
client.createIndex(latestIndex);
}
} }
} }