Удаление Документов С Readers-полями При Репликации

Мыш

Премиум
12.02.2008
1 097
10
#1
Все привет. Вот столкнулся недавно с сабжем. Есть 2 реплики на серверах СерверА и СерверБ. Сервер Б оказался ошибочно не указан в полях Readers в некоторых документах. В один прекрасный момент (хз, почему, подозреваю, что почистили хистори), при репликации СерверА<->СерверБ из реплики на СервереБ все эти документы были удалены.
Вот помню, что так, вроде, и должно быть - но нигде толком не могу найти пруфа. Тыкните в доку, плиз, если не сложно.
ЗЫ. Нашел вот такую статью, но тут данный эффект упоминается как бы вскользь... А хотелось бы поподробнее.
ЗЗЫ. Вот тут идет бурное обсуждение - в частности, на фига удалять док-т, если нет deletion stub'а...
 

rinsk

Lotus team
12.11.2009
900
44
#2
Все привет. Вот столкнулся недавно с сабжем. Есть 2 реплики на серверах СерверА и СерверБ. Сервер Б оказался ошибочно не указан в полях Readers в некоторых документах. В один прекрасный момент (хз, почему, подозреваю, что почистили хистори), при репликации СерверА<->СерверБ из реплики на СервереБ все эти документы были удалены.
Вот помню, что так, вроде, и должно быть - но нигде толком не могу найти пруфа. Тыкните в доку, плиз, если не сложно.
ЗЫ. Нашел вот такую статью, но тут данный эффект упоминается как бы вскользь... А хотелось бы поподробнее.
ЗЗЫ. Вот тут идет бурное обсуждение - в частности, на фига удалять док-т, если нет deletion stub'а...
Да - правильно удалены. Что смущает?

И правильно что без стаба - представвь сервер С, который реплицируется и с А и с Б:)
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#3
в кратце так
сервер Б составляет список что он может реплицировать
так как документы в которых он должен был быть указан он не видит, то они в список не попадают
реплицирует доки и стабы
так как доки которые он не видит не попадают не в доки не в стабы они удаляются нафиг
 

Мыш

Премиум
12.02.2008
1 097
10
#4
ToxaRat, спасибо, доходчиво объяснил :)
rinsk, меня вот на чем переклинило (только что сообразил). Если в одной реплике взвести галку "Remove documents not modified...", то Лотус устаревшие документы в ней, как известно, удаляет без stub' ов. Но при этом в других-то репликах эти документы замечательно живут. Вот я и решил чего-то, что с READERS-полями будет то же самое поведение репликатора...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#5
Сервер как и пользователь - если чего-то не видит значит считает что этого нету :)
 
30.05.2006
1 345
11
#6
реплицирует доки и стабы
так как доки которые он не видит не попадают не в доки не в стабы они удаляются нафиг
А вот фиг! Раз он из не видит, то и НЕ ДЕЛАЕТ с ними ничего.

Удаляются они в том случае, если сервер их видит, НО НЕ ДОЛЖЕН (судя по соседней реплике, где они закрыты полем Readers)
 

Baneslaer

Well-known member
25.01.2011
123
0
#7
А вот фиг! Раз он из не видит, то и НЕ ДЕЛАЕТ с ними ничего.

Удаляются они в том случае, если сервер их видит, НО НЕ ДОЛЖЕН (судя по соседней реплике, где они закрыты полем Readers)
Правильнее было бы написать, если их сервер ВИДЕЛ, но в результате отработки агента перестал видеть.
А то видит, но не должен - звучит как странно =)

- Ты суслика видишь?
- Нет!
- Я тоже нет, а он есть! (с)

>> ToxaRat

если бы так все работало, как ты написал, то тогда бы не было понятия частичной репликации доков =)
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#8
холивар какой-то ни о чем.. слепого с хлухим..

при чем тут частичная репликация ?! она возможна при условии что оба сервера видят документ..

во всем этом есть один непроверенный момент, проверьте у кого есть несколько серверов..
например, с сервера А создается реплика на сервер Б, затем сервер Б исключается из ридер-доступа к части документов и производится репликация со стороны сервера А

вот тут интересный момент сервер А видит все документы, но будет ли репликация удалять на сервере Б, те документы, которые он (сервер Б) не должен видеть по изменении ридер-видимости, логично было бы предположить, что сервер А не должен их удалять.. удаление документов должно отрабатываться при репликации со стороны сервера Б (хотя как это будет работать, когда он их не должен видеть :()

проверьте кому не лень этот момент :)
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#9
если бы так все работало, как ты написал, то тогда бы не было понятия частичной репликации доков =)
->при чем тут частичная репликация ?! она возможна при условии что оба сервера видят документ..
+1
частичная репликация если так по правде сказать, несуществует, так как это всё равно полная репликация, но лишь изменение полей и их счетчика изменения - в общем я не вижу разницы между частичной и полной репликацией, на трафике тоже ничего не экономится

во всем этом есть один непроверенный момент, проверьте у кого есть несколько серверов..
например, с сервера А создается реплика на сервер Б, затем сервер Б исключается из ридер-доступа к части документов и производится репликация со стороны сервера А

вот тут интересный момент сервер А видит все документы, но будет ли репликация удалять на сервере Б, те документы, которые он (сервер Б) не должен видеть по изменении ридер-видимости, логично было бы предположить, что сервер А не должен их удалять.. удаление документов должно отрабатываться при репликации со стороны сервера Б (хотя как это будет работать, когда он их не должен видеть sad.gif)
да, можно такие глюки когда все доки переежали на новую реплику а со старой удалялись, но глюки были из-за истории репликации, сейчас всё это починили и удаляются только на реплике инициатора
 

Мыш

Премиум
12.02.2008
1 097
10
#10
проверьте кому не лень этот момент
Все комбинации проверить, конечно, не удалось. При выставлении debug-параметров обнаружилось следующее:

Итак, СерверА и СерверБ, репликация СерверБ <- pull/push -> СерверА.
Создаем док-т на СерверБ (без Readers).
Проходит репликация (док-т пока в обеих репликах).
На СерверБ добавляем в Readers только СерверА.
Проходит репликация (док-т пока в обеих репликах - версии док-та синхронны, так что, видимо, удаления не будет).
Модифицируем док-т на СерверА.
Проходит репликация - док-т удаляется.
Логи с СерверБ:

REPLICA: *** Starting replication
of source database СерверА!!test\testbase.nsf to destination
test/testbase.nsf
Pulling test\testbase.nsf from СерверА test\testbase.nsf
...
REPLICA: ...Skipping note in Destination list (UNID
<UNID нашего дока> SrcNote ID 0x8FA;DestNote ID
0x8FE;Class 0x0001);
REPLICA: ... (con't) Note no longer matches Selective Replication formula

Ну и далее док-т, соббсно, удаляется.

Т.е., выходит, сам СерверБ видит, что у него (в Destination list ведь!) имеется док-т, не соответствующий условиям репликации, и удаляет его...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#11
Т.е., выходит, сам СерверБ видит, что у него (в Destination list ведь!) имеется док-т, не соответствующий условиям репликации, и удаляет его...
что собственно я и писал

есть идея, что это связано со стабами- раз сервер не видит док, хоть он у него и имеется в базе, значит он считает, что это уже стаб, который своё время отжил и должен быть удален полностью (даже стаба не остается)
 

Мыш

Премиум
12.02.2008
1 097
10
#12
В моем случае с полями Readers накосячили разрабы, а начальство кивает на меня - дескать ,вот у тебя с какого-то фига док-ты пропадают.
Поэтому очень хочется найти четкое описание данного явления либо в хелпе, либо в техноте какой-нить. Но пока, кроме косвенных упоминаний, ничего не нашел...:-( Покажу логи с дебагом, мож, поверят...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#13
в истории репликации должно быть указано сколько доков было удалено
 

Мыш

Премиум
12.02.2008
1 097
10
#14
в истории репликации должно быть указано сколько доков было удалено
Дык в логах репликации есть сведения об удалении - но нет описания причины, по которой док-ты удалялись (если дебаг не включить). Итог - начальство делает вывод, что "документы пропали"... ;)
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#15
Дык в логах репликации есть сведения об удалении - но нет описания причины, по которой док-ты удалялись (если дебаг не включить). Итог - начальство делает вывод, что "документы пропали"... ;)
ну ты как админ должна всего лишь рапортовать, что вот вам логи что доки были удалены, а причины к админам

иначе так можно опуститься до выявления какая конкретно строчка кода явилась причиной удаления, а этом уже за рамки админства выходит

проще сказать, кто-то что-то напортачил и доки были удалены
- почему удалены
- не знаю, разработчики не создали механизма логирования удаления и обьяснения причин

как то так ;)
 

Мыш

Премиум
12.02.2008
1 097
10
#16
У нас в косяках разрабов, в основном, виноват админ, так уж сложилось :)
А если копнуть глобальнее, вся проблема сводится к старинной недоработке индусов - нельзя быстро и легко посмотреть, по какой причине и кем был удален док-т... Я знаю, что в новых версиях в User Activity добавили некоторую информацию, но, все равно, полной прозрачности нет...
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#17
У нас в косяках разрабов, в основном, виноват админ, так уж сложилось :)
А если копнуть глобальнее, вся проблема сводится к старинной недоработке индусов - нельзя быстро и легко посмотреть, по какой причине и кем был удален док-т... Я знаю, что в новых версиях в User Activity добавили некоторую информацию, но, все равно, полной прозрачности нет...
Индусы то как виноваты?
тут свой обработчик всё прекрасно решает и лог можно создать и указать кто нажал и из какого вида и т.д.

а так получается в стандартном обработчике удаления выводить диалог: а какова причина удаления? ;) и так для каждого дока? ;)
 

Мыш

Премиум
12.02.2008
1 097
10
#18
Тут свой обработчик всё прекрасно решает
Свой обработчик решает только для пользовательских удалений - а это не мой случай, т.к. док-ты удалила серверная задача. Вот поэтому и индусы...Могу хук, конечно, написать и отслеживать самостоятельно, но причину удаления серверной задачей и он не сможет объяснить. В идеале хочу видеть такие записи в логе:

Процесс Amgr удалил док-т <UNID> из базы <имя базы> по причине "Выполнение агента <Имя агента> в базе <имя базы>". (Да, для своих агентов я сам логи пишу - а если есть готовая система с закрытым кодом?)
Процесс Replica удалил док-т <UNID> из базы <имя базы> по причине "Note no longer matches Selective Replication formula"".

Я думаю, не я один хочу такое... ;)
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#19
ну для агентов такой обработчик тоже не проблема написать с полным логированием ;)
 

VladSh

начинающий
Lotus team
11.12.2009
1 262
6
#20
На СерверБ добавляем в Readers только СерверА.
Проходит репликация (док-т пока в обеих репликах - версии док-та синхронны, так что, видимо, удаления не будет).
Модифицируем док-т на СерверА.
Проходит репликация - док-т удаляется.
Не понял, как это "Модифицируем док-т на СерверА", если выше и так был установлен СерверА?