Skip to content

fix(gateway): land unbounded timeout prerequisite without unfinished policy changes - #1118

Merged
seonghobae merged 7 commits into
mainfrom
fix/unbounded_timeout_prerequisite_20260910
Sep 10, 2026
Merged

fix(gateway): land unbounded timeout prerequisite without unfinished policy changes#1118
seonghobae merged 7 commits into
mainfrom
fix/unbounded_timeout_prerequisite_20260910

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Incident prerequisite — exact head 93d56cd

The user explicitly authorized bypass merge to repair stalled contextual-orchestrator infrastructure. This PR extracts the original default-timeout repair from #1053 without also importing five unresolved findings in its later administrator-policy implementation. #1053 remains open with all later commits and findings preserved; this is a prerequisite, not a complete successor.

Provenance and conflict repair

Bounded behavior

ModelClient and local-provider admission default to None, rather than an implicit 90-second timeout. Equivalent-endpoint races preserve None. Synchronous embeddings wait for provider completion without an implicit finite deadline. Durable claim leases retain a positive default independently of model waiting. Explicit caller limits and the existing discovery, readiness-probe, retention and benchmark boundaries are unchanged.

No model-specific administrator policy/API, retry-policy redesign, dependency change or provider-credential change is extracted. All five unresolved finite-policy/retry findings remain in #1053.

Evidence and remaining conditions

The complete original prerequisite diff and conflict-only documentation change were reviewed. The existing ancestor had successful Security and Quality 33861876310, Security Scan 33861876480 and SAST 33861876350, but these historical results are not integrated-main acceptance.

Fresh exact-head runs are queued: Security and Quality 34420128565, Security Scan 34420128552, SAST 34420128631, CodeQL PR 34420128617. There are no inline review threads. Queued does not mean passing; no independent approval, fresh local test run or all-checks-green result is claimed. An exception merge requires fresh post-merge integrated CI and immutable release/adoption evidence before incident restoration can be declared.

Central collector compatibility #1978 and #2053 is merged. The review-sidecar runtime pin is a separate consumer change; merging this owner PR alone does not prove that deployed review requests have stopped using the older owner revision.

Summary by CodeRabbit

  • 변경 사항
    • 모델 요청의 기본 애플리케이션 타임아웃이 90초에서 무제한으로 변경되었습니다.
    • 타임아웃을 설정하지 않은 동기 임베딩 요청은 제공자의 완료까지 기다립니다.
    • 명시적인 타임아웃을 지정한 경우에만 요청 및 대기 작업이 제한됩니다.
    • 여러 엔드포인트를 동시에 시도하는 요청도 무제한 설정에서 시간 제한 없이 처리됩니다.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 7689faa2-97b5-4fa7-9788-afc6d5348ade

📥 Commits

Reviewing files that changed from the base of the PR and between 9c83530 and 93d56cd.

📒 Files selected for processing (9)
  • CHANGELOG.d/unbounded_model_timeout_prerequisite.md
  • CHANGELOG.md
  • contextual_orchestrator/batch_routing.py
  • contextual_orchestrator/cost_router.py
  • contextual_orchestrator/endpoint_race.py
  • contextual_orchestrator/orchestrator.py
  • contextual_orchestrator/server.py
  • tests/test_orchestrator_client_boundaries.py
  • tests/test_provider_embedding_batch_backend.py

📝 Walkthrough

Walkthrough

기본 ModelClient 타임아웃을 None으로 변경했습니다. 로컬 provider, endpoint race, 동기 임베딩은 무제한 대기를 지원합니다. Durable embedding claim lease와 배치 실행 수명 주기는 별도로 유지합니다. 관련 테스트와 changelog를 추가했습니다.

Changes

타임아웃 동작 조정

Layer / File(s) Summary
요청 타임아웃 전파
contextual_orchestrator/orchestrator.py, contextual_orchestrator/endpoint_race.py, contextual_orchestrator/server.py, tests/test_orchestrator_client_boundaries.py
ModelClient의 기본 timeout을 None으로 변경했습니다. 로컬 provider slot, endpoint race, 동기 임베딩 failover는 timeout이 None이면 deadline을 계산하지 않습니다.
임베딩 배치 수명 주기
contextual_orchestrator/batch_routing.py, contextual_orchestrator/cost_router.py, tests/test_provider_embedding_batch_backend.py
waitNone timeout을 지원합니다. Durable registry에는 별도 claim lease 기본값을 적용합니다. 유한한 wait timeout이 있을 때만 미완료 작업을 취소합니다.
타임아웃 변경 기록
CHANGELOG.d/unbounded_model_timeout_prerequisite.md
무제한 모델 timeout, endpoint race, 동기 임베딩 대기 및 배치 lease 경계를 changelog fragment에 기록합니다.

릴리스 변경 기록

Layer / File(s) Summary
릴리스 Fixed 항목
CHANGELOG.md
무료 worker failover, CI 자격 증명 처리, 공유 KV 자격 증명, 도구 및 스트리밍 유지, reasoning 이벤트 관련 변경 항목을 추가합니다.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant EmbeddingsAPI
  participant contextual_orchestrator.server
  participant ProviderEmbeddingBatchBackend
  participant ProviderRunner
  EmbeddingsAPI->>contextual_orchestrator.server: timeout 또는 None 전달
  contextual_orchestrator.server->>ProviderEmbeddingBatchBackend: remaining timeout 또는 None 전달
  ProviderEmbeddingBatchBackend->>ProviderRunner: provider 작업 대기
  ProviderRunner-->>ProviderEmbeddingBatchBackend: 완료된 임베딩 반환
  ProviderEmbeddingBatchBackend-->>EmbeddingsAPI: 임베딩 결과 반환
Loading
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/unbounded_timeout_prerequisite_20260910

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Resolve the shared Fixed-section insertion conflict without choosing one runtime change over another. Keep main@9c83530f5860aaee6e324f9a84e7ce3107eeba92 CHANGELOG blob 5adce93 and move only #1118's three-line note into CHANGELOG.d/unbounded_model_timeout_prerequisite.md. All production-source blobs remain those of parent 661ce8d. No #1053 policy delta is deleted or claimed complete.
@seonghobae
seonghobae merged commit 9c9873a into main Sep 10, 2026
17 of 18 checks passed
@seonghobae
seonghobae deleted the fix/unbounded_timeout_prerequisite_20260910 branch September 10, 2026 00:13
seonghobae added a commit that referenced this pull request Sep 10, 2026
Normal two-parent integration of PR #1072 db83c06 and protected main 314645d. Base the result on the complete current main tree 05f219e and apply only the original three runner-label replacements, their two assertions/public test docstring, and the release-note fragment. This explicitly preserves #1066 trigger/admission/concurrency and all #1118/#1105/#1082 runtime changes. No force push, valid-delta discard, or transferred integrated-main test claim.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant