Восстанавливаются удалённые поля

Zeka

Well-known member
01.09.2009
219
0
#1
Есть центральный сервер и 10 филиалов с репликами.
На центрадьнов сервере запустил агента, который в 10000 документах удалил поле (FIELD f1 := @DeleteField).
Через какое-то время (5-10 мин.) появилось 260 документов с полем f1.
На этих 260 документах опять запустил агента, который это поле опять удалил.
Через какое-то время эти поля востановились!!!! В тех же самы 260 документах. Запустил агента ещё раз - поля пропали и через какое-то время опять появились!

Попробывал выключить репликацию - удалённые поля не восстанавливаются. Как только репликацию включаю - поле появляется в тех же самых 260 документах!

После этого написал нового агента, который присваевает ненужному полю пустое значение - (FIELD f1 := ""). Всё ок, поле сохраняется и старое значение не восстанавливается!!!

Кто-нибудь сталкивался с подобным? Куда копать?
 

nayke

Well-known member
04.08.2010
310
0
#2
Есть центральный сервер и 10 филиалов с репликами.
На центрадьнов сервере запускаю агента, который в 10000 документах удаляет поле (FIELD f1 := @DeleteField).
Через какое-то время (5-10 мин.) появилось 260 документов с этим полем.
На этих 260 документах опять запустил агента, который удалил ненужное поле.
Через какое-то время эти поля востановились!!!! В тех же самы 260 документах. Запустил агента ещё раз - поля пропали и через какое-то время опять появились!

Попробывал выключить репликацию - удалённые поля не восстанавливаются. Как только репликацию включаю - поле появляется в этих же 260 документах!

После этого написал нового агента, который присваевает ненужному полю пустое значение - (FIELD f1 := ""). Всё ок, поле сохраняется и старое значение не восстанавливается!!!

Кто-нибудь сталкивался с подобным? Куда копать?
Возможно в какой-то из реплик документы изменяются после удаления поля на центральном сервере? Посмотрите поле $Revisions.
 

Zeka

Well-known member
01.09.2009
219
0
#4
Возможно в какой-то из реплик документы изменяются после удаления поля на центральном сервере? Посмотрите поле $Revisions.
Изменять это поле больше как бы и некому. К тому же поле появляется после удаления в одних и тех же 260 доках. Но самое удивительное, что если поле не удалять, а вписывать в него путой стринг, то оно нормально сохраняется!

Не отсюда ли у проблемы ноги растут ?
База и её реплика на одном сервере
Нее, другая база на другом сервере...
 

Kizarek86

Lotus team
20.07.2007
864
4
#5
Ну наверное репликация так работает?)
Если поля нету в одном из документов, то добавляет его.
Чего тут копать то? Обнуляй значит поле вместо удаления, или удаляй во всех репликах.
 

Zeka

Well-known member
01.09.2009
219
0
#6
Ну наверное репликация так работает?)
Если поля нету в одном из документов, то добавляет его.
Чего тут копать то? Обнуляй значит поле вместо удаления, или удаляй во всех репликах.
Почему в других 9600 документах поле прекрасно удалилось с первой попытки? Разницы между документами пока не могу найти.

Если поля нету в одном из документов, то добавляет его.
Это если поля ранее не было ни в одной реплике, то при появлении поля в одной из реплик, оно появится и в других.
А если поле удаляешь в одной из реплик, то, я так понимаю, оно должно удалиться и в других. Ведь не зря для удаления поля используется такая конструкция: FIELD f1 := @DeleteField
Я так подозреваю, с полями как и с документами создаётся какой-то Deletion Stub.

Или мои догадки ошибочны?
 

nayke

Well-known member
04.08.2010
310
0
#7
Почему в других 9600 документах поле прекрасно удалилось с первой попытки? Разницы между документами пока не могу найти.
Если проблема убирается при отключении репликации значит документы 100% подтягиваются из другой реплики. попробуйте сравнить документы после прохода агентом и документы в этой реплике. особенно уделите внимание полям $Revisions, LastModified, $Conflict, $ConflictAction.

Также обратите внимание на наличие респонсов(или парентов) возможно у данных 260 документов(восстанавливающихся) они есть а у остальных нет(которые отрабатывают нормально).

Это если поля ранее не было ни в одной реплике, то при появлении поля в одной из реплик, оно появится и в других.
А если поле удаляешь в одной из реплик, то, я так понимаю, оно должно удалиться и в других
вы правы. Возможно поможет
 

Zeka

Well-known member
01.09.2009
219
0
#8
Тихо шифером шурша едет крыша у меня....

В администраторе остановил репликайшин таск. В неродимых 260 документах удалил ненужное поле. Поле пропало и не востанавливается.
Открыл администратор и сделал PULL из одного филиала. Удалённые поля НЕ востановились.
Далее сделал PUSH с центрального сервера в филиал. Открыв вьюв с документами и жмакая F9 пока идёт PUSH наблюдал, как УДАЛЁННОЕ ПОЛЕ ВОССТАНАВЛИВАЕТСЯ!!!
Я не опечатался. Удалённое поле восстанавливается во время отдачи данных.

Connection документ описан на центральном сервере. Т.е. на том же сервере, на котором я делал ПУШ и ПУЛЛ.
Не важно с каким из филиалов проходит репликация - поведение идентичное.

Куда копать дальше?


Если проблема убирается при отключении репликации значит документы 100% подтягиваются из другой реплики. попробуйте сравнить документы после прохода агентом и документы в этой реплике. особенно уделите внимание полям $Revisions, LastModified, $Conflict, $ConflictAction.

Также обратите внимание на наличие респонсов(или парентов) возможно у данных 260 документов(восстанавливающихся) они есть а у остальных нет(которые отрабатывают нормально).
[/url]
Респонсов и парентов нет.
$ConflictAction - Merge/No conflicts.
$Conflict - соответственно взяться неоткуда.

А вот с $Revisions, LastModified - непонятно.
Запускаю агента - время последнего изменения 20:05:19.
Жду 10 минут - время последнего изменения всё то же - 20:05:19.
Запускаю ПУШ (Только ПУШ. Документы только отсылаются в филиал!). Проходит репликация - время последнего изменения стабильно увеличивается на 3-4 секунды - 20:05:23. Хотя реально прошло уже больше 10 мин.
 

hosm

* so what *
18.05.2009
2 442
6
#9
а время модификации - Initially и In this file на обеих серверах посмотреть, чтоб определить, какой сервер модифицирует?

Добавлено: еще SN - у документа и Seq Num у поля посмотреть можно
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#10
а поискать задублированную базу - нет желания? ;)
и может быть создавали, базу из шаблона, файловым копированием и как резалт - дублировалась реплика
 

nvyush

Lotus team
22.04.2009
2 317
0
#11
Добавлено: еще SN - у документа и Seq Num у поля посмотреть можно
Была похожая проблема. Дата модификации документа в первой реплике была позже, чем во второй, а Seq Num — меньше. Не помню точно, в чём выражалась проблема, но вылечилось только после многократной модификации полей в поздней версии документа, чтобы Seq Num тоже стало больше.
 

Zeka

Well-known member
01.09.2009
219
0
#12
Ну наверное репликация так работает?)
Если поля нету в одном из документов, то добавляет его.
Чего тут копать то? Обнуляй значит поле вместо удаления, или удаляй во всех репликах.
Так и не удалось понять, откуда восстанавливаются удалённые поля.
Пришлось сделать как советовал kizarek - удалить поле во всех репликах.
Поля пропали...
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#13
На сколько я понимаю, все правильно работает.
Дата исправления документа на центральном сервере позже последней репликации, соотв, документ будет реплицироваться при следующей.
При репликации сервер сравнивает документы в обеих репликах, и выясняет, что разница лишь в поле, которе присутствует в одной из реплик, а во второй отсутствует. Сервер объединяет документы. Если же поле не удалять, а очищать, то изменяется его признак SeqNum, который указывает порядок изменений. И в очищенном поле этот признак будет приоритетнее, и поле будет очищено во второй реплике также.

Открыл администратор и сделал PULL из одного филиала. Удалённые поля НЕ востановились.
Далее сделал PUSH с центрального сервера в филиал. Открыв вьюв с документами и жмакая F9 пока идёт PUSH наблюдал, как УДАЛЁННОЕ ПОЛЕ ВОССТАНАВЛИВАЕТСЯ!!!
Я не опечатался. Удалённое поле восстанавливается во время отдачи данных.
Когда ты делаешь ПУЛ, то сервер спрашивает у второго: "что ты можешь мне предложить?". А второй понятия не имеет, что на первом правились документы, он отдает лишь те, которые правились у него после последней репликации.
Когда делаешь ПУШ, то выбираются документы измененные на этом сервере после последней репликации. И запихиваются на второй сервер.

Читай "Inside Notes"