summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
a0b3456)
A number of threads do not correctly pair registrations and
unregistrations to the health monitoring subsystem when an error
forces them to abort early. Since the pattern is mostly the same
in the notification and rotation thread, they are both fixed in
the same commit.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
DBG("[notification-thread] Started notification thread");
DBG("[notification-thread] Started notification thread");
+ health_register(health_sessiond, HEALTH_SESSIOND_TYPE_NOTIFICATION);
+ rcu_register_thread();
+ rcu_thread_online();
+
if (!handle) {
ERR("[notification-thread] Invalid thread context provided");
goto end;
}
if (!handle) {
ERR("[notification-thread] Invalid thread context provided");
goto end;
}
- rcu_register_thread();
- rcu_thread_online();
-
- health_register(health_sessiond, HEALTH_SESSIOND_TYPE_NOTIFICATION);
health_code_update();
ret = init_thread_state(handle, &state);
health_code_update();
ret = init_thread_state(handle, &state);
exit:
error:
fini_thread_state(&state);
exit:
error:
fini_thread_state(&state);
- health_unregister(health_sessiond);
rcu_thread_offline();
rcu_unregister_thread();
rcu_thread_offline();
rcu_unregister_thread();
+ health_unregister(health_sessiond);
int queue_pipe_fd;
DBG("[rotation-thread] Started rotation thread");
int queue_pipe_fd;
DBG("[rotation-thread] Started rotation thread");
+ rcu_register_thread();
+ rcu_thread_online();
+ health_register(health_sessiond, HEALTH_SESSIOND_TYPE_ROTATION);
+ health_code_update();
if (!handle) {
ERR("[rotation-thread] Invalid thread context provided");
if (!handle) {
ERR("[rotation-thread] Invalid thread context provided");
queue_pipe_fd = lttng_pipe_get_readfd(
handle->rotation_timer_queue->event_pipe);
queue_pipe_fd = lttng_pipe_get_readfd(
handle->rotation_timer_queue->event_pipe);
- rcu_register_thread();
- rcu_thread_online();
-
- health_register(health_sessiond, HEALTH_SESSIOND_TYPE_ROTATION);
- health_code_update();
ret = init_thread_state(handle, &thread);
if (ret) {
ret = init_thread_state(handle, &thread);
if (ret) {
error:
DBG("[rotation-thread] Exit");
fini_thread_state(&thread);
error:
DBG("[rotation-thread] Exit");
fini_thread_state(&thread);
health_unregister(health_sessiond);
rcu_thread_offline();
rcu_unregister_thread();
health_unregister(health_sessiond);
rcu_thread_offline();
rcu_unregister_thread();