goto end;
}
- _MSG("Waiting for data availability");
- fflush(stdout);
-
/* Check for data availability */
do {
data_ret = lttng_data_pending(session_name);
*/
if (data_ret) {
usleep(DEFAULT_DATA_AVAILABILITY_WAIT_TIME);
- _MSG(".");
- fflush(stdout);
}
} while (data_ret != 0);
- MSG("");
-
end:
error:
return ret;
int exclusion_count, char **exclusion_list)
{
struct lttcomm_session_msg lsm;
- char *varlen_data;
+ char *varlen_data, *jul_filter = NULL;
int ret = 0;
struct filter_parser_ctx *ctx = NULL;
FILE *fmem = NULL;
lsm.u.enable.exclusion_count = exclusion_count;
lsm.u.enable.bytecode_len = 0;
- if (exclusion_count == 0 && filter_expression == NULL) {
+ /*
+ * For the JUL domain, a filter is enforced except for the enable all
+ * event. This is done to avoid having the event in all sessions thus
+ * filtering by logger name.
+ */
+ if (exclusion_count == 0 && filter_expression == NULL &&
+ (handle->domain.type != LTTNG_DOMAIN_JUL || ev->name[0] == '*')) {
ret = lttng_ctl_ask_sessiond(&lsm, NULL);
return ret;
}
*/
/* Parse filter expression */
- if (filter_expression != NULL) {
+ if (filter_expression != NULL ||
+ (handle->domain.type == LTTNG_DOMAIN_JUL && ev->name[0] != '*')) {
+ if (handle->domain.type == LTTNG_DOMAIN_JUL) {
+ int err;
+
+ if (filter_expression) {
+ err = asprintf(&jul_filter, "%s && logger_name == \"%s\"",
+ filter_expression, ev->name);
+ } else {
+ err = asprintf(&jul_filter, "logger_name == \"%s\"", ev->name);
+ }
+ if (err < 0) {
+ PERROR("asprintf");
+ return -LTTNG_ERR_NOMEM;
+ }
+ filter_expression = jul_filter;
+ }
/*
* casting const to non-const, as the underlying function will
strlen(filter_expression), "r");
if (!fmem) {
fprintf(stderr, "Error opening memory as stream\n");
+ free(jul_filter);
return -LTTNG_ERR_FILTER_NOMEM;
}
ctx = filter_parser_ctx_alloc(fmem);
perror("fclose");
}
}
+ free(jul_filter);
return ret;
parse_error:
if (fclose(fmem) != 0) {
perror("fclose");
}
+ free(jul_filter);
return ret;
}
lsm.cmd_type = LTTNG_CREATE_SESSION_LIVE;
lttng_ctl_copy_string(lsm.session.name, name, sizeof(lsm.session.name));
- size = uri_parse_str_urls(url, NULL, &uris);
- if (size <= 0) {
- ret = -LTTNG_ERR_INVALID;
- goto end;
- }
+ if (url) {
+ size = uri_parse_str_urls(url, NULL, &uris);
+ if (size <= 0) {
+ ret = -LTTNG_ERR_INVALID;
+ goto end;
+ }
- /* file:// is not accepted for live session. */
- if (uris[0].dtype == LTTNG_DST_PATH) {
- ret = -LTTNG_ERR_INVALID;
- goto end;
+ /* file:// is not accepted for live session. */
+ if (uris[0].dtype == LTTNG_DST_PATH) {
+ ret = -LTTNG_ERR_INVALID;
+ goto end;
+ }
+ } else {
+ size = 0;
}
lsm.u.session_live.nb_uri = size;