From 25c6a726c4a69e3510e3aa018cee52fbce286799 Mon Sep 17 00:00:00 2001 From: Douglas Q Hawkins Date: Wed, 22 Jul 2026 19:09:13 -0400 Subject: [PATCH] Add key1()/key2() accessors to Hashtable.D2.Entry Mirror the key() accessor added to Hashtable.D1.Entry (used by the client-side stats CardinalityLimitReporter) onto the two-key D2 entry, so both dimensions expose their construction keys symmetrically. Co-Authored-By: Claude Opus 4.8 --- .../src/main/java/datadog/trace/util/Hashtable.java | 10 ++++++++++ .../test/java/datadog/trace/util/HashtableD2Test.java | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/internal-api/src/main/java/datadog/trace/util/Hashtable.java b/internal-api/src/main/java/datadog/trace/util/Hashtable.java index 84db05b9f01..cc514ff445b 100644 --- a/internal-api/src/main/java/datadog/trace/util/Hashtable.java +++ b/internal-api/src/main/java/datadog/trace/util/Hashtable.java @@ -265,6 +265,16 @@ protected Entry(K1 key1, K2 key2) { this.key2 = key2; } + /** The first key part this entry was created with. */ + public K1 key1() { + return this.key1; + } + + /** The second key part this entry was created with. */ + public K2 key2() { + return this.key2; + } + public boolean matches(K1 key1, K2 key2) { return Objects.equals(this.key1, key1) && Objects.equals(this.key2, key2); } diff --git a/internal-api/src/test/java/datadog/trace/util/HashtableD2Test.java b/internal-api/src/test/java/datadog/trace/util/HashtableD2Test.java index 50da832395b..fb621f89482 100644 --- a/internal-api/src/test/java/datadog/trace/util/HashtableD2Test.java +++ b/internal-api/src/test/java/datadog/trace/util/HashtableD2Test.java @@ -137,6 +137,13 @@ void entryMatchesFalseWhenKey2Differs() { assertFalse(entry.matches("a", 2)); } + @Test + void keyAccessorsExposeConstructionKeys() { + PairEntry entry = new PairEntry("a", 1, 100); + assertEquals("a", entry.key1()); + assertEquals(1, entry.key2()); + } + @Test void entryHashIsConsistentForSameKeys() { long h1 = Hashtable.D2.Entry.hash("x", 42);