Rename
Write the client.dat after we migrate the global queue, and also after we migrate the per-application queues.
Add logging to test a theory re stalling migration
Maybe fix stalling during migration: Notify when runningJobs = 0, even if we're not going to write straight away. For previous code, waitAndCheckpoint would likely never return if a job was already running.
Don't checkpoint twice
Explain.
Add a unit test for waitAndCheckpoint()
Even more logging (maybe unlock could break somehow?)
Increase runningJobs after successfully started job
Make sure the unlock gets called even if the callback throws