[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15022891#comment-15022891 ] Neil Conway commented on MESOS-3552: I opened MESOS-3997 for the longer-term issue that we should switch to fixed point for resources. > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14945473#comment-14945473 ] Mandeep Chadha commented on MESOS-3552: --- https://reviews.apache.org/r/39056/ > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14942976#comment-14942976 ] Klaus Ma commented on MESOS-3552: - Yes, Glog/gtest has similar macro/function to check double, but not sure are we going to copy it into `stout` or are we going to use fixed precision (e.g. 0.01) in Mesos. > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14936443#comment-14936443 ] Klaus Ma commented on MESOS-3552: - [~mchadha], any steps to reproduce this issue? > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14936441#comment-14936441 ] Klaus Ma commented on MESOS-3552: - This is a similar issue on checking double equal. [~bmahler], I'd suggest to have a util function to check double, and make the precision to 0.01 for example. > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14937026#comment-14937026 ] Mandeep Chadha commented on MESOS-3552: --- One more example of ( double == double) check - though doesn't result in crash :) Util function will be useful but still have to be enforced. Maybe it is time to wrap double primitive into Double ( primitive wrapper class) ? That way we don't have to chase down every (double == double) check. https://github.com/apache/mesos/blob/master/src/master/allocator/sorter/drf/sorter.cpp#L34 bool DRFComparator::operator()(const Client& client1, const Client& client2) { if (client1.share == client2.share) { if (client1.allocations == client2.allocations) { return client1.name < client2.name; } return client1.allocations < client2.allocations; } return client1.share < client2.share; } Where share is double : https://github.com/apache/mesos/blob/master/src/master/allocator/sorter/drf/sorter.hpp#L43 struct Client { Client(const std::string& _name, double _share, uint64_t _allocations) : name(_name), share(_share), allocations(_allocations) {} std::string name; double share; --- As far as this bug, we can use : " The CHECK_DOUBLE_EQ macro checks the equality of two floating point values, accepting a small error margin. CHECK_NEAR accepts a third floating point argument, which specifies the acceptable error margin. " > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14937031#comment-14937031 ] Mandeep Chadha commented on MESOS-3552: --- Framework : Reserve 0.1 CPU Launch task Reserve 0.1 CPU -- Crash I will add a unit test. > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14936979#comment-14936979 ] James Peach commented on MESOS-3552: FWIW, Glog has {{CHECK_DOUBLE_EQ}} for this. > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14936089#comment-14936089 ] Mandeep Chadha commented on MESOS-3552: --- F0922 15:08:06.158139 306833 resources.cpp:872] Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports() https://github.com/apache/mesos/blob/master/src/common/resources.cpp#L869 Option Resources::cpus() const { Option value = get("cpus"); if (value.isSome()) { return value.get().value(); } else { return None(); } } https://github.com/apache/mesos/blob/master/3rdparty/libprocess/3rdparty/stout/include/stout/option.hpp#L118 bool operator==(const Option& that) const { return (isNone() && that.isNone()) || (isSome() && that.isSome() && t == that.t); } t == that.t ---> results in (double == double) ( operator== for Option) > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14936096#comment-14936096 ] Benjamin Mahler commented on MESOS-3552: Thanks, can you also post the stack trace so we know where this is triggered? > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14935885#comment-14935885 ] Benjamin Mahler commented on MESOS-3552: Could you please include a pointer to the code containing the check? > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-3552) Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports()
[ https://issues.apache.org/jira/browse/MESOS-3552?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14936108#comment-14936108 ] Mandeep Chadha commented on MESOS-3552: --- F0923 23:18:43.559806 2653 resources.cpp:872] Check failed: result.cpus() == cpus() && result.mem() == mem() && result.disk() == disk() && result.ports() == ports() *** Check failure stack trace: *** @ 0x7f151e338f64 google::LogMessage::Fail() @ 0x7f151e338f64 google::LogMessage::Fail() @ 0x7f151e338eb3 google::LogMessage::SendToLog() @ 0x7f151e338eb3 google::LogMessage::SendToLog() @ 0x7f151e3388c4 google::LogMessage::Flush() @ 0x7f151e3388c4 google::LogMessage::Flush() @ 0x7f151e33b5f8 google::LogMessageFatal::~LogMessageFatal() @ 0x7f151e33b5f8 google::LogMessageFatal::~LogMessageFatal() @ 0x7f151d62029f mesos::Resources::apply() @ 0x7f151d62029f mesos::Resources::apply() @ 0x7f151d723c66 mesos::Resources::apply<>() @ 0x7f151d7febf3 mesos::internal::master::Slave::apply() @ 0x7f151d71fae2 mesos::internal::master::allocator::HierarchicalAllocatorProcess<>::updateAllocation() @ 0x7f151d7f0561 mesos::internal::master::Master::applyOfferOperation() @ 0x7f151d72a8d0 _ZZN7process8dispatchIN5mesos8internal6master9allocator21MesosAllocatorProcessERKNS1_11FrameworkIDERKNS1_7SlaveIDERKSt6vectorINS1_15Offer_OperationESaISD_EES6_S9_SF_EEvRKNS_3PIDIT_EEMSJ_FvT0_T1_T2_ET3_T4_T5_ENKUlPNS_11ProcessBaseEE_clESW_ @ 0x7f151d7d74f8 mesos::internal::master::Master::_accept() @ 0x7f151d734764 _ZNSt17_Function_handlerIFvPN7process11ProcessBaseEEZNS0_8dispatchIN5mesos8internal6master9allocator21MesosAllocatorProcessERKNS5_11FrameworkIDERKNS5_7SlaveIDERKSt6vectorINS5_15Offer_OperationESaISH_EESA_SD_SJ_EEvRKNS0_3PIDIT_EEMSN_FvT0_T1_T2_ET3_T4_T5_EUlS2_E_E9_M_invokeERKSt9_Any_dataS2_ @ 0x7f151d83d99d _ZZN7process8dispatchIN5mesos8internal6master6MasterERKNS1_11FrameworkIDERKNS1_7SlaveIDERKNS1_9ResourcesERKNS1_9scheduler11Call_AcceptERKNS_6FutureISt4listINSI_IbEESaISK_S5_S8_SB_SF_SN_EEvRKNS_3PIDIT_EEMSR_FvT0_T1_T2_T3_T4_ET5_T6_T7_T8_T9_ENKUlPNS_11ProcessBaseEE_clES18_ @ 0x7f151e2c1775 std::function<>::operator()() @ 0x7f151d890865 _ZNSt17_Function_handlerIFvPN7process11ProcessBaseEEZNS0_8dispatchIN5mesos8internal6master6MasterERKNS5_11FrameworkIDERKNS5_7SlaveIDERKNS5_9ResourcesERKNS5_9scheduler11Call_AcceptERKNS0_6FutureISt4listINSM_IbEESaISO_S9_SC_SF_SJ_SR_EEvRKNS0_3PIDIT_EEMSV_FvT0_T1_T2_T3_T4_ET5_T6_T7_T8_T9_EUlS2_E_E9_M_invokeERKSt9_Any_dataS2_ @ 0x7f151e2aa627 process::ProcessBase::visit() @ 0x7f151e2c1775 std::function<>::operator()() @ 0x7f151e2ad422 process::DispatchEvent::visit() @ 0x47558e process::ProcessBase::serve() @ 0x7f151e2a6c1b process::ProcessManager::resume() @ 0x7f151e2aa627 process::ProcessBase::visit() @ 0x7f151e2ad422 process::DispatchEvent::visit() @ 0x47558e process::ProcessBase::serve() @ 0x7f151e29aff0 process::internal::schedule() @ 0x7f151e2a6c1b process::ProcessManager::resume() @ 0x7f151e2fadc1 _ZNSt12_Bind_simpleIFPFvvEvEE9_M_invokeIJEEEvSt12_Index_tupleIJXspT_EEE @ 0x7f151e2fad11 std::_Bind_simple<>::operator()() @ 0x7f151e29aff0 process::internal::schedule() @ 0x7f151e2fadc1 _ZNSt12_Bind_simpleIFPFvvEvEE9_M_invokeIJEEEvSt12_Index_tupleIJXspT_EEE @ 0x7f151e2fad11 std::_Bind_simple<>::operator()() @ 0x7f151e2facaa std::thread::_Impl<>::_M_run() @ 0x31418b6470 (unknown) @ 0x31410079d1 (unknown) @ 0x31408e88fd (unknown) @ (nil) (unknown) > Check failed: result.cpus() == cpus() && result.mem() == mem() && > result.disk() == disk() && result.ports() == ports() > --- > > Key: MESOS-3552 > URL: https://issues.apache.org/jira/browse/MESOS-3552 > Project: Mesos > Issue Type: Bug > Components: master >Affects Versions: 0.24.1 >Reporter: Mandeep Chadha >Assignee: Mandeep Chadha > > result.cpus() == cpus() check is failing due to ( double == double ) > comparison problem. > Root Cause : > Framework requested 0.1 cpu reservation for the first task. So far so good. > Next Reserve operation — lead to double operations resulting in following > double values : > results.cpus() : 23.9964472863211995 cpus() : 24 > And the check ( result.cpus() == cpus() ) failed. > The double arithmetic operations caused results.cpus() value to be : > 23.9964472863211995 and hence ( 23.9964472863211995 > == 24 ) failed. -- This message was sent