Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of delta-sync support on client-side. #6297

Closed
wants to merge 3 commits into from

Commits on Jan 11, 2018

  1. Configuration menu
    Copy the full SHA
    e7ef50a View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    9586121 View commit details
    Browse the repository at this point in the history

Commits on Jan 15, 2018

  1. Implementation of delta-sync support on client-side.

    This commit adds client-side support for delta-sync, this adds a new
    3rdparty submodule `gh:ahmedammar/zsync`. This zsync tree is a modified
    version of upstream, adding some needed support for the upload path and
    other requirements.
    
    If the server does not announce the required zsync capability then a
    full upload/download is fallen back to. Delta synchronization can be
    enabled/disabled using command line, config, or gui options.
    
    On both upload and download paths, a check is made for the existance of
    a zsync metadata file on the server for a given path. This is provided
    by a dav property called `zsync`, found during discovery phase. If it
    doesn't exist the code reverts back to a complete upload or download,
    i.e. previous implementations. In the case of upload, a new zsync
    metadata file will be uploaded as part of the chunked upload and future
    synchronizations will be delta-sync capable.
    
    Chunked uploads no longer use sequential file names for each chunk id,
    instead, they are named as the byte offset into the remote file, this is
    a minimally intrusive modification to allow fo delta-sync and legacy
    code paths to run seamlessly. A new http header OC-Total-File-Length is
    sent, which informs the server of the final expected size of the file
    not just the total transmitted bytes as reported by OC-Total-Length.
    
    The seeding and generation of the zsync metadata file is done in a
    separate thread since this is a cpu intensive task, ensuring main thread
    is not blocked.
    
    This commit closes owncloud#179.
    ahmedammar committed Jan 15, 2018
    Configuration menu
    Copy the full SHA
    12aeb89 View commit details
    Browse the repository at this point in the history