in Sources/aliyun-log-c-sdk/log_producer_manager.c [73:107]
void _try_flush_loggroup(log_producer_manager * producer_manager)
{
int32_t now_time = time(NULL);
CS_ENTER(producer_manager->lock);
if (producer_manager->builder != NULL && now_time - producer_manager->firstLogTime > producer_manager->producer_config->packageTimeoutInMS / 1000)
{
log_group_builder * builder = producer_manager->builder;
producer_manager->builder = NULL;
CS_LEAVE(producer_manager->lock);
size_t loggroup_size = builder->loggroup_size;
int rst = log_queue_push(producer_manager->loggroup_queue, builder);
aos_debug_log("try push loggroup to flusher, size : %d, status : %d", (int)loggroup_size, rst);
if (rst != 0)
{
aos_error_log("try push loggroup to flusher failed, force drop this log group, error code : %d", rst);
if (producer_manager->send_done_function != NULL)
{
producer_manager->send_done_function(producer_manager->producer_config->logstore, LOG_PRODUCER_DROP_ERROR, loggroup_size, 0,
NULL, "try push loggroup to flusher failed, force drop this log group", NULL, producer_manager->user_param);
}
log_group_destroy(builder);
}
else
{
producer_manager->totalBufferSize += loggroup_size;
COND_SIGNAL(producer_manager->triger_cond);
}
}
else
{
CS_LEAVE(producer_manager->lock);
}
}