|
|
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Редко такое бывает. И каждый раз когда разбираешься - понимаешь что сам виноват. Но вот сегодян опять. Итак есть небольшой проект Spring, Hibernate, HSQL. Вроде работает на нескольких машинах. Win 7, Win 10. Сегодня запускаю на новой девелоперской машине Win 10 и выгребаю совершенно дикую проблему в HSQL. Падает валидация Lock файла. Суть в том что HSQL пишет в .lck файл 16 байт. 8 байт префикс + 8 байт System.currentTimeMillis(). Как результат на выходе файл в 22 байта!!! Вот код записи. Объявление и обработку исключений опустил. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Даже если вдруг там какая-то конкуренция, то каким образом оно за 16 байт вылазит?? Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 11:24 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Все. Блин. Я тупой. Там же по одному байту пишется. Вот и при конкуренции больше байт попадает. Осталось понять с какого перепугу спринг два раза HSQL запускает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 11:27 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Вот только никаких двух потоков и впомине нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 11:44 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Падает из IntelliJ IDEA CE. Из батника работает без проблем. Мнения? Рекомендации? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 11:48 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПадает из IntelliJ IDEA CE. Из батника работает без проблем. Мнения? Рекомендации? Запретить создание этого файла и посмотреть кто упадёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 11:59 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, Тогда просто падает инициализация HSQL. Пробовал дебаг. Вижу только 1 main поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 12:12 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Тесты памяти на машине гонял? Вдруг там что-то битое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 12:19 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, - При чем тут память? Пишет байты по одному через RandomAccessFile - Если запускать без IntelliJ IDEA CE, то проблема не повторяется - Если запустить пошаговую отладку, то отрабатывает без ошибки, что наводит на мысль о конкуренции Может что-то и идее запускать метод 2 раза (версия 14.1.3)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 12:40 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
в тестовом коде при параллельном запуске в двух потоках метода writeHeartbeat проблема с размером файла повторяется. я-бы залогировал стектрейс запуска этого метода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 14:47 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAlexey Tomin, Тогда просто падает инициализация HSQL. Пробовал дебаг. Вижу только 1 main поток. Хм. Поставить в строке, где падает точку останова. Разрешить запись. Прости строку. Запретить запись. Найти сделующую строку (где упадёт). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 14:48 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Dmitry.в тестовом коде при параллельном запуске в двух потоках метода writeHeartbeat проблема с размером файла повторяется. А проблема повторяется точно так же, как у Blazkowicz — размер файла 22 байта, и внутри несколько EF BF BD, подозрительно напоминающих BOM? Потому что у меня при двух потоках размер файла стабильно равен 23 байта (8 + 8 + 8 - 1, где -1 — перезаписанный первый байт heartbeet из-за повторного seek(8)), а внутри — куски двух timestamp'ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 15:03 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Alexey TominХм. Поставить в строке, где падает точку останова. Разрешить запись. Прости строку. Запретить запись. Найти сделующую строку (где упадёт). Этим и пытаюсь занятся. Только, блин, HSQL из мавена без отладочной инфы. Ну, и в дебаге не повторяется. Нормально приходит 1 writeHeartbeat(). Потом через время еще один, вроде так и должо быть. Падает уже в валидации, она к записи отношения не имеет. Дампил стэктрейс, вроде, только один приходит одновременно. Дамп имен потока почему-то не отработал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 15:24 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
vslА проблема повторяется точно так же, как у Blazkowicz — размер файла 22 байта, и внутри несколько EF BF BD, подозрительно напоминающих BOM? Потому что у меня при двух потоках размер файла стабильно равен 23 байта (8 + 8 + 8 - 1, где -1 — перезаписанный первый байт heartbeet из-за повторного seek(8)), а внутри — куски двух timestamp'ов. О, а вот это интересная мысль! Я user.language менял. Не помогло. Но у них были какие-то проблемы с кодировками раньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 15:25 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Как вариант двойная инициализация контекста спринга ... что влечет порождение второго треда ?! примерно так : Если у вас указан protected Class<?>[] getRootConfigClasses() { то второй должен быть null - protected Class<?>[] getServletConfigClasses() { даже если вы ооочень все аккуратно разнесли по конфигам и уверены что рууут это руут а веб это веб ... я бы все равно разнес ибо один будет вызывать другой ... Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Все мной описанное верно и для других участков кода... :( Печально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 16:19 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Atum1, А метод оберните аспектом и посмотрите кто его и откуда вызывает в логе . главное чтобы аспект первым привязался :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2016, 16:22 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Похоже, что это таймер конкурирует с инициализацией. Странно. Main поток инитит спринг. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. И, примерно в это же время, отрабатывает HSQLDB Timer Код: java 1. 2. 3. 4. 5. 6. И, что самое обидное, с утра уже ничего не падает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2016, 10:16 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Хотя, мне кажется, что вряд ли дело в конкуренции. Уж очень BOM выглядит подозрительно. Может и правда глюк на уровне железа прилетел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2016, 10:20 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Atum1, Нет у меня двух контекстов и сервлетов. Только JAXWS Endpoint. Двойной инит конктеста был одним из первых моих предположений. Но отладкой подтвердить не удалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.09.2016, 10:22 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
BlazkowiczAtum1, Нет у меня двух контекстов и сервлетов. Только JAXWS Endpoint. Двойной инит конктеста был одним из первых моих предположений. Но отладкой подтвердить не удалось. Я вообще плохо соображаю зачем нужно использовать сервлет в контексте HQL, но как варинат дебажанья сервлетов можно попробовать использовать филтер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2016, 03:31 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
SergunkaЯ вообще плохо соображаю зачем нужно использовать сервлет в контексте HQL, но как варинат дебажанья сервлетов можно попробовать использовать филтер. Нет у меня сервлетов. Не нужны мне фильты. Нет у меня двойной инициализации контекста тоже. Продукт коробочный и пилотный, поэтому пока что идет с HQL внутри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2016, 08:40 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
BlazkowiczSergunkaЯ вообще плохо соображаю зачем нужно использовать сервлет в контексте HQL, но как варинат дебажанья сервлетов можно попробовать использовать филтер. Нет у меня сервлетов. Не нужны мне фильты. Нет у меня двойной инициализации контекста тоже. Продукт коробочный и пилотный, поэтому пока что идет с HQL внутри. Тогда нужен тест - замокайте все что можно и запустите тест на инициализацию контекста и старт вашего приложения. + все таки добавьте логирование через аспекты оберните все что можно и смотрите какой поток и откуда лезет и хочет повторно инициализировать . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2016, 10:16 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Atum1, Блин. Еще раз: 1) Два потока, которые, возможно , конкурируют я уже привел выше. Один из них это сама инициализация, второй - таймер HSQL 2) Результаты записи в файл не похожи на конкурентную запись совершенно. Целый день результат был всегда 22 байта, которые я привел. С конкуренцией были бы вариации. 3) Проблема самоустранилась на следующее утро точно таким же мистическим утром и больше не появлялась. Комп был в режиме сна. Но весь день до этого она проявлялась совершенно стабильно при запуске в IntelliJ, кроме случаев остановки в брейкпоинтах и пошаговой отладки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2016, 10:32 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПроблема самоустранилась на следующее утро точно таким же мистическим утром и больше не появлялась. Комп был в режиме сна. Но весь день до этого она проявлялась совершенно стабильно при запуске в IntelliJ, кроме случаев остановки в брейкпоинтах и пошаговой отладки. По сути, проблема изчезла после перезапуска IDEA? Может был глюк именно в ней и полечился после первого перезапуска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2016, 11:03 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
Alexey TominПо сути, проблема изчезла после перезапуска IDEA? Нет. Комп был в режиме сна. Перезапускался только скайп. Alexey TominМожет был глюк именно в ней и полечился после первого перезапуска? Да. Скорее всего. Или в мавене. Проект запускается там же где и финальная сборка. Может какой-то процесс в фоне начинал фильтровать этот файл. Фиг его знает. Пробовал повторить - не получилось. Еще один довод против конкуренции, в том что я ставил Method Breakpoint. В результате чего проект запускался на много дольше. Соотвественно и конкуренция должна быть совершенно другая. Сейчас я подозреваю что база валялась в ресурсах, и мавен копировал ее поверх. Надо попробовать lck файл прогнать через фильтр мавена и посмотреть что получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2016, 11:32 |
|
||
|
Мистика
|
|||
|---|---|---|---|
|
#18+
В общем, спасибо всем. Похоже дело было в Maven и звезды так сложились. Сегодняшний таймштамп в байтах попадает в ASCII. Перемотал на пятницу, скопировал lock файл в ресурсы и там появился BOM после фильтрации. Стабильных 22 байта с тремя BOM не выходит. Но это лучшая теория на данный момент. Хотя, мне кажется, что базу из ресурсов я грохнул почти сразу, чтобы она никак не влияла. Но, похоже, я ошибаюсь и дошел до этого только к вечеру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2016, 11:45 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39314488&tid=2123677]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
50ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 330ms |

| 0 / 0 |
