Re: 122 resources.cpp:1134] Check failed: !resource.has_role() cpus:8
What a wonderfully concise explanation :) Thanks so much - I'll give it a whirl! Cheers, Jim On Wed, 26 Sep 2018 at 19:16, Joseph Wu wrote: > I believe what you are running into is a slight change in how we represent > Resources. Older frameworks expect unreserved resources to look like this: > > > { > > role: "*", > > reservation: , > > reservations: > > } > > > In 1.4.0, we started representing unreserved resources like: > > > { > > role: , > > reservation: , > > reservations: [] > > } > > > And our Resources.hpp utility files were updated to expect this new > format. By compiling your framework against a newer libmesos, you were > using a utility expecting the new resource format, but receiving the older > format from the Master. You'll need to add this line to your FrameworkInfo > to receive the newer format: > > > framework.add_capabilities()->set_type(FrameworkInfo::Capability::RESERVATION_REFINEMENT); > > > Here's the JIRA that tracked this change: > https://issues.apache.org/jira/browse/MESOS-7575 > > On Wed, Sep 26, 2018 at 7:56 AM James Vanns wrote: > > > Hi! It's been a looonng time since I've asked a question on this list > > (several years) so excuse me if this is now the wrong forum! Anyway, > > basically, I've got an old Mesos framework I'm resurrecting and it was > > developed against 0.26.x, I think. For the sheer Hell of it I just > upgraded > > Mesos to 1.5.0 and by pure miracle (or rather, excellent API/ABI work on > > your part!) I only had to change about 1 or 2 lines of my C++ code to > get a > > build :) However, when I run it and push a task to it, it now bails with > > this stack trace; > > > > F0926 14:35:34.225720 122 resources.cpp:1134] Check failed: > > !resource.has_role() cpus:8 > > *** Check failure stack trace: *** > > @ 0x7fae14997a7d google::LogMessage::Fail() > > @ 0x7fae14999830 google::LogMessage::SendToLog() > > @ 0x7fae14997663 google::LogMessage::Flush() > > @ 0x7fae1499a259 google::LogMessageFatal::~LogMessageFatal() > > @ 0x7fae1393d8a3 mesos::Resources::isEmpty() > > @ 0x7fae1393d97c mesos::Resources::add() > > @ 0x7fae1393fce0 mesos::Resources::operator+=() > > @ 0x7fae1393fd8d mesos::Resources::operator+=() > > @ 0x7fae1394001b mesos::Resources::Resources() > > > > Which I happen to find is the same path as this random link for > > mesos-executor; > > > > > > > https://files.sameroom.io/q9gILEXTOUokGlBYScOrZMVvAFz1g72fK9Ys1oxk0Ho/mesos-execute_.txt > > > > So given that none of my code ever had any explicit roles set and all > > slaves (sorry, agents - it's been that long ;) and the master have only > > ever assumed the default role ('*'), what do I need to add/remove in my > > code to get it to work as it did before!? If it helps it appears that the > > code that generates this dump is; > > > > offer->resources(); > > > > I hope this is enough info! If not, please ask and I'll paste more > context > > etc. > > > > Cheers, > > > > Jim > > > > -- > > Senior Production Engineer, > > Industrial Light & Magic > > > -- -- Senior Code Pig Industrial Light & Magic
Re: 122 resources.cpp:1134] Check failed: !resource.has_role() cpus:8
I believe what you are running into is a slight change in how we represent Resources. Older frameworks expect unreserved resources to look like this: > { > role: "*", > reservation: , > reservations: > } In 1.4.0, we started representing unreserved resources like: > { > role: , > reservation: , > reservations: [] > } And our Resources.hpp utility files were updated to expect this new format. By compiling your framework against a newer libmesos, you were using a utility expecting the new resource format, but receiving the older format from the Master. You'll need to add this line to your FrameworkInfo to receive the newer format: framework.add_capabilities()->set_type(FrameworkInfo::Capability::RESERVATION_REFINEMENT); Here's the JIRA that tracked this change: https://issues.apache.org/jira/browse/MESOS-7575 On Wed, Sep 26, 2018 at 7:56 AM James Vanns wrote: > Hi! It's been a looonng time since I've asked a question on this list > (several years) so excuse me if this is now the wrong forum! Anyway, > basically, I've got an old Mesos framework I'm resurrecting and it was > developed against 0.26.x, I think. For the sheer Hell of it I just upgraded > Mesos to 1.5.0 and by pure miracle (or rather, excellent API/ABI work on > your part!) I only had to change about 1 or 2 lines of my C++ code to get a > build :) However, when I run it and push a task to it, it now bails with > this stack trace; > > F0926 14:35:34.225720 122 resources.cpp:1134] Check failed: > !resource.has_role() cpus:8 > *** Check failure stack trace: *** > @ 0x7fae14997a7d google::LogMessage::Fail() > @ 0x7fae14999830 google::LogMessage::SendToLog() > @ 0x7fae14997663 google::LogMessage::Flush() > @ 0x7fae1499a259 google::LogMessageFatal::~LogMessageFatal() > @ 0x7fae1393d8a3 mesos::Resources::isEmpty() > @ 0x7fae1393d97c mesos::Resources::add() > @ 0x7fae1393fce0 mesos::Resources::operator+=() > @ 0x7fae1393fd8d mesos::Resources::operator+=() > @ 0x7fae1394001b mesos::Resources::Resources() > > Which I happen to find is the same path as this random link for > mesos-executor; > > > https://files.sameroom.io/q9gILEXTOUokGlBYScOrZMVvAFz1g72fK9Ys1oxk0Ho/mesos-execute_.txt > > So given that none of my code ever had any explicit roles set and all > slaves (sorry, agents - it's been that long ;) and the master have only > ever assumed the default role ('*'), what do I need to add/remove in my > code to get it to work as it did before!? If it helps it appears that the > code that generates this dump is; > > offer->resources(); > > I hope this is enough info! If not, please ask and I'll paste more context > etc. > > Cheers, > > Jim > > -- > Senior Production Engineer, > Industrial Light & Magic >
122 resources.cpp:1134] Check failed: !resource.has_role() cpus:8
Hi! It's been a looonng time since I've asked a question on this list (several years) so excuse me if this is now the wrong forum! Anyway, basically, I've got an old Mesos framework I'm resurrecting and it was developed against 0.26.x, I think. For the sheer Hell of it I just upgraded Mesos to 1.5.0 and by pure miracle (or rather, excellent API/ABI work on your part!) I only had to change about 1 or 2 lines of my C++ code to get a build :) However, when I run it and push a task to it, it now bails with this stack trace; F0926 14:35:34.225720 122 resources.cpp:1134] Check failed: !resource.has_role() cpus:8 *** Check failure stack trace: *** @ 0x7fae14997a7d google::LogMessage::Fail() @ 0x7fae14999830 google::LogMessage::SendToLog() @ 0x7fae14997663 google::LogMessage::Flush() @ 0x7fae1499a259 google::LogMessageFatal::~LogMessageFatal() @ 0x7fae1393d8a3 mesos::Resources::isEmpty() @ 0x7fae1393d97c mesos::Resources::add() @ 0x7fae1393fce0 mesos::Resources::operator+=() @ 0x7fae1393fd8d mesos::Resources::operator+=() @ 0x7fae1394001b mesos::Resources::Resources() Which I happen to find is the same path as this random link for mesos-executor; https://files.sameroom.io/q9gILEXTOUokGlBYScOrZMVvAFz1g72fK9Ys1oxk0Ho/mesos-execute_.txt So given that none of my code ever had any explicit roles set and all slaves (sorry, agents - it's been that long ;) and the master have only ever assumed the default role ('*'), what do I need to add/remove in my code to get it to work as it did before!? If it helps it appears that the code that generates this dump is; offer->resources(); I hope this is enough info! If not, please ask and I'll paste more context etc. Cheers, Jim -- Senior Production Engineer, Industrial Light & Magic