Пример #1
0
    def save_state(self) -> None:
        # If Redis is enabled, save the current time indicating that the node
        # monitor was alive at this time, the current session index, era index,
        # and the last height checked.
        if self.redis_enabled:
            key_si = Keys.get_node_monitor_session_index(self.monitor_name)
            key_ei = Keys.get_node_monitor_era_index(self.monitor_name)
            key_lh = Keys.get_node_monitor_last_height_checked(
                self.monitor_name)
            key_alive = Keys.get_node_monitor_alive(self.monitor_name)

            self.logger.debug('Saving node monitor state: %s=%s, %s=%s, %s=%s',
                              self._monitor_name, key_si, self._session_index,
                              key_lh, self._last_height_checked, key_ei,
                              self._era_index)

            # Set session and era index keys
            self.redis.set_multiple({
                key_si: self._session_index,
                key_ei: self._era_index
            })

            # Set last height checked key
            until = timedelta(seconds=self._redis_last_height_key_timeout)
            self.redis.set_for(key_lh, self._last_height_checked, until)

            # Set alive key (to be able to query latest update from Telegram)
            until = timedelta(seconds=self._redis_alive_key_timeout)
            self.redis.set_for(key_alive, str(datetime.now().timestamp()),
                               until)
Пример #2
0
    def load_state(self) -> None:
        # If Redis is enabled, load the session index, era index, and last
        # height checked for slashing if any.
        if self.redis_enabled:
            key_si = Keys.get_node_monitor_session_index(self.monitor_name)
            key_ei = Keys.get_node_monitor_era_index(self.monitor_name)
            key_lh = Keys.get_node_monitor_last_height_checked(
                self.monitor_name)
            self._session_index = self.redis.get_int(key_si, NONE)
            self._era_index = self.redis.get_int(key_ei, NONE)
            self._last_height_checked = self.redis.get_int(key_lh, NONE)

            self.logger.debug('Restored %s state: %s=%s, %s=%s, %s=%s',
                              self._monitor_name, key_si, self._session_index,
                              key_lh, self._last_height_checked, key_ei,
                              self._era_index)