delete_ust_app_event(sock, ua_event);
}
- /* Wipe and free registry from session registry. */
- registry = get_session_registry(ua_chan->session);
- if (registry) {
- ust_registry_channel_del_free(registry, ua_chan->key);
+ if (ua_chan->session->buffer_type == LTTNG_BUFFER_PER_PID) {
+ /* Wipe and free registry from session registry. */
+ registry = get_session_registry(ua_chan->session);
+ if (registry) {
+ ust_registry_channel_del_free(registry, ua_chan->key);
+ }
}
if (ua_chan->obj != NULL) {
}
}
- /* Flush buffers */
+ /* Flush buffers and push metadata (for UID buffers). */
switch (usess->buffer_type) {
case LTTNG_BUFFER_PER_UID:
{
/* Flush all per UID buffers associated to that session. */
cds_list_for_each_entry(reg, &usess->buffer_reg_uid_list, lnode) {
+ struct ust_registry_session *ust_session_reg;
struct buffer_reg_channel *reg_chan;
struct consumer_socket *socket;
*/
(void) consumer_flush_channel(socket, reg_chan->consumer_key);
}
+
+ ust_session_reg = reg->registry->reg.ust;
+ if (!ust_session_reg->metadata_closed) {
+ /* Push metadata. */
+ (void) push_metadata(ust_session_reg, usess->consumer);
+ }
}
+
break;
}
case LTTNG_BUFFER_PER_PID: