Activity log for bug #1549110

Date Who What changed Old value New value Message
2016-02-24 05:20:20 Kota Tsuyuzaki bug added bug
2016-02-24 05:49:03 OpenStack Infra swift: status New In Progress
2016-10-27 10:07:58 John Dickinson description In an environment >= 2 *EC* policies deployed, object-reconstructor can get an unhandled "ZeroDivisionError" shown in the log. This seems to be triggered due to count mismatch among device_count, part_count and reconstuction_device_count. Both part_count and reconstruction_device_count seems calculated as total number of devices in all policies but device_count looks to be set as the number of devices for the last policy while collecting reconstruction parts. And then, if Swift has many EC policies and few partitions are in the policies, the code[1] will be under 1 and python integer will truncate/round it as 0. 1: https://github.com/openstack/swift/blob/master/swift/obj/reconstructor.py#L351-L353 Traceback: "/usr/local/bin/swift-object-reconstructor", line 31, in <module>#012 run_daemon(ObjectReconstructor, conf_file, **options)#012 File "/usr/local/lib/python2.7/dist-packages/swift/common/daemon.py", line 110, in run_daemon#012 klass(conf).run(once=once, **kwargs)#012 File "/usr/local/lib/python2.7/dist-packages/swift/common/daemon.py", line 55, in run#012 self.run_once(**kwargs)#012 File "/usr/local/lib/python2.7/dist-packages/swift/obj/reconstructor.py", line 943, in run_once#012 override_partitions=override_partitions)#012 File "/usr/local/lib/python2.7/dist-packages/swift/obj/reconstructor.py", line 933, in reconstruct#012 self.stats_line()#012 File "/usr/local/lib/python2.7/dist-packages/swift/obj/reconstructor.py", line 371, in stats_line#012 total_part_count)})#012 File "/usr/local/lib/python2.7/dist-packages/swift/common/utils.py", line 1946, in compute_eta#012 completion = (float(current_value) / final_value) or 0.00001#012ZeroDivisionError: float division by zero Affected: since Liberty In an environment >= 2 *EC* policies deployed, object-reconstructor can get an unhandled "ZeroDivisionError" shown in the log. This seems to be triggered due to count mismatch among device_count, part_count and reconstuction_device_count. Both part_count and reconstruction_device_count seems calculated as total number of devices in all policies but device_count looks to be set as the number of devices for the last policy while collecting reconstruction parts. And then, if Swift has many EC policies and few partitions are in the policies, the code[1] will be under 1 and python integer will truncate/round it as 0. 1: https://github.com/openstack/swift/blob/master/swift/obj/reconstructor.py#L351-L353 Traceback: "/usr/local/bin/swift-object-reconstructor", line 31, in <module> run_daemon(ObjectReconstructor, conf_file, **options) File "/usr/local/lib/python2.7/dist-packages/swift/common/daemon.py", line 110, in run_daemon klass(conf).run(once=once, **kwargs) File "/usr/local/lib/python2.7/dist-packages/swift/common/daemon.py", line 55, in run self.run_once(**kwargs) File "/usr/local/lib/python2.7/dist-packages/swift/obj/reconstructor.py", line 943, in run_once override_partitions=override_partitions) File "/usr/local/lib/python2.7/dist-packages/swift/obj/reconstructor.py", line 933, in reconstruct self.stats_line() File "/usr/local/lib/python2.7/dist-packages/swift/obj/reconstructor.py", line 371, in stats_line total_part_count)}) File "/usr/local/lib/python2.7/dist-packages/swift/common/utils.py", line 1946, in compute_eta completion = (float(current_value) / final_value) or 0.00001 ZeroDivisionError: float division by zero Affected: since Liberty
2016-10-27 10:08:47 clayg swift: importance Undecided High
2016-11-09 04:54:18 OpenStack Infra swift: status In Progress Fix Released
2016-11-23 03:47:11 OpenStack Infra tags ec ec in-feature-hummingbird