if (trace) log.tracef("Node %s finished pushing state for view %s, broadcasting push complete signal.", self, viewId);
// the broadcast won't include the local node, call the method directly
pushConfirmations.confirmPush(self, viewId);
// then broadcast to the entire cluster
final StateTransferControlCommand cmd = cf.buildStateTransferCommand(StateTransferControlCommand.Type.PUSH_COMPLETED, self, viewId);
rpcManager.invokeRemotely(null, cmd, ResponseMode.SYNCHRONOUS, configuration.getRehashRpcTimeout());
boolean clusterPushCompleted = pushConfirmations.waitForClusterToCompletePush(viewId, configuration.getRehashWaitTime());
if (!clusterPushCompleted) {
throw new PendingStateTransferException();