Skip to content

Commit a8c931c

Browse files
ESMockAPIBasedRepositoryIntegTestCase Executor Service
1 parent 12a074b commit a8c931c

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

test/framework/src/main/java/org/elasticsearch/repositories/blobstore/ESMockAPIBasedRepositoryIntegTestCase.java

+11-11
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.sun.net.httpserver.HttpHandler;
2323
import com.sun.net.httpserver.HttpServer;
2424
import org.apache.http.HttpStatus;
25-
import org.apache.logging.log4j.LogManager;
2625
import org.apache.logging.log4j.Logger;
2726
import org.apache.logging.log4j.message.ParameterizedMessage;
2827
import org.elasticsearch.action.admin.indices.forcemerge.ForceMergeResponse;
@@ -32,6 +31,8 @@
3231
import org.elasticsearch.common.bytes.BytesReference;
3332
import org.elasticsearch.common.network.InetAddresses;
3433
import org.elasticsearch.common.settings.Settings;
34+
import org.elasticsearch.common.util.concurrent.EsExecutors;
35+
import org.elasticsearch.common.util.concurrent.ThreadContext;
3536
import org.elasticsearch.mocksocket.MockHttpServer;
3637
import org.elasticsearch.test.BackgroundIndexer;
3738
import org.junit.After;
@@ -46,6 +47,9 @@
4647
import java.util.List;
4748
import java.util.Map;
4849
import java.util.concurrent.ConcurrentHashMap;
50+
import java.util.concurrent.ExecutorService;
51+
import java.util.concurrent.ThreadFactory;
52+
import java.util.concurrent.TimeUnit;
4953
import java.util.concurrent.atomic.AtomicInteger;
5054
import java.util.stream.Collectors;
5155

@@ -71,21 +75,16 @@ protected interface BlobStoreHttpHandler extends HttpHandler {
7175
private static final byte[] BUFFER = new byte[1024];
7276

7377
private static HttpServer httpServer;
78+
private static ExecutorService executorService;
7479
private Map<String, HttpHandler> handlers;
7580

76-
private static final Logger log = LogManager.getLogger();
77-
7881
@BeforeClass
7982
public static void startHttpServer() throws Exception {
8083
httpServer = MockHttpServer.createHttp(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0);
81-
httpServer.setExecutor(r -> {
82-
Thread runThread = new Thread(r);
83-
runThread.setUncaughtExceptionHandler((t, e) -> {
84-
log.error("Error in execution on mock http server IO thread", e);
85-
Thread.currentThread().getUncaughtExceptionHandler().uncaughtException(t, e);
86-
});
87-
runThread.start();
88-
});
84+
ThreadFactory threadFactory = EsExecutors.daemonThreadFactory("[" + ESMockAPIBasedRepositoryIntegTestCase.class.getName() + "]");
85+
executorService = EsExecutors.newScaling(ESMockAPIBasedRepositoryIntegTestCase.class.getName(), 0, 2, 60, TimeUnit.SECONDS,
86+
threadFactory, new ThreadContext(Settings.EMPTY));
87+
httpServer.setExecutor(executorService);
8988
httpServer.start();
9089
}
9190

@@ -98,6 +97,7 @@ public void setUpHttpServer() {
9897
@AfterClass
9998
public static void stopHttpServer() {
10099
httpServer.stop(0);
100+
executorService.shutdown();
101101
httpServer = null;
102102
}
103103

x-pack/plugin/repository-encrypted/src/main/java/org/elasticsearch/repositories/encrypted/EncryptedRepository.java

+2
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,8 @@ public void finalizeSnapshot(SnapshotId snapshotId, ShardGenerations shardGenera
263263
Version repositoryMetaVersion, ActionListener<SnapshotInfo> listener) {
264264
validateRepositoryPasswordHash(userMetadata, listener::onFailure);
265265
if (userMetadata != null && userMetadata.containsKey(PASSWORD_HASH_RESERVED_USER_METADATA_KEY)) {
266+
// remove the repository password hash from the snapshot metadata, after all repository password verifications
267+
// have completed, so that the hash is not displayed in the API response to the user
266268
userMetadata.remove(PASSWORD_HASH_RESERVED_USER_METADATA_KEY);
267269
}
268270
super.finalizeSnapshot(snapshotId, shardGenerations, startTime, failure, totalShards, shardFailures, repositoryStateId,

x-pack/plugin/repository-encrypted/src/main/java/org/elasticsearch/repositories/encrypted/EncryptedRepositoryPlugin.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,13 @@ public Repository create(RepositoryMetaData metaData, Function<String, Repositor
9494
" must not be equal to " + REPOSITORY_TYPE_NAME);
9595
}
9696
Repository.Factory factory = typeLookup.apply(delegateType);
97+
if (null == factory) {
98+
throw new IllegalArgumentException("Unsupported delegate type " + DELEGATE_TYPE.getKey());
99+
}
97100
Repository delegatedRepository = factory.create(new RepositoryMetaData(metaData.name(),
98101
delegateType, metaData.settings()));
99102
if (false == (delegatedRepository instanceof BlobStoreRepository) || delegatedRepository instanceof EncryptedRepository) {
100-
throw new IllegalArgumentException("Unsupported type " + DELEGATE_TYPE.getKey());
103+
throw new IllegalArgumentException("Unsupported delegate type " + DELEGATE_TYPE.getKey());
101104
}
102105
final char[] repositoryPassword = cachedRepositoryPasswords.get(metaData.name());
103106
if (repositoryPassword == null) {

0 commit comments

Comments
 (0)