Skip to content

Commit 40301f2

Browse files
committed
Retry real-time gets for AlreadyClosedException
1 parent 75431f7 commit 40301f2

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import org.apache.logging.log4j.LogManager;
1313
import org.apache.logging.log4j.Logger;
14+
import org.apache.lucene.store.AlreadyClosedException;
1415
import org.elasticsearch.ElasticsearchException;
1516
import org.elasticsearch.ExceptionsHelper;
1617
import org.elasticsearch.action.ActionListener;
@@ -230,7 +231,9 @@ private void getFromTranslog(
230231
final var retryingListener = listener.delegateResponse((l, e) -> {
231232
final var cause = ExceptionsHelper.unwrapCause(e);
232233
logger.debug("get_from_translog failed", cause);
233-
if (cause instanceof ShardNotFoundException || cause instanceof IndexNotFoundException) {
234+
if (cause instanceof ShardNotFoundException
235+
|| cause instanceof IndexNotFoundException
236+
|| cause instanceof AlreadyClosedException) {
234237
logger.debug("retrying get_from_translog");
235238
observer.waitForNextChange(new ClusterStateObserver.Listener() {
236239
@Override

server/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
import org.apache.logging.log4j.LogManager;
1313
import org.apache.logging.log4j.Logger;
14+
import org.apache.lucene.store.AlreadyClosedException;
1415
import org.elasticsearch.ElasticsearchException;
1516
import org.elasticsearch.ExceptionsHelper;
1617
import org.elasticsearch.action.ActionListener;
@@ -211,7 +212,9 @@ private void shardMultiGetFromTranslog(
211212
final var retryingListener = listener.delegateResponse((l, e) -> {
212213
final var cause = ExceptionsHelper.unwrapCause(e);
213214
logger.debug("mget_from_translog[shard] failed", cause);
214-
if (cause instanceof ShardNotFoundException || cause instanceof IndexNotFoundException) {
215+
if (cause instanceof ShardNotFoundException
216+
|| cause instanceof IndexNotFoundException
217+
|| cause instanceof AlreadyClosedException) {
215218
logger.debug("retrying mget_from_translog[shard]");
216219
observer.waitForNextChange(new ClusterStateObserver.Listener() {
217220
@Override

0 commit comments

Comments
 (0)