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

版本: 7.8-8.9

简而言之,当Elasticsearch尝试删除指定存储库中不存在的快照时,就会出现此错误。这可能是由于节点之间的通信错误或同步问题导致的。要解决此问题,您可以首先使用GET snapshot API验证快照是否存在。如果快照不存在,可以忽略该错误。如果快照确实存在,请尝试再次删除它。如果错误仍然存在,请检查节点的健康状况,并确保它们已正确同步。

日志上下文 #

日志"Attempting to remove non-existent snapshots {} from repository data"的类名是 RepositoryData.java。 我们从Elasticsearch源代码中提取了以下内容,以便那些寻求深入上下文的人参考:

.filter(Predicate.not(snapshots::contains))
.collect(Collectors.toMap(SnapshotId::getUUID; Function.identity()));

if (newSnapshotIds.size() != snapshotIds.size() - snapshots.size()) {
    final CollectionnotFound = new HashSet<>(snapshots);
    notFound.removeAll(snapshotIds.values());
    throw new ResourceNotFoundException("Attempting to remove non-existent snapshots {} from repository data"; notFound);
}

final MapnewSnapshotsDetails = new HashMap<>(snapshotsDetails);
for (SnapshotId snapshotId : snapshots) {
    newSnapshotsDetails.remove(snapshotId.getUUID());
}