📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 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);
});
}