def _connect_handler(self, request): assert request.app_id == self._app_id, \ "Connection failed. Application id mismatch: %s vs %s"%( request.app_id, self._app_id) assert request.worker_rank == self._rank, \ "Connection failed. Rank mismatch: %s vs %s"%( request.worker_rank, self._rank) assert len(request.identifier) > 0, \ "Connection failed. An identifier should be offered!" with self._condition: if self._connected: # If a duplicated reqeust from peer, just ignore it. # If a new connect request from peer, suicide. if request.identifier != self._peer_identifier: logging.error('Suicide as peer %s has restarted!', request.identifier) os._exit(138) # Tell Scheduler to restart myself else: self._peer_identifier = request.identifier self._connected = True self._condition.notifyAll() return tws_pb.ConnectResponse(app_id=self._app_id, worker_rank=self._rank)
def _connect_handler(self, request): assert self._role == 'follower', \ "Leader does not accept connect request" assert request.app_id == self._app_id, \ "Connection failed. Application id mismatch: %s vs %s"%( request.app_id, self._app_id) assert request.worker_rank == self._rank, \ "Connection failed. Rank mismatch: %s vs %s"%( request.worker_rank, self._rank) with self._condition: assert not self._connected, "Already connected" self._connected = True self._condition.notifyAll() return tws_pb.ConnectResponse(app_id=self._app_id, worker_rank=self._rank)