Hello Will Berkeley, Mike Percy, I'd like you to do a code review. Please visit
http://gerrit.cloudera.org:8080/9318 to review the following change. Change subject: KUDU-2291 (part 5): allow collecting stack traces asynchronously ...................................................................... KUDU-2291 (part 5): allow collecting stack traces asynchronously This removes the global variable previously used to communicate between a stack trace collector and the stack trace target. The global variable had the downside of allowing only a single stack trace operation in flight at a time, which means that for use cases where we want to capture the trace of a bunch of threads, we needed to do so serially. For use cases like process-wide traces this could make debugging a bit tricky. For example, because of the skew in time between collecting the stack of thread A and the stack of thread B, it's possible that the traces could show them holding the same lock, which we know to be impossible. Getting the collection time as close as possible to "simultaneous" can reduce the possibility of these kind of strange-looking results. The actual mechanism to do this is slightly tricky. Rather than duplicate the full description here, check the comments in the implementation. In particular, StackTraceCollector::RevokeSigData() explains the complexity of not knowing whether our signal will ever be delivered. A new unit test shows the pattern, and this also updates the stack servlet to send the signals to all of the threads as close as possible to "the same time". Change-Id: Ie4d7789bb1272db033df4685f46eaf8483ec7be1 --- M src/kudu/server/default_path_handlers.cc M src/kudu/util/debug-util-test.cc M src/kudu/util/debug-util.cc M src/kudu/util/debug-util.h 4 files changed, 276 insertions(+), 109 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/18/9318/1 -- To view, visit http://gerrit.cloudera.org:8080/9318 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Ie4d7789bb1272db033df4685f46eaf8483ec7be1 Gerrit-Change-Number: 9318 Gerrit-PatchSet: 1 Gerrit-Owner: Todd Lipcon <t...@apache.org> Gerrit-Reviewer: Mike Percy <mpe...@apache.org> Gerrit-Reviewer: Will Berkeley <wdberke...@gmail.com>