[CalendarServer-changes] [12326] CalendarServer/branches/users/gaya/cleanrevisions
source_changes at macosforge.org
source_changes at macosforge.org
Wed Mar 12 11:24:01 PDT 2014
Revision: 12326
http://trac.calendarserver.org//changeset/12326
Author: gaya at apple.com
Date: 2014-01-13 12:58:02 -0800 (Mon, 13 Jan 2014)
Log Message:
-----------
patch instead of using config.RescheduleRevisionWork to stop rescheduling in test cases
Modified Paths:
--------------
CalendarServer/branches/users/gaya/cleanrevisions/twistedcaldav/stdconfig.py
CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/revision_cleanup.py
CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py
Modified: CalendarServer/branches/users/gaya/cleanrevisions/twistedcaldav/stdconfig.py
===================================================================
--- CalendarServer/branches/users/gaya/cleanrevisions/twistedcaldav/stdconfig.py 2014-01-13 19:02:16 UTC (rev 12325)
+++ CalendarServer/branches/users/gaya/cleanrevisions/twistedcaldav/stdconfig.py 2014-01-13 20:58:02 UTC (rev 12326)
@@ -634,7 +634,6 @@
"SyncTokenLifetimeDays" : 14, # Number of days that a client sync report token is valid
"RevisionCleanupPeriodDays" : 2, # Number of days between revision cleanups
- "RescheduleRevisionWork" : True, # automatically reschedule revision work
# CardDAV Features
"DirectoryAddressBook": {
Modified: CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/revision_cleanup.py
===================================================================
--- CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/revision_cleanup.py 2014-01-13 19:02:16 UTC (rev 12325)
+++ CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/revision_cleanup.py 2014-01-13 20:58:02 UTC (rev 12326)
@@ -37,7 +37,16 @@
group = "find_min_revision"
+ @classmethod
@inlineCallbacks
+ def _schedule(cls, txn, seconds):
+ notBefore = datetime.datetime.utcnow() + datetime.timedelta(seconds=seconds)
+ log.debug("Scheduling find minimum valid revision work: %s" % (notBefore,))
+ wp = yield txn.enqueue(cls, notBefore=notBefore)
+ returnValue(wp)
+
+
+ @inlineCallbacks
def doWork(self):
# Delete all other work items
@@ -82,18 +91,15 @@
Where=cs.NAME == "MIN-VALID-REVISION",
).on(self.transaction)
- if config.RescheduleRevisionWork:
- # Schedule revision cleanup
- log.debug("Scheduling revision cleanup now")
- yield self.transaction.enqueue(RevisionCleanupWork, notBefore=datetime.datetime.utcnow())
+ # Schedule revision cleanup
+ yield RevisionCleanupWork._schedule(self.transaction, seconds=0)
- elif config.RescheduleRevisionWork:
- # Schedule next update
- notBefore = (datetime.datetime.utcnow() +
- datetime.timedelta(days=float(config.RevisionCleanupPeriodDays)))
- log.debug("Rescheduling find minimum valid revision work: %s" % (notBefore,))
- yield self.transaction.enqueue(FindMinValidRevisionWork,
- notBefore=notBefore)
+ else:
+ # Schedule next check
+ yield FindMinValidRevisionWork._schedule(
+ self.transaction,
+ float(config.RevisionCleanupPeriodDays) * 24 * 60 * 60
+ )
@@ -102,7 +108,16 @@
group = "group_revsion_cleanup"
+ @classmethod
@inlineCallbacks
+ def _schedule(cls, txn, seconds):
+ notBefore = datetime.datetime.utcnow() + datetime.timedelta(seconds=seconds)
+ log.debug("Scheduling revision cleanup work: %s" % (notBefore,))
+ wp = yield txn.enqueue(cls, notBefore=notBefore)
+ returnValue(wp)
+
+
+ @inlineCallbacks
def doWork(self):
# Delete all other work items
@@ -120,19 +135,16 @@
yield deleteRevisionsBefore(self.transaction, minValidRevision)
# Schedule next update
- if config.RescheduleRevisionWork:
- notBefore = (datetime.datetime.utcnow() +
- datetime.timedelta(days=float(config.RevisionCleanupPeriodDays)))
- log.debug("Rescheduling find minimum valid revision work: %s" % (notBefore,))
- yield self.transaction.enqueue(FindMinValidRevisionWork, notBefore=notBefore)
+ yield FindMinValidRevisionWork._schedule(
+ self.transaction,
+ float(config.RevisionCleanupPeriodDays) * 24 * 60 * 60
+ )
@inlineCallbacks
def scheduleFirstFindMinRevision(store, seconds):
txn = store.newTransaction()
- notBefore = datetime.datetime.utcnow() + datetime.timedelta(seconds=seconds)
- log.debug("Scheduling first find minimum valid revision work: %s" % (notBefore,))
- wp = (yield txn.enqueue(FindMinValidRevisionWork, notBefore=notBefore))
+ wp = yield FindMinValidRevisionWork._schedule(txn, seconds)
yield txn.commit()
returnValue(wp)
Modified: CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py
===================================================================
--- CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py 2014-01-13 19:02:16 UTC (rev 12325)
+++ CalendarServer/branches/users/gaya/cleanrevisions/txdav/common/datastore/work/test/test_revision_cleanup.py 2014-01-13 20:58:02 UTC (rev 12326)
@@ -17,6 +17,7 @@
from twext.enterprise.dal.syntax import Select
+from twext.enterprise.queue import WorkItem
from twext.python.clsprop import classproperty
from twisted.internet.defer import inlineCallbacks
from twisted.trial.unittest import TestCase
@@ -28,7 +29,14 @@
from txdav.common.icommondatastore import SyncTokenValidException
import datetime
+class FakeWork(WorkItem):
+ @classmethod
+ def _schedule(cls, txn, seconds):
+ pass
+
+
+
class RevisionCleanupTests(CommonCommonTests, TestCase):
"""
Test store-based address book sharing.
@@ -40,7 +48,8 @@
self._sqlStore = yield buildStore(self, self.notifierFactory)
yield self.populate()
self.patch(config, "SyncTokenLifetimeDays", 0)
- self.patch(config, "RescheduleRevisionWork", False)
+ self.patch(FindMinValidRevisionWork, "_schedule", FakeWork._schedule)
+ self.patch(RevisionCleanupWork, "_schedule", FakeWork._schedule)
@inlineCallbacks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140312/8a18b630/attachment.html>
More information about the calendarserver-changes
mailing list