Hi Hahn,
The VoldemortSwapJob is responsible for initiating the fetch on the storage nodes, as well as triggering the swap after the fetch is complete, so you should not have manually orchestrated the fetch beforehand if you use that. If you want to do just the swap, then that can be done via the AdminClient.
I'm not sure how you implemented the rest of your stuff, but the "cleanest" thing would probably be to leverage the VoldemortBuildAndPush job as much as possible. This would provide you with the most checks, safe guards and handshakes, some of which are merely optimizations, but some others which are fairly explicit requirements for the job to work properly.