diff --git a/server/src/main/java/org/elasticsearch/repositories/blobstore/BlobStoreRepository.java b/server/src/main/java/org/elasticsearch/repositories/blobstore/BlobStoreRepository.java index a15d4891b27da..29d0e577faae8 100644 --- a/server/src/main/java/org/elasticsearch/repositories/blobstore/BlobStoreRepository.java +++ b/server/src/main/java/org/elasticsearch/repositories/blobstore/BlobStoreRepository.java @@ -1412,7 +1412,7 @@ private void initializeRepoGenerationTracking(ActionListener lis } existingListener.onFailure(e); }; - threadPool.generic().execute(() -> doGetRepositoryData( + threadPool.generic().execute(ActionRunnable.wrap( ActionListener.wrap(repoData -> clusterService.submitStateUpdateTask( "set initial safe repository generation [" + metadata.name() + "][" + repoData.getGenId() + "]", new ClusterStateUpdateTask() { @@ -1455,7 +1455,7 @@ public void clusterStateProcessed(String source, ClusterState oldState, ClusterS , metadata.name(), repoData.getGenId()); }); } - }), onFailure))); + }), onFailure), this::doGetRepositoryData)); } else { logger.trace("[{}] waiting for existing initialization of repository metadata generation in cluster state", metadata.name()); @@ -1485,9 +1485,9 @@ private void doGetRepositoryData(ActionListener listener) { final long generation; try { generation = latestIndexBlobId(); - } catch (IOException ioe) { + } catch (Exception e) { listener.onFailure( - new RepositoryException(metadata.name(), "Could not determine repository generation from root blobs", ioe)); + new RepositoryException(metadata.name(), "Could not determine repository generation from root blobs", e)); return; } genToLoad = latestKnownRepoGen.updateAndGet(known -> Math.max(known, generation));