'suspend'意味着停止处理程序,因为在条件改变之前我们不能再进步;即我们发送 RPC 并需要等待响应。这种方法的工作方式是,一个过程在其内部引发一个暂停异常作为 GOTO 结束当前处理步骤。挂起还会将过程放回调度程序。有问题的是,即使在暂停时,我们也会对出路进行一些计算,因此可能需要时间退出(我们必须在 WAL 中更新状态)。
RegionTransitionProcedure#reportTransition 在收到 RS 的报告时被调用。对于分配和取消分配,来自我们发送 RPC 的服务器的此事件响应唤醒暂停的分配/取消分配。