This is an automated email from the ASF dual-hosted git repository.
FrankChen021 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git
The following commit(s) were added to refs/heads/master by this push:
new 593191fc793 fix: secure temporary files and resource lookups (#19822)
593191fc793 is described below
commit 593191fc793c6d2745f45512bee84ccd8d4fd869
Author: Frank Chen <[email protected]>
AuthorDate: Mon Aug 31 14:17:52 2026 +0800
fix: secure temporary files and resource lookups (#19822)
* Fix CodeQL temporary file and resource lookup warnings
* test: validate resource lookups before file output
* Keep mapped spatial test indexes alive
* test: clean up spatial index resources
---
.../benchmark/FrontCodedIndexedBenchmark.java | 6 +-
.../druid/benchmark/GenericIndexedBenchmark.java | 2 +-
.../benchmark/indexing/IndexMergeBenchmark.java | 6 +-
.../druid/storage/aliyun/OssDataSegmentPusher.java | 39 +++++----
...ListBasedDruidToTimelineEventConverterTest.java | 26 ++++--
.../cassandra/CassandraDataSegmentPusher.java | 56 +++++++------
.../cloudfiles/CloudFilesDataSegmentPusher.java | 4 +-
...pressedBigDecimalAggregatorGroupByTestBase.java | 28 ++++---
...ssedBigDecimalAggregatorTimeseriesTestBase.java | 47 ++++++++---
.../graphite/WhiteListBasedConverterTest.java | 25 ++++--
.../movingaverage/MovingAverageQueryTest.java | 10 ++-
.../storage/azure/AzureDataSegmentPusher.java | 3 +-
.../storage/google/GoogleDataSegmentPusher.java | 3 +-
.../HdfsFileTimestampVersionFinderTest.java | 9 +-
.../storage/hdfs/HdfsDataSegmentPullerTest.java | 9 +-
.../druid/indexing/kafka/KafkaIndexTaskTest.java | 2 +-
.../indexing/kinesis/KinesisIndexTaskTest.java | 2 +-
.../OffHeapNamespaceExtractionCacheManager.java | 3 +-
.../druid/storage/s3/S3DataSegmentPusher.java | 39 +++++----
.../druid/java/util/metrics/CgroupCpuMonitor.java | 6 +-
.../data/input/impl/prefetch/JsonIteratorTest.java | 20 +++--
.../java/org/apache/druid/frame/FrameTest.java | 11 ++-
.../common/io/smoosh/SmooshedFileMapperTest.java | 6 +-
.../org/apache/druid/query/DoubleStorageTest.java | 19 +++--
.../org/apache/druid/segment/EmptyIndexTest.java | 8 +-
.../segment/IndexMergerV9WithSpatialIndexTest.java | 96 +++++++++++-----------
.../java/org/apache/druid/segment/TestIndex.java | 11 +--
.../segment/filter/SpatialFilterBonusTest.java | 10 +--
.../druid/segment/filter/SpatialFilterTest.java | 10 +--
.../apache/druid/metadata/input/SqlEntityTest.java | 7 +-
.../druid/metadata/input/SqlInputSourceTest.java | 23 +-----
.../loading/LocalDataSegmentPullerTest.java | 2 +-
.../druid/sql/calcite/BaseCalciteQueryTest.java | 16 ++--
33 files changed, 304 insertions(+), 260 deletions(-)
diff --git
a/benchmarks/src/test/java/org/apache/druid/benchmark/FrontCodedIndexedBenchmark.java
b/benchmarks/src/test/java/org/apache/druid/benchmark/FrontCodedIndexedBenchmark.java
index 023806e73a8..bdcb582a1ee 100644
---
a/benchmarks/src/test/java/org/apache/druid/benchmark/FrontCodedIndexedBenchmark.java
+++
b/benchmarks/src/test/java/org/apache/druid/benchmark/FrontCodedIndexedBenchmark.java
@@ -155,13 +155,13 @@ public class FrontCodedIndexedBenchmark
frontCodedIndexedWriterIncrementalBuckets.write(StringUtils.toUtf8Nullable(next));
}
smooshDirFrontCoded = FileUtils.createTempDir();
- fileFrontCoded = File.createTempFile("frontCodedIndexedBenchmark", "meta");
+ fileFrontCoded = new File(smooshDirFrontCoded, "meta");
smooshDirGeneric = FileUtils.createTempDir();
- fileGeneric = File.createTempFile("genericIndexedBenchmark", "meta");
+ fileGeneric = new File(smooshDirGeneric, "meta");
smooshDirFrontCodedIncrementalBuckets = FileUtils.createTempDir();
- fileFrontCodedIncrementalBuckets =
File.createTempFile("frontCodedIndexedBenchmarkv1Buckets", "meta");
+ fileFrontCodedIncrementalBuckets = new
File(smooshDirFrontCodedIncrementalBuckets, "meta");
EncodingSizeProfiler.encodedSize = (int) ("generic".equals(indexType)
?
genericIndexedWriter.getSerializedSize()
diff --git
a/benchmarks/src/test/java/org/apache/druid/benchmark/GenericIndexedBenchmark.java
b/benchmarks/src/test/java/org/apache/druid/benchmark/GenericIndexedBenchmark.java
index 8ddb283ac8f..9f2423f902b 100644
---
a/benchmarks/src/test/java/org/apache/druid/benchmark/GenericIndexedBenchmark.java
+++
b/benchmarks/src/test/java/org/apache/druid/benchmark/GenericIndexedBenchmark.java
@@ -122,7 +122,7 @@ public class GenericIndexedBenchmark
genericIndexedWriter.write(element.array());
}
smooshDir = FileUtils.createTempDir();
- file = File.createTempFile("genericIndexedBenchmark", "meta");
+ file = new File(smooshDir, "meta");
try (FileChannel fileChannel =
FileChannel.open(file.toPath(), StandardOpenOption.CREATE,
StandardOpenOption.WRITE);
diff --git
a/benchmarks/src/test/java/org/apache/druid/benchmark/indexing/IndexMergeBenchmark.java
b/benchmarks/src/test/java/org/apache/druid/benchmark/indexing/IndexMergeBenchmark.java
index e1886768448..8d981dacbd6 100644
---
a/benchmarks/src/test/java/org/apache/druid/benchmark/indexing/IndexMergeBenchmark.java
+++
b/benchmarks/src/test/java/org/apache/druid/benchmark/indexing/IndexMergeBenchmark.java
@@ -148,9 +148,7 @@ public class IndexMergeBenchmark
@OutputTimeUnit(TimeUnit.MICROSECONDS)
public void mergeV9(Blackhole blackhole) throws Exception
{
- File tmpFile = File.createTempFile("IndexMergeBenchmark-MERGEDFILE-V9-" +
System.currentTimeMillis(), ".TEMPFILE");
- tmpFile.delete();
- FileUtils.mkdirp(tmpFile);
+ final File tmpFile =
FileUtils.createTempDir("IndexMergeBenchmark-MERGEDFILE-V9-");
try {
log.info(tmpFile.getAbsolutePath() + " isFile: " + tmpFile.isFile() + "
isDir:" + tmpFile.isDirectory());
@@ -167,7 +165,7 @@ public class IndexMergeBenchmark
blackhole.consume(mergedFile);
}
finally {
- tmpFile.delete();
+ FileUtils.deleteDirectory(tmpFile);
}
}
diff --git
a/extensions-contrib/aliyun-oss-extensions/src/main/java/org/apache/druid/storage/aliyun/OssDataSegmentPusher.java
b/extensions-contrib/aliyun-oss-extensions/src/main/java/org/apache/druid/storage/aliyun/OssDataSegmentPusher.java
index 177d4dc1965..1eba054bff3 100644
---
a/extensions-contrib/aliyun-oss-extensions/src/main/java/org/apache/druid/storage/aliyun/OssDataSegmentPusher.java
+++
b/extensions-contrib/aliyun-oss-extensions/src/main/java/org/apache/druid/storage/aliyun/OssDataSegmentPusher.java
@@ -32,6 +32,7 @@ import org.apache.druid.utils.CompressionUtils;
import java.io.File;
import java.io.IOException;
import java.net.URI;
+import java.nio.file.Files;
import java.util.Map;
public class OssDataSegmentPusher implements DataSegmentPusher
@@ -64,27 +65,29 @@ public class OssDataSegmentPusher implements
DataSegmentPusher
final String path = OssUtils.constructSegmentPath(config.getPrefix(),
storageDirSuffix);
log.debug("Copying segment[%s] to OSS at location[%s]", inSegment.getId(),
path);
- final File zipOutFile = File.createTempFile("druid", "index.zip");
- final long indexSize = CompressionUtils.zip(indexFilesDir, zipOutFile);
+ final File zipOutFile = Files.createTempFile("druid",
"index.zip").toFile();
+ try {
+ final long indexSize = CompressionUtils.zip(indexFilesDir, zipOutFile);
- final DataSegment outSegment = inSegment.withSize(indexSize)
-
.withLoadSpec(makeLoadSpec(config.getBucket(), path))
-
.withBinaryVersion(SegmentUtils.getVersionFromDir(indexFilesDir));
+ final DataSegment outSegment = inSegment.withSize(indexSize)
+
.withLoadSpec(makeLoadSpec(config.getBucket(), path))
+
.withBinaryVersion(SegmentUtils.getVersionFromDir(indexFilesDir));
- try {
- return OssUtils.retry(
- () -> {
- OssUtils.uploadFileIfPossible(client, config.getBucket(), path,
zipOutFile);
+ try {
+ return OssUtils.retry(
+ () -> {
+ OssUtils.uploadFileIfPossible(client, config.getBucket(), path,
zipOutFile);
- return outSegment;
- }
- );
- }
- catch (OSSException e) {
- throw new IOException(e);
- }
- catch (Exception e) {
- throw new RuntimeException(e);
+ return outSegment;
+ }
+ );
+ }
+ catch (OSSException e) {
+ throw new IOException(e);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
finally {
log.debug("Deleting temporary cached index.zip");
diff --git
a/extensions-contrib/ambari-metrics-emitter/src/test/java/org/apache/druid/emitter/ambari/metrics/WhiteListBasedDruidToTimelineEventConverterTest.java
b/extensions-contrib/ambari-metrics-emitter/src/test/java/org/apache/druid/emitter/ambari/metrics/WhiteListBasedDruidToTimelineEventConverterTest.java
index ff735ce9e5f..4e7eacd11a8 100644
---
a/extensions-contrib/ambari-metrics-emitter/src/test/java/org/apache/druid/emitter/ambari/metrics/WhiteListBasedDruidToTimelineEventConverterTest.java
+++
b/extensions-contrib/ambari-metrics-emitter/src/test/java/org/apache/druid/emitter/ambari/metrics/WhiteListBasedDruidToTimelineEventConverterTest.java
@@ -25,6 +25,7 @@ import
org.apache.druid.java.util.emitter.service.ServiceMetricEvent;
import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.MethodSource;
@@ -32,10 +33,16 @@ import org.junit.jupiter.params.provider.MethodSource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
+import java.nio.file.Files;
+import java.util.Objects;
public class WhiteListBasedDruidToTimelineEventConverterTest
{
+ @TempDir
+ public File temporaryFolder;
+
private static final String PREFIX = "druid";
private static final String HOSTNAME = "testHost:8080";
private static final String SERVICE_NAME = "historical";
@@ -92,14 +99,17 @@ public class WhiteListBasedDruidToTimelineEventConverterTest
@Test
public void testWhiteListedStringArrayDimension() throws IOException
{
- File mapFile = File.createTempFile("testing-" + System.nanoTime(),
".json");
- mapFile.deleteOnExit();
-
- try (OutputStream outputStream = new FileOutputStream(mapFile)) {
- IOUtils.copyLarge(
-
getClass().getResourceAsStream("/testWhiteListedStringArrayDimension.json"),
- outputStream
- );
+ final File mapFile = Files.createTempFile(temporaryFolder.toPath(),
"whiteList-", ".json").toFile();
+
+ try (
+ final InputStream inputStream = Objects.requireNonNull(
+ WhiteListBasedDruidToTimelineEventConverterTest.class
+
.getResourceAsStream("/testWhiteListedStringArrayDimension.json"),
+ "Missing test resource: /testWhiteListedStringArrayDimension.json"
+ );
+ final OutputStream outputStream = new FileOutputStream(mapFile)
+ ) {
+ IOUtils.copyLarge(inputStream, outputStream);
}
WhiteListBasedDruidToTimelineEventConverter converter = new
WhiteListBasedDruidToTimelineEventConverter(
diff --git
a/extensions-contrib/cassandra-storage/src/main/java/org/apache/druid/storage/cassandra/CassandraDataSegmentPusher.java
b/extensions-contrib/cassandra-storage/src/main/java/org/apache/druid/storage/cassandra/CassandraDataSegmentPusher.java
index 126467c10a9..a9f5c966e13 100644
---
a/extensions-contrib/cassandra-storage/src/main/java/org/apache/druid/storage/cassandra/CassandraDataSegmentPusher.java
+++
b/extensions-contrib/cassandra-storage/src/main/java/org/apache/druid/storage/cassandra/CassandraDataSegmentPusher.java
@@ -70,40 +70,42 @@ public class CassandraDataSegmentPusher extends
CassandraStorage implements Data
@Override
public DataSegment pushToPath(File indexFilesDir, DataSegment segment,
String storageDirSuffix) throws IOException
{
- String key = JOINER.join(
+ final String key = JOINER.join(
config.getKeyspace().isEmpty() ? null : config.getKeyspace(),
storageDirSuffix
- );
+ );
// Create index
- final File compressedIndexFile = File.createTempFile("druid", "index.zip");
- long indexSize = CompressionUtils.zip(indexFilesDir, compressedIndexFile);
- log.info("Wrote compressed file [%s] to [%s]",
compressedIndexFile.getAbsolutePath(), key);
+ final File compressedIndexFile = Files.createTempFile("druid",
"index.zip").toFile();
+ try {
+ final long indexSize = CompressionUtils.zip(indexFilesDir,
compressedIndexFile);
+ log.info("Wrote compressed file [%s] to [%s]",
compressedIndexFile.getAbsolutePath(), key);
+
+ final int version = SegmentUtils.getVersionFromDir(indexFilesDir);
- int version = SegmentUtils.getVersionFromDir(indexFilesDir);
+ try (final InputStream fileStream =
Files.newInputStream(compressedIndexFile.toPath())) {
+ final long start = System.currentTimeMillis();
+ ChunkedStorage.newWriter(indexStorage, key, fileStream)
+ .withConcurrencyLevel(CONCURRENCY).call();
+ final byte[] json = jsonMapper.writeValueAsBytes(segment);
+ final MutationBatch mutation = this.keyspace.prepareMutationBatch();
+ mutation.withRow(descriptorStorage, key)
+ .putColumn("lastmodified", System.currentTimeMillis(), null)
+ .putColumn("descriptor", json, null);
+ mutation.execute();
+ log.info("Wrote index to C* in [%s] ms", System.currentTimeMillis() -
start);
+ }
+ catch (Exception e) {
+ throw new IOException(e);
+ }
- try (final InputStream fileStream =
Files.newInputStream(compressedIndexFile.toPath())) {
- long start = System.currentTimeMillis();
- ChunkedStorage.newWriter(indexStorage, key, fileStream)
- .withConcurrencyLevel(CONCURRENCY).call();
- byte[] json = jsonMapper.writeValueAsBytes(segment);
- MutationBatch mutation = this.keyspace.prepareMutationBatch();
- mutation.withRow(descriptorStorage, key)
- .putColumn("lastmodified", System.currentTimeMillis(), null)
- .putColumn("descriptor", json, null);
- mutation.execute();
- log.info("Wrote index to C* in [%s] ms", System.currentTimeMillis() -
start);
+ return segment.withSize(indexSize)
+ .withLoadSpec(ImmutableMap.of("type", "c*", "key", key))
+ .withBinaryVersion(version);
}
- catch (Exception e) {
- throw new IOException(e);
+ finally {
+ log.info("Deleting zipped index File[%s]", compressedIndexFile);
+ compressedIndexFile.delete();
}
-
- segment = segment.withSize(indexSize)
- .withLoadSpec(ImmutableMap.of("type", "c*", "key", key))
- .withBinaryVersion(version);
-
- log.info("Deleting zipped index File[%s]", compressedIndexFile);
- compressedIndexFile.delete();
- return segment;
}
@Override
diff --git
a/extensions-contrib/cloudfiles-extensions/src/main/java/org/apache/druid/storage/cloudfiles/CloudFilesDataSegmentPusher.java
b/extensions-contrib/cloudfiles-extensions/src/main/java/org/apache/druid/storage/cloudfiles/CloudFilesDataSegmentPusher.java
index 987530b2931..fab3b7d4065 100644
---
a/extensions-contrib/cloudfiles-extensions/src/main/java/org/apache/druid/storage/cloudfiles/CloudFilesDataSegmentPusher.java
+++
b/extensions-contrib/cloudfiles-extensions/src/main/java/org/apache/druid/storage/cloudfiles/CloudFilesDataSegmentPusher.java
@@ -72,8 +72,8 @@ public class CloudFilesDataSegmentPusher implements
DataSegmentPusher
File zipOutFile = null;
try {
- final File descFile = descriptorFile = File.createTempFile("descriptor",
".json");
- final File outFile = zipOutFile = File.createTempFile("druid",
"index.zip");
+ final File descFile = descriptorFile =
Files.createTempFile("descriptor", ".json").toFile();
+ final File outFile = zipOutFile = Files.createTempFile("druid",
"index.zip").toFile();
final long indexSize = CompressionUtils.zip(indexFilesDir, zipOutFile);
diff --git
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorGroupByTestBase.java
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorGroupByTestBase.java
index 33cf6b01afd..9112d49ed95 100644
---
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorGroupByTestBase.java
+++
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorGroupByTestBase.java
@@ -37,9 +37,11 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.io.File;
+import java.io.InputStream;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.TimeZone;
@@ -92,16 +94,22 @@ public abstract class
CompressedBigDecimalAggregatorGroupByTestBase
@Test
public void testIngestAndGroupByAllQuery() throws Exception
{
- Sequence<ResultRow> seq = helper.createIndexAndRunQueryOnSegment(
- this.getClass().getResourceAsStream("/" + "bd_test_data.csv"),
- CompressedBigDecimalAggregatorTimeseriesTestBase.SCHEMA,
- CompressedBigDecimalAggregatorTimeseriesTestBase.FORMAT,
- cbdGroupByQueryConfig.getIngestionAggregators(),
- 0,
- Granularities.NONE,
- 5,
- cbdGroupByQueryConfig.getQuery()
- );
+ final Sequence<ResultRow> seq;
+ try (final InputStream inputStream = Objects.requireNonNull(
+
CompressedBigDecimalAggregatorGroupByTestBase.class.getResourceAsStream("/bd_test_data.csv"),
+ "Missing resource /bd_test_data.csv"
+ )) {
+ seq = helper.createIndexAndRunQueryOnSegment(
+ inputStream,
+ CompressedBigDecimalAggregatorTimeseriesTestBase.SCHEMA,
+ CompressedBigDecimalAggregatorTimeseriesTestBase.FORMAT,
+ cbdGroupByQueryConfig.getIngestionAggregators(),
+ 0,
+ Granularities.NONE,
+ 5,
+ cbdGroupByQueryConfig.getQuery()
+ );
+ }
List<ResultRow> results = seq.toList();
Assertions.assertEquals(1, results.size());
diff --git
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTimeseriesTestBase.java
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTimeseriesTestBase.java
index 532b3c35b34..53f84d76009 100644
---
a/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTimeseriesTestBase.java
+++
b/extensions-contrib/compressed-bigdecimal/src/test/java/org/apache/druid/compressedbigdecimal/aggregator/CompressedBigDecimalAggregatorTimeseriesTestBase.java
@@ -48,10 +48,15 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
import java.math.BigDecimal;
+import java.nio.file.Files;
+import java.nio.file.StandardCopyOption;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.TimeZone;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -122,16 +127,22 @@ public abstract class
CompressedBigDecimalAggregatorTimeseriesTestBase extends I
String expected
) throws Exception
{
- Sequence seq = helper.createIndexAndRunQueryOnSegment(
- this.getClass().getResourceAsStream("/" + "bd_test_data.csv"),
- SCHEMA,
- FORMAT,
- ingestionAggregators,
- 0,
- Granularities.NONE,
- 5,
- query
- );
+ final Sequence seq;
+ try (final InputStream inputStream = Objects.requireNonNull(
+
CompressedBigDecimalAggregatorTimeseriesTestBase.class.getResourceAsStream("/bd_test_data.csv"),
+ "Missing resource /bd_test_data.csv"
+ )) {
+ seq = helper.createIndexAndRunQueryOnSegment(
+ inputStream,
+ SCHEMA,
+ FORMAT,
+ ingestionAggregators,
+ 0,
+ Granularities.NONE,
+ 5,
+ query
+ );
+ }
TimeseriesResultValue result = ((Result<TimeseriesResultValue>)
Iterables.getOnlyElement(seq.toList())).getValue();
Map<String, Object> event = result.getBaseObject();
@@ -163,7 +174,7 @@ public abstract class
CompressedBigDecimalAggregatorTimeseriesTestBase extends I
final File segmentDir1 = new File(tempFolder, "segment1");
FileUtils.mkdirp(segmentDir1);
helper.createIndex(
- new File(this.getClass().getResource("/" +
"bd_test_data.csv").getFile()),
+ copyResourceToTemporaryFile("/bd_test_data.csv"),
SCHEMA,
FORMAT,
ingestionAggregators,
@@ -175,7 +186,7 @@ public abstract class
CompressedBigDecimalAggregatorTimeseriesTestBase extends I
final File segmentDir2 = new File(tempFolder, "segment2");
FileUtils.mkdirp(segmentDir2);
helper.createIndex(
- new File(this.getClass().getResource("/" +
"bd_test_zero_data.csv").getFile()),
+ copyResourceToTemporaryFile("/bd_test_zero_data.csv"),
SCHEMA,
FORMAT,
ingestionAggregators,
@@ -202,4 +213,16 @@ public abstract class
CompressedBigDecimalAggregatorTimeseriesTestBase extends I
event.get("cbdStringRevenue")
);
}
+
+ private File copyResourceToTemporaryFile(final String resource) throws
IOException
+ {
+ final File resourceFile = Files.createTempFile(tempFolder.toPath(),
"compressed-bigdecimal-", ".csv").toFile();
+ try (final InputStream inputStream = Objects.requireNonNull(
+
CompressedBigDecimalAggregatorTimeseriesTestBase.class.getResourceAsStream(resource),
+ "Missing resource " + resource
+ )) {
+ Files.copy(inputStream, resourceFile.toPath(),
StandardCopyOption.REPLACE_EXISTING);
+ }
+ return resourceFile;
+ }
}
diff --git
a/extensions-contrib/graphite-emitter/src/test/java/org/apache/druid/emitter/graphite/WhiteListBasedConverterTest.java
b/extensions-contrib/graphite-emitter/src/test/java/org/apache/druid/emitter/graphite/WhiteListBasedConverterTest.java
index 6cb014214e2..51ca40cef03 100644
---
a/extensions-contrib/graphite-emitter/src/test/java/org/apache/druid/emitter/graphite/WhiteListBasedConverterTest.java
+++
b/extensions-contrib/graphite-emitter/src/test/java/org/apache/druid/emitter/graphite/WhiteListBasedConverterTest.java
@@ -22,8 +22,10 @@ package org.apache.druid.emitter.graphite;
import org.apache.commons.io.IOUtils;
import org.apache.druid.jackson.DefaultObjectMapper;
import org.apache.druid.java.util.emitter.service.ServiceMetricEvent;
+import org.apache.druid.testing.TemporaryFolderExtension;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.MethodSource;
@@ -31,11 +33,16 @@ import org.junit.jupiter.params.provider.MethodSource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
+import java.util.Objects;
public class WhiteListBasedConverterTest
{
+ @RegisterExtension
+ public final TemporaryFolderExtension temporaryFolder =
TemporaryFolderExtension.testCaseScoped();
+
private static final String PREFIX = "druid";
private static final String HOSTNAME = "testHost.yahoo.com:8080";
private static final String SERVICE_NAME = "historical";
@@ -98,14 +105,16 @@ public class WhiteListBasedConverterTest
@Test
public void testWhiteListedStringArrayDimension() throws IOException
{
- File mapFile = File.createTempFile("testing-" + System.nanoTime(),
".json");
- mapFile.deleteOnExit();
-
- try (OutputStream outputStream = new FileOutputStream(mapFile)) {
- IOUtils.copyLarge(
-
getClass().getResourceAsStream("/testWhiteListedStringArrayDimension.json"),
- outputStream
- );
+ final File mapFile = temporaryFolder.newFile("whiteList.json");
+
+ try (
+ final InputStream inputStream = Objects.requireNonNull(
+
WhiteListBasedConverterTest.class.getResourceAsStream("/testWhiteListedStringArrayDimension.json"),
+ "Missing test resource: /testWhiteListedStringArrayDimension.json"
+ );
+ final OutputStream outputStream = new FileOutputStream(mapFile)
+ ) {
+ IOUtils.copyLarge(inputStream, outputStream);
}
WhiteListBasedConverter converter = new WhiteListBasedConverter(
diff --git
a/extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/MovingAverageQueryTest.java
b/extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/MovingAverageQueryTest.java
index 960ced2fd1e..b431f50f252 100644
---
a/extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/MovingAverageQueryTest.java
+++
b/extensions-contrib/moving-average-query/src/test/java/org/apache/druid/query/movingaverage/MovingAverageQueryTest.java
@@ -94,6 +94,7 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.concurrent.ForkJoinPool;
@@ -183,9 +184,12 @@ public class MovingAverageQueryTest extends
InitializedNullHandlingTest
retryConfig = injector.getInstance(RetryQueryRunnerConfig.class);
serverConfig = injector.getInstance(ServerConfig.class);
- ObjectMapper reader = new ObjectMapper(new YAMLFactory());
- try (final InputStream is = getClass().getResourceAsStream("/queryTests/"
+ yamlFile)) {
- config = reader.readValue(is, TestConfig.class);
+ final ObjectMapper reader = new ObjectMapper(new YAMLFactory());
+ try (final InputStream inputStream = Objects.requireNonNull(
+ MovingAverageQueryTest.class.getResourceAsStream("/queryTests/" +
yamlFile),
+ "Missing query test resource " + yamlFile
+ )) {
+ config = reader.readValue(inputStream, TestConfig.class);
}
}
diff --git
a/extensions-core/azure-extensions/src/main/java/org/apache/druid/storage/azure/AzureDataSegmentPusher.java
b/extensions-core/azure-extensions/src/main/java/org/apache/druid/storage/azure/AzureDataSegmentPusher.java
index 429c699b276..000f689552f 100644
---
a/extensions-core/azure-extensions/src/main/java/org/apache/druid/storage/azure/AzureDataSegmentPusher.java
+++
b/extensions-core/azure-extensions/src/main/java/org/apache/druid/storage/azure/AzureDataSegmentPusher.java
@@ -35,6 +35,7 @@ import org.joda.time.format.ISODateTimeFormat;
import java.io.File;
import java.io.IOException;
import java.net.URI;
+import java.nio.file.Files;
import java.util.Map;
/**
@@ -104,7 +105,7 @@ public class AzureDataSegmentPusher implements
DataSegmentPusher
File zipOutFile = null;
try {
- final File outFile = zipOutFile = File.createTempFile("index", ".zip");
+ final File outFile = zipOutFile = Files.createTempFile("index",
".zip").toFile();
final long size = CompressionUtils.zip(indexFilesDir, zipOutFile);
return uploadDataSegment(segment, binaryVersion, size, outFile,
azurePath);
diff --git
a/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleDataSegmentPusher.java
b/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleDataSegmentPusher.java
index c5be311f647..1da95ad1aa5 100644
---
a/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleDataSegmentPusher.java
+++
b/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/GoogleDataSegmentPusher.java
@@ -35,6 +35,7 @@ import org.apache.druid.utils.CompressionUtils;
import java.io.File;
import java.io.IOException;
import java.net.URI;
+import java.nio.file.Files;
import java.util.Map;
public class GoogleDataSegmentPusher implements DataSegmentPusher
@@ -93,7 +94,7 @@ public class GoogleDataSegmentPusher implements
DataSegmentPusher
File indexFile = null;
try {
- indexFile = File.createTempFile("index", ".zip");
+ indexFile = Files.createTempFile("index", ".zip").toFile();
final long indexSize = CompressionUtils.zip(indexFilesDir, indexFile);
final String indexPath = buildPath(storageDirSuffix + "/" + "index.zip");
diff --git
a/extensions-core/hdfs-storage/src/test/java/org/apache/druid/segment/loading/HdfsFileTimestampVersionFinderTest.java
b/extensions-core/hdfs-storage/src/test/java/org/apache/druid/segment/loading/HdfsFileTimestampVersionFinderTest.java
index 685d4e243dd..64cf259a6dd 100644
---
a/extensions-core/hdfs-storage/src/test/java/org/apache/druid/segment/loading/HdfsFileTimestampVersionFinderTest.java
+++
b/extensions-core/hdfs-storage/src/test/java/org/apache/druid/segment/loading/HdfsFileTimestampVersionFinderTest.java
@@ -21,7 +21,6 @@ package org.apache.druid.segment.loading;
import com.google.common.io.ByteStreams;
import org.apache.druid.java.util.common.FileUtils;
-import org.apache.druid.java.util.common.IOE;
import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.storage.hdfs.HdfsFileTimestampVersionFinder;
import org.apache.hadoop.conf.Configuration;
@@ -57,17 +56,13 @@ public class HdfsFileTimestampVersionFinderTest
@BeforeAll
public static void setupStatic() throws IOException
{
- hdfsTmpDir = File.createTempFile("hdfsHandlerTest", "dir");
- if (!hdfsTmpDir.delete()) {
- throw new IOE("Unable to delete hdfsTmpDir [%s]",
hdfsTmpDir.getAbsolutePath());
- }
+ hdfsTmpDir = FileUtils.createTempDir("hdfsHandlerTest");
conf = new Configuration(true);
fileSystem = new LocalFileSystem();
fileSystem.initialize(hdfsTmpDir.toURI(), conf);
fileSystem.setWorkingDirectory(new Path(hdfsTmpDir.toURI()));
- final File tmpFile = File.createTempFile("hdfsHandlerTest", ".data");
- tmpFile.delete();
+ final File tmpFile = new File(hdfsTmpDir, "input.data");
try {
Files.copy(new ByteArrayInputStream(pathByteContents), tmpFile.toPath());
try (OutputStream stream = fileSystem.create(filePath)) {
diff --git
a/extensions-core/hdfs-storage/src/test/java/org/apache/druid/storage/hdfs/HdfsDataSegmentPullerTest.java
b/extensions-core/hdfs-storage/src/test/java/org/apache/druid/storage/hdfs/HdfsDataSegmentPullerTest.java
index c042749c5be..b951ffe3011 100644
---
a/extensions-core/hdfs-storage/src/test/java/org/apache/druid/storage/hdfs/HdfsDataSegmentPullerTest.java
+++
b/extensions-core/hdfs-storage/src/test/java/org/apache/druid/storage/hdfs/HdfsDataSegmentPullerTest.java
@@ -21,7 +21,6 @@ package org.apache.druid.storage.hdfs;
import com.google.common.io.ByteStreams;
import org.apache.druid.java.util.common.FileUtils;
-import org.apache.druid.java.util.common.IOE;
import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.segment.loading.SegmentLoadingException;
import org.apache.druid.utils.CompressionUtils;
@@ -61,17 +60,13 @@ public class HdfsDataSegmentPullerTest
@BeforeAll
public static void setupStatic() throws IOException
{
- hdfsTmpDir = File.createTempFile("hdfsHandlerTest", "dir");
- if (!hdfsTmpDir.delete()) {
- throw new IOE("Unable to delete hdfsTmpDir [%s]",
hdfsTmpDir.getAbsolutePath());
- }
+ hdfsTmpDir = FileUtils.createTempDir("hdfsHandlerTest");
conf = new Configuration(true);
fileSystem = new LocalFileSystem();
fileSystem.initialize(hdfsTmpDir.toURI(), conf);
fileSystem.setWorkingDirectory(new Path(hdfsTmpDir.toURI()));
- final File tmpFile = File.createTempFile("hdfsHandlerTest", ".data");
- tmpFile.delete();
+ final File tmpFile = new File(hdfsTmpDir, "input.data");
try {
Files.copy(new ByteArrayInputStream(pathByteContents), tmpFile.toPath());
try (OutputStream stream = fileSystem.create(filePath)) {
diff --git
a/extensions-core/kafka-indexing-service/src/test/java/org/apache/druid/indexing/kafka/KafkaIndexTaskTest.java
b/extensions-core/kafka-indexing-service/src/test/java/org/apache/druid/indexing/kafka/KafkaIndexTaskTest.java
index f72fe6cc640..b4c15e867d7 100644
---
a/extensions-core/kafka-indexing-service/src/test/java/org/apache/druid/indexing/kafka/KafkaIndexTaskTest.java
+++
b/extensions-core/kafka-indexing-service/src/test/java/org/apache/druid/indexing/kafka/KafkaIndexTaskTest.java
@@ -313,7 +313,7 @@ public class KafkaIndexTaskTest extends
SeekableStreamIndexTaskTestBase
doHandoff = true;
topic = getTopicName();
records = generateRecords(topic);
- reportsFile = File.createTempFile("KafkaIndexTaskTestReports-" +
System.currentTimeMillis(), "json");
+ reportsFile = temporaryFolder.newFile("KafkaIndexTaskTestReports.json");
makeToolboxFactory();
}
diff --git
a/extensions-core/kinesis-indexing-service/src/test/java/org/apache/druid/indexing/kinesis/KinesisIndexTaskTest.java
b/extensions-core/kinesis-indexing-service/src/test/java/org/apache/druid/indexing/kinesis/KinesisIndexTaskTest.java
index 832839e528c..d6282f8aeda 100644
---
a/extensions-core/kinesis-indexing-service/src/test/java/org/apache/druid/indexing/kinesis/KinesisIndexTaskTest.java
+++
b/extensions-core/kinesis-indexing-service/src/test/java/org/apache/druid/indexing/kinesis/KinesisIndexTaskTest.java
@@ -216,7 +216,7 @@ public class KinesisIndexTaskTest extends
SeekableStreamIndexTaskTestBase
maxParseExceptions = null;
maxSavedParseExceptions = null;
doHandoff = true;
- reportsFile = File.createTempFile("KinesisIndexTaskTestReports-" +
System.currentTimeMillis(), "json");
+ reportsFile = temporaryFolder.newFile("KinesisIndexTaskTestReports.json");
maxRecordsPerPoll = 1;
maxBytesPerPoll = 1_000_000;
diff --git
a/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/cache/OffHeapNamespaceExtractionCacheManager.java
b/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/cache/OffHeapNamespaceExtractionCacheManager.java
index 48ccc63d3f3..54cc718c7dd 100644
---
a/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/cache/OffHeapNamespaceExtractionCacheManager.java
+++
b/extensions-core/lookups-cached-global/src/main/java/org/apache/druid/server/lookup/namespace/cache/OffHeapNamespaceExtractionCacheManager.java
@@ -36,6 +36,7 @@ import org.mapdb.HTreeMap;
import java.io.File;
import java.io.IOException;
+import java.nio.file.Files;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
@@ -170,7 +171,7 @@ public class OffHeapNamespaceExtractionCacheManager extends
NamespaceExtractionC
{
super(lifecycle, serviceEmitter, config);
try {
- tmpFile = File.createTempFile("druidMapDB", getClass().getName());
+ tmpFile = Files.createTempFile("druidMapDB",
getClass().getName()).toFile();
log.info("Using file [%s] for mapDB off heap namespace cache",
tmpFile.getAbsolutePath());
}
catch (IOException e) {
diff --git
a/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPusher.java
b/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPusher.java
index 12d2cde8f65..b7da01bfbaa 100644
---
a/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPusher.java
+++
b/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/S3DataSegmentPusher.java
@@ -34,6 +34,7 @@ import software.amazon.awssdk.services.s3.model.S3Exception;
import java.io.File;
import java.io.IOException;
import java.net.URI;
+import java.nio.file.Files;
import java.util.Map;
public class S3DataSegmentPusher implements DataSegmentPusher
@@ -76,27 +77,29 @@ public class S3DataSegmentPusher implements
DataSegmentPusher
private DataSegment pushZip(File indexFilesDir, DataSegment baseSegment,
String s3Path) throws IOException
{
- final File zipOutFile = File.createTempFile("druid", "index.zip");
- final long indexSize = CompressionUtils.zip(indexFilesDir, zipOutFile);
+ final File zipOutFile = Files.createTempFile("druid",
"index.zip").toFile();
+ try {
+ final long indexSize = CompressionUtils.zip(indexFilesDir, zipOutFile);
- final DataSegment outSegment = baseSegment.withSize(indexSize)
-
.withLoadSpec(makeLoadSpec(config.getBucket(), s3Path))
-
.withBinaryVersion(SegmentUtils.getVersionFromDir(indexFilesDir));
+ final DataSegment outSegment = baseSegment.withSize(indexSize)
+
.withLoadSpec(makeLoadSpec(config.getBucket(), s3Path))
+
.withBinaryVersion(SegmentUtils.getVersionFromDir(indexFilesDir));
- try {
- return S3Utils.retryS3Operation(
- () -> {
- S3Utils.uploadFileIfPossible(s3Client, config.getDisableAcl(),
config.getBucket(), s3Path, zipOutFile);
+ try {
+ return S3Utils.retryS3Operation(
+ () -> {
+ S3Utils.uploadFileIfPossible(s3Client, config.getDisableAcl(),
config.getBucket(), s3Path, zipOutFile);
- return outSegment;
- }
- );
- }
- catch (S3Exception e) {
- throw handlePushServiceException(e, indexSize);
- }
- catch (Exception e) {
- throw new RuntimeException(e);
+ return outSegment;
+ }
+ );
+ }
+ catch (S3Exception e) {
+ throw handlePushServiceException(e, indexSize);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
finally {
log.debug("Deleting temporary cached index.zip");
diff --git
a/processing/src/main/java/org/apache/druid/java/util/metrics/CgroupCpuMonitor.java
b/processing/src/main/java/org/apache/druid/java/util/metrics/CgroupCpuMonitor.java
index 1c6dc7abcea..c00fb2faadc 100644
---
a/processing/src/main/java/org/apache/druid/java/util/metrics/CgroupCpuMonitor.java
+++
b/processing/src/main/java/org/apache/druid/java/util/metrics/CgroupCpuMonitor.java
@@ -123,9 +123,11 @@ public class CgroupCpuMonitor extends FeedDefiningMonitor
private void initUzerHz()
{
try {
- Process p = new ProcessBuilder("getconf", "CLK_TCK").start();
+ // getconf has no portable absolute location; the fixed command and
argument intentionally use the service PATH.
+ // codeql[java/relative-path-command]
+ final Process p = new ProcessBuilder("getconf", "CLK_TCK").start();
try (BufferedReader in = new BufferedReader(new
InputStreamReader(p.getInputStream(), StandardCharsets.UTF_8))) {
- String line = in.readLine();
+ final String line = in.readLine();
if (line != null) {
userHz = Long.valueOf(line.trim());
}
diff --git
a/processing/src/test/java/org/apache/druid/data/input/impl/prefetch/JsonIteratorTest.java
b/processing/src/test/java/org/apache/druid/data/input/impl/prefetch/JsonIteratorTest.java
index 11d4fe1812c..fb09f813e19 100644
---
a/processing/src/test/java/org/apache/druid/data/input/impl/prefetch/JsonIteratorTest.java
+++
b/processing/src/test/java/org/apache/druid/data/input/impl/prefetch/JsonIteratorTest.java
@@ -30,6 +30,7 @@ import com.google.common.collect.ImmutableMap;
import org.apache.druid.java.util.common.jackson.JacksonUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
import java.io.File;
import java.io.FileInputStream;
@@ -41,13 +42,16 @@ import java.util.Map;
public class JsonIteratorTest
{
+ @TempDir
+ public File temporaryFolder;
+
@Test
public void testSerde() throws IOException
{
final ObjectMapper mapper = new ObjectMapper(new SmileFactory());
- List<Map<String, Object>> expectedList =
ImmutableList.of(ImmutableMap.of("key1", "value1", "key2", 2));
- File testFile = File.createTempFile("testfile", "");
- TypeReference<Map<String, Object>> type = new TypeReference<>() {};
+ final List<Map<String, Object>> expectedList =
ImmutableList.of(ImmutableMap.of("key1", "value1", "key2", 2));
+ final File testFile = new File(temporaryFolder, "testfile");
+ final TypeReference<Map<String, Object>> type = new TypeReference<>() {};
try (FileOutputStream fos = new FileOutputStream(testFile)) {
final JsonGenerator jg = mapper.getFactory().createGenerator(fos);
final SerializerProvider serializers =
mapper.getSerializerProviderInstance();
@@ -59,9 +63,13 @@ public class JsonIteratorTest
jg.close();
}
- JsonIterator<Map<String, Object>> testJsonIterator = new
JsonIterator<>(type, new FileInputStream(testFile), () -> {
- }, mapper);
- List<Map<String, Object>> actualList = new ArrayList<>();
+ final JsonIterator<Map<String, Object>> testJsonIterator = new
JsonIterator<>(
+ type,
+ new FileInputStream(testFile),
+ () -> {},
+ mapper
+ );
+ final List<Map<String, Object>> actualList = new ArrayList<>();
while (testJsonIterator.hasNext()) {
actualList.add(testJsonIterator.next());
}
diff --git a/processing/src/test/java/org/apache/druid/frame/FrameTest.java
b/processing/src/test/java/org/apache/druid/frame/FrameTest.java
index a11277f833a..334f50e7a39 100644
--- a/processing/src/test/java/org/apache/druid/frame/FrameTest.java
+++ b/processing/src/test/java/org/apache/druid/frame/FrameTest.java
@@ -29,6 +29,7 @@ import org.apache.druid.frame.key.KeyColumn;
import org.apache.druid.frame.key.KeyOrder;
import org.apache.druid.frame.testutil.FrameSequenceBuilder;
import org.apache.druid.java.util.common.ByteBufferUtils;
+import org.apache.druid.java.util.common.FileUtils;
import org.apache.druid.java.util.common.io.Closer;
import org.apache.druid.segment.CursorFactory;
import org.apache.druid.segment.QueryableIndexCursorFactory;
@@ -226,8 +227,9 @@ public class FrameTest
@Override
Frame wrap(Closer closer) throws IOException
{
- final File file = File.createTempFile("frame-test", "");
- closer.register(file::delete);
+ final File temporaryFolder = FileUtils.createTempDir("frame-test");
+ final File file = new File(temporaryFolder, "frame");
+ closer.register(() -> FileUtils.deleteDirectory(temporaryFolder));
Files.write(FRAME_DATA, file);
final MappedByteBuffer buf = Files.map(file);
closer.register(() -> ByteBufferUtils.unmap(buf));
@@ -237,8 +239,9 @@ public class FrameTest
@Override
Frame decompress(Closer closer) throws IOException
{
- final File file = File.createTempFile("frame-test", "");
- closer.register(file::delete);
+ final File temporaryFolder = FileUtils.createTempDir("frame-test");
+ final File file = new File(temporaryFolder, "frame");
+ closer.register(() -> FileUtils.deleteDirectory(temporaryFolder));
Files.write(FRAME_DATA_COMPRESSED, file);
final MappedByteBuffer buf = Files.map(file);
closer.register(() -> ByteBufferUtils.unmap(buf));
diff --git
a/processing/src/test/java/org/apache/druid/java/util/common/io/smoosh/SmooshedFileMapperTest.java
b/processing/src/test/java/org/apache/druid/java/util/common/io/smoosh/SmooshedFileMapperTest.java
index ce8ec246625..99819175b5f 100644
---
a/processing/src/test/java/org/apache/druid/java/util/common/io/smoosh/SmooshedFileMapperTest.java
+++
b/processing/src/test/java/org/apache/druid/java/util/common/io/smoosh/SmooshedFileMapperTest.java
@@ -69,7 +69,7 @@ public class SmooshedFileMapperTest
final SegmentFileChannel writer =
smoosher.addWithChannel(StringUtils.format("%d", 19), 4);
for (int i = 0; i < 19; ++i) {
- File tmpFile = File.createTempFile(StringUtils.format("smoosh-%s", i),
".bin");
+ final File tmpFile =
temporaryFolder.newFile(StringUtils.format("smoosh-%s.bin", i));
Files.write(Ints.toByteArray(i), tmpFile);
smoosher.add(StringUtils.format("%d", i), tmpFile);
if (i == 10) {
@@ -122,7 +122,7 @@ public class SmooshedFileMapperTest
writer.write(ByteBuffer.wrap(Ints.toByteArray(19)));
for (int i = 0; i < 19; ++i) {
- File tmpFile = File.createTempFile(StringUtils.format("smoosh-%s", i),
".bin");
+ final File tmpFile =
temporaryFolder.newFile(StringUtils.format("smoosh-%s.bin", i));
Files.write(Ints.toByteArray(i), tmpFile);
smoosher.add(StringUtils.format("%d", i), tmpFile);
tmpFile.delete();
@@ -143,7 +143,7 @@ public class SmooshedFileMapperTest
writer.write(ByteBuffer.wrap(Ints.toByteArray(19)));
for (int i = 0; i < 19; ++i) {
- File tmpFile = File.createTempFile(StringUtils.format("smoosh-%s", i),
".bin");
+ final File tmpFile =
temporaryFolder.newFile(StringUtils.format("smoosh-%s.bin", i));
Files.write(Ints.toByteArray(i), tmpFile);
smoosher.add(StringUtils.format("%s%d", prefix, i), tmpFile);
tmpFile.delete();
diff --git
a/processing/src/test/java/org/apache/druid/query/DoubleStorageTest.java
b/processing/src/test/java/org/apache/druid/query/DoubleStorageTest.java
index 5886bb524e0..7e7e5446423 100644
--- a/processing/src/test/java/org/apache/druid/query/DoubleStorageTest.java
+++ b/processing/src/test/java/org/apache/druid/query/DoubleStorageTest.java
@@ -27,7 +27,6 @@ import org.apache.druid.data.input.impl.DimensionsSpec;
import org.apache.druid.data.input.impl.MapInputRowParser;
import org.apache.druid.data.input.impl.TimestampSpec;
import org.apache.druid.java.util.common.DateTimes;
-import org.apache.druid.java.util.common.FileUtils;
import org.apache.druid.java.util.common.Intervals;
import org.apache.druid.query.aggregation.DoubleSumAggregatorFactory;
import org.apache.druid.query.metadata.SegmentMetadataQueryConfig;
@@ -59,12 +58,14 @@ import
org.apache.druid.segment.incremental.IncrementalIndexSchema;
import org.apache.druid.segment.incremental.OnheapIncrementalIndex;
import
org.apache.druid.segment.writeout.OffHeapMemorySegmentWriteOutMediumFactory;
import org.apache.druid.testing.InitializedNullHandlingTest;
+import org.apache.druid.testing.TemporaryFolderExtension;
import org.apache.druid.timeline.SegmentId;
import org.joda.time.Interval;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.params.ParameterizedClass;
import org.junit.jupiter.params.provider.MethodSource;
@@ -133,6 +134,9 @@ public class DoubleStorageTest extends
InitializedNullHandlingTest
private final SegmentAnalysis expectedSegmentAnalysis;
private final String storeDoubleAs;
+ @RegisterExtension
+ public final TemporaryFolderExtension temporaryFolder =
TemporaryFolderExtension.testCaseScoped();
+
public DoubleStorageTest(
String storeDoubleAs,
SegmentAnalysis expectedSegmentAnalysis
@@ -256,7 +260,7 @@ public class DoubleStorageTest extends
InitializedNullHandlingTest
@BeforeEach
public void setup() throws IOException
{
- index = buildIndex(storeDoubleAs);
+ index = buildIndex(storeDoubleAs, temporaryFolder.newFolder());
}
@Test
@@ -318,7 +322,8 @@ public class DoubleStorageTest extends
InitializedNullHandlingTest
ScanQueryRunnerTest.verify(expectedResults, results);
}
- private static QueryableIndex buildIndex(String storeDoubleAsFloat) throws
IOException
+ private static QueryableIndex buildIndex(final String storeDoubleAsFloat,
final File indexDirectory)
+ throws IOException
{
String oldValue =
System.getProperty(ColumnHolder.DOUBLE_STORAGE_TYPE_PROPERTY);
System.setProperty(ColumnHolder.DOUBLE_STORAGE_TYPE_PROPERTY,
storeDoubleAsFloat);
@@ -351,12 +356,8 @@ public class DoubleStorageTest extends
InitializedNullHandlingTest
} else {
System.setProperty(ColumnHolder.DOUBLE_STORAGE_TYPE_PROPERTY, oldValue);
}
- File someTmpFile = File.createTempFile("billy", "yay");
- someTmpFile.delete();
- FileUtils.mkdirp(someTmpFile);
- INDEX_MERGER_V9.persist(index, someTmpFile, IndexSpec.getDefault(), null);
- someTmpFile.delete();
- return INDEX_IO.loadIndex(someTmpFile);
+ INDEX_MERGER_V9.persist(index, indexDirectory, IndexSpec.getDefault(),
null);
+ return INDEX_IO.loadIndex(indexDirectory);
}
@AfterEach
diff --git
a/processing/src/test/java/org/apache/druid/segment/EmptyIndexTest.java
b/processing/src/test/java/org/apache/druid/segment/EmptyIndexTest.java
index e3b169474a1..2113da5eadb 100644
--- a/processing/src/test/java/org/apache/druid/segment/EmptyIndexTest.java
+++ b/processing/src/test/java/org/apache/druid/segment/EmptyIndexTest.java
@@ -65,13 +65,7 @@ public class EmptyIndexTest
@Test
public void testEmptyIndex() throws Exception
{
- File tmpDir = File.createTempFile("emptyIndex", "");
- if (!tmpDir.delete()) {
- throw new IllegalStateException("tmp delete failed");
- }
- if (!tmpDir.mkdir()) {
- throw new IllegalStateException("tmp mkdir failed");
- }
+ final File tmpDir = FileUtils.createTempDir("emptyIndex");
try {
IncrementalIndex emptyIndex = new OnheapIncrementalIndex.Builder()
diff --git
a/processing/src/test/java/org/apache/druid/segment/IndexMergerV9WithSpatialIndexTest.java
b/processing/src/test/java/org/apache/druid/segment/IndexMergerV9WithSpatialIndexTest.java
index 5e100be81be..cf436ccdcd7 100644
---
a/processing/src/test/java/org/apache/druid/segment/IndexMergerV9WithSpatialIndexTest.java
+++
b/processing/src/test/java/org/apache/druid/segment/IndexMergerV9WithSpatialIndexTest.java
@@ -30,6 +30,7 @@ import org.apache.druid.java.util.common.DateTimes;
import org.apache.druid.java.util.common.FileUtils;
import org.apache.druid.java.util.common.Intervals;
import org.apache.druid.java.util.common.granularity.Granularities;
+import org.apache.druid.java.util.common.io.Closer;
import org.apache.druid.query.Druids;
import org.apache.druid.query.FinalizeResultsQueryRunner;
import org.apache.druid.query.QueryPlus;
@@ -51,6 +52,7 @@ import
org.apache.druid.segment.incremental.OnheapIncrementalIndex;
import org.apache.druid.segment.writeout.SegmentWriteOutMediumFactory;
import org.apache.druid.testing.InitializedNullHandlingTest;
import org.joda.time.Interval;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedClass;
import org.junit.jupiter.params.provider.MethodSource;
@@ -73,6 +75,7 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
{
public static final int NUM_POINTS = 5000;
+ private static final Closer RESOURCE_CLOSER = Closer.create();
private static Interval DATA_INTERVAL =
Intervals.of("2013-01-01/2013-01-07");
private static AggregatorFactory[] METRIC_AGGS = new AggregatorFactory[]{
@@ -90,7 +93,7 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
IndexIO indexIO = TestHelper.getTestIndexIO();
final IndexSpec indexSpec = IndexSpec.getDefault();
- final IncrementalIndex rtIndex = makeIncrementalIndex();
+ final IncrementalIndex rtIndex =
RESOURCE_CLOSER.register(makeIncrementalIndex());
final QueryableIndex mMappedTestIndex = makeQueryableIndex(indexSpec,
indexMergerV9, indexIO);
final QueryableIndex mergedRealtimeIndex =
makeMergedQueryableIndex(indexSpec, indexMergerV9, indexIO);
argumentArrays.add(new Object[] {new IncrementalIndexSegment(rtIndex,
null)});
@@ -255,17 +258,10 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
private static QueryableIndex makeQueryableIndex(IndexSpec indexSpec,
IndexMergerV9 indexMergerV9, IndexIO indexIO)
throws IOException
{
- IncrementalIndex theIndex = makeIncrementalIndex();
- File tmpFile = File.createTempFile("billy", "yay");
- tmpFile.delete();
- FileUtils.mkdirp(tmpFile);
-
- try {
+ final File tmpFile = createTempDir("spatial-index");
+ try (final IncrementalIndex theIndex = makeIncrementalIndex()) {
indexMergerV9.persist(theIndex, tmpFile, indexSpec, null);
- return indexIO.loadIndex(tmpFile);
- }
- finally {
- FileUtils.deleteDirectory(tmpFile);
+ return RESOURCE_CLOSER.register(indexIO.loadIndex(tmpFile));
}
}
@@ -275,8 +271,8 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
IndexIO indexIO
)
{
- try {
- IncrementalIndex first = new OnheapIncrementalIndex.Builder()
+ try (final Closer closer = Closer.create()) {
+ final IncrementalIndex first = closer.register(new
OnheapIncrementalIndex.Builder()
.setIndexSchema(
new IncrementalIndexSchema.Builder()
.withMinTimestamp(DATA_INTERVAL.getStartMillis())
@@ -300,9 +296,9 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
).build()
)
.setMaxRowCount(1000)
- .build();
+ .build());
- IncrementalIndex second = new OnheapIncrementalIndex.Builder()
+ final IncrementalIndex second = closer.register(new
OnheapIncrementalIndex.Builder()
.setIndexSchema(
new IncrementalIndexSchema.Builder()
.withMinTimestamp(DATA_INTERVAL.getStartMillis())
@@ -326,9 +322,9 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
).build()
)
.setMaxRowCount(1000)
- .build();
+ .build());
- IncrementalIndex third = new OnheapIncrementalIndex.Builder()
+ final IncrementalIndex third = closer.register(new
OnheapIncrementalIndex.Builder()
.setIndexSchema(
new IncrementalIndexSchema.Builder()
.withMinTimestamp(DATA_INTERVAL.getStartMillis())
@@ -352,7 +348,7 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
).build()
)
.setMaxRowCount(NUM_POINTS)
- .build();
+ .build());
first.add(
new MapBasedInputRow(
@@ -476,13 +472,12 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
}
- File tmpFile = File.createTempFile("yay", "who");
- tmpFile.delete();
+ final File tmpFile = createTempDir("spatial-index-merge");
- File firstFile = new File(tmpFile, "first");
- File secondFile = new File(tmpFile, "second");
- File thirdFile = new File(tmpFile, "third");
- File mergedFile = new File(tmpFile, "merged");
+ final File firstFile = new File(tmpFile, "first");
+ final File secondFile = new File(tmpFile, "second");
+ final File thirdFile = new File(tmpFile, "third");
+ final File mergedFile = new File(tmpFile, "merged");
FileUtils.mkdirp(firstFile);
FileUtils.mkdirp(secondFile);
@@ -493,31 +488,21 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
indexMergerV9.persist(second, DATA_INTERVAL, secondFile, indexSpec,
null);
indexMergerV9.persist(third, DATA_INTERVAL, thirdFile, indexSpec, null);
- try {
- QueryableIndex mergedRealtime = indexIO.loadIndex(
- indexMergerV9.mergeQueryableIndex(
- Arrays.asList(
- indexIO.loadIndex(firstFile),
- indexIO.loadIndex(secondFile),
- indexIO.loadIndex(thirdFile)
- ),
- true,
- METRIC_AGGS,
- mergedFile,
- indexSpec,
- null,
- -1
- )
- );
- return mergedRealtime;
-
- }
- finally {
- FileUtils.deleteDirectory(firstFile);
- FileUtils.deleteDirectory(secondFile);
- FileUtils.deleteDirectory(thirdFile);
- FileUtils.deleteDirectory(mergedFile);
- }
+ return RESOURCE_CLOSER.register(indexIO.loadIndex(
+ indexMergerV9.mergeQueryableIndex(
+ Arrays.asList(
+ closer.register(indexIO.loadIndex(firstFile)),
+ closer.register(indexIO.loadIndex(secondFile)),
+ closer.register(indexIO.loadIndex(thirdFile))
+ ),
+ true,
+ METRIC_AGGS,
+ mergedFile,
+ indexSpec,
+ null,
+ -1
+ )
+ ));
}
catch (IOException e) {
@@ -525,6 +510,19 @@ public class IndexMergerV9WithSpatialIndexTest extends
InitializedNullHandlingTe
}
}
+ private static File createTempDir(final String prefix)
+ {
+ final File tmpFile = FileUtils.createTempDir(prefix);
+ RESOURCE_CLOSER.register(() -> FileUtils.deleteDirectory(tmpFile));
+ return tmpFile;
+ }
+
+ @AfterAll
+ public static void tearDown() throws IOException
+ {
+ RESOURCE_CLOSER.close();
+ }
+
private final Segment segment;
public IndexMergerV9WithSpatialIndexTest(Segment segment)
diff --git a/processing/src/test/java/org/apache/druid/segment/TestIndex.java
b/processing/src/test/java/org/apache/druid/segment/TestIndex.java
index fd7ef370b1d..3b383bccc91 100644
--- a/processing/src/test/java/org/apache/druid/segment/TestIndex.java
+++ b/processing/src/test/java/org/apache/druid/segment/TestIndex.java
@@ -270,8 +270,8 @@ public class TestIndex
IncrementalIndex top = makeSampleNumericTopIncrementalIndex();
IncrementalIndex bottom = makeSampleNumericBottomIncrementalIndex();
- File tmpFile = File.createTempFile("yay", "who");
- tmpFile.delete();
+ final File tmpFile = FileUtils.createTempDir("test-index-merge");
+ tmpFile.deleteOnExit();
File topFile = new File(tmpFile, "top");
File bottomFile = new File(tmpFile, "bottom");
@@ -520,9 +520,10 @@ public class TestIndex
public static QueryableIndex persistAndMemoryMap(IncrementalIndex index,
IndexSpec indexSpec)
{
try {
- File someTmpFile = File.createTempFile("billy", "yay");
- someTmpFile = persist(index, indexSpec, someTmpFile);
- return INDEX_IO.loadIndex(someTmpFile);
+ final File temporaryFolder = FileUtils.createTempDir("test-index");
+ temporaryFolder.deleteOnExit();
+ final File persistedFile = persist(index, indexSpec, new
File(temporaryFolder, "index"));
+ return INDEX_IO.loadIndex(persistedFile);
}
catch (IOException e) {
throw new RuntimeException(e);
diff --git
a/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterBonusTest.java
b/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterBonusTest.java
index f0c0090fc92..f3f8e35fe0f 100644
---
a/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterBonusTest.java
+++
b/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterBonusTest.java
@@ -246,10 +246,8 @@ public class SpatialFilterBonusTest
private static QueryableIndex makeQueryableIndex(IndexSpec indexSpec,
IndexMerger indexMerger, IndexIO indexIO)
throws IOException
{
- IncrementalIndex theIndex = makeIncrementalIndex();
- File tmpFile = File.createTempFile("billy", "yay");
- tmpFile.delete();
- FileUtils.mkdirp(tmpFile);
+ final IncrementalIndex theIndex = makeIncrementalIndex();
+ final File tmpFile = FileUtils.createTempDir("spatial-filter");
tmpFile.deleteOnExit();
indexMerger.persist(theIndex, tmpFile, indexSpec, null);
@@ -424,8 +422,8 @@ public class SpatialFilterBonusTest
}
- File tmpFile = File.createTempFile("yay", "who");
- tmpFile.delete();
+ final File tmpFile = FileUtils.createTempDir("spatial-filter-merge");
+ tmpFile.deleteOnExit();
File firstFile = new File(tmpFile, "first");
File secondFile = new File(tmpFile, "second");
diff --git
a/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterTest.java
b/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterTest.java
index 16ac7f2d423..16c65a209ec 100644
---
a/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterTest.java
+++
b/processing/src/test/java/org/apache/druid/segment/filter/SpatialFilterTest.java
@@ -300,10 +300,8 @@ public class SpatialFilterTest extends
InitializedNullHandlingTest
private static QueryableIndex makeQueryableIndex(IndexSpec indexSpec) throws
IOException
{
- IncrementalIndex theIndex = makeIncrementalIndex();
- File tmpFile = File.createTempFile("billy", "yay");
- tmpFile.delete();
- FileUtils.mkdirp(tmpFile);
+ final IncrementalIndex theIndex = makeIncrementalIndex();
+ final File tmpFile = FileUtils.createTempDir("spatial-filter");
tmpFile.deleteOnExit();
INDEX_MERGER.persist(theIndex, tmpFile, indexSpec, null);
@@ -513,8 +511,8 @@ public class SpatialFilterTest extends
InitializedNullHandlingTest
}
- File tmpFile = File.createTempFile("yay", "who");
- tmpFile.delete();
+ final File tmpFile = FileUtils.createTempDir("spatial-filter-merge");
+ tmpFile.deleteOnExit();
File firstFile = new File(tmpFile, "first");
File secondFile = new File(tmpFile, "second");
diff --git
a/server/src/test/java/org/apache/druid/metadata/input/SqlEntityTest.java
b/server/src/test/java/org/apache/druid/metadata/input/SqlEntityTest.java
index 8fc350cf9e1..e9c1d7945b6 100644
--- a/server/src/test/java/org/apache/druid/metadata/input/SqlEntityTest.java
+++ b/server/src/test/java/org/apache/druid/metadata/input/SqlEntityTest.java
@@ -27,6 +27,7 @@ import org.apache.druid.data.input.InputRow;
import org.apache.druid.data.input.MapBasedInputRow;
import org.apache.druid.metadata.TestDerbyConnector;
import org.apache.druid.segment.TestHelper;
+import org.apache.druid.testing.TemporaryFolderExtension;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -43,6 +44,8 @@ public class SqlEntityTest
{
@RegisterExtension
public final TestDerbyConnector.DerbyConnectorRule derbyConnectorRule = new
TestDerbyConnector.DerbyConnectorRule();
+ @RegisterExtension
+ public final TemporaryFolderExtension temporaryFolder =
TemporaryFolderExtension.testCaseScoped();
private final ObjectMapper mapper = TestHelper.makeSmileMapper();
private TestDerbyConnector derbyConnector;
@@ -65,7 +68,7 @@ public class SqlEntityTest
derbyConnector = derbyConnectorRule.getConnector();
SqlTestUtils testUtils = new SqlTestUtils(derbyConnector);
final InputRow expectedRow = testUtils.createTableWithRows(TABLE_NAME_1,
1).get(0);
- File tmpFile = File.createTempFile("testQueryResults", "");
+ final File tmpFile = temporaryFolder.newFile("testQueryResults");
final String actualJson;
try (final InputEntity.CleanableFile queryResult =
SqlEntity.openCleanableFile(
VALID_SQL,
@@ -90,7 +93,7 @@ public class SqlEntityTest
derbyConnector = derbyConnectorRule.getConnector();
SqlTestUtils testUtils = new SqlTestUtils(derbyConnector);
testUtils.createTableWithRows(TABLE_NAME_1, 1);
- File tmpFile = File.createTempFile("testQueryResults", "");
+ final File tmpFile = temporaryFolder.newFile("testQueryResults");
Assertions.assertTrue(tmpFile.exists());
Assertions.assertThrows(
diff --git
a/server/src/test/java/org/apache/druid/metadata/input/SqlInputSourceTest.java
b/server/src/test/java/org/apache/druid/metadata/input/SqlInputSourceTest.java
index b8d3af57f4c..f2ad9370f0a 100644
---
a/server/src/test/java/org/apache/druid/metadata/input/SqlInputSourceTest.java
+++
b/server/src/test/java/org/apache/druid/metadata/input/SqlInputSourceTest.java
@@ -38,15 +38,14 @@ import org.apache.druid.data.input.InputStats;
import org.apache.druid.data.input.impl.DimensionsSpec;
import org.apache.druid.data.input.impl.InputStatsImpl;
import org.apache.druid.data.input.impl.TimestampSpec;
-import org.apache.druid.java.util.common.FileUtils;
import org.apache.druid.java.util.common.parsers.CloseableIterator;
import org.apache.druid.metadata.MetadataStorageConnectorConfig;
import org.apache.druid.metadata.SQLInputSourceDatabaseConnector;
import org.apache.druid.metadata.TestDerbyConnector;
import org.apache.druid.segment.TestHelper;
import org.apache.druid.server.initialization.JdbcAccessSecurityConfig;
+import org.apache.druid.testing.TemporaryFolderExtension;
import org.easymock.EasyMock;
-import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -66,7 +65,6 @@ import java.util.stream.Stream;
public class SqlInputSourceTest
{
- private static final List<File> INPUT_SOURCE_TMP_DIRS = new ArrayList<>();
private final String TABLE_1 = "FOOS_TABLE_1";
private final String TABLE_2 = "FOOS_TABLE_2";
@@ -80,6 +78,8 @@ public class SqlInputSourceTest
@RegisterExtension
public final TestDerbyConnector.DerbyConnectorRule derbyConnectorRule = new
TestDerbyConnector.DerbyConnectorRule();
+ @RegisterExtension
+ public final TemporaryFolderExtension temporaryFolder =
TemporaryFolderExtension.testCaseScoped();
private final ObjectMapper mapper = TestHelper.makeSmileMapper();
private TestDerbyConnector derbyConnector;
@@ -91,24 +91,9 @@ public class SqlInputSourceTest
}
}
- @AfterAll
- public static void teardown() throws IOException
- {
- for (File dir : INPUT_SOURCE_TMP_DIRS) {
- org.apache.commons.io.FileUtils.forceDelete(dir);
- }
- }
-
private File createInputSourceTmpDir(String dirSuffix) throws IOException
{
- final File inputSourceTempDir = File.createTempFile(
- SqlInputSourceTest.class.getSimpleName(),
- dirSuffix
- );
- org.apache.commons.io.FileUtils.forceDelete(inputSourceTempDir);
- FileUtils.mkdirp(inputSourceTempDir);
- INPUT_SOURCE_TMP_DIRS.add(inputSourceTempDir);
- return inputSourceTempDir;
+ return temporaryFolder.newFolder(SqlInputSourceTest.class.getSimpleName()
+ dirSuffix);
}
@Test
diff --git
a/server/src/test/java/org/apache/druid/segment/loading/LocalDataSegmentPullerTest.java
b/server/src/test/java/org/apache/druid/segment/loading/LocalDataSegmentPullerTest.java
index 72facd2c48d..ae882dbcdd2 100644
---
a/server/src/test/java/org/apache/druid/segment/loading/LocalDataSegmentPullerTest.java
+++
b/server/src/test/java/org/apache/druid/segment/loading/LocalDataSegmentPullerTest.java
@@ -79,7 +79,7 @@ public class LocalDataSegmentPullerTest
@Test
public void simpleGZTest() throws IOException, SegmentLoadingException
{
- File zipFile = File.createTempFile("gztest", ".gz");
+ final File zipFile = temporaryFolder.newFile("gztest.gz");
File unZipFile = new File(
tmpDir,
Files.getNameWithoutExtension(
diff --git
a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java
b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java
index 8da0570f7b4..7e4e8612458 100644
--- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java
+++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java
@@ -109,6 +109,7 @@ import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Arrays;
@@ -1555,14 +1556,13 @@ public class BaseCalciteQueryTest extends
CalciteTestBase
public File getResourceAsTemporaryFile(final String resource)
{
final File file = newTempFile("resourceAsTempFile");
- final InputStream stream = getClass().getResourceAsStream(resource);
-
- if (stream == null) {
- throw new RE(StringUtils.format("No such resource [%s]", resource));
- }
-
- try {
- ByteStreams.copy(stream, Files.newOutputStream(file.toPath()));
+ try (final InputStream stream =
BaseCalciteQueryTest.class.getResourceAsStream(resource)) {
+ if (stream == null) {
+ throw new RE(StringUtils.format("No such resource [%s]", resource));
+ }
+ try (final OutputStream outputStream =
Files.newOutputStream(file.toPath())) {
+ ByteStreams.copy(stream, outputStream);
+ }
}
catch (IOException e) {
throw new RuntimeException(e);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]