abdussamedulutas
441093bad6
#43/#44/#45: Notify (store-and-forward + suit) ve data-sync alt sistemleri
...
- internal/notify: store-and-forward (#43 ) + suit/yanıtlı (#44 ). Offline hedefe
bırakılan mesaj bağlanınca teslim; trace id ile durum sorgulanır; suit cevabı
3. taraf trigger'a manuel iletilir. TTL + hedef-başı sınır + janitor → leak yok.
- internal/datastore: active sync/collection (CRUD broadcast, arrival-time seq ile
çakışma çözümü) + passive sync (dedupe merge pool) + temp/permanent datastore.
Saf paket (ws bağımsız), servis katmanı I/O yapar.
- services.Register artık *Registry döndürür + ...Option alır (WithNotifyTrigger).
main.go janitor'ları başlatır/durdurur. Eski Register(hub) çağrıları çalışır.
Testler: internal/notify, internal/datastore birim testleri + services
notify_test/datasync_test (offline teslim, suit reply+trigger, CRUD broadcast,
concurrent arrival-order, passive convergence, disconnect unsubscribe).
go test -race ./... yeşil.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 08:30:20 +03:00
abdussamedulutas
63680fac19
#31 : WebRTC signaling paritesi — engine relay testi
...
Sinyalleşme (offer/answer/ICE) ayrı bir engine kavramı değil; SDK bunları
{type:':rtcpack:', payload} olarak pack/to üzerinden tüneller (Node ile aynı,
sunucuda RTC handler'ı yok). Engine bu paketleri her iki yönde de payload'ı
incelemeden aynen taşır. Test: TestWebRTCSignalingRelay.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 08:13:22 +03:00
abdussamedulutas
91ebbeffb2
#33 : EventPool WOM — askıda kalan promise düzeltmesi
...
Engine: dispatcher handler nil dönerse yanıt göndermez (nil = yanıt yok /
cevap out-of-band gelecek). Bu, request/to'nun erken [null,id,'E'] ile
ezilmesini önler; gerçek cevap response/to ile aynı id üzerinden gelir.
SDK: EventPool.only() WOM yolu eklendi (waiter bırakmaz); Peer.send ve
Room.send handshake'siz dalı request() yerine only() kullanır. Public API
değişmedi.
Test: TestServerNoReplyOnNilResult, TestRequestResponseRoundTrip,
TestTunnelDoesNotLeakSourceAddress, TestTunnelLargePayloadIntact. go test -race yeşil.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 08:11:29 +03:00
abdussamedulutas
c058feb22d
Ölçek ayarı, leak sağlamlaştırma ve #27/#28/#29 paritesi
...
Yüksek bağlantı sayısı + sürekli mesaj trafiği için engine'i sağlamlaştırır;
sınırsız bellek büyümesini (leak) kapatır; 1.0.0 engine parite issue'larını
(oda/pairing/sanal adresleme) tamamlar.
Ölçek/pool ayarı (config.ConnConfig, env-tunable, varsayılanlar yüksek):
- OutboundBuffer 1024, MaxMessageSize 16 MiB, read/write buffer, ping/pong/write
timeout'ları yapılandırılabilir.
- gorilla WriteBufferPool (paylaşımlı sync.Pool) — yüksek bağlantıda büyük
bellek tasarrufu. 150 bağlantı + ağır trafikte RSS ~43 MB.
- Dolu buffer'da düşür-ama-kapatma → relay teslimat %99.98 (150 bağlantı).
Leak düzeltmeleri (churn altında sınırsız büyüme yok):
- Pairing ters-indeksi (pairedBy): disconnect'te X'e değen tüm pair kenarları
O(derece) temizlenir; tek-yönlü bekleyen istek çöpü kalmaz.
- Davet bekleme listesi: istemci waiting odalarını tutar, disconnect'te düşülür.
- realloc artık farklı adres verir (önce al sonra bırak).
#27/#28/#29 paritesi + ifexistsJoin; kapsamlı parite + leak testleri eklendi.
go build/vet/test -race ./... yeşil (18 servis testi). Detay: decisions.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 07:43:54 +03:00
abdussamedulutas
835f0b5f2e
Go engine portu (0.1.0 çekirdek) — Node.js engine'i race-free Go'ya taşı
...
MWSE engine'i (Source/) performans odaklı, eşzamanlılık-güvenli bir Go
projesine taşır. WSTS tel sözleşmesi (SDK giriş/çıkış) korunur; frontend
dokunulmadan çalışmaya devam eder.
- internal/protocol: WSTS encode/decode (request/response/stream/signal)
- internal/ws: Client (bağlantı-başına tek-yazıcı), Room (RWMutex + snapshot
broadcast), Hub (kayıt + router + event bus), Server (yaşam döngüsü, saQut
heartbeat). #22 "ayrılırken-yazma" race'i yapısal olarak çözüldü.
- internal/services: YourID, Session, Auth, Room, IPPressure, DataTransfer
portu (Node'daki bariz bug'lar düzeltildi; tel şekilleri korundu).
- internal/config, internal/httpserver: env config, statik + /api + graceful
shutdown.
- loadtest/: ayrı modül — ping/relay yük testi + benchmark istemcisi.
go build/vet/test -race ./... yeşil. TestLeaveWhileSendRace regresyonu temiz.
Uçtan uca doğrulandı: ping ~140k req/s (p50 ~200µs, 0 hata),
relay ~190k msg/s (%98.5 teslim).
İnsan onayına bırakılanlar REVIEW.md'de; kararlar decisions.md'de;
durum PORT-PROGRESS.md'de. Hiçbir issue kapatılmadı, stable'a dokunulmadı,
deploy/push yapılmadı.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 07:09:36 +03:00