diff --git a/dd-java-agent/agent-profiling/profiling-controller/src/main/java/com/datadog/profiling/controller/TempLocationManager.java b/dd-java-agent/agent-profiling/profiling-controller/src/main/java/com/datadog/profiling/controller/TempLocationManager.java index abf404307ab..7aaa5a2063e 100644 --- a/dd-java-agent/agent-profiling/profiling-controller/src/main/java/com/datadog/profiling/controller/TempLocationManager.java +++ b/dd-java-agent/agent-profiling/profiling-controller/src/main/java/com/datadog/profiling/controller/TempLocationManager.java @@ -465,7 +465,9 @@ private void createTempDir(Path tempDir) { // we will find the first offender not having the expected permissions and fail the check if (isPosixFs) { // take the first subfolder below the base temp dir - Path root = baseTempDir.resolve(baseTempDir.relativize(tempDir).getRoot()); + // we can wave the checks for tempDir being a subdir of baseTempDir because that's how it is + // created + Path root = baseTempDir.resolve(baseTempDir.relativize(tempDir).getName(0)); try { AtomicReference failed = new AtomicReference<>(); Files.walkFileTree( diff --git a/dd-java-agent/agent-profiling/profiling-controller/src/test/java/com/datadog/profiling/controller/TempLocationManagerTest.java b/dd-java-agent/agent-profiling/profiling-controller/src/test/java/com/datadog/profiling/controller/TempLocationManagerTest.java index 21043fb6d5d..38f063200c8 100644 --- a/dd-java-agent/agent-profiling/profiling-controller/src/test/java/com/datadog/profiling/controller/TempLocationManagerTest.java +++ b/dd-java-agent/agent-profiling/profiling-controller/src/test/java/com/datadog/profiling/controller/TempLocationManagerTest.java @@ -19,7 +19,6 @@ import java.util.UUID; import java.util.concurrent.Phaser; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.locks.LockSupport; import java.util.stream.Stream; import org.junit.jupiter.api.Test; @@ -80,8 +79,7 @@ void testFromConfigNotWritable() throws Exception { Properties props = new Properties(); props.put(ProfilingConfig.PROFILING_TEMP_DIR, myDir.toString()); ConfigProvider configProvider = ConfigProvider.withPropertiesOverride(props); - TempLocationManager tempLocationManager = new TempLocationManager(configProvider); - assertThrows(IllegalStateException.class, tempLocationManager::getTempDir); + assertThrows(IllegalStateException.class, () -> new TempLocationManager(configProvider)); } @ParameterizedTest @@ -246,29 +244,6 @@ public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) assertEquals(shouldSucceed, rslt); } - @Test - void testShortCircuit() throws Exception { - Path baseDir = - Files.createTempDirectory( - "ddprof-test-", - PosixFilePermissions.asFileAttribute(PosixFilePermissions.fromString("rwx------"))); - AtomicBoolean executed = new AtomicBoolean(); - TempLocationManager.CleanupHook hook = - new TempLocationManager.CleanupHook() { - @Override - public void onCleanupStart(boolean selfCleanup, long timeout, TimeUnit unit) { - executed.set(true); - } - }; - TempLocationManager instance = instance(baseDir, false, hook); - - instance.createDirStructure(); - - boolean ret = instance.cleanup(false); - assertTrue(ret); - assertFalse(executed.get()); - } - private static Stream timeoutTestArguments() { List argumentsList = new ArrayList<>(); for (boolean selfCleanup : new boolean[] {true, false}) {