pinpoint-apm/pinpoint · warning
dnsExecutor shutdown failed
Error message
dnsExecutor shutdown failed
What it means
During GrpcModuleLifeCycle.shutdown(), the dedicated DNS-resolution executor (dnsExecutorService, used by gRPC's DNS name resolver) is stopped with MoreExecutors.shutdownAndAwaitTermination with a 3-second timeout. If it does not terminate within 3 seconds, the code logs "dnsExecutor shutdown failed". It means lingering DNS-resolver threads may remain after shutdown — a thread-leak warning, not a fatal error.
Source
Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/module/GrpcModuleLifeCycle.java:116
this.dnsExecutorService = dnsExecutorServiceProvider.get();
logger.info("dnsExecutorServiceProvider:{}", dnsExecutorService);
this.reconnectScheduledExecutorService = reconnectScheduledExecutorProvider.get();
logger.info("reconnectScheduledExecutorServiceProvider:{}", reconnectScheduledExecutorService);
}
@Override
public void shutdown() {
logger.info("shutdown()");
IOUtils.closeQuietly(spanDataSender, (ex) -> logger.warn("spanDataSender close fail", ex));
IOUtils.closeQuietly(statDataSender, (ex) -> logger.warn("statDataSender close fail", ex));
IOUtils.closeQuietly(agentDataSender, (ex) -> logger.warn("agentDataSender close fail", ex));
IOUtils.closeQuietly(metadataDataSender, (ex) -> logger.warn("metadataDataSender close fail", ex));
if (dnsExecutorService != null) {
if (!MoreExecutors.shutdownAndAwaitTermination(dnsExecutorService, Duration.ofSeconds(3))) {
logger.warn("dnsExecutor shutdown failed");
}
}
if (reconnectScheduledExecutorService != null) {
if (!MoreExecutors.shutdownAndAwaitTermination(reconnectScheduledExecutorService, Duration.ofSeconds(3))) {
logger.warn("reconnectScheduledExecutor shutdown failed");
}
}
IOUtils.closeQuietly(reporter, (ex) -> logger.warn("reporter close fail", ex));
}
@Override
public String toString() {
return "GrpcModuleLifeCycle{" +
", agentDataSender=" + agentDataSender +
", metadataDataSender=" + metadataDataSender +
", spanDataSender=" + spanDataSender +
", statDataSender=" + statDataSender +
", dnsExecutorService=" + dnsExecutorService +View on GitHub (pinned to 744c3d3075)
Solutions
- Verify DNS server responsiveness (e.g. dig/nslookup from the agent host); fix resolver configuration in /etc/resolv.conf.
- Configure gRPC to use an IP address or a faster resolver for the collector address to reduce DNS dependency.
- Increase the 3s timeout in a patched GrpcModuleLifeCycle if your environment legitimately has slow DNS.
- Check for leaked pinpoint/dns threads after shutdown with jstack; if only a warning, leak is small and bounded.
Example fix
// before: hostname requires DNS lookup at shutdown profiler.collector.span.ip=collector.pinpoint.local // after: avoid runtime DNS dependency profiler.collector.span.ip=10.0.0.5
Defensive patterns
Strategy: fallback
Validate before calling
// Pre-check DNS health before starting/stopping the agent
boolean dnsOk = InetAddress.getByName("collector.pinpoint.local") != null; Try / catch
try {
lifeCycle.shutdown();
} catch (Exception e) {
logger.warn("shutdown warning ignored", e);
} Prevention
- Use a resolvable, fast DNS server or configure collector by IP.
- Test DNS from the agent host (dig/nslookup) before deployment.
- Monitor for lingering dnsExecutor threads after shutdown with jstack.
When it happens
Trigger: shutdown() invoked while a DNS lookup is in progress or blocked (slow/unresponsive DNS server), so the executor's tasks ignore the shutdown signal and the 3s awaitTermination elapses.
Common situations: Corporate networks with slow DNS resolvers; DNS server outage while stopping the agent; containers where DNS queries hang; stopping the agent immediately after startup while the first resolution is still running.
Related errors
- reconnectScheduledExecutor shutdown failed
- spanDataSender close fail
- statDataSender close fail
- agentDataSender close fail
- metadataDataSender close fail
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/45c3ada30f3b4ee5.
Report an issue: GitHub.