KamoCRM

Eseguire chiamate a monte con una connessione e un timeout di lettura

FixAPIService
Spegnimento
23 settembre 2026 alle ore 10:18 UTC
Autore
Kamo
Impegno
eb9cc3b

Entrambi i fagioli RestTemplate sono stati costruiti da un nudo JdkClientHttpRequestFactory senza tempo. Una a monte che accetta la connessione e poi non risponde mai -- un baccello cuneo, un deadlock -- parcheggiato un filo di gateway su quella presa per sempre; abbastanza di quei gas di scarico la piscina filettata Tomcat finito dietro il singolo /api/** chokepoint della piattaforma e abbattere ogni inquilino, non solo il chiamante del lento percorso. Collegare il timeout è 5s: il servizio a monte esiste sempre in-cluster, quindi un collegare non stabilito da allora significa che il baccello dietro di esso è andato. Leggi timeout è un 120s globale piuttosto che un valore per-prefisso -- questa classe ha no per-route RestTemplate oggi, la minaccia (un a monte che mai risposte) è lo stesso indipendentemente dal prefisso, e 120s copre comodamente più lento legittimo chiama questo gateway in avanti (grandi upload a /api/docs e /api/media, chat AI, vendite di fatturazione). L'ingresso di Traefik rispondereTimeouts.readTimeout è 3600s, quindi nulla davanti a questa chiamata era mai andando tagliare una richiesta più breve di 120s comunque. RestTemplateTimeoutTest guida una presa reale che accetta il TCP connessione e poi mai scrive una risposta, utilizzando un breve timeout in luogo dei veri 120s quindi il test stesso non può appendere la suite, e afferma che il cliente si arrende da solo. Ritornare alla fabbrica nuda rende la chiamata sottostante appeso oltre la guardia 3s di JUnit, che è esattamente la modalità di fallimento che questo risolve.

Tutte le modifiche

Come quello che vedi la spedizione?

Tutto questo arriva nel vostro spazio di lavoro da solo. Iniziare sul piano gratuito e leggere di nuovo questa pagina in un mese.

Inizia gratis per sempreVisualizza il prezzo