-
-
Notifications
You must be signed in to change notification settings - Fork 64
Closed as not planned
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
Fief responds with "500 Internal Server Error" while using different Admin REST API from a script.
To Reproduce
Steps to reproduce the behavior:
- Start Fief instance with one default tenant, one default client, one Admin API Key
- Execute a script doing the following:
- GET /tenants/ # Get default tenant id
- POST /permissions/ # Create permission1
- POST /permissions/ # Create permission2
- POST /users/ # Create user1
- POST /users/ # Create user2
- POST /users/{user_id1}/permissions # Assign permission1 to user1
- POST /users/{user_id2}/permissions # Assign permission2 to user2
Assuming that requests have all needed and correct POST payloads, headers and Authorization Bearer.
Expected behavior
No "500 Internal server error" responses from Fief.
Configuration
self-hosted, Fief version: 0.24.2
Additional context
The error is non-deterministic, it's not related to any particular request, any request can return 500.
When I added 1 second delay between requests, everything went OK. You can see the successful log below.
xxx@xxx:/opt/src# fief run-server --port 8001 2>&1
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
Main Fief workspace already exists
Main Fief user already exists
2023-05-02 15:08:24.725 | INFO | fief.lifespan:lifespan:31 - Fief Server started - {"version": "0.24.2"}
INFO: 127.0.0.1:50620 - "GET /tenants/ HTTP/1.1" 200 OK
INFO: 127.0.0.1:50630 - "POST /permissions/ HTTP/1.1" 201 Created
2023-05-02 15:08:31.188 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:08:31.274 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
INFO: 127.0.0.1:50632 - "POST /permissions/ HTTP/1.1" 201 Created
2023-05-02 15:08:31.636 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:08:31.647 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
INFO: 127.0.0.1:50644 - "POST /users/ HTTP/1.1" 201 Created
2023-05-02 15:08:32.796 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "on_after_register"}
2023-05-02 15:08:32.871 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "on_after_register"}
2023-05-02 15:08:32.877 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:08:32.889 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
INFO: 127.0.0.1:50650 - "POST /users/ HTTP/1.1" 201 Created
2023-05-02 15:08:33.847 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "on_after_register"}
2023-05-02 15:08:33.900 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "on_after_register"}
2023-05-02 15:08:33.921 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:08:33.936 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
INFO: 127.0.0.1:50662 - "POST /users/40284c05-9b18-431d-a2ef-b9f1707d76d3/permissions HTTP/1.1" 201 Created
2023-05-02 15:08:34.871 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:08:34.886 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
INFO: 127.0.0.1:50668 - "POST /users/90e4cecd-7898-43a3-84d6-feacdeebaab6/permissions HTTP/1.1" 201 Created
2023-05-02 15:08:35.884 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:08:35.912 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
^C
Without delays, however, I could not execute my script fully, not getting 500 at some of the requests. The log in this case looks like this:
xxx@xxx:/opt/src# fief run-server --port 8001 2>&1
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
Main Fief workspace already exists
Main Fief user already exists
2023-05-02 15:12:02.562 | INFO | fief.lifespan:lifespan:31 - Fief Server started - {"version": "0.24.2"}
INFO: 127.0.0.1:60742 - "GET /tenants/ HTTP/1.1" 200 OK
INFO: 127.0.0.1:52424 - "POST /permissions/ HTTP/1.1" 201 Created
INFO: 127.0.0.1:52434 - "POST /permissions/ HTTP/1.1" 201 Created
INFO: 127.0.0.1:52450 - "POST /users/ HTTP/1.1" 201 Created
2023-05-02 15:12:08.245 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
INFO: 127.0.0.1:52456 - "POST /users/ HTTP/1.1" 500 Internal Server Error
2023-05-02 15:12:08.344 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
2023-05-02 15:12:08.351 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:12:08.381 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
2023-05-02 15:12:08.402 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:12:08.437 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
2023-05-02 15:12:08.443 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "on_after_register"}
2023-05-02 15:12:08.519 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "on_after_register"}
^C
xxx@xxx:/opt/src# fief run-server --port 8001 2>&1
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
Main Fief workspace already exists
Main Fief user already exists
2023-05-02 15:36:08.331 | INFO | fief.lifespan:lifespan:31 - Fief Server started - {"version": "0.24.2"}
INFO: 127.0.0.1:44862 - "GET /tenants/ HTTP/1.1" 200 OK
INFO: 127.0.0.1:44870 - "POST /permissions/ HTTP/1.1" 201 Created
INFO: 127.0.0.1:44874 - "POST /permissions/ HTTP/1.1" 500 Internal Server Error
2023-05-02 15:36:12.437 | INFO | fief.tasks.base:__call__:117 - Start task - {"task": "trigger_webhooks"}
2023-05-02 15:36:12.511 | INFO | fief.tasks.base:__call__:119 - Done task - {"task": "trigger_webhooks"}
^C
It looks like, there is a race related to webhooks somewhere.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working