Обновление Кодов И Их Кеширование

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Доброго дня, Всем.

Что-то тихо стало на форуме)

Есть следующая проблема:
Выполняются какие либо доработки, заливаются в рабочую базу,
и тут сталкиваемся с ситуацией когда код закеширован (наблюдаю такую штуку в 6.5, в 8 такого нету), следовательно новый функционал не работает.
Если обновления были глобальные, то и старый может перестать работать.
Лечится переоткрытие базы/клиента.

кто как с этим борется?
 
A

Akupaka

Обновления надо делать тогда, когда люди не работают с приложением.

Вообще, нотес довольно хитро кеширует код. Обычно, агенты не кешируются. Форма кеширует библиотеки и т.п. Переоткрытие формы обычно сбрасывает этот кеш. Код БД кешируется до закрытия БД.
Если переоткрытие БД не помогает, возможно, проблемы с сетью. Если нотес думает, что связь с сервером не устойчива, то он создает кеш кода в спец базе, и переоткрытие может не сработать. В сложных случаях приходится и иконку с рабочей области удалять или убивать кеш-бд.
 
H

hosm

Akupaka а откуда инфа, что и как кешируется? опыт или это где-то описано? если последнее, укажи ссылку, плз...
 
N

nvyush

Совсем недавно мучился с кэшированием кода java-библиотеки, вызываемой из LS через LS2J. Помогало только переоткрытие Лотоса.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
из админа drop all в таком случае можно попробовать
вроде это то, что надо.
Что при этом дропается? Только текущий коннект пользователя к базе?
База то открыта у него останется, следовательно и кеш тоже, при любом действии пользователя должен выполниться новый коннект по идее.
 
S

susinmn

из админа drop all в таком случае можно попробовать
вроде это то, что надо.

А удаление документов Cache-базы не помогает?
<!--shcode--><pre><code class='avto'>Set dbcache=New NotesDatabase("","cache.ndk")
If dbcache.IsOpen Then
Set coll=dbcache.AllDocuments
Set cachedoc=coll.GetFirstDocument

While Not cachedoc Is Nothing
Set delcachedoc=cachedoc
Set cachedoc=coll.GetNextDocument(cachedoc)
Call delcachedoc.Remove(True)
Wend
End If[/CODE]
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
А удаление документов Cache-базы не помогает?
Да поможет скорее всего, просто сей скрипт не обладает быстротой работы, а реально вешать его придется на больше кол-во действий, что реально затормозить и без того тормозную систему)
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Увы и ах но в данном случае это нереально)
версию 6.5.1 помоему прекрасна еще тем, что если сделать обновление в момент когда юзер в базе, но "кешь" закрепится навсегда и будет горе

и что значит не реально, неужели так тяжело работать не с рабочей базой а шаблоном, который по дефоулту сам в 2 часа ночи всё обновит?
 
A

Akupaka

Увы и ах но в данном случае это нереально)
В лотусе вроде нету штатных средств по "выбросу" пользователей из баз
Обновление приложения - процесс организационный! Проводится в нерабочее время, либо, если критично, то требуется организационно выход всех пользователей из системы.

а реально вешать его придется на больше кол-во действий, что реально затормозить и без того тормозную систему
Какой "вешать"? Этот код необходимо выполнять лишь изредка в совсем критичных случаях! И то, не удалять все документы, а закрыть нотес, убить файл БД cache.ndk, запустить нотес. И этот код не понадобится. А, если уж удалять документы, так не все, а лишь те, которые относятся к конкретному приложению.

версию 6.5.1 помоему прекрасна еще тем, что если сделать обновление в момент когда юзер в базе, но "кешь" закрепится навсегда и будет горе
Никогда не сталкивался с чем-либо подобным в нормальной сети, хотя имели место пару случаев с глюками кеша у "дальних" клиентов, лечилось удалением БД кеша.

Добавлено: OKEN ,
эт по памяти... Возможно про кеш есть в inside notes, я уже не помню.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Да понятно что вопрос организационный, не всегда можно решить, находятся индивиды которые не делают то что просят.
Обновление с шаблона в не рабочее время не решает проблему, т.к. никто не запрещает оставить открытым документ/базу и вне рабочее время.
 
N

nvyush

Обновление с шаблона в не рабочее время не решает проблему, т.к. никто не запрещает оставить открытым документ/базу и вне рабочее время.
Не стоит пытаться решить организационные задачи техническими средствами. Такие проблемы решаются приказом по организации, обязующим пользователей выключать ПК на ночь и предусматривающим санкции за неисполнение. Для проталкивания такого приказа можете указать следующие аргументы: экономия электроэнергии, экономия ресурса ПК/увеличение их сроков эксплуатации, снижение риска возникновения пожара от невыключенных электроприборов.
 

Kizarek86

Green Team
20.07.2007
875
8
BIT
119
Не стоит пытаться решить организационные задачи техническими средствами. Такие проблемы решаются приказом по организации, обязующим пользователей выключать ПК на ночь и предусматривающим санкции за неисполнение. Для проталкивания такого приказа можете указать следующие аргументы: экономия электроэнергии, экономия ресурса ПК/увеличение их сроков эксплуатации, снижение риска возникновения пожара от невыключенных электроприборов.

Да я прекрасно понимаю что этот вопрос нужно решать организационно, но как говорил небезызвестный поручик
"Кто на это согласится, Господа?".

Вообще считаю что нужен функционал по блокировке работы пользователей в системе, в том же 1С неплохая схема, жаль что в Lotus нет такой)
 
N

nvyush

Вообще считаю что нужен функционал по блокировке работы пользователей в системе, в том же 1С неплохая схема, жаль что в Lotus нет такой)
ACL Вам в руки :). Как говорилось в известном фильме, если пользователь не хочет добровольно закрывать БД — "Отключим газ".
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
ну можно проверить - закрывал ли юзер приложение...
например создавать очередь при открытии приложения и убивать её при закрытии
в очереди хранить дату ну и чекать при опред событиях, при надобности - просить закрыть
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
Akupaka это ты про сервер, я про клиент, обрыв коннекта не даст инфы о перезагрузке базы на клиенте
 
A

Akupaka

А, ты имеешь в виду, что БД должна сама проситься закрыться? Понял, вроде...
Но что должно проверяться в конце концов, как определять необходимость переоткрыть БД? Создавать где-то на сервере объект, сигнализирующий необходимость переоткрытия БД, и проверять время его создания и время начала сессии на клиенте?
 
Мы в соцсетях:

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