Кварцевый тупик планировщика при создании триггеров / заданий в таблицах qrtz - PullRequest
0 голосов
/ 09 апреля 2011

Я создаю главный cronjob для запланированного времени, из этого задания я создаю 10 заданий simpletrigger без задержки, и для каждого задания простейшего создателя создаю еще один набор из 100 заданий.

Я использую Spring и мой размер пула потоков равен 30, я использую базу данных h2, JobStoreTX, StdJDBCDelegate для подключения к базе данных. Мое приложение - это отдельная Java-программа, которая запускает основную работу.

Создан первый набор подробностей задания / триггера в таблицах qrtz. когда он выполняет первое простое подзадание, охватывающее подзадачу, он получает блокировку таблицы на триггере и записях задания.

В чем может быть проблема?

Исключение составляет: "Вызвано: org.h2.jdbc.JdbcSQLException: обнаружена взаимоблокировка. Текущая транзакция была отменена. Детали:" Сеанс # 64 (пользователь: SA) ожидает блокировки PUBLIC.QRTZ_SIMPLE_TRIGGERS при блокировке PUBLIC.QRTZ_TRIGGERS (эксклюзив). Сессия № 67 (пользователь: SA) ожидает блокировки PUBLIC.QRTZ_TRIGGERS при блокировке PUBLIC.QRTZ_SIMPLE_TRIGGERS (эксклюзив). "; Оператор SQL: INSERT INTO qrtz_SIMPLE_TRIGGERS (TRIGGER_NAME, TRIGGER_GROUP, REPEAT_COUNT, REPEAT_INTERVAL, TIMES_TRIGGERED) VALUES (?,?,?,?,??) [40001-132] в org.h2.message.DbException.getJdbcSQLException (DbException.java:316) в org.h2.message.DbException.get (DbException.java:167) в org.h2.message.DbException.get (DbException.java:144) в org.h2.table.RegularTable.doLock (RegularTable.java:435) at org.h2.table.RegularTable.lock (RegularTable.java:382) "

1 Ответ

1 голос
/ 09 апреля 2011

Используете ли вы режим mvcc H2 - который необходим (насколько я понимаю) для блокировки строк, а не блокировки таблиц?(очень похоже на разницу между MySQL с и без InnoDB).

http://jira.opensymphony.com/browse/QUARTZ-773

...