The Document Is Already Locked By Someone Else.

  • Автор темы fedotxxl
  • Дата начала
F

fedotxxl

Есть агент, который исполняется на сервере. Блокирую документ пользователем ns.username. Пытаюсь сохранить документ nd.save и получаю ошибку " Notes error: The document is already locked by someone else.". Перепроверил - ns.username и заблокировавший пользователь совпадают. В чем логика?
 
T

turumbay

Есть агент, который исполняется на сервере. Блокирую документ пользователем ns.username. Пытаюсь сохранить документ nd.save и получаю ошибку " Notes error: The document is already locked by someone else.". Перепроверил - ns.username и заблокировавший пользователь совпадают. В чем логика?
effectiveUserName совпадает с userName?
зачем блокируем ns.userName, а не обычным lock() без параметров?
вызов lock возвращает true?

не открыт ли этот же документ где-нить в UI на редактирование? есть крайне неприятная штука под названием link removed, способная на дикие фокусы.
 
F

fedotxxl

VladSh
Две разные проблемы. Вчитайтесь

turumbay
Нет, effectiveUserName не совпадает с userName. Документ точно не открыт на ui, точно блокируется корректно. Передавать userName вынуждает бизнес логика

Может быть кто встречался с данной проблемой?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
233
fedotxxl
Зато ответ один. Только вдумайтесь!

P.S. Из моей БЗ, м.б. поможет:
Err=4000
...
8. "Notes error: Документ заблокирован другим пользователем" (The document is already locked by someone else).
Варианты при notesDocument.UnLock():
а). Когда производится разблокировка нового, только что созданного, документа;
б). При одновременном использовании Soft (EditMode) у одного пользователя и Hadr Lock (Not EditMode) у другого. У 1-го возникает такая ошибка, но изменения сохраняются. У 2-го пользователя документ в BackEnd не сохраняется...
в). Если поля прописывались вручную (ReplaceItemValue) и в базе не включена блокировка (Hard Locking и Master Lock Server); свойство документа LockHolders в этом случае содержит пустой массив. Просто удалять эти поля вручную.
При попытке сохранения (NotesDocument.Save(False, False)) только что заблокированного документа, пользователем, не входящим в список заблокировавших документ (текущий пользователь, блокируя, прописывал не своё имя (не ns.effectiveUserName) во $Writers).
 
T

turumbay

Нет, effectiveUserName не совпадает с userName...
ну дык елы-палы (с)
Модификация идет от имени effectiveUserName, а локхолдер - userName.
Если документ заблокирован Васей, то логично послать Петю при попытке изменения этого документа.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!