• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

Kizarek86

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

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

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

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

Вообще, нотес довольно хитро кеширует код. Обычно, агенты не кешируются. Форма кеширует библиотеки и т.п. Переоткрытие формы обычно сбрасывает этот кеш. Код БД кешируется до закрытия БД.
Если переоткрытие БД не помогает, возможно, проблемы с сетью. Если нотес думает, что связь с сервером не устойчива, то он создает кеш кода в спец базе, и переоткрытие может не сработать. В сложных случаях приходится и иконку с рабочей области удалять или убивать кеш-бд.
 
Akupaka а откуда инфа, что и как кешируется? опыт или это где-то описано? если последнее, укажи ссылку, плз...
 
Совсем недавно мучился с кэшированием кода java-библиотеки, вызываемой из LS через LS2J. Помогало только переоткрытие Лотоса.
 
из админа drop all в таком случае можно попробовать
вроде это то, что надо.
Что при этом дропается? Только текущий коннект пользователя к базе?
База то открыта у него останется, следовательно и кеш тоже, при любом действии пользователя должен выполниться новый коннект по идее.
 
из админа 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]
 
А удаление документов Cache-базы не помогает?
Да поможет скорее всего, просто сей скрипт не обладает быстротой работы, а реально вешать его придется на больше кол-во действий, что реально затормозить и без того тормозную систему)
 
Увы и ах но в данном случае это нереально)
версию 6.5.1 помоему прекрасна еще тем, что если сделать обновление в момент когда юзер в базе, но "кешь" закрепится навсегда и будет горе

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

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

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

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

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

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы