Geçiş ve sürümleme
GuildGate 1.0.0 sürümünden itibaren Semantic Versioning uygular. 1.1.0, public adapter yetenekleri ekleyen minor sürümdür.
Contract değişimi
| Alan | 1.0.0 | 1.1.0 |
|---|---|---|
| Adapter contract | 1.0 | 1.1 |
| Action contract | 1.0 | 1.0 |
| Realtime contract | 1.0 | 1.0 |
Custom store veya adapter kullanmıyorsan resmi PostgreSQL/Redis paketleriyle yükseltme daha doğrudandır. Custom uygulamalarda aşağıdaki davranışları ekle.
1. Idempotency reservation
IdempotencyRecord içine reservationId eklenir. renew, complete ve fail aynı owner token'ını karşılaştırmalıdır.
Koşulsuz key update/delete kullanımını kaldır. Sahiplik kaybında false döndür.
2. Atomik session cap
Paylaşımlı store'da SessionStore.create(record, maximumSessionsPerUser) uygula. Session insert ve fazla kayıt silme tek serialized işlem olmalıdır.
3. Cursor audit
AuditStore.listPage() ekle. Opaque cursor ile (createdAt DESC, id DESC) sırasını database sorgusunda uygula.
4. Transaction kesinliği
Başarılı commit sonrasında callback hatası rollback oluşturmamalı. onPostCommitError veya TransactionPostCommitError ile gözlemle. Domain work tekrar yürütülmemelidir.
Nested PostgreSQL işlemlerinde savepoint ve callback propagation kurallarını uygula.
5. Deadline ve late settlement
Action timeout'u belirlenen sınırda yanıt dönmelidir. Alttaki iş için settlement gözlemi ve reliability.maximumLateSettlementMs sınırı ekle.
İdempotency TTL'lerini yeni deadline + late-settlement süresine göre büyüt. External I/O'ya AbortSignal aktar.
6. Fail-closed audit ve rate limit
Fail-closed audit kaydını domain transaction içine taşı. PostgreSQL rate-limit bucket update'lerini advisory lock veya eşdeğer atomik yol ile serialize et.
7. OAuth refresh
Distributed lock ile single-flight kur ve lease alındıktan sonra credential'ı yeniden oku.
8. Redis tag atomikliği
Cache entry, eski/yeni tag üyelikleri ve tag-index TTL güncellemesini tek Lua/eşdeğer işlemde yap.
9. Realtime taşıyıcıları
Socket.IO subscribe, unsubscribe ve heartbeat event'lerini hub.acceptMessage() kontrolünden geçir. Ack, replay ve transport backpressure davranışını ekle.
Yükseltme sırası
- Ayrı branch aç.
@kavtuai/guildgate@1.1.0kur.- TypeScript hatalarını düzelt.
- Custom store'larda adapter
1.1kurallarını uygula. runStoreContract()çalıştır.- PostgreSQL migration SQL'ini yazdır ve incele.
- Login, guarded write, timeout, permission loss, session revoke ve realtime replay testlerini çalıştır.
- Coverage ve service integration pipeline'ını yeşil yap.
- Staging'de audit/outbox ve late-settlement metriklerini izle.
- Kontrollü production rollout yap.
Geri dönüş
Code rollback ile database migration rollback aynı şey değildir. Eklenen alanları eski kodun tolere edip etmediğini kontrol et. Idempotency reservation alanını kaldırmadan önce inflight kayıtların bitmesini bekle.