Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Replikacja - pomocy... Może ktoś ma jakiś pomysł?

Mam problem zktórym nie potrafię sobie poradzić. Może ktoś z koleżanek i kolegów miał coś takiego, albo wie co to może być.
Mam dość dużą (ok 4GB, 250 tys. dokumentów) i rozbudowaną (100 formularzy, 500 widoków w 6 językach) aplikację.
Z nieznanych powdów zniknęło mi kilkaset dokumentów. Możliwe, że ktoś usunął na tyle sprytnie, że nie zostawił śladu. Nieważne.
Ze starszej bazy przeniosłem brakujące dokumenty do lokalnej repliki (agentem, używając doc.CopyToDatabase(db)). Po zreplikowaniu z serwerem dokumenty te nie są widoczne na serwerze i znikają z lokalnej repliki.
Zmieniłem agenta i kopiowałem dokumenty bezpośrednio do repliki na serwerze. Dokumenty są widoczne w tej bazie, nie replikują się jednak nigdzie indziej. Nie replikują się nawet na drugi serwer działający w klastrze.
Żeby było jeszcze dziwniej utworzyłem nową replikę bazy z serwera na stacji lokalnej. Replika ta nie zawiera dokumentów dokopiowanych. Czyli utworzenie nowej repliki nie kopiuje całej bazy!
Oczywiście historię replikacji czyściłem po i przed każdym krokiem, dokumenty są widoczne więc to nie problem uprawnień. Uprawnienia do dokumentów ustawiane są polem typu Readers, w którym to polu wymieniane są role z ACLa.
Wszystkie serwery są 7.0.3 FP1, stacja LN 7.0.2.

Ktoś ma jakiś pomysł?

konto usunięte

Temat: Replikacja - pomocy... Może ktoś ma jakiś pomysł?

Tomku, piszesz że z polami READERS jest wszystko ok ale zrób prosty test, porównaj ile jest dokumentów w bazach i wtedy będzie można na 100% wykluczyć błąd z polami READERS, chociaż w sytuacji którą opisujesz nie masz za bardzo z czym porównać aktualnej bazy bo posiadasz starszą wersję. Przy okazji natknąłem się na coś takiego:

http://www-01.ibm.com/support/docview.wss?uid=swg21096316

Być może to ci pomoże. Spróbuj jeśli masz taką możliwość, zaznaczyć w starszej bazie dokumentu na widoku, skopiuj je ręcznie przez CTRL_C
CRTL_V i sprawdź jak wykona się replikacja. Na koniec co do ginięcia dokumentów spotkałem się kiedyś z przypadkiem, że zginęło kilka dokumentów z names.nsf. Po przejrzeniu logów okazało się nikt przy bazie nie grzebał i uznaliśmy, że nastąpił jakiś błąd przy replikacji :/, na szczęście był wykonywany backup :)
Marcin Stępień

Marcin Stępień inżynier
oprogramowania |
przedsiębiorca

Temat: Replikacja - pomocy... Może ktoś ma jakiś pomysł?

Tomku, co udało się Tobie dodatkowo ustalić od czasu wykrycia błędu?
Osobiście nie spotkałem się z podobnymi objawami, ale czasami niewyjaśnione zachowanie aplikacji wynikało z sytuacji kiedy różnice w prawach odczytu do "design elements" w szablonie developerskim/testowym powodują ich ukrycie(szczególnie w przypadku kiedy kopiejesz elementy designu pomiędzy szablonami)
i w efekcie aplikacja wykonuje inny kod na innych formularzach niż się tego spodziewasz i widzisz w designie.
Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Replikacja - pomocy... Może ktoś ma jakiś pomysł?

W sumie nie mam do dziś pojęcia na czym polegał problem. Dodam jeszcze, że wymuszenie replikacji między serwerami z konsoli spowodowało ponowne zniknięcie dokumentów skopiowanych do bazy na
serwerze.
Dodam jeszcze, że wygląda na to, że ma to związek ze zdublowanymi UNIDami dokumentów opisanymi w linku zamieszconym przez kol. Roberta. Dokumenty były traktowane przez system jako stare i przez to coś złego się z nimi działo w trakcie replikacji. Co dokładnie, tego nie wiem.

W międzyczasie poradziłem sobie inaczej. Pomogło zamiast doc.CopyToDatabase(db) tworzenie nowego dokumentu i kopiowanie wszystkich elementów do nowego dokumentu przez
ForAll i in doc.Items
If Left(i.Name, 1) <>"$" Then Set newItem=i.CopyItemToDocument(
newDoc, i.Name )
End Forall

To spowodowało utworzenie nowego dokumentu. A on już zachowywał
się normalnie przy replikacji.

Poza tym Panowie, odrobina zaufania do mnie, proszę:). Programowaniem w Notesach zajmuję się już blisko 12 lat, jak mówię, że pola Readers są OK to są:).Tomasz Frydryk edytował(a) ten post dnia 31.07.09 o godzinie 16:03
Marcin Kratiuk

Marcin Kratiuk IT Manager, Ricoh
Polska Sp. z o.o.

Temat: Replikacja - pomocy... Może ktoś ma jakiś pomysł?

To co mi jeszcze przychodzi do głowy:

Deletion Stub - zapisywane sa tam znaczniki o tym które dokumenty zostały usunięte. Jeżeli usuniesz to z bazy danych (są jakieś narzędzia do tego) to wtedy dokuemnty z innych replik mogą zacząć się same pojawiać w bazie. Ale tutaj było na odwrót.

Miałem kiedyś problem z synchronizacją czasu. Ktoś utworzył dokumenty z datą z przyszłości i dokumenty te nie pokazywały się w replikach. Dopiero wejście w każdy z tych dokumentów i zapisanie go ponowne (zmiana daty modifikacji) pomagała.
Tomasz Frydryk

Tomasz Frydryk Właściciel, Domino
Solutions

Temat: Replikacja - pomocy... Może ktoś ma jakiś pomysł?

Marcin Kratiuk:
To co mi jeszcze przychodzi do głowy:
Deletion Stub - zapisywane sa tam znaczniki o tym które dokumenty zostały usunięte. Jeżeli usuniesz to z bazy danych (są jakieś
narzędzia do tego) to wtedy dokuemnty z innych replik mogą zacząć się same pojawiać w bazie. Ale tutaj było na odwrót.

Miałem kiedyś problem z synchronizacją czasu. Ktoś utworzył dokumenty z datą z przyszłości i dokumenty te nie pokazywały się w replikach. Dopiero wejście w każdy z tych dokumentów i zapisanie go ponowne (zmiana daty modifikacji) pomagała.

Napisałem: "Poza tym Panowie, odrobina zaufania do mnie, proszę:). Programowaniem w Notesach zajmuję się już blisko 12 lat....." :))

Deletion stubs najprościej usunąć zmieniając opcje replikacji.Na zakładce SpaceSavers jest pole Remove documents not modified in last 90 days. Nawet jeśli opcja ta jest odznaczona, to wartość w tym polu podana, domyślnie 90 dni, określa jak długo trzymane są w bazie deletion stubs.
Problemy z datą pojawiają się czasami, jeśli ktoś ustawi sobie datę systemową na przyszłość, wykona replikację i ponownie przestawi datę na normalną. Wówczas do replikacji nie są wybierane dokumenty utworzone/zmodyfikowane przed datą ostatniej replikacji. A że ona jest zapamiętana z przyszłości, to nic się nie replikuje. Pomaga wyczyszczenie historii replikacji.
Ale to nie był ten problem. Nadal nie wiem co było przyczyną, ale wpływ na takie dziwne efekty mogło mieć przeniesienie serwerów na inne maszyny. Może w trakcie tego przenoszenia np. między przeniesieniem jednego serwera w klastrze a drugiego, coś w magiczny sposób się rozjechało? Może w trakcie migracji na backend w DB2? Pewnie się już nigdy nie dowiem.



Wyślij zaproszenie do