Řešení konfliktů
Každé zařízení má vlastní úplnou knihovnu. Když se dvě takové knihovny potkají v jedné relaci, musí být jasné, kdo má pravdu.
Proč konflikty vznikají
Typické situace:
- Píseň má někdo doma upravenou, jiný ji má v původním znění
- Dva lidé přidali stejnou píseň nezávisle a mírně odlišně
- Setlist se přejmenoval jen na jednom zařízení
- Někdo byl při úpravách offline
Písně: vyhrává tvoje kopie
Když leader přepne na píseň, členovi se nepošle text k zobrazení — pošle se identifikace písně. Člen ji spáruje s vlastní knihovnou:
- Nejdřív podle
syncId, pokud ho obě strany mají - Pak podle klíče složeného z názvu, interpreta a varianty
Tomuhle pravidlu se říká „local wins". Znamená, že tvoje úpravy textu, tvoje transpozice ani tvoje poznámky nikdy nezmizí jen proto, že leader přepnul píseň.
Sdílená pole se přepíšou pouze tehdy, když si o to sám řekneš — buď explicitním sloučením s verzí od leadera, nebo importem jako nové kopie. Aplikace kromě toho hlásí zpět, jakou verzi písně máš, takže leader vidí, že u někoho je píseň starší.
Co se nikdy nepřepíše
Osobní pole v přenášeném balíčku vůbec nejsou — nemají jak být přepsána:
- osobní poznámky
- transpozice akordů i MusicXML
- velikost písma a rychlosti autoscrollu
- výchozí režim zobrazení a nastavení PDF
- ruční anotace
Setlisty: rozhoduje uživatel
U setlistů se pravidlo „local wins" nepoužívá, protože setlist je pracovní dokument celé kapely. Když přijde setlist, který se shoduje s existujícím, zobrazí se dialog s volbou:
| Volba | Výsledek |
|---|---|
| Nechat můj | Přijatý setlist se zahodí |
| Vzít od leadera | Lokální setlist se nahradí verzí od leadera |
Bez tvého rozhodnutí se nezmění nic.
Chybějící obsah
- Zapnuto — člen si píseň vyžádá sám a dostane její sdílená pole
- Vypnuto — objeví se tlačítko, kterým si stažení vyžádáš ručně
Výpadek spojení
Když spojení spadne, člen se pokouší připojit zpět podle rostoucího rozpisu:
1 s → 2 s → 4 s → 8 s → 16 s → 32 s → 60 s → 60 s → 60 s → 60 s
Po vyčerpání všech pokusů se opětovné připojování zastaví a zobrazí se chyba. Připojit se dá pak znovu ručně.
Další chování při výpadku:
- Návrat z pozadí — po probuzení aplikace ověří vlastní IP adresu i stav spojení, protože telefon mohl mezitím přeskočit na jinou síť
- Rozdělaný přenos — když se spojení ztratí uprostřed stahování přílohy, přenos se zruší a nezůstane po něm poškozený soubor
- Vyhození leaderem — člen dostane jasnou zprávu a rozdělané přenosy se uklidí
Leader výpadek jednoho člena nijak nezasáhne. Hraje dál, člen ze seznamu zmizí po 25 sekundách ticha a po opětovném připojení se vrátí.
Chybové stavy
Synchronizace pracuje s pojmenovanými chybami, takže hláška ti řekne, co se pokazilo:
| Chyba | Co znamená |
|---|---|
| Nepodařilo se zjistit IP adresu | Zařízení nemá použitelnou adresu v lokální síti |
| Port je obsazený | Ani jeden z portů 8765–8769 nešel obsadit |
| Relace je plná | Leader už má 50 členů |
| Špatné heslo | PIN relace nesouhlasí |
| Připojení selhalo | /join neprošel |
| Neplatná odpověď serveru | Na druhé straně neodpovídá Eutepio |
| Leader se odpojil | Spojení ukončil leader |
| Opětovné připojení selhalo | Vyčerpány všechny pokusy |
| Neplatný QR kód | Kód není párovací odkaz Eutepia |
Známá omezení
Dále:
- Neexistuje historie verzí. Když sdílená pole přepíšeš verzí od leadera, předchozí obsah je pryč. Jedinou pojistkou je záloha.
- Mazání je měkké, ale nešíří se. Smazaná píseň zůstane v databázi označená jako smazaná; smazání se ale nesynchronizuje na ostatní zařízení.
- Sloučení dvou různě upravených textů neexistuje. Buď si necháš svůj, nebo vezmeš cizí — nic mezi tím.