2 Sorun Çözüldü

Player Donma Sorunu - Fix Raporu

Versiyon 2 • Tüm fix'ler uygulandı ve test edildi

bufferAppendError

HLS preload sırasında SourceBuffer çakışması düzeltildi

DeviceProfile 500

Fingerprint unique constraint çakışması çözüldü

Fix 1: bufferAppendError

Basit Anlatım

Müzik çalarken "Next" butonuna basıldığında, arka planda bir sonraki şarkı önceden hazırlanıyordu. Ancak eski şarkının hafıza alanı (buffer) düzgün temizlenmeden yeni şarkı yüklenmeye çalışılıyordu. Bu da tarayıcının "aynı anda iki şarkıyı aynı yere yazamazsın" hatası vermesine neden oluyordu.

Teknik Detaylar

Dosya: public/themes/muzibu/js/player/core/player-core.js

Fonksiyon: _cleanupPreloadedNext()

Değişiklikler:

  • hls.stopLoad() - Yeni segment yüklemesini durdur
  • hls.detachMedia() - MediaSource bağlantısını kes (SourceBuffer'ları serbest bırak)
  • hls.destroy() - HLS instance'ı tamamen temizle
  • 100ms delay - MediaSource'un sıfırlanması için bekleme

Fix 2: DeviceProfile 500 Hatası

Basit Anlatım

Sistem her cihaza benzersiz bir "parmak izi" (fingerprint) atıyor. Sorun şuydu: Aynı bilgisayarda farklı kullanıcılar giriş yaptığında, sistem "bu parmak izi zaten var ama farklı kullanıcıya ait" diyerek hata veriyordu. Çözüm olarak, aynı cihazı birden fazla kullanıcının paylaşabileceği kabul edildi.

Teknik Detaylar

Dosya: Modules/Muzibu/App/Models/DeviceProfile.php

Fonksiyon: findOrCreateByFingerprint()

Kök Neden:

  • fingerprint kolonu UNIQUE constraint'e sahip
  • firstOrCreate(['fingerprint' => X, 'user_id' => Y]) hem fingerprint hem user_id arıyordu
  • Farklı user_id ile aynı fingerprint için INSERT denemesi → Duplicate entry hatası

Çözüm:

  • Sadece fingerprint ile arama yapılıyor
  • Cihaz varsa, user_id güncelleniyor (son kullanan kullanıcı)
  • Race condition için try-catch eklendi

Git Commit'ler

🔧 FIX: Player bufferAppendError düzeltmesi

bfa8cad6d → main

🔧 FIX: DeviceProfile 500 hatası düzeltildi

408717945 → main

Test Sonuçları

DeviceProfile Multi-User Test

user_id = 1 → SUCCESS (ID: 398)
user_id = 2 (aynı cihaz) → SUCCESS (ID: 398)
user_id = 1 tekrar → SUCCESS (ID: 398)

API Test

Unauthenticated → 401 (beklenen)
Authenticated → 200 + profile_id

ABA Test Prompt (Fix Doğrulama)

🎯 GÖREV: Player Fix Doğrulama Testi

SENARYO:
1. https://www.muzibu.com adresine git
2. Giriş yap (test kullanıcısı ile)
3. Herhangi bir şarkıyı çalmaya başla
4. 5 saniye bekle
5. "Next" butonuna 3 kez art arda tıkla (1 saniye arayla)
6. Console'da hata olup olmadığını kontrol et
7. 30 saniye boyunca şarkı çal ve donma olup olmadığını gözlemle

BAŞARI KRİTERLERİ:
✅ Console'da "bufferAppendError" OLMAMALI
✅ Console'da "DeviceProfile API hatası: 500" OLMAMALI
✅ Next butonu her tıklamada çalışmalı
✅ Player donmamalı, şarkı akıcı çalmalı

RAPOR:
- Console hatalarını listele (varsa)
- Next butonu davranışı (tutarlı mı?)
- Player performansı (donma var mı?)
- DeviceProfiler logları
16 Şubat 2026 • Muzibu.com