Shut down all tasks for a datasource does not work and fails with 404 while task exists and is running
- Dominant language
- Java
- Stars
- 14.1k
- Forks
- 3.8k
- Avg merge
- 2d 58m
- Merged PRs (30d)
- 233
Description
The following API: /druid/indexer/v1/datasources/{datasource}/shutdownAllTasks
does not work anymore and always throws a 404 .
### Affected Version
The Druid version where the problem was encountered:
apache-druid-32.0.0
### Description
Please include as much detailed information about the problem as possible.
- Cluster size:
Druid in clustered mode, but this issue is not specific to cluster mode
- Configurations in use
```
{
"druid.zk.service.sessionTimeoutMs": "600000",
"druid.auth.basic.common.maxSyncRetries": "100",
"java.specification.version": "17",
"druid.storage.zip": "true",
"druid.server.https.certAlias": "druid_server",
"sun.jnu.encoding": "UTF-8",
"druid.tlsPort": "9088",
"log4j.shutdownHookEnabled": "true",
"druid.global.http.numConnections": "80",
"sun.arch.data.model": "64",
"druid.escalator.authorizerName": "druidBasicAuthorizer",
"druid.extensions.loadList": "[\"druid-basic-security\", \"druid-kafka-indexing-service\", \"druid-datasketches\", \"druid-multi-stage-query\", \"simple-client-sslcontext\", \"mysql-metadata-storage\"]",
"java.vendor.url": "https://www.redhat.com/",
"druid.router.coordinatorServiceName": "druid/coordinator",
"druid.server.http.defaultQueryTimeout": "180000",
"sun.boot.library.path": "/usr/lib/jvm/java-17-openjdk-17.0.15.0.6-2.el8.x86_64/lib",
"sun.java.command": "org.apache.druid.cli.Main server router",
"druid.metadata.mysql.ssl.useSSL": "true",
"jdk.debug": "release",
"druid.auth.authenticatorChain": "[\"druidBasicAuthenticator\"]",
"druid.zk.paths.base": "/druid",
"java.specification.vendor": "Oracle Corporation",
"java.version.date": "2025-04-15",
"java.home": "/usr/lib/jvm/java-17-openjdk-17.0.15.0.6-2.el8.x86_64",
"file.separator": "/",
"druid.selectors.indexing.serviceName": "druid/overlord",
"java.vm.compressedOopsMode": "32-bit",
"druid.metadata.storage.type": "mysql",
"line.separator": "\n",
"druid.router.http.readTimeout": "PT15M",
"java.vm.specification.vendor": "Oracle Corporation",
"java.specification.name": "Java Platform API Specification",
"druid.router.defaultBrokerServiceName": "druid/broker",
"druid.enablePlaintextPort": "false",
"druid.query.groupBy.maxOnDiskStorage": "3000000000",
"sun.management.compiler": "HotSpot 64-Bit Tiered Compilers",
"druid.escalator.type": "basic",
"java.runtime.version": "17.0.15+6-LTS",
"druid.zk.service.host": "XXXX:2181,XXXX:2181,XXXX:2181",
"file.encoding": "UTF-8",
"druid.sql.planner.useGroupingSetForExactDistinct": "true",
"druid.router.managementProxy.enabled": "true",
"druid.metadata.mysql.ssl.verifyServerCertificate": "true",
"druid.auth.basic.common.maxRandomDelay": "30000",
"java.vendor.version": "(Red_Hat-17.0.15.0.6-1)",
"druid.startup.logging.logProperties": "true",
"java.io.tmpdir": "XXXX",
"druid.sql.enable": "true",
"druid.auth.basic.common.pollingPeriod": "60000",
"java.version": "17.0.15",
"druid.server.http.maxResponseHeaderSize": "16384",
"java.vm.specification.name": "Java Virtual Machine Specification",
"druid.node.type": "router",
"druid.server.http.connection.timeout": "300",
"druid.enableTlsPort": "true",
"druid.auth.authenticator.druidBasicAuthenticator.skipOnFailure": "false",
"native.encoding": "UTF-8",
"druid.auth.authenticator.druidBasicAuthenticator.type": "basic",
"java.library.path": "/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib",
"java.vendor": "Red Hat, Inc.",
"druid.emitter": "noop",
"java.specification.maintenance.version": "1",
"druid.auth.basic.common.cacheDirectory": "XXXX",
"sun.io.unicode.encoding": "UnicodeLittle",
"druid.storage.type": "local",
"druid.expressions.useStrictBooleans": "true",
"druid.zk.service.connectionTimeoutMs": "30000",
"druid.monitoring.monitors": "[\"org.apache.druid.java.util.metrics.JvmMonitor\", \"org.apache.druid.server.metrics.ServiceStatusMonitor\"]",
"druid.indexing.doubleStorage": "double",
"druid.router.http.numConnections": "50",
"druid.auth.authorizer.druidBasicAuthorizer.type": "basic",
"java.vm.vendor": "Red Hat, Inc.",
"user.timezone": "UTC",
"druid.client.https.protocol": "TLSv1.2",
"os.name": "Linux",
"java.vm.specification.version": "17",
"sun.java.launcher": "SUN_STANDARD",
"user.country": "US",
"druid.auth.authenticator.druidBasicAuthenticator.credentialsValidator.type": "metadata",
"sun.cpu.endian": "little",
"user.home": "XXXX",
"user.language": "en",
"druid.global.http.numMaxThreads": "50",
"druid.service": "druid/router",
"druid.selectors.coordinator.serviceName": "druid/coordinator",
"druid.metadata.storage.connector.connectURI": "jdbc:mysql://XXXX:3306/druid",
"druid.log.path": "XXXX",
"druid.indexer.logs.directory": "/home/druid/remote/indexing-logs",
"druid.client.https.trustStoreType": "jks",
"druid.storage.storageDirectory": "/home/druid/remote/deep_store",
"druid.global.http.clientConnectTimeout": "30000",
"druid.metadata.storage.connector.user": "XXXX",
"druid.indexer.logs.type": "file",
"druid.host": "XXXX",
"log4j2.is.webapp": "false",
"path.separator": ":",
"os.version": "4.18.0-305.el8.x86_64",
"druid.lookup.enableLookupSyncOnStartup": "false",
"java.runtime.name": "OpenJDK Runtime Environment",
"druid.client.https.trustStorePath": "/etc/pki/java/cacerts",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"druid.auth.authenticator.druidBasicAuthenticator.authorizerName": "druidBasicAuthorizer",
"druid.global.http.sslHandshakeTimeout": "PT30S",
"java.vendor.url.bug": "https://access.redhat.com/support/cases/",
"log4j.shutdownCallbackRegistry": "org.apache.druid.common.config.Log4jShutdown",
"druid.router.http.numMaxThreads": "100",
"druid.emitter.logging.logLevel": "info",
"druid.msq.intermediate.storage.cleaner.delaySeconds": "43200",
"user.dir": "/home/XXXX/druid/apache-druid-32.0.0",
"os.arch": "amd64",
"druid.msq.intermediate.storage.cleaner.enabled": "true",
"druid.auth.authorizers": "[\"druidBasicAuthorizer\"]",
"druid.global.http.unusedConnectionTimeout": "PT10M",
"java.util.logging.manager": "org.apache.logging.log4j.jul.LogManager",
"druid.server.http.numThreads": "100",
"druid.escalator.internalClientUsername": "druid_system",
"java.vm.info": "mixed mode, sharing",
"java.vm.version": "17.0.15+6-LTS",
"java.class.version": "61.0",
"druid.server.hiddenProperties": "[\"druid.metadata.storage.connector.password\", \"password\", \"key\", \"token\", \"pwd\"]"
}
```
- Steps to reproduce the problem:
1. Create Datasource with ingestion task of type index_kafka
```
curl "https://XXXX:9088/druid/indexer/v1/runningTasks" -u 'XXXX:XXXX' | jq '.[] | select(.dataSource == "system_temp")'
{
"id": "index_kafka_system_temp_aa6862686f5e476_apnnlmlb",
"groupId": "index_kafka_system_temp",
"type": "index_kafka",
"createdTime": "2025-08-20T10:58:45.727Z",
"queueInsertionTime": "2025-08-20T10:58:45.730Z",
"statusCode": "RUNNING",
"status": "RUNNING",
"runnerStatusCode": "RUNNING",
"duration": -1,
"location": {
"host": "XXXX",
"port": -1,
"tlsPort": 8292
},
"dataSource": "system_temp",
"errorMsg": null
}
```
2. Try to use shutdown all task api to shutdown task:
```
curl https://XXXX:9088/druid/indexer/v1/datasources/system_temp/shutdownAllTasks -u 'XXXX:XXXX' -o /dev/null -s -w "%{http_code}\n"
404
```
- The error message or stack traces encountered. Providing more context, such as nearby log messages or even entire logs, can be helpful.:
< HTTP/1.1 404 Not Found>
coordinator-overlord.log
2025-08-20T13:20:06,119 INFO [KafkaSupervisor-system_temp] org.apache.druid.indexing.seekablestream.supervisor.SeekableStreamSupervisor - [system_temp] supervisor is running.
2025-08-20T13:20:07,087 INFO [KafkaSupervisor-system_temp] org.apache.druid.indexing.seekablestream.supervisor.SeekableStreamSupervisor - [system_temp] supervisor is running.
2025-08-20T13:20:08,207 INFO [KafkaSupervisor-system_temp] org.apache.druid.indexing.seekablestream.supervisor.SeekableStreamSupervisor - [system_temp] supervisor is running.
Contributor guide
Research direction
Start by reproducing the documented curl request to /druid/indexer/v1/datasources/{datasource}/shutdownAllTasks, then trace the Druid API entry point for datasource task shutdown and compare it with the runningTasks response. Use the coordinator-overlord.log messages and the index_kafka task example to understand the failing path. Done means the endpoint no longer returns 404 and shuts down the running datasource task.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100