Versions Compared

Key

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

...

New server side segment completion steps

  1. The commit server sends uploads the segment metadata to the controller with segment uri set to be the configured deep storage location (if any) or empty string if not.
    1. Note: While the segment uri is set, the segment upload in step (2) has not occurred yet. Here we use a technique of Presumed Success: it is based on the experiences that the deep storage is up most of the time and thus the following upload step (2) will very likely to succeed. Even the upload is not successful, there are backup download mechanisms (i.e., download from peer server). To make metadata commit before segment upload has the advantage that if metadata commit failed, there will be no segment data in deep storage.  
  2. If step (1) commit to controller is successful, the server performs best-effort upload of the segment to the deep storage. In particular, the server does not need to wait for the segment load to succeed before proceeding.
  3. to a configurable deep store location* and waits for a timeout period for the upload to finish
    1. If the upload finishes successfully, a segment location URI I will be returned by the uploader.
    2. If the upload fails or times out, a NULL location string will be returned. 
    3. *If no deep store is configured,  NULL will be returned like b) above.
  4. The commit server proceeds to perform segment metadata commit step of the split commit protocol.
    1. The segmentLocation used in the metadata commit is either I (when segment upload succeeds) and a special indicator when upload fails. 
  5. If the metadata commit failsOtherwise, the present commit failure handling kicks in.

...