powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Самопроизвольный откат изменений
7 сообщений из 7, страница 1 из 1
Самопроизвольный откат изменений
    #38687661
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с крайне удивившей меня ситуацией.

Cache 5.0.21.

Пользователи пожаловались, что все результаты их работы с неким документом отсутствуют в базе. Посмотрел на данные - да, как будто вообще ничего не делали (там есть поля, которые изначально пустые, но, единожды установив в них какое-то значение, вернуть пустое уже нельзя - так вот они пустые).
Полез в Панель управления - Журналирование - открыл журнал за указанный день, сделал поиск по ID документа - да, там есть отметки о проведенной записи (документ обрабатывается программиной, меняющей кучу связанных данных). Эти отметки в журнале идут с кодом операции ST - как я полагаю, первая буква в данном случае от Set - в поле "данные" стоят верные данные.

Но: позднее почему-то идут операции с кодом kT - есть у меня подозрение, что они означают Kill (какой-то хелп по этому поводу пока найти не смог). Идут они в обратном порядке - это хорошо видно на примере глобала, в который у меня программой, обрабатывающей этот документ при сохранении, лог пишется.

Выглядит это примерно так:


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

В общем, я совсем не понимаю происходящее: или я неправильно понял, что у меня в журнале написано, и это не kill'ы, или внесенные изменения почему-то самопроизвольно откатились. К сожалению, проблема эта не единичная - передо мной сейчас здоровая ведомость найденных аналогичных ошибок. Хронологически все локализовано в июне-июле, до этого 8 лет эти программы работали стабильно. Кашешные транзакции в данной программе не используются.

В общем, если подскажите хотя бы, куда копать, чтобы подобное прекратить, буду очень признателен.
...
Рейтинг: 0 / 0
Самопроизвольный откат изменений
    #38687754
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mike Ivanovпозднее почему-то идут операции с кодом kT - есть у меня подозрение, что они означают Kill (какой-то хелп по этому поводу пока найти не смог). Journal File Operations
Mike IvanovКашешные транзакции в данной программе не используются.Вы не правы:Документация по ссылке выше 1 T is appended when the operation occurs within a transaction, for example ST for a Set operation within a transaction or kT for a ZKill operation within a transaction 8297134

PS: 2571299
...
Рейтинг: 0 / 0
Самопроизвольный откат изменений
    #38687920
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

Спасибо. Сейчас буду смотреть.

Транзакцию, в таком случае, вероятно, создает каше автоматом при вызове класс-метода из клиента.
...
Рейтинг: 0 / 0
Самопроизвольный откат изменений
    #38688067
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mike Ivanov,

Посмотрите код на предмет отношений между классами.
Например, в классе A есть поле с типом класс B. Оба класса %Persistent
Тогда после выполнения такого кода: set objA=##class(A).%Open(idA)
 set objB=##class(B).%Open(idB)
 
 set objB.Field="test"
 
 do objB.%Save()
 do objA.%Save()
в поле Field будет не "test", а то, что там было до выполнения строчки set objA=##class(A).%Open(idA)
...
Рейтинг: 0 / 0
Самопроизвольный откат изменений
    #38688160
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaWr,

Я классовые возможности практически не использую. По сути, я работаю на мампсе с sql и объектами (чтобы не возиться вручную с индексами) :) Все процедуры просто работают со строковыми данными, записывая в заданные поля. Так что в этой области причина едва ли найдется.

На то, что описано в посте по ссылке из первого комментария, похоже. Перезагрузил сегодня сервер, перестроил индексы в нескольких ключевых классах на всякий случай, сделал логирование записываемых данных в txt и сверку "если есть в локальном txt - есть ли в базе?" - буду ждать, что получится.
...
Рейтинг: 0 / 0
Самопроизвольный откат изменений
    #38691398
vassil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mike Ivanov,

У нас были случаи, когда программист забыл закрыть транзакцию... в итоге после перезагрузки сервера все внесенные данные откатывались.
Можно посмотреть с помощью $TLevel существуют ли на данный момент открытая транзакция.
...
Рейтинг: 0 / 0
Самопроизвольный откат изменений
    #38693580
Mike Ivanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vassil,

Непосредственно в коде у меня транзакции не используются. Вероятно, каше при вызове метода автоматически поднимает транзакцию. После перезагрузки сервера вроде как снова все работает стабильно, но хотелось бы понять, что вызывает такой сбой. Отдельные битые куски данных до сих пор разгребаю...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Самопроизвольный откат изменений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]