Projects
Wiki     Timeline     Roadmap     Browse Source     View Tickets     New Ticket     Search

Ticket #471 (new Defect)

Opened 17 months ago

Last modified 5 months ago

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

comment:1 Changed 5 months ago by kurt.leubner@…

  • Cc kurt.leubner@… added

Cc Me!

comment:2 Changed 5 months ago by kurt.leubner@…

  • Cc kurt.leubner@… removed

Cc Me!

comment:3 Changed 5 months ago by kurt.leubner@…

  • Cc kurt.leubner@… added

Cc Me!

Note: See TracTickets for help on using tickets.