void log_threaded_dest_driver_message_drop(LogThrDestDriver *self, LogMessage *msg) { stats_counter_inc(self->dropped_messages); log_threaded_dest_driver_message_accept(self, msg); }
static void log_threaded_dest_driver_do_insert(LogThrDestDriver *self) { LogMessage *msg; worker_insert_result_t result; LogPathOptions path_options = LOG_PATH_OPTIONS_INIT; while (!self->suspended && (msg = log_queue_pop_head(self->queue, &path_options)) != NULL) { msg_set_context(msg); log_msg_refcache_start_consumer(msg, &path_options); result = self->worker.insert(self, msg); switch (result) { case WORKER_INSERT_RESULT_DROP: log_threaded_dest_driver_message_drop(self, msg); _disconnect_and_suspend(self); break; case WORKER_INSERT_RESULT_ERROR: self->retries.counter++; if (self->retries.counter >= self->retries.max) { if (self->messages.retry_over) self->messages.retry_over(self, msg); log_threaded_dest_driver_message_drop(self, msg); } else { log_threaded_dest_driver_message_rewind(self, msg); _disconnect_and_suspend(self); } break; case WORKER_INSERT_RESULT_REWIND: log_threaded_dest_driver_message_rewind(self, msg); break; case WORKER_INSERT_RESULT_SUCCESS: log_threaded_dest_driver_message_accept(self, msg); break; default: break; } msg_set_context(NULL); log_msg_refcache_stop(); } }