Cannot restore incompatible snapshot – How to solve this Elasticsearch exception

Opster Team

August-23, Version: 6.8-7.3

Before you dig into reading this guide, have you tried asking OpsGPT what this log means? You’ll receive a customized analysis of your log.

Try OpsGPT now for step-by-step guidance and tailored insights into your Elasticsearch operation.

Briefly, this error occurs when you try to restore a snapshot that was created with a different, usually older, version of Elasticsearch. The snapshot and the Elasticsearch version you’re trying to restore it to are incompatible. To resolve this issue, you can either upgrade your Elasticsearch to the version compatible with the snapshot, or create a new snapshot with the current version of Elasticsearch. Alternatively, you can restore the snapshot to a compatible Elasticsearch version, reindex the data, and then take a new snapshot to restore on the current version.

For a complete solution to your to your search operation, try for free AutoOps for Elasticsearch & OpenSearch . With AutoOps and Opster’s proactive support, you don’t have to worry about your search operation – we take charge of it. Get improved performance & stability with less hardware.

This guide will help you check for common problems that cause the log ” cannot restore incompatible snapshot ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: snapshot, restore.

Log Context

Log “cannot restore incompatible snapshot” class name is RestoreService.java. We extracted the following from Elasticsearch source code for those seeking an in-depth context :

 final RepositoryData repositoryData = repository.getRepositoryData();
 final String snapshotName = request.snapshot();
 final Optional incompatibleSnapshotId =
 repositoryData.getIncompatibleSnapshotIds().stream().filter(s -> snapshotName.equals(s.getName())).findFirst();
 if (incompatibleSnapshotId.isPresent()) {
 throw new SnapshotRestoreException(repositoryName; snapshotName; "cannot restore incompatible snapshot");
 }
 final Optional matchingSnapshotId = repositoryData.getSnapshotIds().stream()
 .filter(s -> snapshotName.equals(s.getName())).findFirst();
 if (matchingSnapshotId.isPresent() == false) {
 throw new SnapshotRestoreException(repositoryName; snapshotName; "snapshot does not exist");

 

How helpful was this guide?

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?