Skip to content
This repository has been archived by the owner on Mar 28, 2019. It is now read-only.

quick POST + DELETE breaks #518

Closed
tarekziade opened this issue Oct 28, 2015 · 3 comments
Closed

quick POST + DELETE breaks #518

tarekziade opened this issue Oct 28, 2015 · 3 comments
Assignees
Labels

Comments

@tarekziade
Copy link
Contributor

Looks like we have several issues here. Not sure why we'd ever get a 503 in that case, but maybe that's a side effect

{u'errno': 201, u'message': u'Service unavailable due to high load, please retry later.', u'code': 503, u'error':  u'Service Unavailable'}

cc @stuartphilp

    Oct 28 18:11:17 ip-172-31-5-133 uwsgi: {"Pid":11790,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446055877868000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 398, in patch\n    changes = self.request.json.get('data', {})  # May patch only perms.\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/webob\/request.py\", line 725, in _json_body__get\n    return json.loads(self.body.decode(self.charset))\nValueError: Expected object or value","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests\/2.8.1","method":"PATCH","collection_id":"bucket","path":"\/v1\/buckets\/test_bucket","au
    Oct 28 18:11:49 ip-172-31-5-133 uwsgi: {"Pid":11790,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446055909971000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 398, in patch\n    changes = self.request.json.get('data', {})  # May patch only perms.\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/webob\/request.py\", line 725, in _json_body__get\n    return json.loads(self.body.decode(self.charset))\nValueError: Expected object or value","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests\/2.8.1","method":"PATCH","collection_id":"bucket","path":"\/v1\/buckets\/test_bucket","au
    Oct 28 18:47:12 ip-172-31-5-133 uwsgi: {"Pid":11790,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446058032574000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 398, in patch\n    changes = self.request.json.get('data', {})  # May patch only perms.\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/webob\/request.py\", line 725, in _json_body__get\n    return json.loads(self.body.decode(self.charset))\nValueError: Expected object or value","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"curl\/7.43.0","method":"PATCH","collection_id":"bucket","path":"\/v1\/buckets\/test_bucket","authn_type":
    Oct 28 19:54:54 ip-172-31-5-133 uwsgi: {"Pid":11794,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446062094291000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 398, in patch\n    changes = self.request.json.get('data', {})  # May patch only perms.\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/webob\/request.py\", line 725, in _json_body__get\n    return json.loads(self.body.decode(self.charset))\nValueError: Expected object or value","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests\/2.8.1","method":"PATCH","collection_id":"collection","path":"\/v1\/buckets\/test_bucket\
    Oct 28 20:06:41 ip-172-31-5-133 uwsgi: {"Pid":11790,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446062801946000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \".\/kinto\/views\/collections.py\", line 54, in delete\n    result = super(Collection, self).delete()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 461, in delete\n    deleted = self.collection.delete_record(record)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 322, in delete_record\n    record_id, parent_id)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 235, in delete_record\n    auth=self.auth)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/clique
    Oct 28 20:06:41 ip-172-31-5-133 uwsgi: t\/storage\/postgresql\/__init__.py\", line 407, in delete\n    inserted = cursor.fetchone()\n  File \"\/usr\/lib64\/python2.7\/contextlib.py\", line 35, in __exit__\n    self.gen.throw(type, value, traceback)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/storage\/postgresql\/__init__.py\", line 84, in connect\n    raise exceptions.BackendError(original=e)\nBackendError: IntegrityError: duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_collection, \/buckets\/test_bucket, collection) already exists.\n","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests\/2.8.1","method":"DELETE","collection_id":"collection","path":"\/v1\/buckets\/test_bucket\/collections\/delete_collection","authn_type":"BasicAuth","collection_timestamp":1446062801739},"Logger":"kinto","Type":{"args":["duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_collection, \/buckets\/test_bucket, collection) already exists.\n"],"cursor":{"arraysize":1,"binary_types":null,"closed":true,"connection":{"async":0,"autocommit":false,"binary_types":{},"closed":0,"cursor_factory":null,"dsn":"dbname=kinto user=kinto password=xxxxxxxxxxxxxxx host=kinto-rds-stage.cwvruave0bky.us-east-1.rds.amazonaws.com port=5432","encoding":"UTF8","isolation_level":1,"notices":[],"notifies":[],"protocol_version":3,"server_version":90404,"status":1,"string_types":{}},"description":null,"index":{},"itersize":2000,"lastrowid":0,"name":null,"query":"\n            WITH deleted_record AS (\n                DELETE\n                FROM records\n                WHERE id = 'delete_collection'\n                  AND parent_id = '\/buckets\/test_bucket'\n                  AND collection_id = 'collection'\n                RETURNING id\n            )\n            INSERT INTO deleted (id, parent_id, collection_id)\n            SELECT id, '\/buckets\/test_bucket', 'collec
    Oct 28 20:13:14 ip-172-31-5-133 uwsgi: {"Pid":11793,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446063194276000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \".\/kinto\/views\/buckets.py\", line 33, in delete\n    result = super(Bucket, self).delete()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 461, in delete\n    deleted = self.collection.delete_record(record)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 322, in delete_record\n    record_id, parent_id)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 235, in delete_record\n    auth=self.auth)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/stora
    Oct 28 20:13:14 ip-172-31-5-133 uwsgi: ge\/postgresql\/__init__.py\", line 407, in delete\n    inserted = cursor.fetchone()\n  File \"\/usr\/lib64\/python2.7\/contextlib.py\", line 35, in __exit__\n    self.gen.throw(type, value, traceback)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/storage\/postgresql\/__init__.py\", line 84, in connect\n    raise exceptions.BackendError(original=e)\nBackendError: IntegrityError: duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_bucket, , bucket) already exists.\n","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests\/2.8.1","method":"DELETE","collection_id":"bucket","path":"\/v1\/buckets\/delete_bucket","authn_type":"BasicAuth","collection_timestamp":1446062801295},"Logger":"kinto","Type":{"args":["duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_bucket, , bucket) already exists.\n"],"cursor":{"arraysize":1,"binary_types":null,"closed":true,"connection":{"async":0,"autocommit":false,"binary_types":{},"closed":0,"cursor_factory":null,"dsn":"dbname=kinto user=kinto password=xxxxxxxxxxxxxxx host=kinto-rds-stage.cwvruave0bky.us-east-1.rds.amazonaws.com port=5432","encoding":"UTF8","isolation_level":1,"notices":[],"notifies":[],"protocol_version":3,"server_version":90404,"status":1,"string_types":{}},"description":null,"index":{},"itersize":2000,"lastrowid":0,"name":null,"query":"\n            WITH deleted_record AS (\n                DELETE\n                FROM records\n                WHERE id = 'delete_bucket'\n                  AND parent_id = ''\n                  AND collection_id = 'bucket'\n                RETURNING id\n            )\n            INSERT INTO deleted (id, parent_id, collection_id)\n            SELECT id, '', 'bucket'\n              FROM deleted_record\n            RETURNING as_epoch(last_modified) AS last_modified;\n            ","rowcount":-1,"rownumber":0,"scrollab
    Oct 28 20:14:45 ip-172-31-5-133 uwsgi: {"Pid":11790,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446063285231000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \".\/kinto\/views\/buckets.py\", line 33, in delete\n    result = super(Bucket, self).delete()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 461, in delete\n    deleted = self.collection.delete_record(record)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 322, in delete_record\n    record_id, parent_id)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 235, in delete_record\n    auth=self.auth)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/stora
    Oct 28 20:14:45 ip-172-31-5-133 uwsgi: ge\/postgresql\/__init__.py\", line 407, in delete\n    inserted = cursor.fetchone()\n  File \"\/usr\/lib64\/python2.7\/contextlib.py\", line 35, in __exit__\n    self.gen.throw(type, value, traceback)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/storage\/postgresql\/__init__.py\", line 84, in connect\n    raise exceptions.BackendError(original=e)\nBackendError: IntegrityError: duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_bucket, , bucket) already exists.\n","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests\/2.8.1","method":"DELETE","collection_id":"bucket","path":"\/v1\/buckets\/delete_bucket","authn_type":"BasicAuth","collection_timestamp":1446063221398},"Logger":"kinto","Type":{"args":["duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_bucket, , bucket) already exists.\n"],"cursor":{"arraysize":1,"binary_types":null,"closed":true,"connection":{"async":0,"autocommit":false,"binary_types":{},"closed":0,"cursor_factory":null,"dsn":"dbname=kinto user=kinto password=xxxxxxxxxxxxxxx host=kinto-rds-stage.cwvruave0bky.us-east-1.rds.amazonaws.com port=5432","encoding":"UTF8","isolation_level":1,"notices":[],"notifies":[],"protocol_version":3,"server_version":90404,"status":1,"string_types":{}},"description":null,"index":{},"itersize":2000,"lastrowid":0,"name":null,"query":"\n            WITH deleted_record AS (\n                DELETE\n                FROM records\n                WHERE id = 'delete_bucket'\n                  AND parent_id = ''\n                  AND collection_id = 'bucket'\n                RETURNING id\n            )\n            INSERT INTO deleted (id, parent_id, collection_id)\n            SELECT id, '', 'bucket'\n              FROM deleted_record\n            RETURNING as_epoch(last_modified) AS last_modified;\n            ","rowcount":-1,"rownumber":0,"scrollab
    Oct 28 20:16:24 ip-172-31-5-133 uwsgi: {"Pid":11791,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446063384512000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \".\/kinto\/views\/buckets.py\", line 33, in delete\n    result = super(Bucket, self).delete()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 461, in delete\n    deleted = self.collection.delete_record(record)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 322, in delete_record\n    record_id, parent_id)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 235, in delete_record\n    auth=self.auth)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/stora
    Oct 28 20:16:24 ip-172-31-5-133 uwsgi: ge\/postgresql\/__init__.py\", line 407, in delete\n    inserted = cursor.fetchone()\n  File \"\/usr\/lib64\/python2.7\/contextlib.py\", line 35, in __exit__\n    self.gen.throw(type, value, traceback)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/storage\/postgresql\/__init__.py\", line 84, in connect\n    raise exceptions.BackendError(original=e)\nBackendError: IntegrityError: duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_bucket, , bucket) already exists.\n","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests\/2.8.1","method":"DELETE","collection_id":"bucket","path":"\/v1\/buckets\/delete_bucket","authn_type":"BasicAuth","collection_timestamp":1446063325461},"Logger":"kinto","Type":{"args":["duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_bucket, , bucket) already exists.\n"],"cursor":{"arraysize":1,"binary_types":null,"closed":true,"connection":{"async":0,"autocommit":false,"binary_types":{},"closed":0,"cursor_factory":null,"dsn":"dbname=kinto user=kinto password=xxxxxxxxxxxxxxx host=kinto-rds-stage.cwvruave0bky.us-east-1.rds.amazonaws.com port=5432","encoding":"UTF8","isolation_level":1,"notices":[],"notifies":[],"protocol_version":3,"server_version":90404,"status":1,"string_types":{}},"description":null,"index":{},"itersize":2000,"lastrowid":0,"name":null,"query":"\n            WITH deleted_record AS (\n                DELETE\n                FROM records\n                WHERE id = 'delete_bucket'\n                  AND parent_id = ''\n                  AND collection_id = 'bucket'\n                RETURNING id\n            )\n            INSERT INTO deleted (id, parent_id, collection_id)\n            SELECT id, '', 'bucket'\n              FROM deleted_record\n            RETURNING as_epoch(last_modified) AS last_modified;\n            ","rowcount":-1,"rownumber":0,"scrollab
    Oct 28 20:18:39 ip-172-31-5-133 uwsgi: {"Pid":11790,"EnvVersion":"2.0","Hostname":"ip-172-31-5-133","Timestamp":1446063519556000000,"Fields":{"lang":null,"exception":"Traceback (most recent call last):\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/tweens.py\", line 21, in excview_tween\n    response = handler(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/router.py\", line 163, in handle_request\n    response = view_callable(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 596, in __call__\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 329, in attr_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 305, in predicate_wrapper\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 245, in _secured_view\n    return view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 355, in rendered_view\n    result = view(context, request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/pyramid\/config\/views.py\", line 501, in _requestonly_view\n    response = view(request)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cornice\/service.py\", line 571, in wrapper\n    response = view_()\n  File \".\/kinto\/views\/buckets.py\", line 33, in delete\n    result = super(Bucket, self).delete()\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/resource.py\", line 461, in delete\n    deleted = self.collection.delete_record(record)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 322, in delete_record\n    record_id, parent_id)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/collection.py\", line 235, in delete_record\n    auth=self.auth)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/stora
    Oct 28 20:18:39 ip-172-31-5-133 uwsgi: ge\/postgresql\/__init__.py\", line 407, in delete\n    inserted = cursor.fetchone()\n  File \"\/usr\/lib64\/python2.7\/contextlib.py\", line 35, in __exit__\n    self.gen.throw(type, value, traceback)\n  File \"\/data\/kinto\/lib\/python2.7\/site-packages\/cliquet\/storage\/postgresql\/__init__.py\", line 84, in connect\n    raise exceptions.BackendError(original=e)\nBackendError: IntegrityError: duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_bucket, , bucket) already exists.\n","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests\/2.8.1","method":"DELETE","collection_id":"bucket","path":"\/v1\/buckets\/delete_bucket","authn_type":"BasicAuth","collection_timestamp":1446063426869},"Logger":"kinto","Type":{"args":["duplicate key value violates unique constraint \"deleted_pkey\"\nDETAIL:  Key (id, parent_id, collection_id)=(delete_bucket, , bucket) already exists.\n"],"cursor":{"arraysize":1,"binary_types":null,"closed":true,"connection":{"async":0,"autocommit":false,"binary_types":{},"closed":0,"cursor_factory":null,"dsn":"dbname=kinto user=kinto password=xxxxxxxxxxxxxxx host=kinto-rds-stage.cwvruave0bky.us-east-1.rds.amazonaws.com port=5432","encoding":"UTF8","isolation_level":1,"notices":[],"notifies":[],"protocol_version":3,"server_version":90404,"status":1,"string_types":{}},"description":null,"index":{},"itersize":2000,"lastrowid":0,"name":null,"query":"\n            WITH deleted_record AS (\n                DELETE\n                FROM records\n                WHERE id = 'delete_bucket'\n                  AND parent_id = ''\n                  AND collection_id = 'bucket'\n                RETURNING id\n            )\n            INSERT INTO deleted (id, parent_id, collection_id)\n            SELECT id, '', 'bucket'\n              FROM deleted_record\n            RETURNING as_epoch(last_modified) AS last_modified;\n            ","rowcount":-1,"rownumber":0,"scrollab 
@tarekziade tarekziade added the bug label Oct 28, 2015
@tarekziade
Copy link
Contributor Author

The main bug I think is

duplicate key value violates unique constraint "deleted_pkey"

@leplatrem
Copy link
Contributor

Nicer stacktrace:

File "/data/kinto/lib/python2.7/site-packages/cornice/service.py", line 571, in wrapper
    response = view_()
  File "./kinto/views/collections.py", line 54, in delete
    result = super(Collection, self).delete()
  File "/data/kinto/lib/python2.7/site-packages/cliquet/resource.py", line 461, in delete
    deleted = self.collection.delete_record(record)
  File "/data/kinto/lib/python2.7/site-packages/cliquet/collection.py", line 322, in delete_record
    record_id, parent_id)
  File "/data/kinto/lib/python2.7/site-packages/cliquet/collection.py", line 235, in delete_record
    auth=self.auth)
  File "/data/kinto/lib/python2.7/site-packages/clique
    Oct 28 20:06:41 ip-172-31-5-133 uwsgi: t/storage/postgresql/__init__.py", line 407, in delete
    inserted = cursor.fetchone()
  File "/usr/lib64/python2.7/contextlib.py", line 35, in __exit__
    self.gen.throw(type, value, traceback)
  File "/data/kinto/lib/python2.7/site-packages/cliquet/storage/postgresql/__init__.py", line 84, in connect
    raise exceptions.BackendError(original=e)
BackendError: IntegrityError: duplicate key value violates unique constraint "deleted_pkey"
DETAIL:  Key (id, parent_id, collection_id)=(delete_collection, /buckets/test_bucket, collection) already exists.
","uid":"00891c9f5296e368a3fdc44ca999f7dd23215c4ed66d04c553060a37261aca66","errno":null,"querystring":"{}","agent":"python-requests/2.8.1","method":"DELETE","collection_id":"collection","path":"/v1/buckets/test_bucket/collections/delete_collection","authn_type":"BasicAuth","collection_timestamp":1446062801739},"Logger":"kinto","Type":{"args":["duplicate key value violates unique constraint "deleted_pkey"
DETAIL:  Key (id, parent_id, collection_id)=(delete_collection, /buckets/test_bucket, collection) already exists.
"],"cursor":{"arraysize":1,"binary_types":null,"closed":true,"connection":{"async":0,"autocommit":false,"binary_types":{},"closed":0,"cursor_factory":null,"dsn":"dbname=kinto user=kinto password=xxxxxxxxxxxxxxx host=kinto-rds-stage.cwvruave0bky.us-east-1.rds.amazonaws.com port=5432","encoding":"UTF8","isolation_level":1,"notices":[],"notifies":[],"protocol_version":3,"server_version":90404,"status":1,"string_types":{}},"description":null,"index":{},"itersize":2000,"lastrowid":0,"name":null,"query":"
            WITH deleted_record AS (
                DELETE
                FROM records
                WHERE id = 'delete_collection'
                  AND parent_id = '/buckets/test_bucket'
                  AND collection_id = 'collection'
                RETURNING id
            )
            INSERT INTO deleted (id, parent_id, collection_id)
            SELECT id, '/buckets/test_bucket', 'collec
    Oct 28 20:13:14 ip-172-31-5-133 uwsgi: 

A collection object named delete_collection in the bucket test_bucket.

@leplatrem
Copy link
Contributor

Easy to reproduce:

echo '{"data": {"id": "deleted"}}' | http PUT http://localhost:8888/v1/buckets/blog/collections/deleted --auth="bob:" --verbose
http DELETE http://localhost:8888/v1/buckets/blog/collections/deleted --auth="bob:" --verbose
echo '{"data": {"id": "deleted"}}' | http PUT http://localhost:8888/v1/buckets/blog/collections/deleted --auth="bob:" --verbose
http DELETE http://localhost:8888/v1/buckets/blog/collections/deleted --auth="bob:" --verbose

The tombstone is recreated instead of being updated (it's the second death of the same record)

@leplatrem leplatrem self-assigned this Oct 28, 2015
Natim added a commit that referenced this issue Oct 29, 2015
…stead-of-recreating

Delete tombstone when record is re-created (fixes #518)
glasserc pushed a commit that referenced this issue May 20, 2016
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants