Skip to content

Commit 9dcfca0

Browse files
Add suffix ID to memfd file name (#9796)
* Update to add ID suffix * Update dd-trace-core/src/main/java/datadog/trace/core/servicediscovery/ServiceDiscovery.java Co-authored-by: Stuart McCulloch <[email protected]> * fix import --------- Co-authored-by: Stuart McCulloch <[email protected]>
1 parent 666b4a0 commit 9dcfca0

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

dd-java-agent/agent-tooling/src/main/java/datadog/trace/agent/tooling/servicediscovery/MemFDUnixWriter.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,29 +33,29 @@ private interface LibC extends Library {
3333
private static final int F_SEAL_GROW = 0x0004;
3434

3535
@Override
36-
public void write(byte[] payload) {
36+
public void write(String fileName, byte[] payload) {
3737
final LibC libc = Native.load("c", LibC.class);
3838

39-
int memFd = libc.memfd_create("datadog-tracer-info-", MFD_CLOEXEC | MFD_ALLOW_SEALING);
39+
int memFd = libc.memfd_create(fileName, MFD_CLOEXEC | MFD_ALLOW_SEALING);
4040
if (memFd < 0) {
41-
log.warn("datadog-tracer-info memfd create failed, errno={}", Native.getLastError());
41+
log.warn("{} memfd create failed, errno={}", fileName, Native.getLastError());
4242
return;
4343
}
4444

45-
log.debug("datadog-tracer-info memfd created (fd={})", memFd);
45+
log.debug("{} memfd created (fd={})", fileName, memFd);
4646

4747
Memory buf = new Memory(payload.length);
4848
buf.write(0, payload, 0, payload.length);
4949

5050
NativeLong written = libc.write(memFd, buf, new NativeLong(payload.length));
5151
if (written.longValue() != payload.length) {
52-
log.warn("write to datadog-tracer-info memfd failed errno={}", Native.getLastError());
52+
log.warn("write to {} memfd failed errno={}", fileName, Native.getLastError());
5353
return;
5454
}
5555
log.debug("wrote {} bytes to memfd {}", written.longValue(), memFd);
5656
int returnCode = libc.fcntl(memFd, F_ADD_SEALS, F_SEAL_SHRINK | F_SEAL_GROW | F_SEAL_SEAL);
5757
if (returnCode == -1) {
58-
log.warn("failed to add seal to datadog-tracer-info memfd errno={}", Native.getLastError());
58+
log.warn("failed to add seal to {} memfd errno={}", fileName, Native.getLastError());
5959
return;
6060
}
6161
// memfd is not closed to keep it readable for the lifetime of the process.

dd-trace-core/src/main/java/datadog/trace/core/servicediscovery/ForeignMemoryWriter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
@FunctionalInterface
44
public interface ForeignMemoryWriter {
5-
void write(byte[] payload);
5+
void write(String fileName, byte[] payload);
66
}

dd-trace-core/src/main/java/datadog/trace/core/servicediscovery/ServiceDiscovery.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import datadog.trace.api.Config;
1010
import datadog.trace.api.ProcessTags;
1111
import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString;
12+
import datadog.trace.util.RandomUtils;
1213
import java.nio.ByteBuffer;
1314
import org.slf4j.Logger;
1415
import org.slf4j.LoggerFactory;
@@ -35,12 +36,17 @@ public void writeTracerMetadata(Config config) {
3536
ProcessTags.getTagsForSerialization(),
3637
ContainerInfo.get().getContainerId());
3738

38-
foreignMemoryWriter.write(payload);
39+
foreignMemoryWriter.write(generateFileName(), payload);
3940
} catch (Throwable t) {
4041
log.debug("service discovery memfd write failed", t);
4142
}
4243
}
4344

45+
private static String generateFileName() {
46+
String suffix = RandomUtils.randomUUID().toString().substring(0, 8);
47+
return "datadog-tracer-info-" + suffix;
48+
}
49+
4450
static byte[] encodePayload(
4551
String tracerVersion,
4652
String hostname,

dd-trace-core/src/test/groovy/datadog/trace/core/servicediscovery/ServiceDiscoveryTest.groovy

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,12 @@ class ServiceDiscoveryTest extends DDCoreSpecification {
4444
and:
4545
map.toString() == '{"schema_version":2,"tracer_language":"java","tracer_version":"1.2.3","hostname":"my_host"}'
4646
}
47+
def "generateFileName"() {
48+
when:
49+
String name = ServiceDiscovery.generateFileName()
50+
51+
then:
52+
name.startsWith("datadog-tracer-info-")
53+
name.length() == "datadog-tracer-info-".length() + 8
54+
}
4755
}

0 commit comments

Comments
 (0)