Authentication-Results: mail-b.sr.ht; dkim=pass header.d=scaleway.com header.i=@scaleway.com Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by mail-b.sr.ht (Postfix) with ESMTPS id D056F11EE64 for <~ne02ptzero/libfloat@lists.sr.ht>; Tue, 20 Sep 2022 09:36:11 +0000 (UTC) Received: by mail-wm1-f53.google.com with SMTP id h130-20020a1c2188000000b003b4cadadce7so5180072wmh.3 for <~ne02ptzero/libfloat@lists.sr.ht>; Tue, 20 Sep 2022 02:36:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=scaleway.com; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date; bh=QYzL9Q6rdOMFR7Slqp6V87Ht/A5lwbJHpz/cdSk7bZg=; b=eqkNOESgyT1vfdQQFWp392e+9+d3rNTkbxpNMUwy/u17xUKt2QwEdG/cylESAyRbyW C9YAU3h8nGWOax66ub4Df3uH1ZLidgorCu8G6YHo2eiwxX1TbGy8l1rd8TBbpqHsmW0O fwHDL5e4W05qZ5M3qoK3CYMceZt8TUAROOA8uRINZCCN9TECGoD7xxgobXwXsND+EdT8 N+97WCbXSayWG6H7k859HfTajnDcTdRdT6iDeJqdI0z9rIqUQT8Ds6B+k/L0ZUG3cvUt a1o+NPEM2n3GSKZRghFw7hpQiF6gSCkk/+7nK/xkRUJDnAOh/zPimiAFVusHwBOr0NA+ 734Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date; bh=QYzL9Q6rdOMFR7Slqp6V87Ht/A5lwbJHpz/cdSk7bZg=; b=yR7A9hT6jUxQbb88b11HJLcgVFRWbN7DtXTEepEaCZ+8O2zdP2pbru0bM3eIntZkZV GKf/dfu3TIL1HZubKXB4ZcGqkjIPPr/HkO0SqkU08pX9zcEZmF3dF2bFRPVePdInA16v OkjAxLFNgXgwGhX3AQdBn3FEFyhB2vUwaM88t1M/PxnOCPe8tj7ZfxYvZxxYSJj/fBP0 bpQvItHFfHghyWkjciVIJMApcRZI8vghPEQKCzsXj7j/qFA6MJftOQOSBStS4U9T++tI +uCNzwDsJ5OIpEvY3VgoP8/BffdLYSEGekEtKfsyE7Vx8xw3pTgGLdLozzjALmtRc1g4 AABA== X-Gm-Message-State: ACrzQf2p+8oR1sXUFm7Sq9N6p3e7wKeri71BXbEk8W/Oyt8nDCSg4ztU cHfLbYFiWfOqmEzTdLOKLtMcRk1Yw06+GQ== X-Google-Smtp-Source: AMsMyM4rJ5bjzYaY2T3jGPkTIueO74f4YR/+e0gtugPCg7IFJyO1GTzflZXTTKuzDK3lNNutAobvHw== X-Received: by 2002:a1c:f002:0:b0:3b4:dda4:b58f with SMTP id a2-20020a1cf002000000b003b4dda4b58fmr1610238wmb.184.1663666570562; Tue, 20 Sep 2022 02:36:10 -0700 (PDT) Received: from darlene.infra.online.net (176-159-39-28.abo.bbox.fr. [176.159.39.28]) by smtp.gmail.com with ESMTPSA id v67-20020a1cac46000000b003b4764442f0sm1743044wme.11.2022.09.20.02.36.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 20 Sep 2022 02:36:10 -0700 (PDT) From: Louis Solofrizzo To: ~ne02ptzero/libfloat@lists.sr.ht Cc: fflorensa@scaleway.com, lsolofrizzo@scaleway.com, pcyvoct@scaleway.com Subject: [PATCH] raft: Add stat for elected leader timestamp Date: Tue, 20 Sep 2022 11:36:06 +0200 Message-Id: <20220920093606.2906407-1-lsolofrizzo@scaleway.com> X-Mailer: git-send-email 2.37.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Signed-off-by: Louis Solofrizzo --- libfloat.h | 1 + raft.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/libfloat.h b/libfloat.h index 9f8ad38..17b3c89 100644 --- a/libfloat.h +++ b/libfloat.h @@ -46,6 +46,7 @@ struct libfloat_ctx_s { struct { uint64_t leader_election; /*!< Count of leader elections for this cluster */ uint64_t orphans_logs; /*!< Count of logs that are applied on the leader only */ + time_t leader_election_time; /*!< Timestamp of the last leader election */ } stat; struct { diff --git a/raft.c b/raft.c index 90d5e55..2cfce3c 100644 --- a/raft.c +++ b/raft.c @@ -23,6 +23,7 @@ void libfloat_become_leader(libfloat_ctx_t *ctx) }); ctx->me->is_up_to_date = 1; + ctx->stat.leader_election_time = ctx->time(NULL); } void __libfloat_become_candidate(libfloat_ctx_t *ctx, libfloat_elections_args_t *args) @@ -30,6 +31,7 @@ void __libfloat_become_candidate(libfloat_ctx_t *ctx, libfloat_elections_args_t DEBUG(ctx, "Becoming candidate: reason=%s", args->reason); ctx->state = RAFT_STATE_CANDIDATE; ctx->election_timeout_rand = ctx->conf.election_timeout + ctx->rand() % ctx->conf.election_timeout; + ctx->stat.leader_election_time = 0; } void __libfloat_become_follower(libfloat_ctx_t *ctx, libfloat_elections_args_t *args) @@ -38,6 +40,7 @@ void __libfloat_become_follower(libfloat_ctx_t *ctx, libfloat_elections_args_t * ctx->abort_send_snapshot(ctx); ctx->state = RAFT_STATE_FOLLOWER; ctx->election_timeout_rand = ctx->conf.election_timeout + ctx->rand() % ctx->conf.election_timeout; + ctx->stat.leader_election_time = 0; libfloat_vote_for(ctx, 0); } @@ -49,6 +52,7 @@ void libfloat_step_down(libfloat_ctx_t *ctx) ctx->leader = NULL; ctx->state = RAFT_STATE_NONE; + ctx->stat.leader_election_time = 0; } void libfloat_send_append_entries_to_all(libfloat_ctx_t *ctx, bool heartbeat) -- 2.37.3