Trying to write new repository data over unfinished write repo is at – How to solve this Elasticsearch error

Opster Team

Aug-23, Version: 7.6-7.13

Briefly, this error occurs when Elasticsearch attempts to write new repository data while a previous write operation is still in progress. This could be due to concurrent snapshot operations or a network issue. To resolve this, you can try the following: 1) Ensure only one snapshot operation is running at a time. 2) Check network connectivity and stability. 3) If the error persists, consider deleting and recreating the repository, but ensure you have a backup of your data before doing so.

This guide will help you check for common problems that cause the log ” Trying to write new repository data over unfinished write; repo [{}] is at ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: repositories, blobstore, repository.

Log Context

Log “Trying to write new repository data over unfinished write; repo [{}] is at ” classname is BlobStoreRepository.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :

                    final RepositoryMetadata meta = getRepoMetadata(currentState);
                    final String repoName = metadata.name();
                    final long genInState = meta.generation();
                    final boolean uninitializedMeta = meta.generation() == RepositoryData.UNKNOWN_REPO_GEN || bestEffortConsistency;
                    if (uninitializedMeta == false && meta.pendingGeneration() != genInState) {
                        logger.info("Trying to write new repository data over unfinished write; repo [{}] is at " +
                            "safe generation [{}] and pending generation [{}]"; meta.name(); genInState; meta.pendingGeneration());
                    }
                    assert expectedGen == RepositoryData.EMPTY_REPO_GEN || uninitializedMeta
                        || expectedGen == meta.generation() :
                        "Expected non-empty generation [" + expectedGen + "] does not match generation tracked in [" + meta + "]";

 

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?