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_COUNTis omitted, it is now assigned during model validation by the after-modelresolve_thread_worker_countvalidator toTHREAD_PER_CPU_CORE * (os.cpu_count() or 1).- Removed the unused
resolved_thread_worker_countproperty. - gRPC server helpers now pass a concrete
max_workersintoThreadPoolExecutorinstead ofNone.
- Removed the unused
- Default server and stub channel options - Refreshed
SERVER_OPTIONS_CONFIG_LISTandSTUB_OPTIONS_CONFIG_LISTdefaults for clearer limits, keepalive alignment, and client resilience.grpc.max_metadata_sizedefault 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_configdefault timeout 10s, wait-for-ready, retry policy, and aretryThrottlingblock.
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
- Changed from