X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fust-app.c;h=f97d869e6900fc9a9efd9903e67c164b0f78fc08;hp=52d1da787f8142cd7cf92bab17acd9d3eda11235;hb=e38d96f9a1077b329d2239aabc50f57fcd3a73e4;hpb=2b2694892c10cdb632afac2b2f1aabf7cb9673d9 diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c index 52d1da787..f97d869e6 100644 --- a/src/bin/lttng-sessiond/ust-app.c +++ b/src/bin/lttng-sessiond/ust-app.c @@ -487,9 +487,11 @@ void delete_ust_app_channel(int sock, struct ust_app_channel *ua_chan, registry = get_session_registry(ua_chan->session); if (registry) { ust_registry_channel_del_free(registry, ua_chan->key, - true); + sock >= 0); + } + if (sock >= 0) { + save_per_pid_lost_discarded_counters(ua_chan); } - save_per_pid_lost_discarded_counters(ua_chan); } if (ua_chan->obj != NULL) { @@ -5429,7 +5431,7 @@ static int reply_ust_register_channel(int sock, int cobjd, size_t nr_fields, struct ustctl_field *fields) { int ret, ret_code = 0; - uint32_t chan_id, reg_count; + uint32_t chan_id; uint64_t chan_reg_key; enum ustctl_channel_header type; struct ust_app *app; @@ -5481,13 +5483,12 @@ static int reply_ust_register_channel(int sock, int cobjd, assert(chan_reg); if (!chan_reg->register_done) { - reg_count = ust_registry_get_event_count(chan_reg); - if (reg_count < 31) { - type = USTCTL_CHANNEL_HEADER_COMPACT; - } else { - type = USTCTL_CHANNEL_HEADER_LARGE; - } - + /* + * TODO: eventually use the registry event count for + * this channel to better guess header type for per-pid + * buffers. + */ + type = USTCTL_CHANNEL_HEADER_LARGE; chan_reg->nr_ctx_fields = nr_fields; chan_reg->ctx_fields = fields; fields = NULL; @@ -6328,7 +6329,7 @@ int ust_app_regenerate_statedump_all(struct ltt_ust_session *usess) * * Return 0 on success or else a negative value. */ -int ust_app_rotate_session(struct ltt_session *session, bool *ust_active) +int ust_app_rotate_session(struct ltt_session *session) { int ret = 0; struct lttng_ht_iter iter; @@ -6357,22 +6358,6 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active) goto error; } - /* - * Account the metadata channel first to make sure the - * number of channels waiting for a rotation cannot - * reach 0 before we complete the iteration over all - * the channels. - */ - ret = rotate_add_channel_pending( - reg->registry->reg.ust->metadata_key, - LTTNG_DOMAIN_UST, session); - if (ret < 0) { - ret = reg->bits_per_long == 32 ? - -LTTNG_ERR_UST_CONSUMER32_FAIL : - -LTTNG_ERR_UST_CONSUMER64_FAIL; - goto error; - } - ret = snprintf(pathname, sizeof(pathname), DEFAULT_UST_TRACE_DIR "/" DEFAULT_UST_TRACE_UID_PATH, reg->uid, reg->bits_per_long); @@ -6384,22 +6369,12 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active) /* Rotate the data channels. */ cds_lfht_for_each_entry(reg->registry->channels->ht, &iter.iter, reg_chan, node.node) { - ret = rotate_add_channel_pending( - reg_chan->consumer_key, - LTTNG_DOMAIN_UST, session); - if (ret < 0) { - ret = reg->bits_per_long == 32 ? - -LTTNG_ERR_UST_CONSUMER32_FAIL : - -LTTNG_ERR_UST_CONSUMER64_FAIL; - goto error; - } ret = consumer_rotate_channel(socket, reg_chan->consumer_key, usess->uid, usess->gid, usess->consumer, pathname, /* is_metadata_channel */ false, - session->current_archive_id, - &session->rotate_pending_relay); + session->current_archive_id); if (ret < 0) { goto error; } @@ -6412,12 +6387,10 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active) usess->uid, usess->gid, usess->consumer, pathname, /* is_metadata_channel */ true, - session->current_archive_id, - &session->rotate_pending_relay); + session->current_archive_id); if (ret < 0) { goto error; } - *ust_active = true; } break; } @@ -6453,44 +6426,20 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active) registry = get_session_registry(ua_sess); if (!registry) { - DBG("Application session is being torn down. Abort snapshot record."); + DBG("Application session is being torn down. Abort session rotation."); ret = -1; goto error; } - /* - * Account the metadata channel first to make sure the - * number of channels waiting for a rotation cannot - * reach 0 before we complete the iteration over all - * the channels. - */ - ret = rotate_add_channel_pending(registry->metadata_key, - LTTNG_DOMAIN_UST, session); - if (ret < 0) { - ret = app->bits_per_long == 32 ? - -LTTNG_ERR_UST_CONSUMER32_FAIL : - -LTTNG_ERR_UST_CONSUMER64_FAIL; - goto error; - } /* Rotate the data channels. */ cds_lfht_for_each_entry(ua_sess->channels->ht, &chan_iter.iter, ua_chan, node.node) { - ret = rotate_add_channel_pending( - ua_chan->key, LTTNG_DOMAIN_UST, - session); - if (ret < 0) { - ret = app->bits_per_long == 32 ? - -LTTNG_ERR_UST_CONSUMER32_FAIL : - -LTTNG_ERR_UST_CONSUMER64_FAIL; - goto error; - } ret = consumer_rotate_channel(socket, ua_chan->key, ua_sess->euid, ua_sess->egid, ua_sess->consumer, pathname, /* is_metadata_channel */ false, - session->current_archive_id, - &session->rotate_pending_relay); + session->current_archive_id); if (ret < 0) { goto error; } @@ -6502,12 +6451,10 @@ int ust_app_rotate_session(struct ltt_session *session, bool *ust_active) ua_sess->euid, ua_sess->egid, ua_sess->consumer, pathname, /* is_metadata_channel */ true, - session->current_archive_id, - &session->rotate_pending_relay); + session->current_archive_id); if (ret < 0) { goto error; } - *ust_active = true; } break; }