while distributing druid scan query we check where the segments are loaded and then each HiveDruidSplit directly queries the historical node.
There are few cases when we need to retry and refetch the segments.
- The segment is loaded on multiple historical nodes and one of them went down. in this case when we do not get response from one segment, we query the next replica.
- The segment was loaded onto a realtime task and was handed over, when we query the realtime task has already finished. In this case there is no replica. The Split needs to query the broker again for the location of the segment and then send the query to correct historical node.
This is also the root cause of failure of druidkafkamini_basic.q test, where the segment handover happens before the scan query is executed.
Note: This is not a problem when we are directly querying Druid brokers as the broker handles the retry logic.