diff --git a/extensions-core/azure-extensions/src/main/java/org/apache/druid/storage/azure/output/AzureStorageConnectorProvider.java b/extensions-core/azure-extensions/src/main/java/org/apache/druid/storage/azure/output/AzureStorageConnectorProvider.java index 1a3a4dab9cf0..0f2cdb47d441 100644 --- a/extensions-core/azure-extensions/src/main/java/org/apache/druid/storage/azure/output/AzureStorageConnectorProvider.java +++ b/extensions-core/azure-extensions/src/main/java/org/apache/druid/storage/azure/output/AzureStorageConnectorProvider.java @@ -54,9 +54,9 @@ public AzureStorageConnectorProvider( } @Override - public StorageConnector createStorageConnector(final File tempDir) + public StorageConnector createStorageConnector(final File defaultTempDir) { - AzureOutputConfig config = this.getTempDir() == null ? this.withTempDir(tempDir) : this; + AzureOutputConfig config = this.getTempDir() == null ? this.withTempDir(defaultTempDir) : this; config.validateTempDirectory(); return new AzureStorageConnector(config, azureStorage); } diff --git a/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/output/GoogleStorageConnectorProvider.java b/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/output/GoogleStorageConnectorProvider.java index 18ed8219a886..ac5c6a3c9642 100644 --- a/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/output/GoogleStorageConnectorProvider.java +++ b/extensions-core/google-extensions/src/main/java/org/apache/druid/storage/google/output/GoogleStorageConnectorProvider.java @@ -56,9 +56,9 @@ public GoogleStorageConnectorProvider( } @Override - public StorageConnector createStorageConnector(File tempDir) + public StorageConnector createStorageConnector(File defaultTempDir) { - GoogleOutputConfig config = this.getTempDir() == null ? this.withTempDir(tempDir) : this; + GoogleOutputConfig config = this.getTempDir() == null ? this.withTempDir(defaultTempDir) : this; return new GoogleStorageConnector(config, googleStorage, googleInputDataConfig); } } diff --git a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ControllerContext.java b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ControllerContext.java index 181ceabb91e4..7f5e4a0a2b09 100644 --- a/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ControllerContext.java +++ b/extensions-core/multi-stage-query/src/main/java/org/apache/druid/msq/exec/ControllerContext.java @@ -109,7 +109,10 @@ WorkerManager newWorkerManager( /** * Fetch a directory for temporary outputs */ - File taskTempDir(); + default File taskTempDir() + { + throw new UnsupportedOperationException(); + } /** * Client for communicating with workers. diff --git a/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/output/S3StorageConnectorProvider.java b/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/output/S3StorageConnectorProvider.java index 5a53c60cc1b0..57f131746f0d 100644 --- a/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/output/S3StorageConnectorProvider.java +++ b/extensions-core/s3-extensions/src/main/java/org/apache/druid/storage/s3/output/S3StorageConnectorProvider.java @@ -55,9 +55,9 @@ public S3StorageConnectorProvider( } @Override - public StorageConnector createStorageConnector(File tempDir) + public StorageConnector createStorageConnector(File defaultTempDir) { - S3OutputConfig config = this.getTempDir() == null ? this.withTempDir(tempDir) : this; + S3OutputConfig config = this.getTempDir() == null ? this.withTempDir(defaultTempDir) : this; return new S3StorageConnector(config, s3, s3UploadManager); } } diff --git a/processing/src/main/java/org/apache/druid/storage/StorageConnectorProvider.java b/processing/src/main/java/org/apache/druid/storage/StorageConnectorProvider.java index 2568d89802d6..a2023e6aa946 100644 --- a/processing/src/main/java/org/apache/druid/storage/StorageConnectorProvider.java +++ b/processing/src/main/java/org/apache/druid/storage/StorageConnectorProvider.java @@ -26,5 +26,14 @@ @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") public interface StorageConnectorProvider { - StorageConnector createStorageConnector(File tempDir); + /** + * Returns the storage connector. Takes a parameter defaultTempDir to be possibly used as the temporary directory, if the + * storage connector requires one. This StorageConnectorProvider is not guaranteed to use this value, even if the + * StorageConnectorProvider requires one, as it gives priority to a value of defaultTempDir configured as a runtime + * configuration. + *
+ * This value needs to be passed instead of injected by Jackson as the default temporary directory is dependent on the + * task id, and such dynamic task specific bindings is not possible on indexers. + */ + StorageConnector createStorageConnector(File defaultTempDir); } diff --git a/processing/src/main/java/org/apache/druid/storage/local/LocalFileStorageConnectorProvider.java b/processing/src/main/java/org/apache/druid/storage/local/LocalFileStorageConnectorProvider.java index 8434af07d11e..7c66f7906275 100644 --- a/processing/src/main/java/org/apache/druid/storage/local/LocalFileStorageConnectorProvider.java +++ b/processing/src/main/java/org/apache/druid/storage/local/LocalFileStorageConnectorProvider.java @@ -45,7 +45,7 @@ public LocalFileStorageConnectorProvider(@JsonProperty(value = "basePath", requi } @Override - public StorageConnector createStorageConnector(File tempDir) + public StorageConnector createStorageConnector(File defaultTempDir) { try { return new LocalFileStorageConnector(basePath);