Hello Alexey Serbin,
I'd like you to do a code review. Please visit
http://gerrit.cloudera.org:8080/9245
to review the following change.
Change subject: Fix unlocked access to cmeta in RaftConsensus::Start()
......................................................................
Fix unlocked access to cmeta in RaftConsensus::Start()
In a future patch, after removing the thread safety of the
ConsensusMetadata class, unlocked access to cmeta triggered a warning
from the collision warner in RaftConsensus::Start():
F0206 20:31:24.554322 30972 thread_collision_warner.cc:23] Thread Collision!
Previous thread id: 30962, current thread id: 30972
Thread 4331 (Thread 0x7ffe5f964700 (LWP 30962)):
#0 pthread_cond_timedwait@@GLIBC_2.3.2 () at
../sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:225
#1 0x00007ffff331966f in kudu::ConditionVariable::TimedWait (this=0x8c10b0,
max_time=...) at ../../src/kudu/util/condition_variable.cc:123
#2 0x00007ffff74e6c71 in kudu::tserver::Heartbeater::Thread::RunThread
(this=0x8c0f80) at ../../src/kudu/tserver/heartbeater.cc:538
#3 0x00007ffff74efec9 in boost::_mfi::mf0<void,
kudu::tserver::Heartbeater::Thread>::operator() (this=0xd015d0, p=0x8c0f80) at
../../thirdparty/installed/uninstrumented/include/boost/bind/mem_fn_template.hpp:49
Thread 4341 (Thread 0x7ffe5a95a700 (LWP 30972)):
#0 0x00007ffff156c428 in __GI_raise (sig=sig@entry=6) at
../sysdeps/unix/sysv/linux/raise.c:54
#1 0x00007ffff156e02a in __GI_abort () at abort.c:89
#2 0x00007ffff2ff1c67 in google::DumpStackTraceAndExit () at
/home/mpercy/src/kudu/thirdparty/src/glog-0.3.5/src/utilities.cc:152
#3 0x00007ffff2fe8b1d in google::LogMessage::Fail () at
/home/mpercy/src/kudu/thirdparty/src/glog-0.3.5/src/logging.cc:1488
#4 0x00007ffff2feaa03 in google::LogMessage::SendToLog (this=0x7ffe5a957d68)
at /home/mpercy/src/kudu/thirdparty/src/glog-0.3.5/src/logging.cc:1442
#5 0x00007ffff2fe867a in google::LogMessage::Flush
(this=this@entry=0x7ffe5a957d68) at
/home/mpercy/src/kudu/thirdparty/src/glog-0.3.5/src/logging.cc:1311
#6 0x00007ffff2feb3cf in google::LogMessageFatal::~LogMessageFatal
(this=0x7ffe5a957d68, __in_chrg=<optimized out>) at
/home/mpercy/src/kudu/thirdparty/src/glog-0.3.5/src/logging.cc:2023
#7 0x00007ffff30bc20b in base::DCheckAsserter::warn (this=0x7fffbc016a90,
previous_thread_id=30962, current_thread_id=30972) at
../../src/kudu/gutil/threading/thread_collision_warner.cc:23
#8 0x00007ffff30bc34d in base::ThreadCollisionWarner::Enter
(this=0x7fffbc00bde0) at
../../src/kudu/gutil/threading/thread_collision_warner.cc:81
#9 0x00007ffff6dd3933 in
base::ThreadCollisionWarner::ScopedCheck::ScopedCheck (this=0x7ffe5a957e30,
warner=0x7fffbc00bde0) at
../../src/kudu/gutil/threading/thread_collision_warner.h:184
#10 0x00007ffff6a95fca in kudu::consensus::ConsensusMetadata::current_term
(this=0x7fffbc00bd90) at ../../src/kudu/consensus/consensus_meta.cc:56
#11 0x00007ffff6afa4a4 in
kudu::consensus::RaftConsensus::Start(kudu::consensus::ConsensusBootstrapInfo
const&, gscoped_ptr<kudu::consensus::PeerProxyFactory,
kudu::DefaultDeleter<kudu::consensus::PeerProxyFactory> >,
scoped_refptr<kudu::log::Log>, scoped_refptr<kudu::consensus::TimeManager>,
kudu::consensus::ReplicaTransactionFactory*, scoped_refptr<kudu::MetricEntity>,
kudu::Callback<void (std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&)>) (this=0x7fffbc0008d0, info=...,
peer_proxy_factory=..., log=..., time_manager=..., txn_factory=0x7fffbc00bff0,
metric_entity=..., mark_dirty_clbk=...) at
../../src/kudu/consensus/raft_consensus.cc:228
#12 0x00007ffff6e231b5 in kudu::tablet::TabletReplica::Start
(this=0x7fffbc00bff0, bootstrap_info=..., tablet=std::shared_ptr (empty) 0x0,
clock=..., messenger=std::shared_ptr (empty) 0x0, result_tracker=..., log=...,
prepare_pool=0xd07140) at ../../src/kudu/tablet/tablet_replica.cc:220
Change-Id: I661c603a57b9ecaeee926ce7cd86c9ecf2ad58a8
---
M src/kudu/consensus/raft_consensus.cc
1 file changed, 1 insertion(+), 1 deletion(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/45/9245/1
--
To view, visit http://gerrit.cloudera.org:8080/9245
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I661c603a57b9ecaeee926ce7cd86c9ecf2ad58a8
Gerrit-Change-Number: 9245
Gerrit-PatchSet: 1
Gerrit-Owner: Mike Percy <[email protected]>
Gerrit-Reviewer: Alexey Serbin <[email protected]>