Есть подписки продолжительностью 30 дней. Подходит час Х, ждём автопродления, но он не срабатывает. Стал разбираться что не так, оказалось SubscriptionJob выполняется раньше назначенного времени на несколько секунд, ну и, соответственно, новый период активировать не может, т.к. текущий еще активен.
Код:
mysql> select * from subscription_job_trigger_14 where id=58;
+-----+-------+----------------+--------------+------------+------+------+--------------------+--------------------+-----------+---------+
| id | jobId | timeFromMillis | timeToMillis | persistent | type | data | fireTimePrevMillis | fireTimeNextMillis | fireCount | version |
+-----+-------+----------------+--------------+------------+------+------+--------------------+--------------------+-----------+---------+
| 58 | 58 | 1464835020000 | 0 | 1 | 0 | NULL | 0 | 0 | 0 | 1 |
+-----+-------+----------------+--------------+------------+------+------+--------------------+--------------------+-----------+---------+
а это после срабатывания
Код:
+----+-------+----------------+---------------+------------+------+------+--------------------+--------------------+-----------+---------+
| id | jobId | timeFromMillis | timeToMillis | persistent | type | data | fireTimePrevMillis | fireTimeNextMillis | fireCount | version |
+----+-------+----------------+---------------+------------+------+------+--------------------+--------------------+-----------+---------+
| 58 | 58 | 1464835020000 | 1464835013492 | 1 | 0 | NULL | 1464835013492 | 0 | 1 | 1 |
+----+-------+----------------+---------------+------------+------+------+--------------------+--------------------+-----------+---------+
В итоге, вместо 10:37:00 задача запустилась в 10.36:53. Другая вообще на 12 секунд раньше стартанула. И так со всеми. Как так получается ?
Версия 6.0