The goal of the config change in [arts other than StreamConfig is to ensure that the config can be used for offline segments as well, if for some reason download fails.
However, a race condition can happen for offline segments that can be dangerous. If a segment has been updated with a newer version, and server A and B have old versions. Both of them get notified of the newer version. They may try to fetch the segment and fail, and eventually fetch from each other, and end up thinking that they have the newest version of the segment.There can be other variants of this as well, with restarts of server. I can think of some ways to fix this (e.g. in the segment update message, send the crc of the new version), but these have not been fully thought of. We need to vet these well before adopting these. I prefer option 1 since it introduces a single config. I would like to hear from @kishoreg and @npawar as well -Subbu On 2020/05/06 00:16:26, TING CHEN <tingc...@uber.com.INVALID> wrote: > As part of the proposal > <https://cwiki.apache.org/confluence/display/PINOT/By-passing+deep-store+requirement+for+Realtime+segment+completion> > to bypass deep store for segment completion, I plan to add a new optional > string field *peerSegmentDownloadScheme* to > the SegmentsValidationAndRetentionConfig in the TableConfig. The value can > be *http* or *https*. > > 1. SplitSegmentCommitter > > <https://github.com/apache/incubator-pinot/blob/31c55afdb6a40f98189308ce6292587ead9d0dec/pinot-core/src/main/java/org/apache/pinot/core/data/manager/realtime/SplitSegmentCommitter.java> > will check this value. If it exists, the segment committer will be able to > finish segment commit successfully even if the upload to the segment store > fails. The committer will report a special marker to the controller about > the segment is available in peer servers. > 2. When Pinot servers fail to download segments from the segment store, > they can also check this field's value. If it exists, it can download > segments from peer servers using either HTTP and HTTPS segment fetchers as > configured. (related PR > <https://github.com/apache/incubator-pinot/pull/5336> in review for how > to discover such servers.) > > Note this is a table level config. We will test the new download behavior > in realtime tables in incremental fashion. Once fully proven, this config > can be upgraded to server level config. > > Please let me know if you have any questions on this. Thanks @mcvsubbu for > coming up with the idea and offline discussions. > > Ting Chen > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@pinot.apache.org For additional commands, e-mail: dev-h...@pinot.apache.org