Merged in master, stable-2.11, stable-2.10, and stable-2.9.

Thanks,
Jérémie

On Mon, Sep 10, 2018 at 08:09:15PM -0400, Jonathan Rajotte wrote:
> Performing the data pending check in two phases, local and network,
> reduce the total number network operation needed.
> 
> Doing the local check first enable early return in cases where data is
> still pending locally.
> 
> Signed-off-by: Jonathan Rajotte <jonathan.rajotte-jul...@efficios.com>
> ---
>  src/common/consumer/consumer.c | 52 ++++++++++++++++++----------------
>  1 file changed, 28 insertions(+), 24 deletions(-)
> 
> diff --git a/src/common/consumer/consumer.c b/src/common/consumer/consumer.c
> index 66f10c780..5a32c7e8b 100644
> --- a/src/common/consumer/consumer.c
> +++ b/src/common/consumer/consumer.c
> @@ -3734,19 +3734,6 @@ int consumer_data_pending(uint64_t id)
>       /* Ease our life a bit */
>       ht = consumer_data.stream_list_ht;
>  
> -     relayd = find_relayd_by_session_id(id);
> -     if (relayd) {
> -             /* Send init command for data pending. */
> -             pthread_mutex_lock(&relayd->ctrl_sock_mutex);
> -             ret = relayd_begin_data_pending(&relayd->control_sock,
> -                             relayd->relayd_session_id);
> -             pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
> -             if (ret < 0) {
> -                     /* Communication error thus the relayd so no data 
> pending. */
> -                     goto data_not_pending;
> -             }
> -     }
> -
>       cds_lfht_for_each_entry_duplicate(ht->ht,
>                       ht->hash_fct(&id, lttng_ht_seed),
>                       ht->match_fct, &id,
> @@ -3769,9 +3756,27 @@ int consumer_data_pending(uint64_t id)
>                       }
>               }
>  
> -             /* Relayd check */
> -             if (relayd) {
> -                     pthread_mutex_lock(&relayd->ctrl_sock_mutex);
> +             pthread_mutex_unlock(&stream->lock);
> +     }
> +
> +     relayd = find_relayd_by_session_id(id);
> +     if (relayd) {
> +             unsigned int is_data_inflight = 0;
> +
> +             /* Send init command for data pending. */
> +             pthread_mutex_lock(&relayd->ctrl_sock_mutex);
> +             ret = relayd_begin_data_pending(&relayd->control_sock,
> +                             relayd->relayd_session_id);
> +             if (ret < 0) {
> +                     pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
> +                     /* Communication error thus the relayd so no data 
> pending. */
> +                     goto data_not_pending;
> +             }
> +
> +             cds_lfht_for_each_entry_duplicate(ht->ht,
> +                             ht->hash_fct(&id, lttng_ht_seed),
> +                             ht->match_fct, &id,
> +                             &iter.iter, stream, node_session_id.node) {
>                       if (stream->metadata_flag) {
>                               ret = 
> relayd_quiescent_control(&relayd->control_sock,
>                                               stream->relayd_stream_id);
> @@ -3780,20 +3785,19 @@ int consumer_data_pending(uint64_t id)
>                                               stream->relayd_stream_id,
>                                               stream->next_net_seq_num - 1);
>                       }
> -                     pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
>                       if (ret == 1) {
> +                             pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
>                               pthread_mutex_unlock(&stream->lock);
>                               goto data_pending;
>                       }
> +                     if (ret < 0) {
> +                             pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
> +                             pthread_mutex_unlock(&stream->lock);
> +                             goto data_not_pending;
> +                     }
>               }
> -             pthread_mutex_unlock(&stream->lock);
> -     }
>  
> -     if (relayd) {
> -             unsigned int is_data_inflight = 0;
> -
> -             /* Send init command for data pending. */
> -             pthread_mutex_lock(&relayd->ctrl_sock_mutex);
> +             /* Send end command for data pending. */
>               ret = relayd_end_data_pending(&relayd->control_sock,
>                               relayd->relayd_session_id, &is_data_inflight);
>               pthread_mutex_unlock(&relayd->ctrl_sock_mutex);
> -- 
> 2.17.1
> 
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to