#471: Migration creates not null constraint violation ----------------------------------+----------------------------------------- Reporter: mail@… | Owner: wsanchez@… Type: Defect | Status: new Priority: 5: Not set | Milestone: Component: Calendar Server | Severity: Other Keywords: | Radar: ----------------------------------+----------------------------------------- I updated my calendar server today to current trunk and got the following: {{{ root@vserver:~ # calendarserver_dbinspect Unhandled error in Deferred: Unhandled Error Traceback (most recent call last): File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 388, in errback self._startRunCallbacks(fail) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 455, in _startRunCallbacks self._runCallbacks() File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 542, in _runCallbacks current.result = callback(current.result, *args, **kw) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1076, in gotResult _inlineCallbacks(r, g, deferred) --- <exception caught here> --- File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site- packages/txdav/common/datastore/upgrade/sql/upgrade.py", line 117, in databaseUpgrade yield self.upgradeVersion(actual_version, required_version, dialect) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site- packages/txdav/common/datastore/upgrade/sql/upgrade.py", line 180, in upgradeVersion yield self.applyUpgrade(fp) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site- packages/txdav/common/datastore/upgrade/sql/upgrade.py", line 345, in applyUpgrade yield doUpgrade(self.sqlStore) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site- packages/txdav/common/datastore/upgrade/sql/upgrades/upgrade_from_1_to_2.py", line 38, in doUpgrade yield splitCalendars(sqlStore) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site- packages/txdav/common/datastore/upgrade/sql/upgrades/upgrade_from_1_to_2.py", line 85, in splitCalendars yield doToEachCalendarHomeNotAtVersion(sqlStore, UPGRADE_TO_VERSION, doIt) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site- packages/txdav/common/datastore/upgrade/sql/upgrades/util.py", line 90, in doToEachCalendarHomeNotAtVersion yield doIt(home) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site- packages/txdav/common/datastore/upgrade/sql/upgrades/upgrade_from_1_to_2.py", line 82, in doIt yield home.splitCalendars() File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/txdav/caldav/datastore/sql.py", line 250, in splitCalendars split_count = yield calendar.splitCollectionByComponentTypes() File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/txdav/caldav/datastore/sql.py", line 458, in splitCollectionByComponentTypes yield self._splitComponentType(component) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/txdav/caldav/datastore/sql.py", line 497, in _splitComponentType newcalendar = yield self._home.createCalendarWithName("%s-%s" % (self._name, component.lower(),)) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/txdav/common/datastore/sql.py", line 973, in createChildWithName yield self._childClass.create(self, name) File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/txdav/common/datastore/sql.py", line 1951, in create yield child._initSyncToken() File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/txdav/common/datastore/sql.py", line 1404, in _initSyncToken collectionName=self._name)))[0][0] File "/usr/lib64/python2.7/site-packages/twisted/internet/defer.py", line 1018, in _inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "/usr/lib64/python2.7/site-packages/twisted/python/failure.py", line 350, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "/usr/lib64/python2.7/site-packages/txdav/common/datastore/sql.py", line 524, in execSQL results = (yield self._sqlTxn.execSQL(*a, **kw)) File "/usr/lib64/python2.7/site-packages/twext/internet/threadutils.py", line 64, in _oneWorkUnit result = instruction() File "/usr/lib64/python2.7/site-packages/twext/enterprise/adbapi2.py", line 293, in <lambda> lambda : self._reallyExecSQL(*args, **kw) File "/usr/lib64/python2.7/site-packages/twext/enterprise/adbapi2.py", line 230, in _reallyExecSQL self._cursor.execute(sql, args) File "/usr/lib64/python2.7/site- packages/txdav/base/datastore/dbapiclient.py", line 76, in execute self.realCursor.execute(sql, args) File "/usr/lib64/python2.7/site-packages/pgdb.py", line 259, in execute self.executemany(operation, (params,)) File "/usr/lib64/python2.7/site-packages/pgdb.py", line 289, in executemany raise DatabaseError("error '%s' in '%s'" % (msg, sql)) pg.DatabaseError: error 'FEHLER: NULL-Wert in Spalte »revision« verletzt Not-Null-Constraint ' in 'insert into CALENDAR_OBJECT_REVISIONS (CALENDAR_HOME_RESOURCE_ID, CALENDAR_NAME, CALENDAR_RESOURCE_ID, DELETED, RESOURCE_NAME) values (1, 'calendar-vtodo', 2872, False, NULL) returning REVISION' }}}
This happened on start of either the calendarserver or calendarserver_shell or the calendarserver_dbinspect. The only way arround it seemed to drop the not null constraint in the db. {{{ caldav=> ALTER TABLE calendar_object_revisions alter revision DROP NOT NULL; }}} I have the following in my db: {{{ +--------------------------------------+------------+--------------------------------------------+-----------+ | Owner UID | Short Name | Calendar | Resources | |--------------------------------------+------------+--------------------------------------------+-----------| | 272c501f-366c-517d-8af3-44c37777ef83 | felix | 029D1394-0FBB- 4CA4-9BE4-9477E0A27D4B | 81 | | 272c501f-366c-517d-8af3-44c37777ef83 | felix | 029D1394-0FBB- 4CA4-9BE4-9477E0A27D4B-vtodo | 1 | | 272c501f-366c-517d-8af3-44c37777ef83 | felix | 99F86220-B8F3-4639-9A05-F87B4B007C1E | 40 | | 272c501f-366c-517d-8af3-44c37777ef83 | felix | calendar | 394 | | 272c501f-366c-517d-8af3-44c37777ef83 | felix | calendar-vtodo | 2 | | 272c501f-366c-517d-8af3-44c37777ef83 | felix | inbox | 12 | | 83dbe083-6779-5acc-b21c-9627b581b4fb | mac | D335E491-8502-42AD- 9E26-6848D2255FD8 | 3 | | 83dbe083-6779-5acc-b21c-9627b581b4fb | mac | calendar | 5 | | 83dbe083-6779-5acc-b21c-9627b581b4fb | mac | calendar-vtodo | 1 | | 83dbe083-6779-5acc-b21c-9627b581b4fb | mac | inbox | 1 | +--------------------------------------+------------+--------------------------------------------+-----------+ }}} How should the revisions be set? -- Ticket URL: <http://trac.calendarserver.org/ticket/471> Calendar and Contacts Server </> HTTP/WebDAV/CalDAV Server _______________________________________________ calendarserver-dev mailing list calendarserver-dev@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/calendarserver-dev