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

Reply via email to