The thinking was that there are two cases we may have multiple tasks per datasource per worker: same shard (redundant tasks) and different shards. The former case is definitely something we want to avoid anyway, since it defeats the purpose of task redundancy. The latter case might be something we want to avoid, since it seems kind of weird to shard a stream but then put both shards on the same worker. I would think that should just be one bigger shard. If we're avoiding both cases, we really do want at most one realtime task per datasource per worker.

Anyway, that's why this code only wants to find one query runner. If we end up wanting to have multiple shards of the same datasource on the same worker, then yeah, we'll find multiple and we'll need to merge the results. If you think we should do this-- any pointers on how? I'm not familiar enough on the query stuff to know.

We'll also need something to prevent two redundant tasks from going to the same worker.