HTTP 500 on patch_group (KeyError)
AlexB1986 opened this issue · 8 comments
Steps to reproduce
docker run -p 8888:8888 kinto/kinto-server
Running kinto 14.0.1.dev0.
First request
POST /v1/buckets HTTP/1.1
Host: 127.0.0.1:8888
Authorization: Basic AAAA
Content-Type: application/json
Content-Length: 222
{"data": {"collection:schema": {}, "group:schema": {}, "record:schema": {}}, "permissions": {"collection:create": ["write_account"], "group:create": ["write_account"], "read": ["read_account"], "write": ["write_account"]}}
First response HTTP 201
{
"permissions": {
"read": [
"read_account"
],
"write": [
"write_account",
"account:admin"
],
"collection:create": [
"write_account"
],
"group:create": [
"write_account"
]
},
"data": {
"collection:schema": {},
"group:schema": {},
"record:schema": {},
"id": "6UULOFrV",
"last_modified": 1608558398847
}
}
Second request
PUT /v1/buckets/6UULOFrV/groups/0 HTTP/1.1
Host: 127.0.0.1:8888
User-Agent: python-requests/2.24.0
Accept-Encoding: gzip,deflate
Response-Behavior: diff
If-None-Match: "0"
Authorization: Basic AAAA
Content-Type: application/json
Content-Length: 83
{"data": {}, "permissions": {"read": ["read_account"], "write": ["write_account"]}}
Second response HTTP 201
{
"permissions": {
"read": [
"read_account"
],
"write": [
"write_account",
"account:admin"
]
},
"data": {
"members": [],
"id": "0",
"last_modified": 1608558411303
}
}
Third request
PATCH /v1/buckets/6UULOFrV/groups/0 HTTP/1.1
Host: 127.0.0.1:8888
User-Agent: python-requests/2.24.0
Accept-Encoding: gzip,deflate
Response-Behavior: diff
If-None-Match: "0"
Authorization: Basic AAAA
Content-Type: application/json
Content-Length: 83
{"data": {}, "permissions": {"read": ["read_account"], "write": ["write_account"]}}
Third response HTTP 500
{
"code": 500,
"errno": 999,
"error": "Internal Server Error",
"message": "A programmatic error occured, developers have been informed.",
"info": "https://github.com/Kinto/kinto/issues/"
}
Log
"PATCH /v1/buckets/6UULOFrV/groups/0?" ? (? ms) 'id' errno=999
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/pyramid/tweens.py", line 41, in excview_tween
response = handler(request)
File "/app/kinto/core/events.py", line 159, in tween
request.registry.notify(event)
File "/usr/local/lib/python3.7/site-packages/pyramid/registry.py", line 109, in notify
[_ for _ in self.subscribers(events, None)]
File "/usr/local/lib/python3.7/site-packages/zope/interface/registry.py", line 448, in subscribers
return self.adapters.subscribers(objects, provided)
File "/usr/local/lib/python3.7/site-packages/zope/interface/adapter.py", line 619, in subscribers
subscription(*objects)
File "/usr/local/lib/python3.7/site-packages/pyramid/config/adapters.py", line 129, in subscriber_wrapper
return derived_subscriber(*arg)
File "/usr/local/lib/python3.7/site-packages/pyramid/config/adapters.py", line 101, in derived_subscriber
return subscriber(arg[0])
File "/app/kinto/views/groups.py", line 79, in on_groups_changed
group_uri = f"/buckets/{event.payload['bucket_id']}/groups/{group['id']}"
KeyError: 'id'
"PATCH /v1/buckets/6UULOFrV/groups/0?" 500 (7 ms) agent=python-requests/2.24.0 authn_type=account errno=999 time=2020-12-21T12:47:57.573000 uid=admin
Can I take this? @leplatrem
Sure!
@saurabh3796 are you working on fixing this issue? If not then I would like to try to fix it. @leplatrem Is this OK?
I am new to open source community, so don't know the exact practices. Please guide me.
This one seems to be easy one and I don't see any recent activity, hence I wanted to work on it.
Seeing that @saurabh3796 hasn't given news since September, it seems pretty reasonable for you to give it a try :) Don't hesitate to open a pull-request even if your code is not ready or not working. This way we can guide you from there
@AlexB1986 @leplatrem I tried recreating this issue, running via
docker run -p 8888:8888 kinto/kinto-server with kinto/kinto-server:latest being higher than 14.3.0.
I created an admin account and tried to reproduce but always got 200.
"PUT /v1/buckets/3bq7Tn1d/groups/0?" 201 (530 ms) agent=PostmanRuntime/7.29.0 authn_type=account errno=0 time=2022-04-09T05:11:30.846000 uid=admin
"PATCH /v1/buckets/3bq7Tn1d/groups/0?" 200 (26 ms) agent=PostmanRuntime/7.29.0 authn_type=account errno=0 time=2022-04-09T05:11:44.587000 uid=admin
"PATCH /v1/buckets/3bq7Tn1d/groups/0?" 200 (25 ms) agent=PostmanRuntime/7.29.0 authn_type=account errno=0 time=2022-04-09T05:11:47.989000 uid=admin
"PATCH /v1/buckets/3bq7Tn1d/groups/0?" 200 (23 ms) agent=PostmanRuntime/7.29.0 authn_type=account errno=0 time=2022-04-09T05:11:48.908000 uid=admin
"PATCH /v1/buckets/3bq7Tn1d/groups/0?" 200 (20 ms) agent=PostmanRuntime/7.29.0 authn_type=account errno=0 time=2022-04-09T05:11:49.867000 uid=admin
I think this issue does not exist anymore.
Hello @leplatrem is this issue still exists, if so I would like to fix it;
P.S : this will be my first contribution to the open source 😄
I think this issue does not exist anymore.
Apparently it cannot be reproduced. I tried as well with the following steps:
$ git checkout 14.0.0`
$ kinto start
And then:
$ echo '{"data":{"password":"s3cr3t"}}' | http PUT :8888/v1/accounts/admin -a admin:s3cr3t
$ http PUT :8888/v1/buckets/a -a admin:s3cr3t
$ http PUT :8888/v1/buckets/a/groups/0 -a admin:s3cr3t
$ echo '{"data":{}, "permissions":{"read": ["read_account"], "write": ["write_account"]}}' | http PATCH :8888/v1/buckets/a/groups/0 'If-None-Match: "0"' -a admin:s3cr3t
HTTP/1.1 200 OK
Access-Control-Expose-Headers: Backoff, Alert, Content-Type, Retry-After, Content-Length
Content-Length: 144
Content-Security-Policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none';
Content-Type: application/json
Date: Wed, 13 Apr 2022 14:08:32 GMT
Etag: "1649858912280"
Last-Modified: Wed, 13 Apr 2022 14:08:32 GMT
Server: waitress
X-Content-Type-Options: nosniff
{
"data": {
"id": "0",
"last_modified": 1649858912280,
"members": []
},
"permissions": {
"read": [
"read_account"
],
"write": [
"account:admin",
"write_account"
]
}
}
I think this issue does not exist anymore.
Apparently it cannot be reproduced. I tried as well with the following steps:
$ git checkout 14.0.0` $ kinto start
And then:
$ echo '{"data":{"password":"s3cr3t"}}' | http PUT :8888/v1/accounts/admin -a admin:s3cr3t $ http PUT :8888/v1/buckets/a -a admin:s3cr3t $ http PUT :8888/v1/buckets/a/groups/0 -a admin:s3cr3t $ echo '{"data":{}, "permissions":{"read": ["read_account"], "write": ["write_account"]}}' | http PATCH :8888/v1/buckets/a/groups/0 'If-None-Match: "0"' -a admin:s3cr3t HTTP/1.1 200 OK Access-Control-Expose-Headers: Backoff, Alert, Content-Type, Retry-After, Content-Length Content-Length: 144 Content-Security-Policy: default-src 'none'; frame-ancestors 'none'; base-uri 'none'; Content-Type: application/json Date: Wed, 13 Apr 2022 14:08:32 GMT Etag: "1649858912280" Last-Modified: Wed, 13 Apr 2022 14:08:32 GMT Server: waitress X-Content-Type-Options: nosniff { "data": { "id": "0", "last_modified": 1649858912280, "members": [] }, "permissions": { "read": [ "read_account" ], "write": [ "account:admin", "write_account" ] } }
Okay thanks, can you suggest an issue that I can work on as I said this will be my first contribution; thanks in advance.