
Mikhail
04.09.2017
19:59:30
он бросает новый RuntimeException с текстом
в текст добавляется объект, то есть вызывается toString() неявно
и вот внутри toString - строится строка из полей объекта, в том числе - пробег по листу
и в этот момент все разваливается

Google

Mikhail
04.09.2017
20:00:32
то есть по листу мы бежим внутри catch
вот и всё

Mikhail
04.09.2017
20:00:49
Ну, объект после выброса эксепшна изменяется где-то?

Mikhail
04.09.2017
20:01:31
не, погоди, эксшепн еще не брошен
мы еще строку для него не построили
throw new RuntimeException("error during localization of object " + targetObject, e);

Mikhail
04.09.2017
20:02:12
Объект только в текущем треде существует?

Mikhail
04.09.2017
20:02:18
падаем внутри туСтринг у targetObject
нет, объект глобальный, но изменяется только в одном месте да и то при деплое, насколько я помню
потом только читается
мне просто удивительно, что этот код не менялся лет много уже
и вдруг грабли
так

Google

Mikhail
04.09.2017
20:04:07
ну то есть я понимаю, что выглядит, как будто в параллели с чтением кто-то внес изменения в этот лист

Admin
ERROR: S client not available

Mikhail
04.09.2017
20:07:54
Проверил, запись в объекты идет один раз, при деплое, после этого они висят себе в памяти и всё, читаются только

Igor
04.09.2017
20:11:42
и есть профит от перехода на асинхронный логер?

Mikhail
04.09.2017
20:12:22

Mikhail
04.09.2017
20:19:17
короче, видимо я брежу все-таки и выглядит это так - один поток что-то изменил, а второй пытается читать, ну и ловим exception
а все потому, что изначально падаем, похоже данные битые
в общем понятно, надо раскручивать с начала, разбираться что с данными
а потом уже синхронизировать по человечески
legacy code - это счастье программист