diff --git a/shm_consumer/MESA_shm_consumer.c b/shm_consumer/MESA_shm_consumer.c index 9ff435a..f240fdf 100644 --- a/shm_consumer/MESA_shm_consumer.c +++ b/shm_consumer/MESA_shm_consumer.c @@ -524,7 +524,7 @@ int main(int argc, char **argv) if(g_care_pid == CONSUMER_CARE_PID_SPEC){ if(!producer_pid_is_cared(tmp_ovw->producer_pid)){ MESA_shm_ring_queue_set_empty(ring_queue_head[i]); - goto next; + break ; } } if(g_output_mode == CONSUMER_OUTPUT_MODE_FILE){ @@ -534,7 +534,6 @@ int main(int argc, char **argv) } } } - next: usleep(5000); } return 0; diff --git a/src/MESA_handle_logger.c b/src/MESA_handle_logger.c index 900b9ee..4e7107b 100644 --- a/src/MESA_handle_logger.c +++ b/src/MESA_handle_logger.c @@ -346,6 +346,9 @@ void MESA_handle_runtime_log(void *handle, int level, const char *module, const } pthread_setspecific(MESA_pthread_key,(void*)pri); } + if(MESA_shm_ring_queue_is_full(pri->ring_queue_head)){ + return ; + } portable_vsnprintf(handle, pri->cache_buf, pri->cache_buf_len, fmt, ap); MESA_shm_copy_buf_to_ring_queue(pri->cache_buf, pri->cache_buf_len, pri->ring_queue_head, p_handle->real_log_file,p_handle->real_log_file_len); zlog(p_handle->zc, p_handle->runtime_log_file, strlen(p_handle->runtime_log_file), module, strlen(module), __LINE__, level, "%s", pri->cache_buf);