<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection">
<div><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;"><font style="color:#262626;">Hello,</font></span><br />
<span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;"><font style="color:#262626;">I would like to start a discussion on introducing new JFR events for DNS lookups. While many lookups are DNS in cloud-native environments, the JDK uses the configured name service, so the event naming and semantics should not imply DNS-only behavior. Iām seeking feedback on scope, naming, and payload fields.</font></span><br />
<span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;"><font style="color:#262626;">Motivation</font></span><br />
</div>
<ul>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">High-frequency, latency-sensitive lookups are critical for service discovery.</span><br />
</li>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">Current gaps:</span>
<ul>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">Cannot distinguish cache hits vs. network lookups</span><br />
</li>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">Hard to trace lookup latency and diagnose timeouts/failures</span><br />
</li>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">Concurrent libraries may cause redundant lookups</span><br />
</li>
</ul>
</li>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">Value:</span>
<ul>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">End-to-end observability: lookup ā socket connect ā data transfer</span><br />
</li>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">Troubleshooting: identify timeouts, resolution failures</span><br />
</li>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">Performance: evaluate cache policies, detect hotspot names</span><br />
</li>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">Security: audit external domains accessed</span><br />
</li>
</ul>
</li>
</ul>
<div><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;"><font style="color:#080808;"><strong>Proposed event (initial draft)</strong></font></span><br />
<span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;"><font style="color:#080808;"><strong>Event name:</strong> jdk.DnsLookup</font></span><br />
<span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;"><font style="color:#080808;"><strong>When:</strong> Emitted around DNS hostname resolution call boundaries, including:</font></span><br />
</div>
<ul>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Actual network DNS queries (when cache is disabled or cache miss occurs)</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Cache hits (when result is retrieved from DNS cache)</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Stale data usage (when expired but still valid cached data is used)</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Background DNS cache refresh operations</span><br />
</li>
</ul>
<div><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;"><font style="color:#080808;"><strong>Key fields (feedback welcome):</strong></font></span><br />
</div>
<ul>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">host (String): The hostname being resolved</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">result (String): Comma-separated list of resolved IP addresses, or error message if lookup failed</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">success (boolean): Whether the DNS lookup was successful</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">cached (boolean): Whether the result was retrieved from cache (true) or from actual DNS network query (false). This helps distinguish between three use cases:</span>
<ul>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Actual network queries (cached=false) - represents real DNS network traffic</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Cache hits (cached=true, stale=false) - repeated lookups using fresh cached data</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Stale data usage (cached=true, stale=true) - application continues with expired but still valid cached data when DNS refresh fails</span><br />
</li>
</ul>
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">ttl (long, seconds): Time to live in seconds. Values:</span>
<ul>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">0 or -1: Not cached or forever cached</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">> 0: Actual remaining TTL if cached</span><br />
</li>
</ul>
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">stale (boolean): Whether stale cached data was used (only valid when cached=true). Helps identify semi-error scenarios where DNS errors occur but application continues using stale cached records</span><br />
</li>
</ul>
<div><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;"><font style="color:#080808;"><strong>Event name:</strong> jdk.DnsCacheStatistics</font></span><br />
<span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;"><font style="color:#080808;"><strong>When:</strong> Periodic event emitted at configurable intervals (default: 5 seconds in default.jfc, 1 second in profile.jfc). This is a statistics event similar to jdk.ExceptionStatistics, providing aggregate metrics about the DNS cache state.</font></span><br />
<span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;"><font style="color:#080808;"><strong>Key fields (feedback welcome):</strong></font></span><br />
</div>
<ul>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">cacheSize (long): Current number of entries in the DNS cache. Useful for monitoring cache growth and understanding cache utilization patterns.</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">staleEntries (long): Number of stale entries currently in the cache (entries that have expired but are still within the stale period). Helps identify how many entries are using stale data, which is important for understanding cache behavior in scenarios where DNS refresh fails.</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">entriesRemoved (long): Number of entries that have been removed during cache cleanup operations. This metric tracks cache eviction and helps understand cache churn patterns, which is particularly useful in Kubernetes and cloud-native environments where DNS entries may change frequently.</span><br />
</li>
</ul>
<div><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;"><font style="color:#080808;"><strong>Use cases:</strong></font></span><br />
</div>
<ul>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Monitoring DNS cache size growth over time</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Identifying cache cleanup frequency and patterns</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Understanding stale data usage in production environments</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Troubleshooting DNS-related performance issues in microservices architectures</span><br />
</li>
<li><span style="font-family:Helvetica , Arial , freesans , sans-serif;font-size:13px;">Observing cache behavior during DNS server failures or network partitions</span><br />
</li>
</ul>
<div><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;"><font style="color:#262626;">Prototype/PR</font></span><br />
</div>
<ul>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">A preliminary PR is available for context and discussion:</span>
<ul>
<li><a href="https://git.openjdk.org/jdk/pull/28110"><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;"><font style="color:#1E6FFF;">https://git.openjdk.org/jdk/pull/28110</font></span></a><br />
</li>
</ul>
</li>
<li><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;">I will update the design/implementation per feedback from this thread.</span><br />
</li>
</ul>
<div><span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;"><font style="color:#262626;">Thanks in advance for your feedback!</font></span><br />
<span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;"><font style="color:#262626;">Best regards,</font></span><br />
<span style="font-family:-apple-system , system-ui , Helvetica Neue , Tahoma , PingFang SC , Microsoft Yahei , Arial , Hiragino Sans GB , sans-serif , Apple Color Emoji , Segoe UI Emoji , Segoe UI Symbol , Noto Color Emoji;font-size:15px;"><font style="color:#262626;">NeayGuyCoding</font></span></div>
</div>
</body>
</html>