Two-layer Salesforce MCP timeout enforcement (final) — session-layer 300s read backstop in RefreshingSalesforceSession.request + tool-layer 120s asyncio.wait_for on sf_describe_report_type. Supersedes
Decision
Two-layer Salesforce MCP timeout enforcement (final) — session-layer 300s read backstop in RefreshingSalesforceSession.request + tool-layer 120s asyncio.wait_for on sf_describe_report_type. Supersedes journal entries 8fa7e2a6 + c43b7132 with calibrated confidence properly recorded.
Rationale
Root cause: RefreshingSalesforceSession.request() at core/api_client.py:79-95 never passed timeout= kwarg, so requests defaulted to infinite wait. Affected all 684 tools; surfaced on Booking_With_or_W_o_Loan__c describeReportType stalling Analytics API past 2 min, freezing FastMCP event loop. Defense-in-depth two-layer fix chosen over narrow-only or broad-only. Same-tag v7.1.1 patch. Verified: rebuild, restart, health green, drift-check clean, mirror parity, docker exec confirmation of both fixes in running image. Cascade complete: CHANGELOG entry + contract.yaml enforcement_layers + Gotcha #20 in SKILL.md (covers both hardlinked mirrors). Confidence 0.85 reflects: high on root-cause identification and fix correctness (source inspection + container verification), moderate-only on hang reproduction since cannot empirically retrigger Booking_With_or_W_o_Loan__c without potentially re-hanging session.
Alternatives Rejected
Outcome
Pending
Related
- two-layer-timeout-enforcement-for-salesforce-mcp-session-lay
- fix-sfdescribereporttype-hang-via-two-layer-timeout-enforcem
- snowflake-mcp-v2204-v2205-patch-landed-3-source-fixes-impl-w
- resolve-6-metadataget-graphql-drifts-in-tableau-mcp-by-repla
- ship-tableau-mcp-v605-6-metadataget-graphql-drift-fixes-via
- mcp-tool-hangs-claude-session-asynciotothreadblockingio-with
- close-session-close-ceremony-for-2026-05-11-salesforce-mcp-t
- functional-verification-of-pre-record-decision-gatepy-counts
- rewrote-file-manager-filesarjtechin-dlarjtechin-archive-down
- ratified-retain-rootaj-ea-as-dormant-fallback-route-ea-work