[tarantool-patches] [PATCH 5.5/6] swim: rename TTL to TTD
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Thu Apr 18 20:43:35 MSK 2019
TTL is time-to-live and it slightly confuses when is said about a
member's attribute. Status_ttl looks like after this value gets
0 the status is deleted or is no longer valid.
TTD is more precise definition for these counters and is expanded
as time-to-disseminate.
---
src/lib/swim/swim.c | 41 ++++++++++++++++++++-------------------
src/lib/swim/swim_proto.h | 2 +-
test/unit/swim.c | 4 ++--
test/unit/swim.result | 4 ++--
4 files changed, 26 insertions(+), 25 deletions(-)
diff --git a/src/lib/swim/swim.c b/src/lib/swim/swim.c
index 2dac6eedd..3e64e4c91 100644
--- a/src/lib/swim/swim.c
+++ b/src/lib/swim/swim.c
@@ -284,30 +284,31 @@ struct swim_member {
* member state each time any member attribute changes.
*
* According to SWIM, an event should be sent to all
- * members at least once - for that a TTL (time-to-live)
- * counter is maintained for each independent event type.
+ * members at least once - for that a TTD
+ * (time-to-disseminate) counter is maintained for each
+ * independent event type.
*
- * When a member state changes, the TTL is reset to the
+ * When a member state changes, the TTD is reset to the
* cluster size. It is then decremented after each send.
* This guarantees that each member state change is sent
* to each SWIM member at least once. If a new event of
* the same type is generated before a round is finished,
* the current event object is updated in place with reset
- * of the TTL.
+ * of the TTD.
*
- * To conclude, TTL works in two ways: to see which
+ * To conclude, TTD works in two ways: to see which
* specific member attribute needs dissemination and to
* track how many cluster members still need to learn
* about the change from this instance.
*/
/**
- * General TTL reset each time when any visible member
+ * General TTD reset each time when any visible member
* attribute is updated. It is always bigger or equal than
- * any other TTLs. In addition it helps to keep a dead
- * member not dropped until the TTL gets zero so as to
+ * any other TTDs. In addition it helps to keep a dead
+ * member not dropped until the TTD gets zero so as to
* allow other members to learn the dead status.
*/
- int status_ttl;
+ int status_ttd;
/**
* All created events are put into a queue sorted by event
* time.
@@ -419,7 +420,7 @@ struct swim {
* Queue of all members which have dissemination
* information. A member is added to the queue whenever
* any of its attributes changes, and stays in the queue
- * as long as the event TTL is non-zero.
+ * as long as the event TTD is non-zero.
*/
struct rlist dissemination_queue;
};
@@ -444,9 +445,9 @@ swim_wait_ack(struct swim *swim, struct swim_member *member)
/**
* On literally any update of a member it is added to a queue of
- * members to disseminate updates. Regardless of other TTLs, each
- * update also resets status TTL. Status TTL is always greater
- * than any other event-related TTL, so it's sufficient to look at
+ * members to disseminate updates. Regardless of other TTDs, each
+ * update also resets status TTD. Status TTD is always greater
+ * than any other event-related TTD, so it's sufficient to look at
* it alone to see that a member needs information dissemination.
* The status change itself occupies only 2 bytes in a packet, so
* it is cheap to send it on any update, while does reduce
@@ -459,7 +460,7 @@ swim_register_event(struct swim *swim, struct swim_member *member)
rlist_add_tail_entry(&swim->dissemination_queue, member,
in_dissemination_queue);
}
- member->status_ttl = mh_size(swim->members);
+ member->status_ttd = mh_size(swim->members);
swim_cached_round_msg_invalidate(swim);
}
@@ -872,8 +873,8 @@ swim_encode_round_msg(struct swim *swim)
}
/**
- * Decrement TTLs of all events. It is done after each round step.
- * Note, since we decrement TTL of all events, even those which
+ * Decrement TTDs of all events. It is done after each round step.
+ * Note, since we decrement TTD of all events, even those which
* have not been actually encoded and sent, if there are more
* events than can fit into a packet, the tail of the queue begins
* reeking and rotting. The most recently added members could even
@@ -884,13 +885,13 @@ swim_encode_round_msg(struct swim *swim)
* deal with.
*/
static void
-swim_decrease_event_ttl(struct swim *swim)
+swim_decrease_event_ttd(struct swim *swim)
{
struct swim_member *member, *tmp;
rlist_foreach_entry_safe(member, &swim->dissemination_queue,
in_dissemination_queue,
tmp) {
- if (--member->status_ttl == 0) {
+ if (--member->status_ttd == 0) {
rlist_del_entry(member, in_dissemination_queue);
swim_cached_round_msg_invalidate(swim);
if (member->status == MEMBER_LEFT)
@@ -959,7 +960,7 @@ swim_complete_step(struct swim_task *task,
* sections.
*/
swim_wait_ack(swim, m);
- swim_decrease_event_ttl(swim);
+ swim_decrease_event_ttd(swim);
}
}
}
@@ -1029,7 +1030,7 @@ swim_check_acks(struct ev_loop *loop, struct ev_timer *t, int events)
break;
case MEMBER_DEAD:
if (m->unacknowledged_pings >= NO_ACKS_TO_GC &&
- swim->gc_mode == SWIM_GC_ON && m->status_ttl == 0) {
+ swim->gc_mode == SWIM_GC_ON && m->status_ttd == 0) {
swim_delete_member(swim, m);
continue;
}
diff --git a/src/lib/swim/swim_proto.h b/src/lib/swim/swim_proto.h
index ab4057185..e1c70db43 100644
--- a/src/lib/swim/swim_proto.h
+++ b/src/lib/swim/swim_proto.h
@@ -268,7 +268,7 @@ swim_anti_entropy_header_bin_create(struct swim_anti_entropy_header_bin *header,
* and add more attributes. Or just encode new attributes after
* the passport. For example, anti-entropy can add a payload when
* it is up to date; dissemination adds a payload when it is up to
- * date and TTL is > 0.
+ * date and TTD is > 0.
*/
struct PACKED swim_passport_bin {
/** mp_encode_map(5) */
diff --git a/test/unit/swim.c b/test/unit/swim.c
index f3cf6cd06..6f3871606 100644
--- a/test/unit/swim.c
+++ b/test/unit/swim.c
@@ -254,10 +254,10 @@ swim_test_basic_failure_detection(void)
swim_run_for(1);
is(swim_cluster_member_status(cluster, 0, 1), MEMBER_DEAD, "after 2 "\
- "more unacks the member still is not deleted - dissemination TTL "\
+ "more unacks the member still is not deleted - dissemination TTD "\
"keeps it");
is(swim_cluster_wait_status(cluster, 0, 1, swim_member_status_MAX, 2),
- 0, "but it is dropped after 2 rounds when TTL gets 0");
+ 0, "but it is dropped after 2 rounds when TTD gets 0");
/*
* After IO unblock pending messages will be processed all
diff --git a/test/unit/swim.result b/test/unit/swim.result
index d315f181f..a90a86dd0 100644
--- a/test/unit/swim.result
+++ b/test/unit/swim.result
@@ -68,8 +68,8 @@ ok 5 - subtests
ok 1 - node is added as alive
ok 2 - member still is not dead after 2 noacks
ok 3 - but it is dead after one more
- ok 4 - after 2 more unacks the member still is not deleted - dissemination TTL keeps it
- ok 5 - but it is dropped after 2 rounds when TTL gets 0
+ ok 4 - after 2 more unacks the member still is not deleted - dissemination TTD keeps it
+ ok 5 - but it is dropped after 2 rounds when TTD gets 0
ok 6 - fullmesh is restored
ok 7 - a member is added back on an ACK
ok 6 - subtests
--
2.17.2 (Apple Git-113)
More information about the Tarantool-patches
mailing list