From d2ab0f4b166a0d326e12d2047f43512d1ee8e451 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Sat, 21 Sep 2024 10:47:24 -0400 Subject: [PATCH 1/3] Try to fix nginx proxy buffering on upload --- docker/nginx/default.conf | 7 +++++-- frontend/src/services/api/rom.ts | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf index 59420be46..512d9e82c 100644 --- a/docker/nginx/default.conf +++ b/docker/nginx/default.conf @@ -21,8 +21,9 @@ http { client_max_body_size 0; client_header_buffer_size 1k; large_client_header_buffers 4 16k; - send_timeout 60s; - keepalive_timeout 65s; + send_timeout 600s; + keepalive_timeout 600s; + client_body_timeout 600s; tcp_nopush on; tcp_nodelay on; @@ -97,6 +98,8 @@ http { # Backend api calls location /api { proxy_pass http://wsgi_server; + proxy_request_buffering off; + proxy_buffering off; } location /ws { proxy_pass http://wsgi_server; diff --git a/frontend/src/services/api/rom.ts b/frontend/src/services/api/rom.ts index 1b3ebf984..d69ee55d7 100644 --- a/frontend/src/services/api/rom.ts +++ b/frontend/src/services/api/rom.ts @@ -32,7 +32,7 @@ async function uploadRoms({ api .post("/roms", formData, { headers: { - "Content-Type": "multipart/form-data; boundary=boundary", + "Content-Type": "multipart/form-data", "X-Upload-Platform": platformId.toString(), "X-Upload-Filename": file.name, }, From b85b001c3b1ee8e30cb7a4a53a25883d62c260e7 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Sat, 21 Sep 2024 11:15:32 -0400 Subject: [PATCH 2/3] fix socket updates on scan --- backend/endpoints/responses/rom.py | 10 +++++++--- backend/endpoints/sockets/scan.py | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/endpoints/responses/rom.py b/backend/endpoints/responses/rom.py index 9993146e9..a76e5b05e 100644 --- a/backend/endpoints/responses/rom.py +++ b/backend/endpoints/responses/rom.py @@ -165,15 +165,19 @@ class SimpleRomSchema(RomSchema): rom_user: RomUserSchema @classmethod - def from_orm_with_request( - cls, db_rom: Rom, request: Request - ) -> SimpleRomSchema | None: + def from_orm_with_request(cls, db_rom: Rom, request: Request) -> SimpleRomSchema: user_id = request.user.id db_rom.rom_user = RomUserSchema.for_user(user_id, db_rom) return cls.model_validate(db_rom) + @classmethod + def from_orm_with_factory(cls, db_rom: Rom) -> SimpleRomSchema: + db_rom.rom_user = rom_user_schema_factory() + + return cls.model_validate(db_rom) + class DetailedRomSchema(RomSchema): merged_screenshots: list[str] diff --git a/backend/endpoints/sockets/scan.py b/backend/endpoints/sockets/scan.py index 2af19497c..155ddcbde 100644 --- a/backend/endpoints/sockets/scan.py +++ b/backend/endpoints/sockets/scan.py @@ -373,7 +373,7 @@ async def _identify_rom( { "platform_name": platform.name, "platform_slug": platform.slug, - **SimpleRomSchema.model_validate(_added_rom).model_dump( + **SimpleRomSchema.from_orm_with_factory(_added_rom).model_dump( exclude={"created_at", "updated_at", "rom_user"} ), }, From e20465f268ee4618577fe048fbc84182181ceb8c Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Sat, 21 Sep 2024 11:17:28 -0400 Subject: [PATCH 3/3] increase timeout to 6 minutes --- frontend/src/services/api/rom.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/services/api/rom.ts b/frontend/src/services/api/rom.ts index d69ee55d7..bf480e5cb 100644 --- a/frontend/src/services/api/rom.ts +++ b/frontend/src/services/api/rom.ts @@ -36,6 +36,7 @@ async function uploadRoms({ "X-Upload-Platform": platformId.toString(), "X-Upload-Filename": file.name, }, + timeout: 600000, params: {}, onUploadProgress: (progressEvent: AxiosProgressEvent) => { uploadStore.update(file.name, progressEvent);