def METHOD_NAME(self, msg):
    try:
        self.logger.info(f' SM annotate daemon received a message: {msg}')
        self._redis_client.set('cluster-busy', 'yes', ex=3600 * 13)  # key expires in 13h
        ds = self._manager.load_ds(msg['ds_id'])
        self._manager.set_ds_status(ds, DatasetStatus.ANNOTATING)
        self._manager.notify_update(ds.id, msg['action'], DaemonActionStage.STARTED)
        self._manager.post_to_slack('new', f' [v] New annotation message: {json.dumps(msg)}')
        self._manager.annotate(ds=ds, del_first=msg.get('del_first', False))
        update_msg = {
            'ds_id': msg['ds_id'],
            'ds_name': msg['ds_name'],
            'email': msg.get('email', None),
            'action': DaemonAction.INDEX,
        }
        self._update_queue_pub.publish(msg=update_msg, priority=DatasetActionPriority.HIGH)
        if self._sm_config['services'].get('off_sample', False):
            analyze_msg = {
                'ds_id': msg['ds_id'],
                'ds_name': msg['ds_name'],
                'action': DaemonAction.CLASSIFY_OFF_SAMPLE,
            }
            self._update_queue_pub.publish(msg=analyze_msg, priority=DatasetActionPriority.LOW)
    except Exception as e:
        raise AnnotationError(ds_id=msg['ds_id'], traceback=format_exc(chain=False)) from e