[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