[sheepdog] [PATCH] zookeeper: return the found path in zk_find_seq_node
Liu Yuan
namei.unix at gmail.com
Fri Jun 7 07:03:29 CEST 2013
On 06/07/2013 11:33 AM, MORITA Kazutaka wrote:
> From: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
>
> This is necessary for the zookeeper driver to get the queue position
> on the first push.
>
> Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
> ---
> sheep/cluster/zookeeper.c | 8 +++-----
> 1 file changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/sheep/cluster/zookeeper.c b/sheep/cluster/zookeeper.c
> index 2be3e4b..45db10a 100644
> --- a/sheep/cluster/zookeeper.c
> +++ b/sheep/cluster/zookeeper.c
> @@ -261,16 +261,14 @@ static bool zk_queue_peek(void)
> }
>
> /* return true if there is a node with 'id' in the queue. */
> -static bool zk_find_seq_node(uint64_t id)
> +static bool zk_find_seq_node(uint64_t id, char *seq_path, int seq_path_len)
> {
> int rc, len;
>
> for (int seq = queue_pos; ; seq++) {
> - char seq_path[MAX_NODE_STR_LEN];
> struct zk_event ev;
>
> - snprintf(seq_path, sizeof(seq_path), QUEUE_ZNODE"/%010"PRId32,
> - seq);
> + snprintf(seq_path, seq_path_len, QUEUE_ZNODE"/%010"PRId32, seq);
> len = offsetof(typeof(ev), id) + sizeof(ev.id);
> rc = zk_get_data(seq_path, &ev, &len);
> switch (rc) {
> @@ -307,7 +305,7 @@ again:
> break;
> case ZOPERATIONTIMEOUT:
> case ZCONNECTIONLOSS:
> - if (!zk_find_seq_node(ev->id))
> + if (!zk_find_seq_node(ev->id, buf, sizeof(buf)))
> /* retry if seq_node was not created */
> goto again;
> break;
>
Applied, thanks.
Yuan
More information about the sheepdog
mailing list