Also, the migration util executor should be shut down before other components that tasks on it use, such as the CatalogCacheLoader, are shut down.
This is because some of those components invariant that they are always able to schedule work on their thread pool.