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

Imageserver fixes: single-thread object fetching and block replication clients during startup. #545

Merged
merged 2 commits into from
Dec 28, 2018

Conversation

rgooch
Copy link
Contributor

@rgooch rgooch commented Dec 28, 2018

The imageserver was concurrently downloading objects during initial replication. If the same object was being downloaded concurrently, this could lead to failures:

  • the first completed download could remove the temporary file of the second download, causing the second download to fail
  • a downloaded object could be temporarily corrupted (truncated) if the second download overwrites the temporary file and the first download moves the object in-place
  • a downloaded object could be permanently corrupted (truncated) if the second download overwrites but fails to complete and the first download moves the object in-place.
    Fixed this by single-threading object downloads from the replication master. This is also more friendly to the master.

A rebuilt (empty) imageserver which was both a replication client and master (to other downstream clients) would cause the downstream clients to delete all their images while it fetches images from its master. Fixed this by blocking replication clients until all images fetched from master (upstream).

@rgooch rgooch merged commit edadd94 into Symantec:master Dec 28, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant