On default TaskScheduler is configured to use org.springframework.scheduling.concurrent.ConcurrentTaskScheduler which then gets used with state actions. Unfortunate side effect for this is that jvm shutdown will get blocked. While workaround is to replace your own TaskScheduler, we should figure out how to change this so that default functionality would not be so bad.