code: def _process_key_val(self, instance, key, val):
          '''
          Logic to let the plugin instance process the redis key/val
          Split out for unit testing
  
          @param instance: the plugin instance
          @param key: the redis key
          @param val: the key value from redis
          '''
          if instance.check_precondition(key, val):
              combined = '{k}:{v}'.format(k=key, v=val)
              self._increment_total_stat(combined)
              self._increment_plugin_stat(
                  instance.__class__.__name__,
                  combined)
              instance.handle(key, val)
              self.redis_conn.delete(key)
              failkey = self._get_fail_key(key)
              if self.redis_conn.exists(failkey):
                  self.redis_conn.delete(failkeyf _process_key_val(self, instance, key, val):
          '''
          Logic to let the plugin instance process the redis key/val
          Split out for unit testing
  
          @param instance: the plugin instance
          @param key: the redis key
          @param val: the key value from redis
          '''
          if instance.check_precondition(key, val):
              combined = '{k}:{v}'.format(k=key, v=val)
              self._increment_total_stat(combined)
              self._increment_plugin_stat(
                  instance.__class__.__name__,
                  combined)
              instance.handle(key, val)
              self.redis_conn.delete(key)
              failkey = self._get_fail_key(key)
              if self.redis_conn.exists(failkey):
                  self.redis_conn.delete(failkey)
docs: Logic to let the plugin instance process the redis key/val
          Split out for unit testing
  
          @param instance: the plugin instance
          @param key: the redis key
          @param val: the key value from redis