void zbx_on_exit(void) { zabbix_log(LOG_LEVEL_DEBUG, "zbx_on_exit() called"); if (SUCCEED == DBtxn_ongoing()) DBrollback(); if (NULL != threads) { zbx_threads_wait(threads, threads_num); /* wait for all child processes to exit */ zbx_free(threads); } #ifdef HAVE_PTHREAD_PROCESS_SHARED zbx_locks_disable(); #endif free_metrics(); zbx_ipc_service_free_env(); DBconnect(ZBX_DB_CONNECT_EXIT); free_database_cache(); DBclose(); free_configuration_cache(); /* free history value cache */ zbx_vc_destroy(); zbx_destroy_itservices_lock(); /* free vmware support */ if (0 != CONFIG_VMWARE_FORKS) zbx_vmware_destroy(); free_selfmon_collector(); zbx_uninitialize_events(); zbx_unload_modules(); zabbix_log(LOG_LEVEL_INFORMATION, "Zabbix Server stopped. Zabbix %s (revision %s).", ZABBIX_VERSION, ZABBIX_REVISION); zabbix_close_log(); #if defined(PS_OVERWRITE_ARGV) setproctitle_free_env(); #endif exit(EXIT_SUCCESS); }
void zbx_on_exit() { zabbix_log(LOG_LEVEL_DEBUG, "zbx_on_exit() called"); if (NULL != threads) { int i; sigset_t set; /* ignore SIGCHLD signals in order for zbx_sleep() to work */ sigemptyset(&set); sigaddset(&set, SIGCHLD); sigprocmask(SIG_BLOCK, &set, NULL); for (i = 0; i < threads_num; i++) { if (threads[i]) { kill(threads[i], SIGTERM); threads[i] = ZBX_THREAD_HANDLE_NULL; } } zbx_free(threads); } free_metrics(); zbx_sleep(2); /* wait for all child processes to exit */ DBconnect(ZBX_DB_CONNECT_EXIT); free_database_cache(); free_configuration_cache(); DBclose(); #ifdef HAVE_OPENIPMI free_ipmi_handler(); #endif #ifdef HAVE_SQLITE3 zbx_remove_sqlite3_mutex(); #endif free_selfmon_collector(); zabbix_log(LOG_LEVEL_INFORMATION, "Zabbix Proxy stopped. Zabbix %s (revision %s).", ZABBIX_VERSION, ZABBIX_REVISION); zabbix_close_log(); exit(SUCCEED); }
void zbx_on_exit() { zabbix_log(LOG_LEVEL_DEBUG, "zbx_on_exit() called"); if (SUCCEED == DBtxn_ongoing()) DBrollback(); if (NULL != threads) { int i; sigset_t set; /* ignore SIGCHLD signals in order for zbx_sleep() to work */ sigemptyset(&set); sigaddset(&set, SIGCHLD); sigprocmask(SIG_BLOCK, &set, NULL); for (i = 0; i < threads_num; i++) { if (threads[i]) { kill(threads[i], SIGTERM); threads[i] = ZBX_THREAD_HANDLE_NULL; } } zbx_free(threads); } free_metrics(); zbx_sleep(2); /* wait for all child processes to exit */ DBconnect(ZBX_DB_CONNECT_EXIT); free_database_cache(); DBclose(); free_configuration_cache(); /* free history value cache */ zbx_vc_destroy(); zbx_destroy_itservices_lock(); zbx_mutex_destroy(&node_sync_access); #ifdef HAVE_OPENIPMI free_ipmi_handler(); #endif #ifdef HAVE_SQLITE3 zbx_remove_sqlite3_mutex(); #endif /* free vmware support */ if (0 != CONFIG_VMWARE_FORKS) zbx_vmware_destroy(); free_selfmon_collector(); unload_modules(); zabbix_log(LOG_LEVEL_INFORMATION, "Zabbix Server stopped. Zabbix %s (revision %s).", ZABBIX_VERSION, ZABBIX_REVISION); zabbix_close_log(); #if defined(PS_OVERWRITE_ARGV) setproctitle_free_env(); #endif exit(SUCCEED); }