Przeglądaj źródła

[desktop] Add a SIGUSR1 handler that dumps the thread stacktrace to stderr

Erick Tryzelaar 10 lat temu
rodzic
commit
69ff10f2c0

+ 4 - 0
desktop/core/src/desktop/__init__.py

@@ -14,6 +14,10 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
+# Load the signal handlers
+import desktop.signal_handlers
+
 from desktop.supervisor import DjangoCommandSupervisee
 
 SUPERVISOR_SPEC = DjangoCommandSupervisee(

+ 26 - 0
desktop/core/src/desktop/signal_handlers.py

@@ -0,0 +1,26 @@
+#!/usr/bin/env python
+# Licensed to Cloudera, Inc. under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  Cloudera, Inc. licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import signal
+
+from desktop.lib.thread_util import dump_traceback
+
+def dump_threads_on_sigquit(signum, frame):
+  """Dump out the threads to stderr"""
+  dump_traceback()
+
+signal.signal(signal.SIGUSR1, dump_threads_on_sigquit)