Fix datanode startup (#18577)

* reuse executor service to avoid multiple registrations of metrics

* add PREPARED preflight config state
This commit is contained in:
Matthias Oesterheld
2024-03-12 14:40:38 +01:00
committed by GitHub
parent 2a66c130fe
commit 1c5ebd2742
4 changed files with 16 additions and 17 deletions

View File

@@ -93,6 +93,7 @@ public class JerseyService extends AbstractIdleService {
private final TLSProtocolsConfiguration tlsConfiguration;
private HttpServer apiHttpServer = null;
private final ExecutorService executorService;
@Inject
public JerseyService(final Configuration configuration,
@@ -110,6 +111,10 @@ public class JerseyService extends AbstractIdleService {
this.metricRegistry = requireNonNull(metricRegistry, "metricRegistry");
this.tlsConfiguration = requireNonNull(tlsConfiguration);
eventBus.register(this);
this.executorService = instrumentedExecutor(
"http-worker-executor",
"http-worker-%d",
configuration.getHttpThreadPoolSize());
}
@Subscribe
@@ -174,7 +179,6 @@ public class JerseyService extends AbstractIdleService {
apiHttpServer = setUp(
listenUri,
sslEngineConfigurator,
configuration.getHttpThreadPoolSize(),
configuration.getHttpSelectorRunnersCount(),
configuration.getHttpMaxHeaderSize(),
configuration.isHttpEnableGzip(),
@@ -223,7 +227,6 @@ public class JerseyService extends AbstractIdleService {
private HttpServer setUp(URI listenUri,
SSLEngineConfigurator sslEngineConfigurator,
int threadPoolSize,
int selectorRunnersCount,
int maxHeaderSize,
boolean enableGzip,
@@ -245,12 +248,7 @@ public class JerseyService extends AbstractIdleService {
final NetworkListener listener = httpServer.getListener("grizzly");
listener.setMaxHttpHeaderSize(maxHeaderSize);
final ExecutorService workerThreadPoolExecutor = instrumentedExecutor(
"http-worker-executor",
"http-worker-%d",
threadPoolSize);
listener.getTransport().setWorkerThreadPool(workerThreadPoolExecutor);
listener.getTransport().setWorkerThreadPool(executorService);
// The Grizzly default value is equal to `Runtime.getRuntime().availableProcessors()` which doesn't make
// sense for Graylog because we are not mainly a web server.