mirror of
https://github.com/apache/druid.git
synced 2025-02-09 03:24:55 +00:00
Fixed realtime index query serving failure due to incorrect treatment of DataSource
This commit is contained in:
parent
bd11309593
commit
314e38a2c6
@ -38,6 +38,7 @@ import io.druid.indexing.common.TaskToolboxFactory;
|
|||||||
import io.druid.indexing.common.task.Task;
|
import io.druid.indexing.common.task.Task;
|
||||||
import io.druid.query.NoopQueryRunner;
|
import io.druid.query.NoopQueryRunner;
|
||||||
import io.druid.query.Query;
|
import io.druid.query.Query;
|
||||||
|
import io.druid.query.TableDataSource;
|
||||||
import io.druid.query.QueryRunner;
|
import io.druid.query.QueryRunner;
|
||||||
import io.druid.query.QuerySegmentWalker;
|
import io.druid.query.QuerySegmentWalker;
|
||||||
import io.druid.query.SegmentDescriptor;
|
import io.druid.query.SegmentDescriptor;
|
||||||
@ -152,10 +153,17 @@ public class ThreadPoolTaskRunner implements TaskRunner, QuerySegmentWalker
|
|||||||
private <T> QueryRunner<T> getQueryRunnerImpl(Query<T> query)
|
private <T> QueryRunner<T> getQueryRunnerImpl(Query<T> query)
|
||||||
{
|
{
|
||||||
QueryRunner<T> queryRunner = null;
|
QueryRunner<T> queryRunner = null;
|
||||||
|
String queryDataSource;
|
||||||
|
try {
|
||||||
|
queryDataSource = ((TableDataSource)query.getDataSource()).getName();
|
||||||
|
}
|
||||||
|
catch (ClassCastException e) {
|
||||||
|
throw new IllegalArgumentException("Subqueries are not welcome here");
|
||||||
|
}
|
||||||
|
|
||||||
for (final ThreadPoolTaskRunnerWorkItem taskRunnerWorkItem : ImmutableList.copyOf(runningItems)) {
|
for (final ThreadPoolTaskRunnerWorkItem taskRunnerWorkItem : ImmutableList.copyOf(runningItems)) {
|
||||||
final Task task = taskRunnerWorkItem.getTask();
|
final Task task = taskRunnerWorkItem.getTask();
|
||||||
if (task.getDataSource().equals(query.getDataSource())) {
|
if (task.getDataSource().equals(queryDataSource)) {
|
||||||
final QueryRunner<T> taskQueryRunner = task.getQueryRunner(query);
|
final QueryRunner<T> taskQueryRunner = task.getQueryRunner(query);
|
||||||
|
|
||||||
if (taskQueryRunner != null) {
|
if (taskQueryRunner != null) {
|
||||||
@ -163,7 +171,7 @@ public class ThreadPoolTaskRunner implements TaskRunner, QuerySegmentWalker
|
|||||||
queryRunner = taskQueryRunner;
|
queryRunner = taskQueryRunner;
|
||||||
} else {
|
} else {
|
||||||
log.makeAlert("Found too many query runners for datasource")
|
log.makeAlert("Found too many query runners for datasource")
|
||||||
.addData("dataSource", query.getDataSource())
|
.addData("dataSource", queryDataSource)
|
||||||
.emit();
|
.emit();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user