Skip to content

Commit d8ef7de

Browse files
authored
Fix crash-tracking uploader script overwrite warning (#7386)
1 parent 7172606 commit d8ef7de

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

dd-java-agent/agent-crashtracking/src/main/java/com/datadog/crashtracking/ScriptInitializer.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -249,21 +249,23 @@ static void initializeOOMENotifier(String onOutOfMemoryVal) throws IOException {
249249
private static void writeScript(
250250
InputStream template, Path scriptPath, String execClass, String crashFile)
251251
throws IOException {
252-
try (BufferedReader br = new BufferedReader(new InputStreamReader(template))) {
253-
try (BufferedWriter bw = Files.newBufferedWriter(scriptPath)) {
254-
br.lines()
255-
.map(
256-
line -> {
257-
line = Strings.replace(line, "!AGENT_JAR!", execClass);
258-
if (crashFile != null) {
259-
line = Strings.replace(line, "!JAVA_ERROR_FILE!", crashFile);
260-
}
261-
return line;
262-
})
263-
.forEach(line -> writeLine(bw, line));
252+
if (!Files.exists(scriptPath)) {
253+
try (BufferedReader br = new BufferedReader(new InputStreamReader(template))) {
254+
try (BufferedWriter bw = Files.newBufferedWriter(scriptPath)) {
255+
br.lines()
256+
.map(
257+
line -> {
258+
line = Strings.replace(line, "!AGENT_JAR!", execClass);
259+
if (crashFile != null) {
260+
line = Strings.replace(line, "!JAVA_ERROR_FILE!", crashFile);
261+
}
262+
return line;
263+
})
264+
.forEach(line -> writeLine(bw, line));
265+
}
264266
}
267+
Files.setPosixFilePermissions(scriptPath, PosixFilePermissions.fromString("r-xr-xr-x"));
265268
}
266-
Files.setPosixFilePermissions(scriptPath, PosixFilePermissions.fromString("r-xr-xr-x"));
267269
}
268270

269271
private static void writeLine(BufferedWriter bw, String line) {

dd-java-agent/agent-crashtracking/src/test/java/com/datadog/crashtracking/ScriptInitializerTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,17 @@ void testCrashUploaderInitializationSuccess(String target, String pidArg)
6868
assertTrue(lines.stream().anyMatch(l -> l.contains(hsErrFile)));
6969
}
7070

71+
@Test
72+
void testCrashUploaderInitializationExisting() throws IOException {
73+
Path file = tempDir.resolve("dd_crash_uploader.sh");
74+
Files.createFile(file);
75+
ScriptInitializer.initializeCrashUploader(file.toString(), "/tmp/hs_err%p.log");
76+
assertTrue(Files.exists(file), "File " + file + " should not have been removed");
77+
assertTrue(
78+
Files.readAllLines(file).isEmpty(),
79+
"File " + file + " content should not have been modified");
80+
}
81+
7182
private static Stream<Arguments> crashTrackingScripts() {
7283
return Stream.of(
7384
Arguments.of("dd_crash_uploader.sh", ""),

0 commit comments

Comments
 (0)