@sreznick
На самом деле это просто какие глюки ориента.
Базы в stage1 и stage2 вошли в какое-то странное состояние. Выражалось оно в том, что при рестарте были в логах жалобы на то, что таблица объектов создается внутри транзакции. Отсюда и заголовок тикета.
Но в коде никаких проблем в этом плане не было видно.
При повторном рестарте сообщения в логах поменялись. Ориент стал жаловаться на попытку создать существующий класс. Хотя в коде делались честные проверки.
В шатном клиенте класс был виден как создан.
То есть тут есть оченвидные проблемы на стороне ориента - класс по факту создан при том, что были жалобы на невозможность создания. Плюс - getClass() возвращал null при существующем классе.
При смене имени класса для объектов на несуществующее эта ситуация с двумя последовательными падениями повторялась.
Воспроизвести ее на свежем докер-образе ориента не удалось.
Аналогично, после того, как я снес и пересоздал докер-образ ориента для stage2, проблема тоже ушла.
А вот docker restart на образе для stage1 проблему не уничтожил.
Я стал экспериментировать с ним.
Передвинул в коде инициализации базы в нашем бекенде initObjects в самое начало.
И проблема исчезла. Хуже всего то, что после возвращения инициализации объектов на свое место проблема не вернулась. Даже с другим именем для класса.
Сухой остаток:
Какие-то глюки в ориенте точно имели место (как минимум создание таблицы на фоне жалоб на невозможность создания), но поймать их не удалось.
Такое ощущение, что база вошла в какое-то состояние, а потом в ходе экспериментов случайно из него вышла.
Нельзя исключать каких-то тонких проблем в нашем бекенде (поскольку смена порядка инициализации поменяла картину), но код-ревью ничего не выявил, а воспроизвести проблему не получилось.
Тикет я закрою, верну код в старое состояние.
Заметки пусть будут для истории.
@sreznick На самом деле это просто какие глюки ориента. Базы в stage1 и stage2 вошли в какое-то странное состояние. Выражалось оно в том, что при рестарте были в логах жалобы на то, что таблица объектов создается внутри транзакции. Отсюда и заголовок тикета. Но в коде никаких проблем в этом плане не было видно. При повторном рестарте сообщения в логах поменялись. Ориент стал жаловаться на попытку создать существующий класс. Хотя в коде делались честные проверки. В шатном клиенте класс был виден как создан. То есть тут есть оченвидные проблемы на стороне ориента - класс по факту создан при том, что были жалобы на невозможность создания. Плюс - getClass() возвращал null при существующем классе.
При смене имени класса для объектов на несуществующее эта ситуация с двумя последовательными падениями повторялась.
Воспроизвести ее на свежем докер-образе ориента не удалось.
Аналогично, после того, как я снес и пересоздал докер-образ ориента для stage2, проблема тоже ушла.
А вот docker restart на образе для stage1 проблему не уничтожил.
Я стал экспериментировать с ним.
Передвинул в коде инициализации базы в нашем бекенде initObjects в самое начало.
И проблема исчезла. Хуже всего то, что после возвращения инициализации объектов на свое место проблема не вернулась. Даже с другим именем для класса.
Сухой остаток:
Какие-то глюки в ориенте точно имели место (как минимум создание таблицы на фоне жалоб на невозможность создания), но поймать их не удалось.
Такое ощущение, что база вошла в какое-то состояние, а потом в ходе экспериментов случайно из него вышла.
Нельзя исключать каких-то тонких проблем в нашем бекенде (поскольку смена порядка инициализации поменяла картину), но код-ревью ничего не выявил, а воспроизвести проблему не получилось.
Тикет я закрою, верну код в старое состояние.
Заметки пусть будут для истории.