After commit `13a9f176198d6cfc580f412ebd90c2a3af8886c7`, updating the Executor with `TP#setThreadPool(Executor)` does not update the executor utilized by the timer instance.
Recurring tasks stop being executed since the previous executor is shut down and has not been updated with the new instance. For example, NAKACK2 and UNICAST3 stop running after setting the new executor for TP.
We should revert the lines in the `TP#setThreadPool(Executor)` method to be same as before:
public <T extends TP> T setThreadPool(Executor thread_pool) { if(this.thread_pool != null) this.thread_pool.destroy(); this.thread_pool.setThreadPool(thread_pool); + if(timer instanceof TimeScheduler3) + ((TimeScheduler3)timer).setThreadPool(thread_pool); return (T)this; }