Skip to content

4.9.2 — 2026-05-12

← 4.9.3 | 4.9.1 → | ↑ 4.x series

Changed

Configs - GrpcConfig

  • Thread worker count resolution - When THREAD_WORKER_COUNT is omitted, it is now assigned during model validation by the after-model resolve_thread_worker_count validator to THREAD_PER_CPU_CORE * (os.cpu_count() or 1).
    • Removed the unused resolved_thread_worker_count property.
    • gRPC server helpers now pass a concrete max_workers into ThreadPoolExecutor instead of None.
  • Default server and stub channel options - Refreshed SERVER_OPTIONS_CONFIG_LIST and STUB_OPTIONS_CONFIG_LIST defaults for clearer limits, keepalive alignment, and client resilience.
    • grpc.max_metadata_size default 16KB on both server and stub presets.
    • Server keepalive and HTTP/2 ping intervals aligned with client expectations to reduce ENHANCE_YOUR_CALM / GOAWAY issues; connection idle (10m) and max age (30m) with a short grace drain.
    • Stub keepalive at 5 minutes with a 20s timeout; grpc.service_config default timeout 10s, wait-for-ready, retry policy, and a retryThrottling block.

Fixed

Adapters - Saman Shaparak Payment

  • Missing TransactionDetail Handling - Fixed graceful handling of missing TransactionDetail in Saman payment adapters.
    • Changed from .get("TransactionDetail", {}) to .get("TransactionDetail") or {}
    • Prevents TypeError when API returns null instead of missing key