DokumentaceŘešení konfliktů

Ř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
Aplikace to neřeší automatickým slučováním. Řeší to předvídatelným pravidlem a v nejednoznačných případech se ptá.

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:

  1. Nejdřív podle syncId, pokud ho obě strany mají
  2. Pak podle klíče složeného z názvu, interpreta a varianty
Pokud píseň najde, otevře svoji vlastní verzi. Přijatá data ji nepřepíšou.

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:

VolbaVýsledek
Nechat můjPřijatý setlist se zahodí
Vzít od leaderaLokální setlist se nahradí verzí od leadera

Bez tvého rozhodnutí se nezmění nic.

Chybějící obsah

Píseň, kterou v knihovně nemáš, se řeší nastavením Stahovat chybějící písně automaticky (výchozí: zapnuto):
  • 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ě
Přílohy (PDF, MusicXML, obrázky) se nikdy nestahují automaticky — vždy je musíš vyžádat. Pokud je nemá ani leader, aplikace se zeptá ostatních členů; jejich zařízení si pak vyžádá svolení sdílet.

Výpadek spojení

Když spojení spadne, člen se pokouší připojit zpět podle rostoucího rozpisu:

text
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:

ChybaCo znamená
Nepodařilo se zjistit IP adresuZaří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é hesloPIN relace nesouhlasí
Připojení selhalo/join neprošel
Neplatná odpověď serveruNa druhé straně neodpovídá Eutepio
Leader se odpojilSpojení ukončil leader
Opětovné připojení selhaloVyčerpány všechny pokusy
Neplatný QR kódKód není párovací odkaz Eutepia

Známá omezení

Setlist nemá vlastní trvalý identifikátor. Páruje se jen podle názvu a data akce, takže přejmenování setlistu na jednom zařízení způsobí, že na druhém po synchronizaci vznikne duplicita místo aktualizace.

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.