Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Interface and API change
    1. Add to Pinot Server a new API for segment download (need performance test here on impact server query performance). 
  2. Server changes
    1. Segment completion protocol: during segment commit, the commit server asynchronously and optionally uploads built segments to a configured external store. It will wait a short amount of time for the upload to finish. Regardless of the upload result, it will move on to send the segment metadata (with the segment uri location if available) to the controller.
    2. Consuming to online Helix state transition: refactor the server download procedure so that it (1) first tries to download segments from the configured segment store if available; otherwise (2) discovers the servers hosting the segment via external view of the table and then download from the hosting server.
  3. Controller changes
    1. Segment completion protocol: controller skips uploading segments – this can be done without controller code change initially because Pinot server can just stop calling LLCSegmentCompletionHandlers.segmentUpload().More details next section 
    2. The changes in (a) implies that now the controller accepts segment commit metadata with empty deep storage uri.
  4. RealtimeValidationManager
    1. During segment validation, for any segment without external storage uri, ask one server to upload it to the store and update the segment store uri in Helix.

...