[ 
https://issues.apache.org/jira/browse/MESOS-335?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13586641#comment-13586641
 ] 

Benjamin Mahler edited comment on MESOS-335 at 2/26/13 2:28 AM:
----------------------------------------------------------------

This is because the double returned from Clock::now() does not go through the 
Seconds constructor that multiplied into a double representing nanoseconds.

Notice how we lose precision at the microsecond precision level.

double _now:                1361844790.21959590911865234375
Seconds(_now).secs():  1361844790.2195961475372314453125
older.secs():                 1361844790.2195961475372314453125

There are a few ways to fix this:
1. We've been meaning to push Duration into clock.hpp, but I don't know if I 
like that, given we're losing precision at the microsecond level!!
2. Modify Duration to use int64_t (which should have been done in the first 
place, I don't like that ev_time returns double!). This can represent upwards 
of 292 years precisely. Even so, people can call secs() on duration and get an 
imprecise value!! Seems to me that Duration should resemble Bytes, where 
discrete values are used throughout the file.
                
      was (Author: bmahler):
    This is because the double returned from Clock::now() does not go through 
the Seconds constructor that multiplied into a double representing nanoseconds.

Notice how we lose precision at the microsecond precision level.

_now:                1361844790.21959590911865234375
Seconds(_now): 1361844790.2195961475372314453125
secs():              1361844790.2195961475372314453125

There are a few ways to fix this:
1. We've been meaning to push Duration into clock.hpp, but I don't know if I 
like that, given we're losing precision at the microsecond level!!
2. Modify Duration to use int64_t (which should have been done in the first 
place, I don't like that ev_time returns double!). This can represent upwards 
of 292 years precisely. Even so, people can call secs() on duration and get an 
imprecise value!! Seems to me that Duration should resemble Bytes, where 
discrete values are used throughout the file.
                  
> Statistics.truncate is flaky.
> -----------------------------
>
>                 Key: MESOS-335
>                 URL: https://issues.apache.org/jira/browse/MESOS-335
>             Project: Mesos
>          Issue Type: Bug
>            Reporter: Benjamin Mahler
>            Assignee: Benjamin Mahler
>
> Looks like a double comparison issue..?
> [ RUN      ] Statistics.truncate
> ../../../third_party/libprocess/src/tests/statistics_tests.cpp:58: Failure
> Expected: (Clock::now()) >= (values.get().begin()->first.secs()), actual: 
> 1.36184e+09 vs 1.36184e+09
> ../../../third_party/libprocess/src/tests/statistics_tests.cpp:71: Failure
> Expected: (Clock::now()) >= (values.get().begin()->first.secs()), actual: 
> 1.36193e+09 vs 1.36193e+09
> [  FAILED  ] Statistics.truncate (1 ms)
> Another flaky one:
> [ RUN      ] Statistics.archive
> ../../../third_party/libprocess/src/tests/statistics_tests.cpp:175: Failure
> Value of: values.get().empty()
>   Actual: false
> Expected: true
> [  FAILED  ] Statistics.archive (2 ms)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to