/*
* Allocate the ltt_sessions_ht_by_id HT.
+ *
+ * The session list lock must be held.
*/
int ltt_sessions_ht_alloc(void)
{
/*
* Destroy the ltt_sessions_ht_by_id HT.
+ *
+ * The session list lock must be held.
*/
-void ltt_sessions_ht_destroy(void)
+static void ltt_sessions_ht_destroy(void)
{
if (!ltt_sessions_ht_by_id) {
return;
* Return 1 if empty, 0 if not empty.
* The session list lock must be held.
*/
-static int ltt_sessions_ht_empty()
+static int ltt_sessions_ht_empty(void)
{
int ret;
struct lttng_ht_iter iter;
struct ltt_session *ls;
+ if (!ltt_sessions_ht_by_id) {
+ goto end;
+ }
+
lttng_ht_lookup(ltt_sessions_ht_by_id, &id, &iter);
node = lttng_ht_iter_get_node_u64(&iter);
if (node == NULL) {
- goto error;
+ goto end;
}
ls = caa_container_of(node, struct ltt_session, node);
DBG3("Session %" PRIu64 " found by id.", id);
return ls;
-error:
+end:
DBG3("Session %" PRIu64 " NOT found by id", id);
return NULL;
}
/* Safety check */
assert(session);
- DBG("Destroying session %s", session->name);
+ DBG("Destroying session %s (id %" PRIu64 ")", session->name, session->id);
del_session_list(session);
pthread_mutex_destroy(&session->lock);
del_session_ht(session);
goto error;
}
+ new_session->rotate_pending = false;
+ new_session->rotate_pending_relay = false;
+ new_session->rotate_relay_pending_timer_enabled = false;
+ new_session->rotate_timer = false;
+
/* Add new session to the session list */
session_lock_list();
new_session->id = add_session_list(new_session);