OSP6 latest python-oslo-utils package: python-oslo-utils-1.1.0-2.el7ost.noarch does NOT include leap-second fix introduced in version 1.5: ~~~python-oslo-utils-1.1.0-2.el7ost: def unmarshall_time(tyme): """Unmarshall a datetime dict.""" return datetime.datetime(day=tyme['day'], month=tyme['month'], year=tyme['year'], hour=tyme['hour'], minute=tyme['minute'], second=tyme['second'], microsecond=tyme['microsecond']) def delta_seconds(before, after): ~~~ ~~~ python-oslo-utils-2.8.0-1.el7ost: def unmarshall_time(tyme): """Unmarshall a datetime dict. .. versionchanged:: 1.5 <------------------------------------ Drop leap second. <------------------------------------ .. versionchanged:: 1.6 Added support for timezone information. """ # NOTE(ihrachys): datetime does not support leap seconds, # so the best thing we can do for now is dropping them # http://bugs.python.org/issue23574 second = min(tyme['second'], _MAX_DATETIME_SEC) dt = datetime.datetime(day=tyme['day'], month=tyme['month'], year=tyme['year'], hour=tyme['hour'], minute=tyme['minute'], second=second, microsecond=tyme['microsecond']) tzname = tyme.get('tzname') if tzname: tzinfo = timezone(tzname) dt = tzinfo.localize(dt) return dt ~~~ https://review.openstack.org/#/c/172964/
A package is now ready for tests. I don't know how to test the fix in practice, leap seconds are are :-) At least, unit tests pass.
Oops, wrong issue.
Sorry, the right package is in fact the freshly built python-oslo-utils-1.1.0-3.el7ost.
Hey guys, can we move this forward? It's been fixed in OSP7 (BZ 1371859), and it seems to me that we also already have it in OSP6 (Fixed In Version: python-oslo-utils-1.1.0-3.el7ost). What is needed next? doc_text ACK? --Irina
Guys, are we making any progress on this? https://time.is/leapsecond >>> as of this writing, leap second 2016 is going to occur in less than 12 days Wouldn't it be nice if we could get the patch out before that? --Irina
Simple test: import timeutils t1 = {'day': 31, 'month': 12, 'year': 2016, 'hour': 23, 'minute': 59, 'second': 59, 'microsecond': 0 } t2 = {'day': 31, 'month': 12, 'year': 2016, 'hour': 23, 'minute': 59, 'second': 60, 'microsecond': 0 } print timeutils.unmarshall_time(t1) # Before patch: traceback. After patch: # Same result as above print timeutils.unmarshall_time(t2) Before patch: 2016-12-31 23:59:59 Traceback (most recent call last): File "foo", line 22, in <module> print timeutils.unmarshall_time(t2) File "/home/lhh/tmp/tmp/usr/lib/python2.7/site-packages/oslo/utils/timeutils.py", line 182, in unmarshall_time microsecond=tyme['microsecond']) ValueError: second must be in 0..59 After patch to drop leap second: 2016-12-31 23:59:59 2016-12-31 23:59:59
Thanks for testing Lon ;-)
Thanks, Lon!
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-2979.html