[lttng-dev] [PATCH lttng-tools 1/2] Fix: error handling on relay version check

Jérémie Galarneau jeremie.galarneau at efficios.com
Mon Feb 19 19:54:36 EST 2018


Merged both patches in master, stable-2.10, and stable-2.9.

Thanks!
Jérémie

On 14 February 2018 at 16:32, Julien Desfossez <jdesfossez at efficios.com> wrote:
> If we have a network error while performing the version check between
> the session daemon and the relay, we should not report to the user that
> there is a version mismatch. We now return LTTNG_ERR_RELAYD_VERSION_FAIL
> on relayd_version_check() when the daemons are not compatible and the
> negative value from sendmsg/recvmsg on network errors.
>
> Signed-off-by: Julien Desfossez <jdesfossez at efficios.com>
> ---
>  src/bin/lttng-sessiond/cmd.c | 7 +++++--
>  src/common/relayd/relayd.c   | 5 +++--
>  2 files changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c
> index 1edcffe..0317d52 100644
> --- a/src/bin/lttng-sessiond/cmd.c
> +++ b/src/bin/lttng-sessiond/cmd.c
> @@ -877,8 +877,11 @@ static int create_connect_relayd(struct lttng_uri *uri,
>
>                 /* Check relayd version */
>                 ret = relayd_version_check(rsock);
> -               if (ret < 0) {
> -                       ret = LTTNG_ERR_RELAYD_VERSION_FAIL;
> +               if (ret == LTTNG_ERR_RELAYD_VERSION_FAIL) {
> +                       goto close_sock;
> +               } else if (ret < 0) {
> +                       ERR("Unable to reach lttng-relayd");
> +                       ret = LTTNG_ERR_RELAYD_CONNECT_FAIL;
>                         goto close_sock;
>                 }
>                 consumer->relay_major_version = rsock->major;
> diff --git a/src/common/relayd/relayd.c b/src/common/relayd/relayd.c
> index 2adcbe4..4cb1c1f 100644
> --- a/src/common/relayd/relayd.c
> +++ b/src/common/relayd/relayd.c
> @@ -378,7 +378,8 @@ end:
>   * If major versions are compatible, we assign minor_to_use to the
>   * minor version of the procotol we are going to use for this session.
>   *
> - * Return 0 if compatible else negative value.
> + * Return 0 if the two daemons are compatible, LTTNG_ERR_RELAYD_VERSION_FAIL
> + * otherwise, or a negative value on network errors.
>   */
>  int relayd_version_check(struct lttcomm_relayd_sock *rsock)
>  {
> @@ -420,7 +421,7 @@ int relayd_version_check(struct lttcomm_relayd_sock *rsock)
>          */
>         if (msg.major != rsock->major) {
>                 /* Not compatible */
> -               ret = -1;
> +               ret = LTTNG_ERR_RELAYD_VERSION_FAIL;
>                 DBG2("Relayd version is NOT compatible. Relayd version %u != %u (us)",
>                                 msg.major, rsock->major);
>                 goto error;
> --
> 2.7.4
>



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com


More information about the lttng-dev mailing list