fix: error_logs.path VARCHAR(500) → TEXT — 서버 응답 불가 해결
멀티 티커 요청 URL이 500자를 초과하면서 error_logs INSERT가 StringDataRightTruncationError로 실패, 미들웨어에서 매 에러 응답마다 DB rollback 대기가 발생해 서버가 응답 불가 수준으로 느려졌음 (2562회 반복). - error_logs.path: String(500) → Text (model + migration j1b2c3d4e5f6) - request_logs.path: String(500) → Text (model + migration i0a1b2c3d4e5) - docker-compose: alembic/ + alembic.ini 볼륨 마운트 추가 (이전에는 컨테이너 내부에만 있어 마이그레이션 적용 불가) - middleware: 요청마다 찍히던 logger.info → logger.debug 로 변경 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>main
parent
5bcba8632c
commit
409966a478
@ -0,0 +1,37 @@
|
||||
"""fix request_log path column to TEXT
|
||||
|
||||
Revision ID: i0a1b2c3d4e5
|
||||
Revises: h9b0c1d2e3f4
|
||||
Create Date: 2026-04-13
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
revision: str = "i0a1b2c3d4e5"
|
||||
down_revision: Union[str, Sequence[str], None] = "h9b0c1d2e3f4"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# path stores the full URL (path + query string) and can exceed 500 chars
|
||||
# for multi-ticker requests — widen to TEXT
|
||||
op.alter_column(
|
||||
"request_logs",
|
||||
"path",
|
||||
existing_type=sa.String(500),
|
||||
type_=sa.Text(),
|
||||
existing_nullable=True,
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.alter_column(
|
||||
"request_logs",
|
||||
"path",
|
||||
existing_type=sa.Text(),
|
||||
type_=sa.String(500),
|
||||
existing_nullable=True,
|
||||
)
|
||||
@ -0,0 +1,39 @@
|
||||
"""fix error_log path column to TEXT
|
||||
|
||||
Revision ID: j1b2c3d4e5f6
|
||||
Revises: i0a1b2c3d4e5
|
||||
Create Date: 2026-04-14
|
||||
|
||||
error_logs.path was VARCHAR(500), causing StringDataRightTruncationError
|
||||
for multi-ticker requests whose URLs exceed 500 chars. This blocked every
|
||||
error log INSERT and added rollback latency to each error response.
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
revision: str = "j1b2c3d4e5f6"
|
||||
down_revision: Union[str, Sequence[str], None] = "i0a1b2c3d4e5"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
op.alter_column(
|
||||
"error_logs",
|
||||
"path",
|
||||
existing_type=sa.String(500),
|
||||
type_=sa.Text(),
|
||||
existing_nullable=True,
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.alter_column(
|
||||
"error_logs",
|
||||
"path",
|
||||
existing_type=sa.Text(),
|
||||
type_=sa.String(500),
|
||||
existing_nullable=True,
|
||||
)
|
||||
Loading…
Reference in New Issue