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

Benjamin Mahler commented on MESOS-9767:
----------------------------------------

The bizarre thread stack is:

{noformat}
Thread 21 (Thread 0x7fa1e0e4d700 (LWP 85889)):

#0  0x00007fa1f05f01c2 in hash_combine_impl (k=52, h=<synthetic pointer>)
    at ../3rdparty/boost-1.65.0/boost/functional/hash/hash.hpp:264
#1  hash_combine<char> (v=<optimized out>, seed=<synthetic pointer>)
    at ../3rdparty/boost-1.65.0/boost/functional/hash/hash.hpp:337
#2  hash_range<__gnu_cxx::__normal_iterator<char const*, 
std::basic_string<char> > > (last=...,
    first=52 '4') at ../3rdparty/boost-1.65.0/boost/functional/hash/hash.hpp:351
#3  hash_value<char, std::allocator<char> > (v=...)
    at ../3rdparty/boost-1.65.0/boost/functional/hash/hash.hpp:410
#4  operator() (this=<optimized out>, v=...)
    at ../3rdparty/boost-1.65.0/boost/functional/hash/hash.hpp:486
#5  boost::hash_combine<std::string> (seed=seed@entry=@0x7fa1e0e4c770: 0, v=...)
    at ../3rdparty/boost-1.65.0/boost/functional/hash/hash.hpp:337
#6  0x00007fa1f06ad178 in operator() (this=0x7fa1cc02d068, taskId=...)
    at /mesos/include/mesos/type_utils.hpp:634
#7  _M_hash_code (this=0x7fa1cc02d068, __k=...) at 
/usr/include/c++/4.9/bits/hashtable_policy.h:1261
#8  std::_Hashtable<mesos::TaskID, std::pair<mesos::TaskID const, 
std::_List_iterator<std::pair<mesos
::TaskID, process::Owned<mesos::Task> > > >, 
std::allocator<std::pair<mesos::TaskID const, 
std::_List_iterator<std::pair<mesos::TaskID, process::Owned<mesos::Task> > > > 
>, std::__detail::_Select1st, std::equal_to<mesos::TaskID>, 
std::hash<mesos::TaskID>, std::__detail::_Mod_range_hashing, 
std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, 
std::__detail::_Hashtable_traits<true, false, true> >::count 
(this=this@entry=0x7fa1cc02d068, __k=...)
    at /usr/include/c++/4.9/bits/hashtable.h:1336
#9  0x00007fa1f0663eb2 in count (__x=..., this=0x7fa1cc02d068)
    at /usr/include/c++/4.9/bits/unordered_map.h:592
#10 contains (key=..., this=0x7fa1cc02d068) at 
/mesos/3rdparty/stout/include/stout/hashmap.hpp:88
#11 erase (key=..., this=0x7fa1cc02d050)
    at /mesos/3rdparty/stout/include/stout/boundedhashmap.hpp:92
#12 mesos::internal::master::Master::__reregisterSlave(process::UPID const&, 
mesos::internal::ReregisterSlaveMessage&&, process::Future<bool> const&) 
(this=0x561dcf047380, pid=...,
    reregisterSlaveMessage=<unknown type in /usr/local/lib/libmesos-1.6.0.so, 
CU 0x30075d6, DIE 0x38a83be>, future=...) at /mesos/src/master/master.cpp:7369
#13 0x00007fa1f14d54e1 in operator() (args#0=0x561dcf048620, this=<optimized 
out>)
    at /mesos/3rdparty/libprocess/../stout/include/stout/lambda.hpp:443
#14 process::ProcessBase::consume(process::DispatchEvent&&) (this=<optimized 
out>,
    event=<optimized out>) at /mesos/3rdparty/libprocess/src/process.cpp:3577
#15 0x00007fa1f14e89b2 in serve (
    event=<unknown type in /usr/local/lib/libmesos-1.6.0.so, CU 0x14b8d81b, DIE 
0x14e9f25d>,
    this=0x561dcf048620) at 
/mesos/3rdparty/libprocess/include/process/process.hpp:87
#16 process::ProcessManager::resume (this=<optimized out>, 
process=0x561dcf048620)
    at /mesos/3rdparty/libprocess/src/process.cpp:3002
#17 0x00007fa1f14ee226 in operator() (__closure=0x561dcf119158)
    at /mesos/3rdparty/libprocess/src/process.cpp:2511
#18 _M_invoke<> (this=0x561dcf119158) at /usr/include/c++/4.9/functional:1700
#19 operator() (this=0x561dcf119158) at /usr/include/c++/4.9/functional:1688
#20 
std::thread::_Impl<std::_Bind_simple<process::ProcessManager::init_threads()::<lambda()>()>
 >::_M_run(void) (this=0x561dcf119140) at /usr/include/c++/4.9/thread:115
#21 0x00007fa1ee7eb990 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#22 0x00007fa1ee520064 in start_thread (arg=0x7fa1e0e4d700) at 
pthread_create.c:309
#23 0x00007fa1ee25562d in clone () at 
../sysdeps/unix/sysv/linux/x86_64/clone.S:111
{noformat}

[~ggarg] is this trace present whenever it's hanging?

> Add self health monitoring in Mesos master
> ------------------------------------------
>
>                 Key: MESOS-9767
>                 URL: https://issues.apache.org/jira/browse/MESOS-9767
>             Project: Mesos
>          Issue Type: Task
>          Components: master
>    Affects Versions: 1.6.0
>            Reporter: Gaurav Garg
>            Priority: Major
>             Fix For: 1.7.2
>
>
> We have seen issue where Mesos master got stuck and was not responding to 
> HTTP endpoints like "/metrics/snapshot". This results in calls by the 
> frameworks and metrics collector to the master to hang. Currently we emit 
> 'master alive' metric using prometheus. If master hangs, this metrics is not 
> published and we detect the hangs using alerts on top of this metrics. By the 
> time someone would have got the alert and restarted the master process, 
> 15-30mins would have passed by. This results in SLA violation by Mesos 
> cluster users.
> It will be nice to implement a self health check monitoring to detect if the 
> Mesos master is hung/stuck. This will help us to quickly crash the master 
> process so that one of the other member of the quorum can acquire ZK 
> leadership lock.
> We can use the "/master/health" endpoint for health checks. 
> Health checks can be initiated in 
> [src/master/main.cpp|[https://github.com/apache/mesos/blob/master/src/master/main.cpp]]
>  just after the child master process is 
> [spawned.|[https://github.com/apache/mesos/blob/master/src/master/main.cpp#L543]]
> We can leverage the 
> [HealthChecker|[https://github.com/apache/mesos/blob/master/src/checks/health_checker.hpp]]
>  for this one. One downside is that HealthChecker currently takes TaskId as 
> an input which is not valid for master health check. 
> We can add following flags to control the self heath checking:
>  # self_monitoring_enabled: Whether self monitoring is enabled.
>  # self_monitoring_consecutive_failures: After this many number of health 
> failures, master is crashed.
>  # self_monitoring_interval_secs: Interval at which health checks are 
> performed.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to