Subbu Subramaniam
05/05/2021, 5:43 PMTing Chen
05/05/2021, 5:48 PMChang Liu
05/05/2021, 5:56 PMChang Liu
05/05/2021, 6:03 PMChang Liu
05/05/2021, 6:06 PMChang Liu
05/05/2021, 6:12 PMThe above implementation might be over complicated. I think probably we can just build a counter map to count how many rounds it passed since the the last ZK access per table level? i.e. if the threshold is 10, get the segment list from ZK in round 1 and try to fix, the 9 remaining rounds just ignore this table.
Subbu Subramaniam
05/05/2021, 8:51 PMChang Liu
06/01/2021, 9:38 PMuploadToSegmentStoreIfMissing
reads in-memory segments list to fix, only removes the segment from the in-memory list after successful upload.
3. Only prefetchLLCSegmentsWithoutDeepStoreCopy
has access to ZK, which is triggered when setup the periodic jobs. Leadership is also checked in this step. And to further alleviate the ZK access, the filter based on segment creation time is added.
https://github.com/apache/incubator-pinot/pull/6778Chang Liu
06/01/2021, 9:39 PMMIN_TIME_BEFORE_FIXING_SEGMENT_STORE_COPY_MILLIS
Subbu Subramaniam
06/01/2021, 9:44 PMChang Liu
06/01/2021, 9:44 PMSubbu Subramaniam
06/02/2021, 7:01 PMChang Liu
06/02/2021, 7:05 PMSubbu Subramaniam
06/02/2021, 7:19 PMChang Liu
06/02/2021, 7:21 PMChang Liu
06/02/2021, 7:21 PMChang Liu
06/02/2021, 7:22 PMSubbu Subramaniam
06/02/2021, 8:58 PMChang Liu
06/02/2021, 8:58 PMChang Liu
06/02/2021, 8:58 PMChang Liu
06/02/2021, 8:59 PMChang Liu
06/02/2021, 8:59 PMSubbu Subramaniam
06/02/2021, 9:03 PMsetupTask
method that there is a race condition there in that the controller leadership may not be decided by the time the method is called. In the next PR, you can fix it. Before that, you can also check with jack, how to get notified.
[2:02 PM] Oh, another solution to this (without introducing callbacks) is to keep a boolean whether it is needed to download the segment names. If the boolean is true, then download it (when the table is being processed), and initialize the queue. Otherwise, use the queue.
[2:03 PM] I think this solution may work a little better since we don't download all the table at the same time. We process a table, and then download the next one.Chang Liu
06/02/2021, 10:03 PMChang Liu
06/02/2021, 11:21 PMaddPartitionLeader
and removePartitionLeader
. But since they are partitioned based, controller can receive multiple state transition within a short period of time.Jack
06/02/2021, 11:28 PMSubbu Subramaniam
06/02/2021, 11:34 PMSubbu Subramaniam
06/02/2021, 11:35 PMJack
06/02/2021, 11:36 PMaddPartitinLeader
removePartitionLeader
gets calledSubbu Subramaniam
01/06/2022, 12:36 AM