Added a way for data sources to request a restart, along with some other conditions for restart and better logging