There have been a few cases over the past few days of sendchange steps never completing. There's nothing in the logs to indicate why. In at least one case, the remote buildbot master was blocked in FtpPoller, and restarting it allowed the local sendchange to complete.
We should add our own timeout handling to sendchange instead of relying on the twisted stack to time out.