<div dir="ltr">Yeah that's a few undesirable behaviors there.<div><br></div><div><a href="https://bugs.launchpad.net/swift/+bug/1583305">https://bugs.launchpad.net/swift/+bug/1583305</a><br></div><div><br></div><div>#willfix</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, May 17, 2016 at 11:04 PM, Mark Kirkwood <span dir="ltr"><<a href="mailto:mark.kirkwood@catalyst.net.nz" target="_blank">mark.kirkwood@catalyst.net.nz</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 17/05/16 17:43, Mark Kirkwood wrote:<br>
</span><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I'm seeing some replication errors in the object server log:<br>
<br>
May 17 05:27:36 markir-dev-ostor001 object-server: Starting object replication pass.<br>
May 17 05:27:36 markir-dev-ostor001 object-server: 1/1 (100.00%) partitions replicated in 0.03s (38.19/sec, 0s remaining)<br>
May 17 05:27:36 markir-dev-ostor001 object-server: 2 successes, 0 failures<br>
May 17 05:27:36 markir-dev-ostor001 object-server: 1 suffixes checked - 0.00% hashed, 0.00% synced<br>
May 17 05:27:36 markir-dev-ostor001 object-server: Partition times: max 0.0210s, min 0.0210s, med 0.0210s<br>
May 17 05:27:36 markir-dev-ostor001 object-server: Object replication complete. (0.00 minutes)<br>
May 17 05:27:36 markir-dev-ostor001 object-server: Replication sleeping for 30 seconds.<br>
May 17 05:27:40 markir-dev-ostor001 object-server: Begin object audit "forever" mode (ALL)<br>
May 17 05:27:40 markir-dev-ostor001 object-server: Begin object audit "forever" mode (ZBF)<br>
May 17 05:27:40 markir-dev-ostor001 object-server: Object audit (ZBF). Since Tue May 17 05:27:40 2016: Locally: 1 passed, 0 quarantined, 0 errors, files/sec: 83.24, bytes/sec: 0.00, Total time: 0.01, Auditing time: 0.00, Rate: 0.00<br>
May 17 05:27:40 markir-dev-ostor001 object-server: Object audit (ZBF) "forever" mode completed: 0.01s. Total quarantined: 0, Total errors: 0, Total files/sec: 66.89, Total bytes/sec: 0.00, Auditing time: 0.01, Rate: 0.75<br>
May 17 05:27:45 markir-dev-ostor001 object-server: ::ffff:10.0.3.242 - - [17/May/2016:05:27:45 +0000] "REPLICATE /1/899" 200 56 "-" "-" "object-replicator 18131" 0.0014 "-" 29108 0<br>
May 17 05:27:45 markir-dev-ostor001 object-server: ::ffff:10.0.3.242 - - [17/May/2016:05:27:45 +0000] "REPLICATE /1/899" 200 56 "-" "-" "object-replicator 18131" 0.0016 "-" 29109 0<br>
May 17 05:28:06 markir-dev-ostor001 object-server: Starting object replication pass.<br>
May 17 05:28:06 markir-dev-ostor001 object-server: 1/1 (100.00%) partitions replicated in 0.02s (49.85/sec, 0s remaining)<br>
May 17 05:28:06 markir-dev-ostor001 object-server: 2 successes, 6 failures <==============================<br>
May 17 05:28:06 markir-dev-ostor001 object-server: 1 suffixes checked - 0.00% hashed, 0.00% synced<br>
May 17 05:28:06 markir-dev-ostor001 object-server: Partition times: max 0.0155s, min 0.0155s, med 0.0155s<br>
May 17 05:28:06 markir-dev-ostor001 object-server: Object replication complete. (0.00 minutes)<br>
May 17 05:28:06 markir-dev-ostor001 object-server: Replication sleeping for 30 seconds.<br>
</blockquote>
<br>
<br></span>
The other case is (bit more debugging, but trivial so will inline it):<br>
<br>
Log:<br>
May 18 05:59:50 markir-dev-ostor002 object-server: object replication failure 1 detail no error<br>
May 18 05:59:50 markir-dev-ostor002 object-server: object replication failure 1 detail no error<br>
May 18 05:59:50 markir-dev-ostor002 object-server: 2/2 (100.00%) partitions replicated in 0.04s (47.15/sec, 0s remaining)<br>
May 18 05:59:50 markir-dev-ostor002 object-server: 4 successes, 12 failures<br>
<br>
<br>
Code (around line 492 of replication.py):<br>
        except (Exception, Timeout):<br>
            trace = traceback.format_exc()<br>
            failure_devs_info.update(target_devs_info)<br>
            self.logger.exception(_("Error syncing partition"))<br>
        else:<br>
            trace = "no error"<br>
        finally:<br>
            self.stats['success'] += len(target_devs_info - failure_devs_info)<br>
            self.logger.warning('object replication failure 1 detail %s', trace)<br>
self._add_failure_stats(failure_devs_info) <===============<br>
            self.partition_times.append(time.time() - begin)<br>
self.logger.timing_since('partition.update.timing', begin)<br>
<br>
<br>
That 'finally' is gonna increment the error count even if there is no exception I think, probably should check if an exception actually occurred!<br>
<br>
Cheers<div class="HOEnZb"><div class="h5"><br>
<br>
Mark<br>
<br>
<br>
_______________________________________________<br>
Mailing list: <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><br>
Post to     : <a href="mailto:openstack@lists.openstack.org" target="_blank">openstack@lists.openstack.org</a><br>
Unsubscribe : <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack</a><br>
</div></div></blockquote></div><br></div>