From 934278c042d29136b220c25a01f0410162614204 Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Tue, 18 Sep 2018 15:26:45 +0200 Subject: [PATCH] Ensure realtime `_get` and `_termvectors` don't run on the network thread The change in #27500 introduces this regression that causes `_get` and `_term_vector` actions to run on the network thread if the realtime flag is set. This fixes the issue by delegating to the super method forking on the corresponding threadpool. --- .../java/org/elasticsearch/action/get/TransportGetAction.java | 2 +- .../action/termvectors/TransportTermVectorsAction.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java b/server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java index 0aeacb38ffa56..63d3d30e1e27f 100644 --- a/server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java +++ b/server/src/main/java/org/elasticsearch/action/get/TransportGetAction.java @@ -81,7 +81,7 @@ protected void asyncShardOperation(GetRequest request, ShardId shardId, ActionLi IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex()); IndexShard indexShard = indexService.getShard(shardId.id()); if (request.realtime()) { // we are not tied to a refresh cycle here anyway - listener.onResponse(shardOperation(request, shardId)); + super.asyncShardOperation(request, shardId, listener); } else { indexShard.awaitShardSearchActive(b -> { try { diff --git a/server/src/main/java/org/elasticsearch/action/termvectors/TransportTermVectorsAction.java b/server/src/main/java/org/elasticsearch/action/termvectors/TransportTermVectorsAction.java index a259f5b828a05..d2a6055bbe75a 100644 --- a/server/src/main/java/org/elasticsearch/action/termvectors/TransportTermVectorsAction.java +++ b/server/src/main/java/org/elasticsearch/action/termvectors/TransportTermVectorsAction.java @@ -90,7 +90,7 @@ protected void asyncShardOperation(TermVectorsRequest request, ShardId shardId, IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex()); IndexShard indexShard = indexService.getShard(shardId.id()); if (request.realtime()) { // it's a realtime request which is not subject to refresh cycles - listener.onResponse(shardOperation(request, shardId)); + super.asyncShardOperation(request, shardId, listener); } else { indexShard.awaitShardSearchActive(b -> { try {