[CalendarServer-changes] [13816] CalendarServer/trunk/calendarserver/tap/caldav.py

source_changes at macosforge.org source_changes at macosforge.org
Fri Aug 1 10:11:33 PDT 2014


Revision: 13816
          http://trac.calendarserver.org//changeset/13816
Author:   sagen at apple.com
Date:     2014-08-01 10:11:32 -0700 (Fri, 01 Aug 2014)
Log Message:
-----------
Spawn processes in the order they were added, and stop them in reverse order

Modified Paths:
--------------
    CalendarServer/trunk/calendarserver/tap/caldav.py

Modified: CalendarServer/trunk/calendarserver/tap/caldav.py
===================================================================
--- CalendarServer/trunk/calendarserver/tap/caldav.py	2014-08-01 04:41:47 UTC (rev 13815)
+++ CalendarServer/trunk/calendarserver/tap/caldav.py	2014-08-01 17:11:32 UTC (rev 13816)
@@ -23,7 +23,7 @@
 ]
 
 import sys
-# import os
+from collections import OrderedDict
 from os import getuid, getgid, umask, remove, environ, stat, chown
 from os.path import exists, basename, isfile
 import socket
@@ -523,22 +523,9 @@
 
 
     def startService(self):
-        for slaveNumber in xrange(0, config.MultiProcess.ProcessCount):
-            if config.UseMetaFD:
-                extraArgs = dict(
-                    metaSocket=self.dispatcher.addSocket(slaveNumber)
-                )
-            else:
-                extraArgs = dict(inheritFDs=self.inheritFDs,
-                                 inheritSSLFDs=self.inheritSSLFDs)
-            if self.dispenser is not None:
-                extraArgs.update(ampSQLDispenser=self.dispenser)
-            process = TwistdSlaveProcess(
-                sys.argv[0], self.maker.tapname, self.configPath, slaveNumber,
-                config.BindAddresses, **extraArgs
-            )
-            self.monitor.addProcessObject(process, PARENT_ENVIRONMENT)
 
+        # Add the directory proxy sidecar first so it at least get spawned
+        # prior to the caldavd worker processes:
         if config.DirectoryProxy.Enabled:
             log.info("Adding directory proxy service")
 
@@ -559,8 +546,25 @@
                 "directoryproxy", dpsArgv, env=PARENT_ENVIRONMENT
             )
 
+        for slaveNumber in xrange(0, config.MultiProcess.ProcessCount):
+            if config.UseMetaFD:
+                extraArgs = dict(
+                    metaSocket=self.dispatcher.addSocket(slaveNumber)
+                )
+            else:
+                extraArgs = dict(inheritFDs=self.inheritFDs,
+                                 inheritSSLFDs=self.inheritSSLFDs)
+            if self.dispenser is not None:
+                extraArgs.update(ampSQLDispenser=self.dispenser)
+            process = TwistdSlaveProcess(
+                sys.argv[0], self.maker.tapname, self.configPath, slaveNumber,
+                config.BindAddresses, **extraArgs
+            )
+            self.monitor.addProcessObject(process, PARENT_ENVIRONMENT)
 
 
+
+
 class WorkSchedulingService(Service):
     """
     A Service to kick off the initial scheduling of periodic work items.
@@ -2213,7 +2217,7 @@
         if reactor is None:
             from twisted.internet import reactor
         self._reactor = reactor
-        self.processes = {}
+        self.processes = OrderedDict()
         self.protocols = {}
         self.delay = {}
         self.timeStarted = {}
@@ -2291,6 +2295,8 @@
         # Now we're ready to build the command lines and actually add the
         # processes to procmon.
         super(DelayedStartupProcessMonitor, self).startService()
+        # This will be in the order added, since self.processes is an
+        # OrderedDict
         for name in self.processes:
             self.startProcess(name)
 
@@ -2310,7 +2316,9 @@
             if delayedCall.active():
                 delayedCall.cancel()
 
-        for name in self.processes:
+        # Stop processes in the reverse order from which they were added and
+        # started
+        for name in reversed(self.processes):
             self.stopProcess(name)
         return gatherResults(self.deferreds.values())
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140801/9fc1a360/attachment.html>


More information about the calendarserver-changes mailing list