suvodeep-pyne commented on PR #19909:
URL: https://github.com/apache/pinot/pull/19909#issuecomment-6321284299

   @xiangfu0 @raghavyadav01 thanks for the reviews. I pushed a779ff97dd, which 
addresses them; I've replied on each thread. The main changes:
   
   - **Re-consuming repairs stay gated.** On pauseless dedup and partial-upsert 
tables, the repairs that consume from the stream again are still gated, as on 
master: re-ingestion, and the reset of an IN_PROGRESS segment with every 
replica in ERROR. The only resets newly enabled there are the ones that reload 
a committed segment.
   - **Batched, error-only resets.** Resets go through a new 
`PinotHelixResourceManager.resetErrorReplicas`, which sends one batch per 
instance. It resets only replicas still in ERROR in the instance's current 
state, and sends each message from ERROR, so the server drops it if the replica 
has already recovered.
   - **Gauges.** `PAUSELESS_SEGMENTS_IN_ERROR_COUNT` and 
`SEGMENTS_IN_ERROR_STATE` keep their master meaning. The unrecoverable gauge 
now counts the segments a pass can't repair or can't issue a repair for, and a 
failed reset fails the pass.
   
   The description now covers the behavior changes and upgrade notes. I've also 
merged master, including #19739 and #19740, in e06498f41f; CI is green.
   
   On the review-body finding outside the diff 
(`RealtimeSegmentValidationManager.processTable`):
   - The stale comment is updated.
   - On also resetting replicas that are not in ERROR: I've decided not to keep 
that, on purpose. A replica whose ExternalView state differs from the 
IdealState without being in ERROR is either mid-transition or about to get its 
transition from the Helix controller.
     - If it is mid-transition, it has a pending message, and 
`resetPartitionAllState` refuses a partition with a pending message. On master 
that made `resetSegment(table, segment, null)` throw for the segment after the 
ERROR replica's reset had gone out. So in your example B was never actually 
reset.
     - Otherwise, Helix moves B to its IdealState state by itself.
   
     Resetting B mostly risks bouncing a replica that is about to become 
healthy, which on dedup and upsert tables drops its keys for a while. This is 
listed under the behavior changes in the description.
   
   Could you both take another look?
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to