Skip to content

Commit 02a83d7

Browse files
committed
Merge branch 'master' into brian/AMLII-1676-send-both-cid-entity-id
2 parents 5642580 + 8fe540d commit 02a83d7

8 files changed

Lines changed: 60 additions & 41 deletions

File tree

CHANGELOG.md

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
# CHANGELOG
22

3-
## 4.X.Y / 2024.XX.XX
3+
## 4.4.2 / 2024.06.03
4+
5+
* [BUGFIX] Fix sampling and visibility issues with new direct client. See #[249][]
6+
7+
## 4.4.1 / 2024.05.29
8+
9+
* [BUGFIX] Restore public constructor for `NoOpStatsDClient`. See #[247][]
10+
11+
## 4.4.0 / 2024.05.24
12+
13+
* [FEATURE] Added new API to send multiple samples at once. See [#235][]
14+
* [BUGFIX] When using `SOCK_STREAM` Unix sockets we now correctly close the socket. See [#243][]
415

516
## 4.3.0 / 2024.01.24
617

@@ -238,7 +249,12 @@ Fork from [indeedeng/java-dogstatsd-client] (https://github.com/indeedeng/java-d
238249
[#203]: https://github.com/DataDog/java-dogstatsd-client/issues/203
239250
[#211]: https://github.com/DataDog/java-dogstatsd-client/issues/211
240251
[#217]: https://github.com/DataDog/java-dogstatsd-client/issues/217
241-
[#228]: https://github.com/DataDog/java-dogstatsd-client/pull/228
252+
[#228]: https://github.com/DataDog/java-dogstatsd-client/issues/228
253+
[#235]: https://github.com/DataDog/java-dogstatsd-client/issues/235
254+
[#243]: https://github.com/DataDog/java-dogstatsd-client/issues/243
255+
[#247]: https://github.com/DataDog/java-dogstatsd-client/issues/247
256+
[#249]: https://github.com/DataDog/java-dogstatsd-client/issues/249
257+
242258

243259
[@PatrickAuld]: https://github.com/PatrickAuld
244260
[@blevz]: https://github.com/blevz

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ The client jar is distributed via Maven central, and can be downloaded [from Mav
1717
<dependency>
1818
<groupId>com.datadoghq</groupId>
1919
<artifactId>java-dogstatsd-client</artifactId>
20-
<version>4.2.1</version>
20+
<version>4.4.2</version>
2121
</dependency>
2222
```
2323

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<artifactId>java-dogstatsd-client</artifactId>
88
<packaging>jar</packaging>
99
<name>java-dogstatsd-client</name>
10-
<version>4.3.0</version>
10+
<version>4.4.2</version>
1111
<description>A tiny library allowing Java applications to communicate with DataDog statsd instances easily.</description>
1212
<url>https://github.com/DataDog/java-dogstatsd-client</url>
1313

src/main/java/com/timgroup/statsd/NoOpDirectStatsDClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* A No-Op {@link NonBlockingDirectStatsDClient}, which can be substituted in when metrics are not
55
* required.
66
*/
7-
public final class NoOpDirectStatsDClient extends NoOpStatsDClient implements DirectStatsDClient {
7+
public class NoOpDirectStatsDClient extends NoOpStatsDClient implements DirectStatsDClient {
88
@Override public void recordDistributionValues(String aspect, double[] values, double sampleRate, String... tags) { }
99

1010
@Override public void recordDistributionValues(String aspect, long[] values, double sampleRate, String... tags) { }

src/main/java/com/timgroup/statsd/NoOpStatsDClient.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99
*/
1010
public class NoOpStatsDClient implements StatsDClient {
1111

12-
NoOpStatsDClient() {}
13-
1412
@Override public void stop() { }
1513

1614
@Override public void close() { }

src/main/java/com/timgroup/statsd/NonBlockingDirectStatsDClient.java

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,22 @@
11
package com.timgroup.statsd;
22

3-
import static java.nio.charset.StandardCharsets.UTF_8;
4-
5-
final class NonBlockingDirectStatsDClient extends NonBlockingStatsDClient implements DirectStatsDClient {
3+
class NonBlockingDirectStatsDClient extends NonBlockingStatsDClient implements DirectStatsDClient {
64

75
public NonBlockingDirectStatsDClient(final NonBlockingStatsDClientBuilder builder) throws StatsDClientException {
86
super(builder);
97
}
108

119
@Override
1210
public void recordDistributionValues(String aspect, double[] values, double sampleRate, String... tags) {
13-
if ((Double.isNaN(sampleRate) || !isInvalidSample(sampleRate)) && values != null && values.length > 0) {
14-
if (values.length == 1) {
15-
recordDistributionValue(aspect, values[0], sampleRate, tags);
16-
} else {
17-
sendMetric(new DoublesStatsDMessage(aspect, Message.Type.DISTRIBUTION, values, sampleRate, 0, tags));
18-
}
11+
if (values != null && values.length > 0) {
12+
sendMetric(new DoublesStatsDMessage(aspect, Message.Type.DISTRIBUTION, values, sampleRate, 0, tags));
1913
}
2014
}
2115

2216
@Override
2317
public void recordDistributionValues(String aspect, long[] values, double sampleRate, String... tags) {
24-
if ((Double.isNaN(sampleRate) || !isInvalidSample(sampleRate)) && values != null && values.length > 0) {
25-
if (values.length == 1) {
26-
recordDistributionValue(aspect, values[0], sampleRate, tags);
27-
} else {
28-
sendMetric(new LongsStatsDMessage(aspect, Message.Type.DISTRIBUTION, values, sampleRate, 0, tags));
29-
}
18+
if (values != null && values.length > 0) {
19+
sendMetric(new LongsStatsDMessage(aspect, Message.Type.DISTRIBUTION, values, sampleRate, 0, tags));
3020
}
3121
}
3222

src/main/java/com/timgroup/statsd/UnixStreamClientChannel.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -134,26 +134,33 @@ private void connect() throws IOException {
134134
// We'd have better timeout support if we used Java 16's native Unix domain socket support (JEP 380)
135135
delegate.setOption(UnixSocketOptions.SO_SNDTIMEO, connectionTimeout);
136136
}
137-
if (!delegate.connect(address)) {
138-
if (connectionTimeout > 0 && System.nanoTime() > deadline) {
139-
throw new IOException("Connection timed out");
137+
try {
138+
if (!delegate.connect(address)) {
139+
if (connectionTimeout > 0 && System.nanoTime() > deadline) {
140+
throw new IOException("Connection timed out");
141+
}
142+
if (!delegate.finishConnect()) {
143+
throw new IOException("Connection failed");
144+
}
140145
}
141-
if (!delegate.finishConnect()) {
142-
throw new IOException("Connection failed");
146+
147+
delegate.setOption(UnixSocketOptions.SO_SNDTIMEO, Math.max(timeout, 0));
148+
if (bufferSize > 0) {
149+
delegate.setOption(UnixSocketOptions.SO_SNDBUF, bufferSize);
143150
}
151+
} catch (Exception e) {
152+
try {
153+
delegate.close();
154+
} catch (IOException __) {
155+
// ignore
156+
}
157+
throw e;
144158
}
145159

146-
if (timeout > 0) {
147-
delegate.setOption(UnixSocketOptions.SO_SNDTIMEO, timeout);
148-
} else {
149-
delegate.setOption(UnixSocketOptions.SO_SNDTIMEO, 0);
150-
}
151-
if (bufferSize > 0) {
152-
delegate.setOption(UnixSocketOptions.SO_SNDBUF, bufferSize);
153-
}
160+
154161
this.delegate = delegate;
155162
}
156-
163+
157164
@Override
158165
public void close() throws IOException {
159166
disconnect();

src/test/java/com/timgroup/statsd/NonBlockingDirectStatsDClientTest.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ public void sends_multivalued_distribution_to_statsd_with_sampling_rate() {
8686
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:423:234|d|@1.000000")));
8787
}
8888

89+
@Test(timeout = 5000L)
90+
public void sends_multivalued_distribution_to_statsd_with_non_1_sampling_rate() {
91+
client.recordDistributionValues("mydistribution", new long[] { 423L, 234L }, 0.1);
92+
server.waitForMessage("my.prefix");
93+
94+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:423:234|d|@0.100000")));
95+
}
96+
8997
@Test(timeout = 5000L)
9098
public void sends_multivalued_distribution_to_statsd_with_tags_and_sampling_rate() {
9199
client.recordDistributionValues("mydistribution", new long[] { 423L, 234L }, 1, "foo:bar", "baz");
@@ -97,19 +105,19 @@ public void sends_multivalued_distribution_to_statsd_with_tags_and_sampling_rate
97105
@Test(timeout = 5000L)
98106
public void sends_too_long_multivalued_distribution_to_statsd() {
99107
long[] values = {423L, 234L, 456L, 512L, 345L, 898L, 959876543123L, 667L};
100-
client.recordDistributionValues("mydistribution", values, 1, "foo:bar", "baz");
108+
client.recordDistributionValues("mydistribution", values, 0.4, "foo:bar", "baz");
101109

102110
server.waitForMessage("my.prefix");
103-
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:423:234:456|d|@1.000000|#baz,foo:bar")));
111+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:423:234:456|d|@0.400000|#baz,foo:bar")));
104112

105113
server.waitForMessage("my.prefix");
106-
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:512:345:898|d|@1.000000|#baz,foo:bar")));
114+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:512:345:898|d|@0.400000|#baz,foo:bar")));
107115

108116
server.waitForMessage("my.prefix");
109-
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:959876543123|d|@1.000000|#baz,foo:bar")));
117+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:959876543123|d|@0.400000|#baz,foo:bar")));
110118

111119
server.waitForMessage("my.prefix");
112-
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:667|d|@1.000000|#baz,foo:bar")));
120+
assertThat(server.messagesReceived(), hasItem(comparesEqualTo("my.prefix.mydistribution:667|d|@0.400000|#baz,foo:bar")));
113121
}
114122

115123
}

0 commit comments

Comments
 (0)