swift/swift/obj
Samuel Merritt c28004deb0 Multiprocess object replicator
Add a multiprocess mode to the object replicator. Setting the
"replicator_workers" setting to a positive value N will result in the
replicator using up to N worker processes to perform replication
tasks.

At most one worker per disk will be spawned, so one can set
replicator_workers=99999999 to always get one worker per disk
regardless of the number of disks in each node. This is the same
behavior that the object reconstructor has.

Worker process logs will have a bit of information prepended so
operators can tell which messages came from which worker. It looks
like this:

  [worker 1/2 pid=16529] 154/154 (100.00%) partitions replicated in 1.02s (150.87/sec, 0s remaining)

The prefix is "[worker M/N pid=P] ", where M is the worker's index, N
is the total number of workers, and P is the process ID. Every message
from the replicator's logger will have the prefix; this includes
messages from down in diskfile, but does not include things printed to
stdout or stderr.

Drive-by fix: don't dump recon stats when replicating only certain
policies. When running the object replicator with replicator_workers >
0 and "--policies=X,Y,Z", the replicator would update recon stats
after running. Since it only ran on a subset of objects, it should not
update recon, much like it doesn't update recon when run with
--devices or --partitions.

Change-Id: I6802a9ad9f1f9b9dafb99d8b095af0fdbf174dc5
2018-04-24 04:05:08 +00:00
..
__init__.py Initial commit of Swift code 2010-07-12 17:03:45 -05:00
auditor.py Change object_audit_location_generator() to yield for a single policy. 2018-03-22 03:02:35 +00:00
diskfile.py Change object_audit_location_generator() to yield for a single policy. 2018-03-22 03:02:35 +00:00
expirer.py Fix object-server to not 400 all expirer DELETEs 2018-03-02 15:25:38 +00:00
mem_diskfile.py Add metadata checksums to old objects in auditor. 2017-11-13 10:22:57 -08:00
mem_server.py Per-policy DiskFile classes 2015-04-14 00:52:16 -07:00
reconstructor.py Multiprocess object replicator 2018-04-24 04:05:08 +00:00
replicator.py Multiprocess object replicator 2018-04-24 04:05:08 +00:00
server.py Merge "py3: port common/wsgi.py" 2018-03-06 02:04:04 +00:00
ssync_receiver.py Merge "Fix SSYNC failing to replicate unexpired object" 2017-05-31 22:49:55 +00:00
ssync_sender.py Allow to rebuild a fragment of an expired object 2017-08-04 23:05:08 +02:00
updater.py Keep object-updater stats logging consistent 2018-01-18 12:09:07 -08:00