Skip to content

Instantly share code, notes, and snippets.

@buraxta
Created October 31, 2025 13:15
Show Gist options
  • Select an option

  • Save buraxta/3507c9ca2a65800577853ce9724224f3 to your computer and use it in GitHub Desktop.

Select an option

Save buraxta/3507c9ca2a65800577853ce9724224f3 to your computer and use it in GitHub Desktop.

Server log kayıtlarını sorunlu (boş array) ve sorunusuz response alma durumuna göre inceledim, inceleme sonucunu sizlerle paylaşıyorum.

Senaryo 1: "Dolu Aldığım" (Başarılı İstek)

Bu testte, tcpdump çıktısında (saat 13:03:48) şunları görüyoruz:

  1. backend'den livekit'e giden isteğin kendisi:
    13:03:48.096833 IP localhost.42468 > localhost.pss: Flags [P.]...
    POST /twirp/livekit.SIP/ListSIPOutboundTrunk HTTP/1.1
    Host: livekit.enmdigital.com
    ...
    
  2. livekit'ten backend'e dönen cevap:
    13:03:48.098763 IP localhost.pss > localhost.42468: Flags [P.]...
    HTTP/1.1 200 OK
    Content-Length: 270
    ...
    .ST_b8qNuJrPXL3d..908504809295."{ "tenantKey": "CeyberDigital" }"...
    
  3. Aynı anda (13:03:48.098Z), livekit loglarına status: "200" kaydı düşüyor.

Anlamı: Sunucu yapılandırması (Caddy, extra_hosts, appsettings.json) ** çalışıyor**. backend, livekit'e ulaşıyor ve livekit cevap veriyor.


Senaryo 2: "Boş Aldığım" (Hatalı İstek)

Bu testte, tcpdump çıktısı (saat 13:02:13 - 13:03:10 arası) sadece anlamsız TCP "keep-alive" paketleri gösteriyor.

En Önemli Bulgu: Bu çıktıda backend'den livekit'e giden POST /twirp/livekit.SIP/ListSIPOutboundTrunk isteğinin HİÇ OLMADIĞINI görüyoruz.

Aynı anda livekit logları da sessiz kalıyor, çünkü ona hiçbir istek gelmiyor.


Kök Neden

Bu tcpdump çıktısına göre sorun backend'de görünüyor.

Boş [] array yanıtı aldığımızda, backend (ID: 1444d709f4a8) livekit'e (ID: a1757d4b69ff) hiçbir network isteği göndermiyor.

Yapay zekaya danışınca aldğım cevap: Bu durum "Caching (Önbellekleme)" sorunu.

  1. backend uygulaması livekit'e bir istek atıyor.
  2. O an livekit (belki anlık bir yavaşlama yaşıyor) status: 200 ama boş [] array döndürüyor.
  3. backend uygulamanız bu "başarılı ama boş" yanıtı alıyor ve bunu kendi iç cache'ine (önbellek) kaydediyor. (Buna "Cache Poisoning" denir).
  4. Siz bir sonraki isteği attığınızda (Boş Aldığım senaryosu), backend uygulamanız livekit'e sormaya gerek duymuyor. Doğrudan kendi cache'inden size boş [] array'i veriyor.
  5. backend'den livekit'e bir istek hiç gitmediği için, tcpdump ve livekit logları da doğal olarak tamamen sessiz kalıyor.
  6. Sizin eklediğiniz try-catch bloğu da tetiklenmiyor, çünkü kodda bir Exception (hata) oluşmuyor; kod sadece "başarıyla" cache'den veri okuyor.

Yapay zekaya göre çözüm

Çözüm backend kodunu güncellemektir.

Backendde GetOutboundTrunksAsync metodunu, livekit'ten boş [] array yanıtı aldığında bunu cache'lemeyecek şekilde güncellemek gerekiyor.

Önerdiğim çözüm (boş liste geldiğinde Exception fırlatmak) bu "cache zehirlenmesini" engelleyecektir:

if (filteredOutboundTrunks.Count == 0 && response.Items.Count == 0) 
{
    // Cache'lemeyi önlemek için bir hata fırlat
    throw new Exception("LiveKit servisi 'ListSIPOutboundTrunk' için boş bir liste döndürdü. Bu anlık bir sorun olabilir.");
}

Bu kod değişikliğini yapıp (veya cache mekanizmasını tamamen devre dışı bırakıp) backend'i yeniden canlıya almanız gerekiyor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment