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

Тема в разделе "Lotus - Программирование", создана пользователем Zeka, 30 мар 2011.

  1. Zeka

    Zeka Well-Known Member

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

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

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

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

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Возможно в какой-то из реплик документы изменяются после удаления поля на центральном сервере? Посмотрите поле $Revisions.
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
  4. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Изменять это поле больше как бы и некому. К тому же поле появляется после удаления в одних и тех же 260 доках. Но самое удивительное, что если поле не удалять, а вписывать в него путой стринг, то оно нормально сохраняется!

    Нее, другая база на другом сервере...
     
  5. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Ну наверное репликация так работает?)
    Если поля нету в одном из документов, то добавляет его.
    Чего тут копать то? Обнуляй значит поле вместо удаления, или удаляй во всех репликах.
     
  6. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Почему в других 9600 документах поле прекрасно удалилось с первой попытки? Разницы между документами пока не могу найти.

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

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

    nayke Well-Known Member

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

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

    вы правы. Возможно поможет
     
  8. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Тихо шифером шурша едет крыша у меня....

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

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

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


    Респонсов и парентов нет.
    $ConflictAction - Merge/No conflicts.
    $Conflict - соответственно взяться неоткуда.

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

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    а время модификации - Initially и In this file на обеих серверах посмотреть, чтоб определить, какой сервер модифицирует?

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    а поискать задублированную базу - нет желания? ;)
    и может быть создавали, базу из шаблона, файловым копированием и как резалт - дублировалась реплика
     
  11. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Была похожая проблема. Дата модификации документа в первой реплике была позже, чем во второй, а Seq Num — меньше. Не помню точно, в чём выражалась проблема, но вылечилось только после многократной модификации полей в поздней версии документа, чтобы Seq Num тоже стало больше.
     
  12. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Так и не удалось понять, откуда восстанавливаются удалённые поля.
    Пришлось сделать как советовал kizarek - удалить поле во всех репликах.
    Поля пропали...
     
  13. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    На сколько я понимаю, все правильно работает.
    Дата исправления документа на центральном сервере позже последней репликации, соотв, документ будет реплицироваться при следующей.
    При репликации сервер сравнивает документы в обеих репликах, и выясняет, что разница лишь в поле, которе присутствует в одной из реплик, а во второй отсутствует. Сервер объединяет документы. Если же поле не удалять, а очищать, то изменяется его признак SeqNum, который указывает порядок изменений. И в очищенном поле этот признак будет приоритетнее, и поле будет очищено во второй реплике также.

    Когда ты делаешь ПУЛ, то сервер спрашивает у второго: "что ты можешь мне предложить?". А второй понятия не имеет, что на первом правились документы, он отдает лишь те, которые правились у него после последней репликации.
    Когда делаешь ПУШ, то выбираются документы измененные на этом сервере после последней репликации. И запихиваются на второй сервер.

    Читай "Inside Notes"
     
Загрузка...
Похожие Темы - Восстанавливаются удалённые поля
  1. nayke
    Ответов:
    23
    Просмотров:
    7.614
  2. Omh
    Ответов:
    8
    Просмотров:
    3.730
  3. M00N
    Ответов:
    5
    Просмотров:
    1.602
  4. Renat11111
    Ответов:
    1
    Просмотров:
    1.626
  5. Medevic
    Ответов:
    3
    Просмотров:
    3.102

Поделиться этой страницей