Cannot add a device, got a "django.db.utils.IntegrityError: duplicate key value violates unique constraint "maasserver_interface_pkey" DETAIL: Key (id)=(2) already exists." message in the regiond log

Bug #1504173 reported by Ricardo Bánffy
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MAAS
Invalid
Low
Unassigned

Bug Description

While running MAAS from trunk (r 4363, "make run") I got a

2015-10-08 11:03:16 [-] Error on request (20) device.create: duplicate key value violates unique constraint "maasserver_interface_pkey"
 DETAIL: Key (id)=(2) already exists.

 Traceback (most recent call last):
   File "/usr/lib/python2.7/threading.py", line 783, in __bootstrap
     self.__bootstrap_inner()
   File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
     self.run()
   File "/usr/lib/python2.7/threading.py", line 763, in run
     self.__target(*self.__args, **self.__kwargs)
   File "/home/ricardo/canonical/maas/src/provisioningserver/utils/twisted.py", line 791, in _worker
     return super(ThreadPool, self)._worker()
 --- <exception caught here> ---
   File "/usr/lib/python2.7/dist-packages/twisted/python/threadpool.py", line 191, in _worker
     result = context.call(ctx, function, *args, **kwargs)
   File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 118, in callWithContext
     return self.currentContext().callWithContext(ctx, func, *args, **kw)
   File "/usr/lib/python2.7/dist-packages/twisted/python/context.py", line 81, in callWithContext
     return func(*args,**kw)
   File "/home/ricardo/canonical/maas/src/maasserver/utils/orm.py", line 480, in call_within_transaction
     return func_outside_txn(*args, **kwargs)
   File "/home/ricardo/canonical/maas/src/maasserver/utils/orm.py", line 307, in retrier
     return func(*args, **kwargs)
   File "/usr/lib/python2.7/dist-packages/django/db/transaction.py", line 339, in inner
     return func(*args, **kwargs)
   File "/home/ricardo/canonical/maas/src/maasserver/websockets/handlers/device.py", line 307, in create
     data = super(DeviceHandler, self).create(params)
   File "/home/ricardo/canonical/maas/src/maasserver/websockets/base.py", line 362, in create
     obj = form.save()
   File "/home/ricardo/canonical/maas/src/maasserver/forms.py", line 1108, in save
     node.add_physical_interface(mac)
   File "/home/ricardo/canonical/maas/src/maasserver/models/node.py", line 913, in add_physical_interface
     node=self, mac_address=mac, name=name)
   File "/usr/lib/python2.7/dist-packages/django/db/models/manager.py", line 157, in create
     return self.get_queryset().create(**kwargs)
   File "/usr/lib/python2.7/dist-packages/django/db/models/query.py", line 319, in create
     obj.save(force_insert=True, using=self.db)
   File "/home/ricardo/canonical/maas/src/maasserver/models/cleansave.py", line 38, in save
     return super(CleanSave, self).save(*args, **kwargs)
   File "/home/ricardo/canonical/maas/src/maasserver/models/timestampedmodel.py", line 70, in save
     return super(TimestampedModel, self).save(*args, **kwargs)
   File "/usr/lib/python2.7/dist-packages/django/db/models/base.py", line 545, in save
     force_update=force_update, update_fields=update_fields)
   File "/usr/lib/python2.7/dist-packages/django/db/models/base.py", line 573, in save_base
     updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
   File "/usr/lib/python2.7/dist-packages/django/db/models/base.py", line 654, in _save_table
     result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
   File "/usr/lib/python2.7/dist-packages/django/db/models/base.py", line 687, in _do_insert
     using=using, raw=raw)
   File "/usr/lib/python2.7/dist-packages/django/db/models/manager.py", line 232, in _insert
     return insert_query(self.model, objs, fields, **kwargs)
   File "/usr/lib/python2.7/dist-packages/django/db/models/query.py", line 1511, in insert_query
     return query.get_compiler(using=using).execute_sql(return_id)
   File "/usr/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 898, in execute_sql
     cursor.execute(sql, params)
   File "/usr/lib/python2.7/dist-packages/django/db/backends/util.py", line 69, in execute
     return super(CursorDebugWrapper, self).execute(sql, params)
   File "/usr/lib/python2.7/dist-packages/django/db/backends/util.py", line 53, in execute
     return self.cursor.execute(sql, params)
   File "/usr/lib/python2.7/dist-packages/django/db/utils.py", line 99, in __exit__
     six.reraise(dj_exc_type, dj_exc_value, traceback)
   File "/usr/lib/python2.7/dist-packages/django/db/backends/util.py", line 53, in execute
     return self.cursor.execute(sql, params)
 django.db.utils.IntegrityError: duplicate key value violates unique constraint "maasserver_interface_pkey"
 DETAIL: Key (id)=(2) already exists.

trace in the region log

Revision history for this message
Blake Rouse (blake-rouse) wrote :

This only happens with sampledata, its an issue on how django reset the id sequence after it runs the fixture.

Changed in maas:
status: New → Triaged
importance: Undecided → Low
tags: added: tech-dept
tags: added: dev-environment
Revision history for this message
Blake Rouse (blake-rouse) wrote :

Just keep performing the command in the dev environment and it will start working.

tags: added: tech-debt
removed: tech-dept
Changed in maas:
status: Triaged → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.