Replikační konflikty a jejich řešení

Základní

Konflikty při replikaci nebo ukládání jsou něco s čím se v prostředí Lotus Domino / Notes setká dříve nebo později každý administrátor a často i uživatel. Když už to přijde a replikační konflikt se v databázi objeví, měl by ho umět administrátor vyřešit. V ideálním případě by ho měl umět vyřešit i uživatel, ale praxe je bohužel jiná.

Množství nebo pravděpodobnost vzniku replikačních konfliktů záleží v první řadě na tom jak je databáze navržena. Na druhou stranu nic není dokonalé a tak i v sebelepší databázi mohou vzniknout konflikty při replikaci nebo ukládání.

Vznik replikačních konfliktů

Replikační konflikt vznikne v okamžiku, kdy:

  • tentýž dokument v jedné databázi upraví více uživatelů v tom samém okamžiku. Uživatel který ukládá dokument jako druhý, bude dialogem upozorněn na to že došlo k úpravám a zda chce dokument uložit jako replikační konflikt.
  • tentýž dokument je upraven v různých replikách a mezi úpravami nedojde k replikaci.
    Který dokument bude uložen jako hlavní a který jako replikační konflikt pokud se jedná o dokument upravený v různých replikách? Toť otázka. Dlouhou dobu jsem si myslel, že hlavní dokument bude ten, který byl uložen jako poslední. Jak jsem ale zjistil, ne vždy tomu tak je. Vše záleží na poli $Revisions a nastat mohou dva případy:

    • hlavní dokument bude ten, který byl vícekrát upraven a ostatní dokumenty budou jako replikační konflikty.
    • pokud všechny dokumenty mají stejný počet úprav, bude hlavním dokumentem ten, který byl upraven jako poslední a ostatní dokumenty budou jako replikační konflikty.

    Dokument, který je konfliktem je v databázi zobrazen jako odpověď na hlavní dokument a obsahuje pole s názvem $Conflict.

Jak omezit vznik replikačních konfliktů

    Vzniku replikačních konfliktů lze částečně předcházet vhodným návrhem aplikace, kde je ve vlastnostech formuláře možnost nastavit kdy má vzniknout replikační konflikt.

image Create Conflict – při tomto nastavení bude vytvořen replikační konflikt za předpokladu že jeden dokument bude vícekrát upraven v tom stejném čase. Např. dojde k úpravě na lokální replice i na serveru aniž by mezi úpravami byla provedena replikace.

Merge Conflicts – při tomto nastavení bude vytvořen konflikt za předpokladu, že dva uživatelé upraví v jednom dokumentu stejné pole. V případě, že budou upravena různá pole, konflikt nebude vytvořen, respektive dojde k automatickému sloučení.

Merge/No Conflicts – Při tomto nastavení budou případné konflikty vždy sloučeny. V případě že bude upraveno dvakrát jedno pole, bude ve výsledném dokumentu použito pole z hlavního dokumentu.

Do Not Create Conflicts – při tomto nastavení nebudou vytvářeny žádné konflikty, ale ani nebudou dokumenty automaticky slučovány. První z dokumentů bude vybrán pro zachování a druhý bude bez sloučení změn smazaný.

V případě, že v jedné replice bude dokument upraven a v jiné replice bude stejný dokument smazaný, při nejbližší replikaci bude odstraněn i upravený dokument. Smazání dokumentu má přednost před úpravou. Pokud ale bude dokument upraven vícekrát než jednou nebo datum úpravy bude až po smazání, má přednost upravený dokument.

Zamykání dokumentů – je další funkcí, kterou lze využít pro omezení vzniku replikačních konfliktů. Výsledkem je stav, kdy v okamžiku editace dokumentu jedním uživatelem dojde k jeho uzamknutí a není možné aby stejný dokument editoval někdo jiný. Bohužel občas se setkávám s tím, že dokument zůstane uzamčený i po uložení a zavření a je potřeba jej odemknout ručně. Nastavení se provádí ve vlastnostech databáze na kartě Basic zatržením položky Allow document locking.

Řešení replikačních konfliktů

Standardní možnosti Lotus Notes klienta nenabízejí příliš komfortu pro řešení replikačních konfliktů. Abych byl přesný, nemají žádný nástroj, který by odpovědné osobě ulehčil jejich řešení. Jedinou možností je otevřít hlavní dokument a replikační konflikt a pole po poli vizuálně porovnávat zda se pole liší nebo neliší. Řešením potom může být jeden z následujících kroků:

  • hlavní dokument obsahuje správná data – v takovém případě je situace nejjednodušší protože stačí pouze smazat replikační konflikt.
  • replikační konflikt obsahuje správná data – data která jsou změněna oproti hlavnímu dokumentu překopírujeme z replikačního konfliktu do hlavního dokumentu a replikační konflikt smažeme.

V případe, že formulář není příliš rozsáhlý, je tento postup zvládnutelný. Pokud se ale jedná o rozsáhlé formuláře, může být vizuální porovnávání problematické a může dojít k chybám. V takovém případě je možné použít nějaký produkt třetí strany. Jedním z produktů, které pro řešení replikačních konfliktů je možné použít je scanEZ (CZ, EN) od společnosti Ytria (CZ, EN). Použití scanEZ pro řešení replikačních konfliktů se budeme věnovat již brzy v samostatném článku.

4 Comments

  1. Ještě doplním, že pokud replikační konfilkt otevřete pro editaci a znou (beze změn) uložíte, stane se z něj hlavní dokument.
    Pokud replikační konflikt obsahuje správná data, je možno (po jeho přeuložení) původní hlavní dokument smazat.

    [Odpověď]

    MaHa Odpověď:

    Díky za upozornění, na to jsem úplně zapomněl. Jsem si říkal že mě tam něco chybí.

    [Odpověď]

  2. Pingback: Řešení replikačních konfliktů pomocí scanEZ od Ytrie

Leave a comment to FRENKY Click here to cancel reply.