Implemented coarse grained locking

The remote sync table is locked during all of push. Only one client can
push at a given time. Others will terminate with a message. The user has
to manually retry pushing.