Гость
Map
Форумы / Java [закрыт для гостей] / jdbcTemplate без аннотаций и транзакция / 3 сообщений из 3, страница 1 из 1
10.11.2022, 09:38
    #207942
reload
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jdbcTemplate без аннотаций и транзакция
подскажите, что бы могло случится вот с таким кодом:
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
    @Scheduled(cron = "0 0 20 * * *")
    private void refreshBiHistoricalTables() {

        MapSqlParameterSource namedParameters = new MapSqlParameterSource();
        jdbcTemplate.update("""
        insert into bi_hist_product_rows_sales_report select
          sales_rank
          ,vendor_code
          ,name
          ,price
          ,quantity
          ,mounths_count
          ,last_sale_date
          ,last_sale_days
          ,avg_amnt
          ,avg_cnt
          ,total_amnt
          ,total_cnt
          ,amnt_01
          ,amnt_02
          ,amnt_03
          ,amnt_04
          ,amnt_05
          ,amnt_06
          ,amnt_07
          ,amnt_08
          ,amnt_09
          ,amnt_10
          ,amnt_11
          ,amnt_12
          ,cnt_01
          ,cnt_02
          ,cnt_03
          ,cnt_04
          ,cnt_05
          ,cnt_06
          ,cnt_07
          ,cnt_08
          ,cnt_09
          ,cnt_10
          ,cnt_11
          ,cnt_12
          ,product_link
          ,forecast
          , now() from vw_product_rows_sales_report r
                    """, namedParameters);

    }
после месяцев работы, если не года, вдруг начало зависать. судя по всему спринг бут вдруг перестал коммитить транзакцию. у mariadb, вторую ночь подряд, вижу этот квери висит в дедлоке с бэкапом, который на 3 часа позже запускается.
я верно ожидаю, что без аннотаций на методе спринг каждый стейтмент должен коммитить ?
...
Рейтинг: 0 / 0
14.11.2022, 16:43
    #212085
vimba
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jdbcTemplate без аннотаций и транзакция
reload  10.11.2022, 09:38
[игнорируется]
я верно ожидаю, что без аннотаций на методе спринг каждый стейтмент должен коммитить ?
Нет вообще не будет коммитить. Чтобы такой код работал как ты хочешь нужно чтобы на коннекшене который jdbcTemplate получает из DataSource стоял автокоммит. Если раньше это работало значит только такие коннекшены в jdbcTemplate и приходили, но потом что-то пошло не так, возможно какой-то другой код в твоем приложении тоже использует коннекшены из этого же датасорса, и в одной из веток выставляет connection.setAutocimmit(false) но по какой-то причине не вызывает ни commit() ни rollback() перед возвращением коннекшена в пул, таким образом в пуле от таких злодействий образуются коннекшены с незакрытыми транзакциями, которые пул может отдать другим потребителям. Конечно чтобы моя теория подтвердилась нужно чтобы реализация датасорса была туповатой и не проверяла что ей обратно возвращают в пул. Что там у тебя за класс реализующий датасорс и с какими параметрами он сконфигурирован?
...
Изменено: 14.11.2022, 16:44 - vimba
Рейтинг: 0 / 0
14.11.2022, 21:05
    #212352
reload
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jdbcTemplate без аннотаций и транзакция
да, разобрался. оказалось причина в mysql, селект читает вьюшку, в которой простенькая функция, она в составе вью просто перестала работать (причем год работало). отдельно работала, в составе вью просто висит бесконечно. выставил deterministic, перекомпилил - заработало.
по методу, ок. понял. лучше пометить транзакцию явно.
...
Рейтинг: 1 / 0
Нравится: vimba
Форумы / Java [закрыт для гостей] / jdbcTemplate без аннотаций и транзакция / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (1): Анонимы (1)
Пользователи онлайн (122): Анонимы (108), Неуловимый Джо, Васька, Yandex Bot, паразит, XEugene 1 мин., Гарыныч 3 мин., С чистого листа 3 мин., IT-Клоп 4 мин., пк 4 мин., Буся 4 мин., Сталкер 5 мин., Green 6 мин., Администратор 6 мин., cat2 8 мин.
x
x
Закрыть


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