Implement data sync and several other changes that should be separate commits
The larger changes are:
- metadata sync uses the replica log for retrying after errors
- command line usage is simpler, and requires fewer options
- source and destination are gotten from / validated against
the region map, with unit tests
Get data log markers and store them after all buckets are synced. Also
get bucket-index markers for each bucket, and update them in the
bucket index replica log once syncing is complete. The bucket-index
replica log updates should be moved to happend after each bucket once
the actual object copying is implemented.
Instead of 4 copies of queue and worker creation
and results gathering, just have one, with subclasses
that can add special behavior at the beginning or end.
Joe Buck [Fri, 30 Aug 2013 16:26:46 +0000 (09:26 -0700)]
Improve exception handling
Catch exceptions and continue syncing items
in that shard but do NOT update the worker
bounds. This will result in redundant work
but prevents an error from stopping
the syncing of objects 'after' that object
in the same shard.
Signed-off-by: Joe Buck <jbbuck@gmail.com> Reviewd-by: Josh Durgin <josh.durgin@inktank.com>
Add a quick and dirty http serving mode for testing
POST to --test-server-host:--test-server-port/metadata/[partial|full]
to do a partial or full metadata sync. The server will respond
when the sync is complete.