• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Глюки дизайна БД

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

hosm

Lotus Notes 6.5.4 & Domino 6.5.6FP3, есть БД, шаблоны которой реплицируются по расписанию по крайней мере между 3мя серверами + на каждом сервере есть рабочие базы, созданные по данному шаблону и обновляемые по расписанию (и переподписываемые программно после обновления агенты и либы) или через рефреш дизайн с сервера (переподписывается вся БД через домино администратор).

Периодически на рабочей БД всплывают глюки: выполняется код, который был ранее, но сейчас в БД отсутствует, выдает какие-то ошибки и т.п. похоже, последнее время проблема проявляется после сбоя репликации по расписанию (причины: проблемы с сетью, выключение сервера) или при недоступности сервера после включения сервера.

Замечено по крайней мере на одном-двух элементах дизайна (LS-агент, форма), исчезает после пересохранения этого элемента в дизайнере (т.к. Recompile All LS нельзя применить - требование заказчика). CIAO не используется, периодически делается бекапное копирование БД на локал (через New Copy) или может быть сделана репликация шаблона БД на локал (в принципе, коллега может сделать репликацию и с локала на свой сервер).
На сервере другой копии шаблона нет. Иногда шаблон реплицируют между серверами не по расписанию - каким образом не знаю, теоретически есть шанс, что из клиента, а не консольной командой.

Кто сталкивался, что смотреть, как лучше протестить-починить?
Не могу понять, глюки это клиента лотус (маловероятно, заметила, что воспроизводится не на одном компе) или какие-то проблемы с элементами дизайна в БД, т.е. какие-то конфликты-сбои при репликации - может быть, конфликты при репликации или из-за репликации с локальным шаблоном (но ее делаю не я и уточнить пока не могу), какие-то глюки программного переподписания эл-тов дизайна.
Есть вероятность, что глючит обновление кода на элементах, использующих LS-библиотеки (формы, агенты) при изменении либы.

Если элемент дизайна изменялся на 2х репликах, то как сработает репликатор в данном случае?
Я считала, что более ранее по дате изменение кода затирается более новым (т.е. старый эл-т удаляется), могу быть не права (за несколько месяцев работы "раздвоение" элементов дизайна было только раз или два, если элемент дизайна удалялся и перевставлялся в шаблон из БД, но это было давно, и на другом элементе дизайна- вьюха или какая-то либа)
 
A

Akupaka

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

hosm

1. нет, форма не хранится, хотя св-во БД позволяет хранить форму. Дело не в ней.
2. вот как-то не получается, последнее время агенты глючат, а они переподписываются.
для наследуемых эл-тов дизайна на наших серверах нет шаблонов, т.е. они обновляются разработчиком (скорее всего - методом удалил, скопировал - вставил). Глюки не на них, но теоретически могут быть из-за правок в них.
3. непонятно, от этого не помогает. Скорее всего, всё-таки ошибка привязана к серверу - в нашей подсети если ошибка есть, она есть на нескольких компах (т.е. у всех), но в другой подсети может сейчас не быть (т.е. было так, что она была, но уже была исправлена коллегой несколько дней назад, если верить на слово). В том числе и поэтому предположила, что какие-то траблы с репликацией.
Возможно в шаблоне необходимо в верной последовательности пересохранить цепочку эл-тов в порядке использования.
Возможно. Я не держу в голове всё дерево юзанья либ - кстати, я забыла упомянуть про такую прелесть, что либа может использоваться явно или через другие либы - это у нас есть.
можно ли это как-то автоматизировать? встречал что-то готовое?
помню утилиту построения уровней либ от Омх и базу, выстраивающую иерархию либ в виде документов-ответов.
 
A

Akupaka

можно ли это как-то автоматизировать? встречал что-то готовое?
Писал когда-то нам :) Поищи, может завалялся тот сборщик. Но там апи использовалось, и 100% гарантии коректности нет (вернее, того, что это работает так же эффективно, как рекомпиляция встроенная).
 
H

hosm

Еще такой вопрос - можно ли как-то программно определить, что исполняемый код данного элемента дизайна неактуален, кроме как по времени сохранения его и либ, которые в нем использованы?
 
A

Akupaka

Скомпилить и сравнить с объектным :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
правка в либах, в классах, в декларациях - часто требует перекомпиляции...
если разраб не делает "по-человечьи" через шаблон - СЗБ
 
H

hosm

если разраб не делает "по-человечьи" через шаблон
Я не знаю и не вникала, честно говоря, как они правят и делают обновление на своих серверах, но выяснилось, что на наших это получилось методом дел&копи-паста - вычислилось как-то, когда в базе появился такой зверь, как "Copy of" вместо нужного элемента дизайна.
"по-человечьи" - это о чем речь? т.е. обновление в шаблоне наследуемых элементов напрямую из другого шаблона, а не методом копи-паста?
так на рабочей БД снято наследование элементов дизайна из другого шаблона ("чужого", которого у нас нет), и стоит только флаг наследования дизайна в свойствах БД из шаблона данной БД, который нами правится. Возможно, шаблон нормально и обновляется на их серверах. Но вроде ж те элементы, у которых на рабочей БД убрано имя "чужого" шаблона не будут обновляться автоматом (через задачу обновления дизайна) при обновлении из "родного" шаблона для БД, если в шаблоне они наследуются с "чужого" шаблона и никак иначе как копи-пастом (либо как целого эл-та дизайна, либо просто заменой всего кода либ, например) или актуальным промежуточным "родным" шаблоном с убранным наследованием из "чужих" шаблонов их не обновишь ? почему именно так сделано всё - я не знаю...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
др. словами создали траблу намутив с шаблонами
еслиб правился шаблон и его перекомпилили, а из него - наследовали, небылоб и темы...
надо поговорить с заказчиками о "нормальном" цикле обновления
КМК вашей вины в ситуации нет, но вам ещё и навязывают пр-ла - не перекомпилировать
 
H

hosm

тут была не права: "Но вроде ж те элементы, у которых на рабочей БД убрано имя "чужого" шаблона не будут обновляться автоматом". совсем запуталась... Правильно так: те элементы, у которых на рабочей БД НЕ убрано имя "чужого" шаблона не будут обновляться автоматом (через задачу обновления дизайна) при обновлении из "родного" шаблона для БД, если в шаблоне они наследуются с "чужого" шаблона, котрый отсутствует на сервере, с которого производится обновление.
по ходу предполагалось, что наследования из чужих шаблонов на базе не будет, просто как-то наш админ обновил тестовый сервер через "реплейс дизайн", а не "рефреш", и после этого началась катавасия с обновлением. в четверг вот нсд вылетело при обновлении дизайна на БД из Notes, так вообще потом не обновляло - ни по расписанию, ни из Notes, пока не пересохранила форму в шаблоне - после этого вроде нормально пофиксилось.
пока вот:
1) внимательней следить за изменениями либ, стараться перекомпилировать нужные эл-ты дизайна.
- "детский" вопрос: как правильно добиться перекомпиляции формы - будут ли обновлены все скрипты формы (события, акшены, глобалы, хотспоты и т.п.) при простом пересохранении формы, или надо изменить глобальные декларашены?
2) стараться не допускать одновременной правки одних и тех же эл-тов шаблона на нескольких серверах.
3) про цикл обновления и перекомпиляцию, кстати, я вопрос уже поднимала как-то в начале работы над проектом - надеюсь, в дальнейшем поднимать его буду уже не я.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
53
Сорри, что поздно отвечаю. но не от меня это зависело...

1. Если код переподписывается, но не перекомпилируется, то 100% гарантии его работоспособности нет. А если дизайн закрыт, то гарантий ни каких, это как "пить дать" (©).

2. У меня недавно было.. по утрам заметил, что когда делаю обновление шаблонов с головного шаблона, то очень много элементов обновляется. Оказалось, что репликацию головного шаблона я отключил.. каждую ночь запускалось обновление на другом сервере и затирало новые элементы дизайна теми, что в головном шаблоне.

Чтобы гарантировано было всё хорошо:
- перекомпиливать дизайн (причём, перекомпиливать после подписания);
- выключить на серваках задачу Design;
- убрать все шаблоны, с которых возможно наследование, с ТЕХ серверов, т.к. при выключенной задаче дизайн иногда по непонятным причинам обновление всё-таки происходит (вполне возможно, что иногда по какой-то причине задача Design всё-таки запускается);
А чтобы совсем железно - в базах снять всё наследование, и на уровне базы и на уровне элементов дизайна (это можно делать программно).
 
H

hosm

VladSh спасибо.
и я отвечу в своей теме на твой [offtop] из другой темы
неделя - это круто %) Если что, пиши в почту (или аську, обычно и оффлайн мне доходит). Я не знала - судя по логам, витал просто в тот же день сразу его снял, а молчанку или случайно не заметил или специально оставил.
[/offtop]
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
53
OKEN
Да, я его попросил, и он снял, но... оно не снялось ))) а дальше не стал снова беспокоить.
 
Мы в соцсетях:

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