Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unhandled IntegrityError at projects endpoint #928

Closed
ukanga opened this issue Feb 20, 2017 · 2 comments
Closed

Unhandled IntegrityError at projects endpoint #928

ukanga opened this issue Feb 20, 2017 · 2 comments

Comments

@ukanga
Copy link
Member

ukanga commented Feb 20, 2017

IntegrityError at /api/v1/projects
duplicate key value violates unique constraint "logger_project_name_74cebfdda007f55b_uniq"
DETAIL:  Key (name, organization_id)=(Monitoring Form, 675) already exists.


Request Method: POST
Request URL: https://api.ona.io/api/v1/projects
Django Version: 1.9.5
Python Executable: /..../.virtualenvs/onadata/bin/uwsgi
Python Version: 2.7.6
Python Path: ['/..../.virtualenvs/onadata/src/savreaderwriter/savReaderWriter', '/..../.virtualenvs/onadata/src/savreaderwriter/savReaderWriter/cWriterow', '.', '', '/..../.virtualenvs/onadata/src/django-nose', '/..../.virtualenvs/onadata/src/django-digest', '/..../.virtualenvs/onadata/src/j2xclient', '/..../.virtualenvs/onadata/src/cors-headers', '/..../.virtualenvs/onadata/src/pricing', '/..../.virtualenvs/onadata/src/savreaderwriter', '/..../.virtualenvs/onadata/src/google-export', '/..../.virtualenvs/onadata/lib/python2.7', '/..../.virtualenvs/onadata/lib/python2.7/plat-x86_64-linux-gnu', '/..../.virtualenvs/onadata/lib/python2.7/lib-tk', '/..../.virtualenvs/onadata/lib/python2.7/lib-old', '/..../.virtualenvs/onadata/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/..../.virtualenvs/onadata/local/lib/python2.7/site-packages']
Server time: Mon, 20 Feb 2017 06:35:00 -0500
Installed Applications:
('google_export',
 'pricing',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'django.contrib.admin',
 'django.contrib.admindocs',
 'django.contrib.gis',
 'registration',
 'django_nose',
 'django_digest',
 'corsheaders',
 'oauth2_provider',
 'rest_framework',
 'rest_framework.authtoken',
 'taggit',
 'readonly',
 'onadata.apps.logger',
 'onadata.apps.viewer',
 'onadata.apps.main',
 'onadata.apps.restservice',
 'onadata.apps.api',
 'guardian',
 'djcelery',
 'onadata.apps.sms_support',
 'onadata.libs',
 'reversion')
Installed Middleware:
('multidb.middleware.PinningRouterMiddleware',
 'onadata.libs.profiling.sql.SqlTimingMiddleware',
 'django.middleware.http.ConditionalGetMiddleware',
 'django.middleware.cache.UpdateCacheMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.cache.FetchFromCacheMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'onadata.libs.utils.middleware.LocaleMiddlewareWithTweaks',
 'django.middleware.csrf.CsrfViewMiddleware',
 'corsheaders.middleware.CorsMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'onadata.libs.utils.middleware.HTTPResponseNotAllowedMiddleware',
 'readonly.middleware.DatabaseReadOnlyMiddleware')


Traceback:

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/views/decorators/csrf.py" in wrapped_view
  58.         return view_func(*args, **kwargs)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/rest_framework/viewsets.py" in view
  87.             return self.dispatch(request, *args, **kwargs)

File "./onadata/libs/mixins/profiler_mixin.py" in dispatch
  34.         ret = super(ProfilerMixin, self).dispatch(request, *args, **kwargs)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch
  466.             response = self.handle_exception(exc)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/rest_framework/views.py" in dispatch
  463.             response = handler(request, *args, **kwargs)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/rest_framework/mixins.py" in create
  21.         self.perform_create(serializer)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/rest_framework/mixins.py" in perform_create
  26.         serializer.save()

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/rest_framework/serializers.py" in save
  191.             self.instance = self.create(validated_data)

File "./onadata/libs/serializers/project_serializer.py" in create
  331.             metadata=validated_data.get('metadata', dict())

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method
  122.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/query.py" in create
  401.         obj.save(force_insert=True, using=self.db)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/base.py" in save
  708.                        force_update=force_update, update_fields=update_fields)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/base.py" in save_base
  736.             updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/base.py" in _save_table
  820.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/base.py" in _do_insert
  859.                                using=using, raw=raw)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method
  122.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/query.py" in _insert
  1039.         return query.get_compiler(using=using).execute_sql(return_id)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1060.                 cursor.execute(sql, params)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/backends/utils.py" in execute
  64.                 return self.cursor.execute(sql, params)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/utils.py" in __exit__
  95.                 six.reraise(dj_exc_type, dj_exc_value, traceback)

File "/..../.virtualenvs/onadata/local/lib/python2.7/site-packages/django/db/backends/utils.py" in execute
  64.                 return self.cursor.execute(sql, params)

Exception Type: IntegrityError at /api/v1/projects
Exception Value: duplicate key value violates unique constraint "logger_project_name_74cebfdda007f55b_uniq"
DETAIL:  Key (name, organization_id)=(Monitoring Form, 675) already exists.

Aha! Link: https://ona.aha.io/features/PROD-612

@Wambere
Copy link
Contributor

Wambere commented Mar 26, 2018

Raises ValidationError not IntegrityError

@Wambere Wambere self-assigned this Mar 26, 2018
@ukanga
Copy link
Member Author

ukanga commented Mar 27, 2018

The exception captured on sentry is an integrity error. I think zebra may be allowing someone to submit twice while another request is in flight already but not yet committed. We probably should create an issue for this.
If a ValidationError had been sent I would not expect the above exception.

@ukanga ukanga modified the milestones: Week 11 - 12, 13-14 Apr 3, 2018
@ukanga ukanga closed this as completed in 9e79ea9 Apr 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants