[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