版本: 6.8-8.9
简而言之,当 Elasticsearch 无法从事务日志(translog)的空快照中恢复数据时,会出现此错误。这可能是由于 translog 文件损坏或删除导致的。要解决此问题,您可以尝试以下方法:1) 重启 Elasticsearch 节点,这可能有助于恢复 translog。2) 如果问题仍然存在,您可能需要执行完整的集群重启。3) 如果数据不关键,您可以删除损坏的 translog 文件,Elasticsearch 将重建它们。但是,这可能会导致数据丢失。
日志上下文 #
日志 “failed to recover from empty translog snapshot” 的类名是 ReadOnlyEngine.java。 我们从 Elasticsearch 源代码中提取了以下内容,以供那些寻求深入上下文的人参考:
try (ReleasableLock lock = readLock.acquire()) {
ensureOpen();
try {
translogRecoveryRunner.run(this; Translog.Snapshot.EMPTY);
} catch (final Exception e) {
throw new EngineException(shardId; "failed to recover from empty translog snapshot"; e);
}
}
l.onResponse(null);
});
}





