From a279f2e8c6395515fb8b7cf724684bc2bcb4d363 Mon Sep 17 00:00:00 2001 From: javanna Date: Thu, 14 Aug 2014 17:01:12 +0200 Subject: [PATCH] Internal: made it possible to disable the main transport handler in TransportShardSingleOperationAction TransportShardSingleOperationAction is currently subclassed by different transport actions. Some of them are internal only, meaning that their execution will take place only in the same node where their parent execution took place. That means that their main transport handler doesn't need to be registered, the only transport handler that's needed is the shard level one. Added `isSubAction` method (defaults to false) to the parent class that tells whether the action is a main one or a subaction, used to decide whether we need to register the main transport handler. Closes #7285 --- .../action/get/TransportShardMultiGetAction.java | 5 +++++ .../TransportShardMultiPercolateAction.java | 5 +++++ .../shard/TransportShardSingleOperationAction.java | 13 ++++++++++++- .../TransportSingleShardMultiTermsVectorAction.java | 5 +++++ .../org/elasticsearch/transport/ActionNames.java | 6 +++--- 5 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java b/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java index 7e214d7babc..2638aa9f0f8 100644 --- a/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java +++ b/src/main/java/org/elasticsearch/action/get/TransportShardMultiGetAction.java @@ -57,6 +57,11 @@ public class TransportShardMultiGetAction extends TransportShardSingleOperationA this.realtime = settings.getAsBoolean("action.get.realtime", true); } + @Override + protected boolean isSubAction() { + return true; + } + @Override protected String executor() { return ThreadPool.Names.GET; diff --git a/src/main/java/org/elasticsearch/action/percolate/TransportShardMultiPercolateAction.java b/src/main/java/org/elasticsearch/action/percolate/TransportShardMultiPercolateAction.java index 0da9972c4b2..c3b3cf7326f 100644 --- a/src/main/java/org/elasticsearch/action/percolate/TransportShardMultiPercolateAction.java +++ b/src/main/java/org/elasticsearch/action/percolate/TransportShardMultiPercolateAction.java @@ -59,6 +59,11 @@ public class TransportShardMultiPercolateAction extends TransportShardSingleOper this.percolatorService = percolatorService; } + @Override + protected boolean isSubAction() { + return true; + } + @Override protected String executor() { return ThreadPool.Names.PERCOLATE; diff --git a/src/main/java/org/elasticsearch/action/support/single/shard/TransportShardSingleOperationAction.java b/src/main/java/org/elasticsearch/action/support/single/shard/TransportShardSingleOperationAction.java index 980f405e637..b7f908b4d81 100644 --- a/src/main/java/org/elasticsearch/action/support/single/shard/TransportShardSingleOperationAction.java +++ b/src/main/java/org/elasticsearch/action/support/single/shard/TransportShardSingleOperationAction.java @@ -67,10 +67,21 @@ public abstract class TransportShardSingleOperationAction listener) { new AsyncSingleAction(request, listener).start(); diff --git a/src/main/java/org/elasticsearch/action/termvector/TransportSingleShardMultiTermsVectorAction.java b/src/main/java/org/elasticsearch/action/termvector/TransportSingleShardMultiTermsVectorAction.java index 20af2590c42..a28b271cc49 100644 --- a/src/main/java/org/elasticsearch/action/termvector/TransportSingleShardMultiTermsVectorAction.java +++ b/src/main/java/org/elasticsearch/action/termvector/TransportSingleShardMultiTermsVectorAction.java @@ -49,6 +49,11 @@ public class TransportSingleShardMultiTermsVectorAction extends TransportShardSi this.indicesService = indicesService; } + @Override + protected boolean isSubAction() { + return true; + } + @Override protected String executor() { return ThreadPool.Names.GET; diff --git a/src/main/java/org/elasticsearch/transport/ActionNames.java b/src/main/java/org/elasticsearch/transport/ActionNames.java index 46cca47c29d..f6724a458a5 100644 --- a/src/main/java/org/elasticsearch/transport/ActionNames.java +++ b/src/main/java/org/elasticsearch/transport/ActionNames.java @@ -230,7 +230,7 @@ final class ActionNames { addShardAction(ExplainAction.NAME, "explain", builder); addShardAction(GetAction.NAME, "get", builder); builder.put(MultiGetAction.NAME, "mget"); - addShardAction(MultiGetAction.NAME + "[shard]", "mget/shard", builder); + builder.put(MultiGetAction.NAME + "[shard][s]", "mget/shard/s"); builder.put(GetIndexedScriptAction.NAME, "getIndexedScript"); builder.put(PutIndexedScriptAction.NAME, "putIndexedScript"); @@ -239,12 +239,12 @@ final class ActionNames { builder.put(MoreLikeThisAction.NAME, "mlt"); builder.put(MultiPercolateAction.NAME, "mpercolate"); - addShardAction(MultiPercolateAction.NAME + "[shard]", "mpercolate/shard", builder); + builder.put(MultiPercolateAction.NAME + "[shard][s]", "mpercolate/shard/s"); builder.put(MultiSearchAction.NAME, "msearch"); builder.put(MultiTermVectorsAction.NAME, "mtv"); - addShardAction(MultiTermVectorsAction.NAME + "[shard]", "mtv/shard", builder); + builder.put(MultiTermVectorsAction.NAME + "[shard][s]", "mtv/shard/s"); addShardAction(PercolateAction.NAME, "percolate", builder);