--- title: "源节点已取消恢复 – 如何解决此 Elasticsearch 异常" date: 2026-02-10 lastmod: 2026-02-10 description: "在分片恢复过程中,源节点取消数据传输操作导致的 Elasticsearch 错误及其解决方案" tags: ["分片恢复", "节点故障", "网络问题"] summary: " 版本: 7.16-8.9 简而言之,当源节点在分片恢复过程中向目标节点传输数据时取消操作,就会发生此错误。这可能是由于源节点宕机、网络问题或恢复过程耗时过长造成的。要解决此问题,可以尝试在源节点宕机时重启它,检查并修复网络连接问题,或者增加 Elasticsearch 中的恢复超时设置。此外,确保集群有足够的资源来处理恢复过程。 日志上下文 # 日志"source has canceled the recovery"的类名是 PeerRecoveryTargetService.java. 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: } if (cause instanceof CancellableThreads.ExecutionCancelledException) { // this can also come from the source wrapped in a RemoteTransportException onGoingRecoveries.failRecovery( recoveryId; new RecoveryFailedException(request; "source has canceled the recovery"; cause); false ); return; } if (cause instanceof RecoveryEngineException) { " --- > **版本:** 7.16-8.9 简而言之,当源节点在分片恢复过程中向目标节点传输数据时取消操作,就会发生此错误。这可能是由于源节点宕机、网络问题或恢复过程耗时过长造成的。要解决此问题,可以尝试在源节点宕机时重启它,检查并修复网络连接问题,或者增加 Elasticsearch 中的恢复超时设置。此外,确保集群有足够的资源来处理恢复过程。 日志上下文 ----------- 日志"source has canceled the recovery"的类名是 [PeerRecoveryTargetService.java.](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人参考: ```java } if (cause instanceof CancellableThreads.ExecutionCancelledException) { // this can also come from the source wrapped in a RemoteTransportException onGoingRecoveries.failRecovery( recoveryId; new RecoveryFailedException(request; "source has canceled the recovery"; cause); false ); return; } if (cause instanceof RecoveryEngineException) { ```