Esempio n. 1
0
    def _handle_lost_application_actor(self, key, value, lost_node_id, lost_actor_id, lost_actor_info, start_time, cb):
        """ Get required reliability from app info """
        _log.debug("Handling lost application actor {} of app {}".format(lost_actor_id, key))
        self.storage.delete_replica_node(key, lost_node_id, lost_actor_info['name'])
        if not value:
            _log.error("Failed to get application info from storage for applicaiton {}".format(key))
            cb(status=response.CalvinResponse(False))

        replicator = Replicator(self.node, lost_actor_id, lost_actor_info, value['required_reliability'],
                                lost_node=lost_node_id)
        replicator.replicate_lost_actor(cb, start_time)
Esempio n. 2
0
    def _check_actor_reliability(self, key, value, actors, app_info, names, index, start_time):
        _log.debug("Check reliability for actor: {}".format(key))
        if not value:
            _log.warning("Failed to get actor info from storage: {}".format(key))
            return self._check_actors_reliability(actors=actors, app_info=app_info, names=names, index=index + 1, start_time=start_time)

        name = calvinuuid.remove_uuid(value['name'])
        if value["replicate"] and name not in names:
            try:
                replicator = Replicator(self.node, key, value, app_info['required_reliability'], do_delete=False)
            except Exception as e:
                _log.warning("Failed to create replicator: {}".format(e))
                return
            names.append(name)
            cb = CalvinCB(self._check_actors_reliability, actors=actors, app_info=app_info, names=names, index=index + 1, start_time=start_time)
            replicator.replicate_lost_actor(cb=cb, start_time=start_time)
        else:
            if name in names:
                _log.debug("Already checked reliability of actor: {}".format(name))
            self._check_actors_reliability(actors=actors, app_info=app_info, names=names, index=index + 1, start_time=start_time)
Esempio n. 3
0
 def lost_actor(self, lost_actor_id, lost_actor_info, required_reliability, cb):
     _log.analyze(self.id, "+", "Lost actor {}".format(lost_actor_id))
     self.am.delete_actor(lost_actor_id)
     replicator = Replicator(self, lost_actor_id, lost_actor_info, required_reliability)
     replicator.replicate_lost_actor(cb, time.time())