--- title: "已有快照正在运行 - 如何解决此 Elasticsearch 异常" date: 2026-02-10 lastmod: 2026-02-10 description: "当 Elasticsearch 快照操作已在进行中且又启动了另一个快照操作时,会触发此错误。Elasticsearch 不允许并发快照操作以防止数据不一致。" tags: ["快照", "异常处理", "并发控制"] summary: " 版本: 6.8-7.17 简要来说,当 Elasticsearch 快照操作已在进行中,并且又启动了另一个快照操作时,就会出现此错误。Elasticsearch 不允许并发快照操作,以防止数据不一致。要解决此问题,您可以等待当前快照操作完成后再启动另一个快照操作,或者可以使用删除快照 API 取消正在进行的快照操作,然后启动新的快照操作。但是请注意,取消快照操作可能会导致备份不完整。 日志上下文 # 日志 “a snapshot is already running” 的类名是 SnapshotsService.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入背景的人参考: if (snapshots != null && snapshots.asStream() .anyMatch( entry -> (entry.state() == State.INIT && initializingSnapshots.contains(entry.snapshot()) == false) == false)) { throw new ConcurrentSnapshotExecutionException(repositoryName; snapshotName; " a snapshot is already running"); } // 在 clusterStateProcessed 中处理 newSnapshot indices = Arrays.asList(indexNameExpressionResolver.concreteIndexNames(currentState; request)); final ListdataStreams = indexNameExpressionResolver.dataStreamNames( " --- > **版本:** 6.8-7.17 简要来说,当 Elasticsearch 快照操作已在进行中,并且又启动了另一个快照操作时,就会出现此错误。Elasticsearch 不允许并发快照操作,以防止数据不一致。要解决此问题,您可以等待当前快照操作完成后再启动另一个快照操作,或者可以使用删除快照 API 取消正在进行的快照操作,然后启动新的快照操作。但是请注意,取消快照操作可能会导致备份不完整。 ## 日志上下文 日志 "a snapshot is already running" 的类名是 [SnapshotsService.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入背景的人参考: ```java if (snapshots != null && snapshots.asStream() .anyMatch( entry -> (entry.state() == State.INIT && initializingSnapshots.contains(entry.snapshot()) == false) == false)) { throw new ConcurrentSnapshotExecutionException(repositoryName; snapshotName; " a snapshot is already running"); } // 在 clusterStateProcessed 中处理 newSnapshot indices = Arrays.asList(indexNameExpressionResolver.concreteIndexNames(currentState; request)); final ListdataStreams = indexNameExpressionResolver.dataStreamNames( ```