From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [87.239.111.99] (localhost [127.0.0.1]) by dev.tarantool.org (Postfix) with ESMTP id 06A9568713; Mon, 1 Feb 2021 13:01:14 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 06A9568713 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=tarantool.org; s=dev; t=1612173674; bh=eMrmbdojwlSJhxDZK5sqcNMdm7nSDgmE95DL5y8l/wA=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=rKIKjTo4iJ7bslBNJKK7zcIw4vpqNhPEKj7fUIjj6WoTCH1rjD962tLoVV+XAttSW rfjhvxYdaZgDWjFMgng0y8p/H4xiJ4bK28xSHcBYbSuKBwMGRbvDZkP/1+ivt4ruFz b+/VYybghBOcLJfCImcgegS9gSd06HbvWSyk0tOI= Received: from mail-lj1-f177.google.com (mail-lj1-f177.google.com [209.85.208.177]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id 1532568713 for ; Mon, 1 Feb 2021 13:00:56 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 dev.tarantool.org 1532568713 Received: by mail-lj1-f177.google.com with SMTP id r14so18844553ljc.2 for ; Mon, 01 Feb 2021 02:00:56 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=LH2/b2PoRiC4PaRzB0mu6YsyK+WXy6v6s4eiljBp2h8=; b=ZR0DoGalUamYePATOupIEm0j9/OuDG3LKh3CGrb9T7cHNjXxlFb3xThs7Y56RlqVPG a0frSx9yoZKPnqULiAkZ/wkasrfRMfdjlDrOsTCdyacJkPlLQjDxJvHKGZ5Smk3u+WHQ 0WJ7ELS29CZYDGrdwDb9ovV6Iiy0iPBe7/m7dI4BvzJAy5YEvKerQnxQUNvcOnrya5V3 K2GOLwppeewByhZAKOUzCJq3YRwtyKuVcso9xYpnGTQTcKTz1ZVRbGfOI1wZRghV9Boq nLrmUqJsUL/2/+S66IpvznSy+bSawanPmwRTBtpdyo+24MFqhAPsi9uPxtzgWresXIUL xt/A== X-Gm-Message-State: AOAM5314OnVo0cCBFDPRLB3PwynN3JYD71llw6TozCU05XqBvqS6WCPC KB3GRpSpByTJgo5EJ5FilXP+EIRPzywhyg== X-Google-Smtp-Source: ABdhPJxVKwKBpPTdEXyzJo/AkVMfhKsPByOFLryTunfyuFSSryQTKljPjGJNSzX75JS10XLpRQ5OCA== X-Received: by 2002:a2e:9092:: with SMTP id l18mr6367779ljg.501.1612173654595; Mon, 01 Feb 2021 02:00:54 -0800 (PST) Received: from grain.localdomain ([5.18.103.226]) by smtp.gmail.com with ESMTPSA id v144sm2925440lfa.31.2021.02.01.02.00.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 01 Feb 2021 02:00:53 -0800 (PST) Received: by grain.localdomain (Postfix, from userid 1000) id 03E2356007F; Mon, 1 Feb 2021 13:00:40 +0300 (MSK) To: tml Date: Mon, 1 Feb 2021 13:00:35 +0300 Message-Id: <20210201100037.212301-2-gorcunov@gmail.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210201100037.212301-1-gorcunov@gmail.com> References: <20210201100037.212301-1-gorcunov@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH v2 1/3] applier: encode timestamp into vclock message X-BeenThere: tarantool-patches@dev.tarantool.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Cyrill Gorcunov via Tarantool-patches Reply-To: Cyrill Gorcunov Cc: Vladislav Shpilevoy Errors-To: tarantool-patches-bounces@dev.tarantool.org Sender: "Tarantool-patches" The vclock message sent by "applierw" fiber to the replication master node operates not only for tracking status of applied data but also as a heartbeat packets (after 1.7.7). To track downstream node lag we can put realtime value here. This won't break any existing instances without the patch because the field is unused anywhere yet. Part-of #5447 Signed-off-by: Cyrill Gorcunov --- src/box/applier.cc | 3 ++- src/box/xrow.c | 5 ++++- src/box/xrow.h | 21 +++++++++++++++++++-- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/box/applier.cc b/src/box/applier.cc index 553db76fc..a418edef0 100644 --- a/src/box/applier.cc +++ b/src/box/applier.cc @@ -183,7 +183,8 @@ applier_writer_f(va_list ap) try { applier->has_acks_to_send = false; struct xrow_header xrow; - xrow_encode_vclock(&xrow, &replicaset.vclock); + xrow_encode_vclock_timed(&xrow, &replicaset.vclock, + ev_now(loop())); coio_write_xrow(&io, &xrow); ERROR_INJECT(ERRINJ_APPLIER_SLOW_ACK, { fiber_sleep(0.01); diff --git a/src/box/xrow.c b/src/box/xrow.c index bc06738ad..b7b522820 100644 --- a/src/box/xrow.c +++ b/src/box/xrow.c @@ -1629,7 +1629,9 @@ xrow_encode_join(struct xrow_header *row, const struct tt_uuid *instance_uuid) } int -xrow_encode_vclock(struct xrow_header *row, const struct vclock *vclock) +xrow_encode_vclock_timed(struct xrow_header *row, + const struct vclock *vclock, + double tm) { memset(row, 0, sizeof(*row)); @@ -1648,6 +1650,7 @@ xrow_encode_vclock(struct xrow_header *row, const struct vclock *vclock) row->body[0].iov_base = buf; row->body[0].iov_len = (data - buf); row->bodycnt = 1; + row->tm = tm; row->type = IPROTO_OK; return 0; } diff --git a/src/box/xrow.h b/src/box/xrow.h index fde8f9474..8b91a3241 100644 --- a/src/box/xrow.h +++ b/src/box/xrow.h @@ -478,6 +478,20 @@ xrow_decode_register(struct xrow_header *row, struct tt_uuid *instance_uuid, NULL, NULL); } +/** + * Encode vector clock with timestamp. + * @param row[out] Row to encode into. + * @param vclock vector clock to encode. + * @param tm timestamp. + * + * @retval 0 Success. + * @retval -1 Memory error. + */ +int +xrow_encode_vclock_timed(struct xrow_header *row, + const struct vclock *vclock, + double tm); + /** * Encode end of stream command (a response to JOIN command). * @param row[out] Row to encode into. @@ -486,8 +500,11 @@ xrow_decode_register(struct xrow_header *row, struct tt_uuid *instance_uuid, * @retval 0 Success. * @retval -1 Memory error. */ -int -xrow_encode_vclock(struct xrow_header *row, const struct vclock *vclock); +static inline int +xrow_encode_vclock(struct xrow_header *row, const struct vclock *vclock) +{ + return xrow_encode_vclock_timed(row, vclock, 0); +} /** * Decode end of stream command (a response to JOIN command). -- 2.29.2