It seems the condition for scheduling next run of ReportPublisher is wrong:
Given the condition above, the task may be scheduled again if the executor is shutdown, but the state machine is not set to shutdown (or vice versa). I think the condition should have an &&, not ||. (Currently it is unlikely to happen, since context state is set to shutdown before the report executor.)
nanda, can you please confirm if this is a typo or intentional?