Ticket #471 (new Defect)
Migration creates not null constraint violation
| Reported by: | mail@… | Owned by: | wsanchez@… |
|---|---|---|---|
| Priority: | 5: Not set | Milestone: | |
| Component: | Calendar Server | Severity: | Other |
| Keywords: | Cc: | kurt.leubner@… | |
| Port: |
Description
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?
Change History
Note: See
TracTickets for help on using
tickets.


Cc Me!