feat(proxy): otomatik Floxy→DataImpulse failover (decode regresyonu)
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Floxy residential proxy bitince/çökünce (402 bakiye veya tünel reddi — ERR_TUNNEL_CONNECTION_FAILED), EMEX + pcat decode istekleri ölü proxy'ye çarpıp decode başarı oranını çökertiyordu (2026-06-13: ~17k tünel hatası/24s, decode %78→%45). Önceki "DataImpulse last-ditch fallback" tarayıcı yolunda hiç yoktu ve HTTP yolunda her istekte 2 ölü Floxy denemesi ziyan ediyordu. Paylaşılan ProxyHealthService kapısı (in-memory cooldown): herhangi bir tüketici bir Floxy bağlantı hatası görünce kapıyı tetikler; cooldown boyunca TÜM tüketiciler DataImpulse'a düşer. Floxy'den ilk başarılı yanıt veya cooldown bitişi kapıyı temizler (kendi kendini iyileştirir, periyodik yeniden-deneme). FLOXY_FAILOVER_COOLDOWN_MS ile ayarlanır (varsayılan 180s). Bağlanan tüketiciler: - EMEX HTTP (fetchEmexHtml): kapı açıkken DataImpulse-öncelikli zamanlama - EMEX tarayıcı (Playwright): launch'ta dinamik sağlayıcı seçimi + ensureSession health-gate'i (Floxy ölünce DataImpulse'a relaunch, kapı temizlenince Floxy'i yeniden dene); scrape-içi tünel ölümünde tripFloxyFailover - pcat (buildProxy): hem call hem capture (Playwright JWT) bacakları DataImpulse'a düşer isProxyConnectFailure(): yalnız gerçek bağlantı hatalarında tetikler — yavaş-ama- canlı exit'in nav timeout'u failover'ı tetiklemez. Test: ProxyHealthService + isProxyConnectFailure birim testleri; tüm api suite (303) yeşil. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
import { Module } from "@nestjs/common";
|
||||
import { ProxyHealthService } from "./proxy-health.service";
|
||||
import { ProxyTelemetryService } from "./proxy-telemetry.service";
|
||||
|
||||
// Imported by PartsCatalogsModule and EmexModule; Nest module caching makes the
|
||||
// service a singleton (one shared flush buffer) across both.
|
||||
// services singletons (one shared flush buffer / one shared Floxy-health gate)
|
||||
// across both.
|
||||
@Module({
|
||||
providers: [ProxyTelemetryService],
|
||||
exports: [ProxyTelemetryService],
|
||||
providers: [ProxyTelemetryService, ProxyHealthService],
|
||||
exports: [ProxyTelemetryService, ProxyHealthService],
|
||||
})
|
||||
export class ProxyTelemetryModule {}
|
||||
|
||||
Reference in New Issue
Block a user