diff --git a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java index 569f45cd714..30085fcb063 100644 --- a/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java +++ b/oak-blob-plugins/src/main/java/org/apache/jackrabbit/oak/plugins/blob/AbstractSharedCachingDataStore.java @@ -28,6 +28,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.StandardOpenOption; import java.security.DigestOutputStream; import java.security.MessageDigest; import java.util.Iterator; @@ -52,8 +54,6 @@ import org.apache.jackrabbit.oak.spi.blob.AbstractSharedBackend; import org.apache.jackrabbit.oak.spi.blob.BlobOptions; import org.apache.jackrabbit.oak.stats.StatisticsProvider; -import org.apache.jackrabbit.util.LazyFileInputStream; -import org.apache.jackrabbit.util.TransientFileFactory; import org.jetbrains.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -323,11 +323,10 @@ public InputStream getStream() throws DataStoreException { try { // If cache configured to 0 will return null if (cached == null || !cached.exists()) { - TransientFileFactory fileFactory = TransientFileFactory.getInstance(); - File tmpFile = fileFactory.createTransientFile("temp0cache", null, temp); + final File tmpFile = Files.createTempFile(temp.toPath(), "blob-cache-", null).toFile(); try (InputStream in = backend.getRecord(getIdentifier()).getStream()) { copyInputStreamToFile(in, tmpFile); - return new LazyFileInputStream(tmpFile); + return Files.newInputStream(tmpFile.toPath(), StandardOpenOption.DELETE_ON_CLOSE); } } else { return new FileInputStream(cached); diff --git a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java index eb046262aba..5421e4487c1 100644 --- a/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java +++ b/oak-blob-plugins/src/test/java/org/apache/jackrabbit/oak/plugins/blob/CachingDataStoreTest.java @@ -46,7 +46,6 @@ import org.apache.jackrabbit.oak.spi.blob.BlobOptions; import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider; import org.apache.jackrabbit.oak.stats.StatisticsProvider; -import org.apache.jackrabbit.util.LazyFileInputStream; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -192,13 +191,15 @@ public void loadDirectBackendTemp(long cacheSize) throws Exception { closer.register(is); assertNotNull(is); - assertTrue(is instanceof LazyFileInputStream); - ((LazyFileInputStream)is).open(); - File tmp = new File(new File(path), "tmp"); - Collection temp0cacheFiles = - FileUtils.listFiles(tmp, FileFilterUtils.prefixFileFilter("temp0cache"), null); - assertEquals(1, temp0cacheFiles.size()); + + // OAK-12098: Incorrect assumptions about files still to be present + // File tmp = new File(new File(path), "tmp"); + // + // (tmp file names are implementation details) + // Collection temp0cacheFiles = + // FileUtils.listFiles(tmp, FileFilterUtils.prefixFileFilter("blob-cache-"), null); + // assertEquals(1, temp0cacheFiles.size()); assertFile(is, f, folder, false);