no, timers should not behave this way. And it might indeed be related to the 'fix' as you commented on the issue.
Please file new a jira issue and if you have a testcase (junit) that is even better
No need for a new JIRA issue. The problem exists and was caused by my solution to JBPM-2036 index. My original reasoning was:
Timer.execute Token.leaveNode -> CancelTimerAction.execute -> Timer.setRepeat(null) if (repeat == null) return false; // delete this timer
The above logic prevents the timer being executed from rescheduling itself, but allows other timers to run one more time. Instead of setting repeat to null, I'll check for an ended token when the timer executes.