From a4300033d823dfcecf47a2178d0f999dde8604ec Mon Sep 17 00:00:00 2001 From: 17033293 Date: Mon, 3 Jul 2017 09:20:42 +0800 Subject: [PATCH 1/4] Method mentioned outside --- .../org/elasticsearch/transport/netty4/Netty4Transport.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Transport.java b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Transport.java index 5e12116f00ab0..5190cc0541edc 100644 --- a/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Transport.java +++ b/modules/transport-netty4/src/main/java/org/elasticsearch/transport/netty4/Netty4Transport.java @@ -155,10 +155,11 @@ protected void doStart() { final Netty4OpenChannelsHandler openChannels = new Netty4OpenChannelsHandler(logger); this.serverOpenChannels = openChannels; // loop through all profiles and start them up, special handling for default one + Settings fallbackSettings = createFallbackSettings(); for (Map.Entry entry : buildProfileSettings().entrySet()) { // merge fallback settings with default settings with profile settings so we have complete settings with default values final Settings settings = Settings.builder() - .put(createFallbackSettings()) + .put(fallbackSettings) .put(entry.getValue()).build(); createServerBootstrap(entry.getKey(), settings); bindServer(entry.getKey(), settings); From 0aaafe15e0ff133accde1deafe7153bd3ea3e84a Mon Sep 17 00:00:00 2001 From: 17033293 Date: Thu, 3 Aug 2017 15:09:32 +0800 Subject: [PATCH 2/4] Check header --- .../elasticsearch/common/util/concurrent/ThreadContext.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java b/core/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java index 1ce119636f734..95c08e8889857 100644 --- a/core/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java +++ b/core/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java @@ -407,11 +407,10 @@ private ThreadContextStruct putHeaders(Map headers) { if (headers.isEmpty()) { return this; } else { - final Map newHeaders = new HashMap<>(); + final Map newHeaders = new HashMap<>(this.requestHeaders); for (Map.Entry entry : headers.entrySet()) { putSingleHeader(entry.getKey(), entry.getValue(), newHeaders); } - newHeaders.putAll(this.requestHeaders); return new ThreadContextStruct(newHeaders, responseHeaders, transientHeaders, isSystemContext); } } From 1018a114972dd56a8851dc0b10490801b1e43dd5 Mon Sep 17 00:00:00 2001 From: hanbj Date: Fri, 4 Aug 2017 09:54:37 +0800 Subject: [PATCH 3/4] Calculate once --- .../java/org/elasticsearch/threadpool/ExecutorBuilder.java | 4 ++-- .../org/elasticsearch/threadpool/FixedExecutorBuilder.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/threadpool/ExecutorBuilder.java b/core/src/main/java/org/elasticsearch/threadpool/ExecutorBuilder.java index 314eb1df71a4b..744f2c3230434 100644 --- a/core/src/main/java/org/elasticsearch/threadpool/ExecutorBuilder.java +++ b/core/src/main/java/org/elasticsearch/threadpool/ExecutorBuilder.java @@ -47,9 +47,9 @@ protected static String settingsKey(final String prefix, final String key) { return String.join(".", prefix, key); } - protected int applyHardSizeLimit(final Settings settings, final String name) { + protected int applyHardSizeLimit(final int size, final String name) { if (name.equals(ThreadPool.Names.BULK) || name.equals(ThreadPool.Names.INDEX)) { - return 1 + EsExecutors.numberOfProcessors(settings); + return size + 1; } else { return Integer.MAX_VALUE; } diff --git a/core/src/main/java/org/elasticsearch/threadpool/FixedExecutorBuilder.java b/core/src/main/java/org/elasticsearch/threadpool/FixedExecutorBuilder.java index 9bf9569d1ea24..56d82fcea820e 100644 --- a/core/src/main/java/org/elasticsearch/threadpool/FixedExecutorBuilder.java +++ b/core/src/main/java/org/elasticsearch/threadpool/FixedExecutorBuilder.java @@ -69,7 +69,7 @@ public FixedExecutorBuilder(final Settings settings, final String name, final in new Setting<>( sizeKey, s -> Integer.toString(size), - s -> Setting.parseInt(s, 1, applyHardSizeLimit(settings, name), sizeKey), + s -> Setting.parseInt(s, 1, applyHardSizeLimit(size, name), sizeKey), Setting.Property.NodeScope); final String queueSizeKey = settingsKey(prefix, "queue_size"); this.queueSizeSetting = From f0b84c4a95c3009964cc18e83b6ee6988144fb3f Mon Sep 17 00:00:00 2001 From: hanbj Date: Fri, 4 Aug 2017 11:58:12 +0800 Subject: [PATCH 4/4] when writeTo check defaultHeaders --- .../common/util/concurrent/ThreadContext.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java b/core/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java index 95c08e8889857..03a66fbe17646 100644 --- a/core/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java +++ b/core/src/main/java/org/elasticsearch/common/util/concurrent/ThreadContext.java @@ -480,12 +480,17 @@ private ThreadContextStruct copyHeaders(Iterable> head } private void writeTo(StreamOutput out, Map defaultHeaders) throws IOException { + assert defaultHeaders != null; final Map requestHeaders; if (defaultHeaders.isEmpty()) { requestHeaders = this.requestHeaders; } else { - requestHeaders = new HashMap<>(defaultHeaders); - requestHeaders.putAll(this.requestHeaders); + requestHeaders = new HashMap<>(this.requestHeaders); + for (Map.Entry header : defaultHeaders.entrySet()) { + if (requestHeaders.putIfAbsent(header.getKey(), header.getValue()) != null) { + throw new IllegalArgumentException("value for key [" + header.getKey() + "] already present"); + } + } } out.writeVInt(requestHeaders.size());