extras-buildsys/server BuildMaster.py, 1.36, 1.37 Builder.py, 1.24, 1.25 PackageJob.py, 1.38, 1.39 Repo.py, 1.19, 1.20 main.py, 1.16, 1.17

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Tue Nov 29 06:41:53 UTC 2005


Author: dcbw

Update of /cvs/fedora/extras-buildsys/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv28008/server

Modified Files:
	BuildMaster.py Builder.py PackageJob.py Repo.py main.py 
Log Message:
2005-11-29  Dan Williams  <dcbw at redhat.com>

    * Add a traceback server that listens on a Unix socket
        and writes backtraces for all threads to it.  Disabled
        by default.




Index: BuildMaster.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/BuildMaster.py,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- BuildMaster.py	26 Nov 2005 06:10:22 -0000	1.36
+++ BuildMaster.py	29 Nov 2005 06:41:51 -0000	1.37
@@ -24,6 +24,7 @@
 import Repo
 import copy
 import Config
+from plague import DebugUtils
 
 
 class BuildMaster(threading.Thread):
@@ -69,6 +70,7 @@
 
         self._requeue_interrupted_jobs()
         threading.Thread.__init__(self)
+        self.setName("BuildMaster")
 
     def _requeue_interrupted_jobs(self):
         """ Restart interrupted jobs from our db. """
@@ -391,6 +393,7 @@
         return self._paused
 
     def run(self):
+        DebugUtils.registerThreadName(self)
         while self.should_stop == False:
             # Write update status for jobs to the database
             self._save_job_status()


Index: Builder.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/Builder.py,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- Builder.py	26 Nov 2005 06:10:22 -0000	1.24
+++ Builder.py	29 Nov 2005 06:41:51 -0000	1.25
@@ -28,6 +28,7 @@
 import ArchJob
 import EmailUtils
 import Config
+from plague import DebugUtils
 
 SUSPEND_NONE = 'none'
 SUSPEND_TIMEOUT = 'timeout'
@@ -72,6 +73,7 @@
             self._init_builder(target_list)
 
         threading.Thread.__init__(self)
+        self.setName("Builder: %s" % address)
 
     def _init_builder(self, target_list):
         self._target_list = target_list
@@ -284,6 +286,7 @@
         self._when_died = 0
 
     def run(self):
+        DebugUtils.registerThreadName(self)
         while not self._stop:
             self._server_lock.acquire()
 


Index: PackageJob.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/PackageJob.py,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -r1.38 -r1.39
--- PackageJob.py	26 Nov 2005 06:34:50 -0000	1.38
+++ PackageJob.py	29 Nov 2005 06:41:51 -0000	1.39
@@ -32,6 +32,7 @@
 import BuilderManager
 import ArchJob
 from plague import ArchUtils
+from plague import DebugUtils
 
 import yum
 import repomd.mdErrors
@@ -77,8 +78,10 @@
         self._end_stage = end_stage
         self._pkg_job._set_cur_stage(start_stage)
         threading.Thread.__init__(self)
+        self.setName("PackageJob: %s/%s" % (pkg_job.uid, pkg_job.package))
         
     def run(self):
+        DebugUtils.registerThreadName(self)
         while not self._pkg_job.is_done() and not self._pkg_job.cur_stage() == self._end_stage:
             self._pkg_job.process()
 


Index: Repo.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/Repo.py,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- Repo.py	26 Nov 2005 06:10:22 -0000	1.19
+++ Repo.py	29 Nov 2005 06:41:51 -0000	1.20
@@ -23,6 +23,7 @@
 import fcntl
 import stat
 import EmailUtils
+from plague import DebugUtils
 
 
 class Repo(threading.Thread):
@@ -88,6 +89,7 @@
             self._repo_script = script
 
         threading.Thread.__init__(self)
+        self.setName("Repo: %s" % target_str)
 
     def target_cfg(self):
         return self._target_cfg
@@ -292,6 +294,7 @@
             self._pobj = None
 
     def run(self):
+        DebugUtils.registerThreadName(self)
         repo_changed = False
         while self._stop == False:
             # We have 3 locked operations, signified by self._lock_count:


Index: main.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/main.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- main.py	20 Nov 2005 18:42:46 -0000	1.16
+++ main.py	29 Nov 2005 06:41:51 -0000	1.17
@@ -22,8 +22,10 @@
 from plague import AuthedXMLRPCServer
 from plague import HTTPServer
 from plague import daemonize
+from plague import DebugUtils
 import SimpleXMLRPCServer
 from optparse import OptionParser
+import threading
 
 sys.path.append('/usr/share/plague/server')
 
@@ -96,12 +98,24 @@
         print "You need at least one target to do anything useful."
         sys.exit(3)
 
+    hostname = cfg.get_str("General", "hostname")
+
+    # Start the debugging server
+    use_tbs = False
+    try:
+        use_tbs = cfg.get_bool("General", "traceback_server")
+        if use_tbs:
+            tbs_address = "/tmp/plague-server-debug-%s" % hostname
+            tbs = DebugUtils.ThreadTracebackServer(tbs_address)
+            tbs.start()
+    except Config.BaseConfig.ConfigError:
+        pass
+
     dbm = DBManager.DBManager(cfg)
 
     builder_manager = BuilderManager.BuilderManager(cfg)
 
     # Create the BuildMaster thread
-    hostname = cfg.get_str("General", "hostname")
     bm = BuildMaster.BuildMaster(builder_manager, dbm, cfg)
     bm.start()
 
@@ -137,6 +151,12 @@
     srpm_server = HTTPServer.PlgHTTPServerManager((hostname, SRPM_SERVER_PORT), http_dir, srpm_server_certs)
     srpm_server.start()
 
+    # Create dummy thread just to register main thread's name
+    dummy = threading.Thread()
+    dummy.setName("MainThread")
+    DebugUtils.registerThreadName(dummy)
+    del dummy
+
     print "Build Server accepting requests on %s:%d.\n" % (hostname, port)
     try:
         bm_server.serve_forever()
@@ -145,6 +165,7 @@
         print "Shutting down..."
         bm.stop()
         srpm_server.stop()
+        tbs.stop()
 
     print "Done."
     os._exit(0)




More information about the fedora-extras-commits mailing list