extras-buildsys/server BuildMaster.py, 1.35, 1.35.2.1 Builder.py, 1.20.2.3, 1.20.2.4 PackageJob.py, 1.31.2.6, 1.31.2.7 Repo.py, 1.16.2.2, 1.16.2.3 main.py, 1.14.2.1, 1.14.2.2

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


Author: dcbw

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

Modified Files:
      Tag: STABLE_0_4
	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.35
retrieving revision 1.35.2.1
diff -u -r1.35 -r1.35.2.1
--- BuildMaster.py	9 Sep 2005 15:10:17 -0000	1.35
+++ BuildMaster.py	29 Nov 2005 06:36:43 -0000	1.35.2.1
@@ -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.20.2.3
retrieving revision 1.20.2.4
diff -u -r1.20.2.3 -r1.20.2.4
--- Builder.py	24 Nov 2005 22:39:04 -0000	1.20.2.3
+++ Builder.py	29 Nov 2005 06:36:43 -0000	1.20.2.4
@@ -28,6 +28,7 @@
 import ArchJob
 import EmailUtils
 import Config
+from plague import DebugUtils
 
 SUSPEND_NONE = 'none'
 SUSPEND_TIMEOUT = 'timeout'
@@ -73,6 +74,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
@@ -283,6 +285,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.31.2.6
retrieving revision 1.31.2.7
diff -u -r1.31.2.6 -r1.31.2.7
--- PackageJob.py	21 Nov 2005 15:51:43 -0000	1.31.2.6
+++ PackageJob.py	29 Nov 2005 06:36:43 -0000	1.31.2.7
@@ -33,6 +33,7 @@
 import BuilderManager
 import ArchJob
 from plague import ArchUtils
+from plague import DebugUtils
 
 CVS_CMD = "/usr/bin/cvs"
 MAKE_CMD = "/usr/bin/make"
@@ -76,8 +77,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.get_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.16.2.2
retrieving revision 1.16.2.3
diff -u -r1.16.2.2 -r1.16.2.3
--- Repo.py	1 Nov 2005 14:47:37 -0000	1.16.2.2
+++ Repo.py	29 Nov 2005 06:36:44 -0000	1.16.2.3
@@ -23,6 +23,7 @@
 import fcntl
 import stat
 import EmailUtils
+from plague import DebugUtils
 
 
 class Repo(threading.Thread):
@@ -64,6 +65,7 @@
             self._repo_script = script
 
         threading.Thread.__init__(self)
+        self.setName("Repo: %s" % target_str)
 
     def target_cfg(self):
         return self._target_cfg
@@ -178,6 +180,7 @@
             self._pobj = None
 
     def run(self):
+        DebugUtils.registerThreadName(self)
         while self._stop == False:
             # We have 3 lock levels:
             #


Index: main.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/main.py,v
retrieving revision 1.14.2.1
retrieving revision 1.14.2.2
diff -u -r1.14.2.1 -r1.14.2.2
--- main.py	27 Oct 2005 14:35:02 -0000	1.14.2.1
+++ main.py	29 Nov 2005 06:36:44 -0000	1.14.2.2
@@ -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