X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fconfig%2Fsession-config.c;h=0d75a088d402e17076b53994fb6f6915b0d8f13c;hp=8b91f32d5aebf47f6a05af102bb3358c069155b7;hb=36d1687c718cc647604741cf21e1ffa0b3459429;hpb=9cc1ba3b1f895beb3ef4b10009372f6a859068dd diff --git a/src/common/config/session-config.c b/src/common/config/session-config.c index 8b91f32d5..0d75a088d 100644 --- a/src/common/config/session-config.c +++ b/src/common/config/session-config.c @@ -2437,10 +2437,31 @@ int process_domain_node(xmlNodePtr domain_node, const char *session_name) /* create all channels */ for (node = xmlFirstElementChild(channels_node); node; node = xmlNextElementSibling(node)) { + const enum lttng_domain_type original_domain = domain.type; xmlNodePtr contexts_node = NULL; xmlNodePtr events_node = NULL; xmlNodePtr channel_attr_node; + /* + * Channels of the "agent" types cannot be created directly. + * They are meant to be created implicitly through the + * activation of events in their domain. However, a user + * can override the default channel configuration attributes + * by creating the underlying UST channel _before_ enabling + * an agent domain event. + * + * Hence, the channel's type is substituted before the creation + * and restored by the time the events are created. + */ + switch (domain.type) { + case LTTNG_DOMAIN_JUL: + case LTTNG_DOMAIN_LOG4J: + case LTTNG_DOMAIN_PYTHON: + domain.type = LTTNG_DOMAIN_UST; + default: + break; + } + channel = lttng_channel_create(&domain); if (!channel) { ret = -1; @@ -2462,6 +2483,9 @@ int process_domain_node(xmlNodePtr domain_node, const char *session_name) goto end; } + /* Restore the original channel domain. */ + domain.type = original_domain; + ret = process_events_node(events_node, handle, channel->name); if (ret) { goto end;