Считает ли Кассандра миллисекунды при выражении столбца? - PullRequest
1 голос
/ 10 июля 2020

Я знаю, что для C* минимальное время TTL составляет 1 секунду. Но учитывает ли он миллисекундную часть времени вставки при истечении срока действия столбца? Например, я вставил запись в 11: 05: 06: 320 утра с 1 секундой ttl. Я ожидаю, что срок его действия истечет в 11: 05: 07: 320 утра или он истечет в 11:05:07?

1 Ответ

2 голосов
/ 10 июля 2020

Запись, вставленная в 11: 05: 06: 320 с 1-секундным TTL, истечет в 11: 05: 07: 000.

Кассандра вычисляет localExpirationTime для каждой истекающей ячейки, что является местным временем в секунд плюс TTL [1]. В вашем примере это будет 11:05:07. Когда Кассандра решает, жива ли ячейка, она проверяет, что текущее время строго меньше времени истечения срока [2]. В результате, начиная с 11:05:07, наша ячейка будет считаться просроченной.

  1. https://github.com/apache/cassandra/blob/cassandra-3.11/src/java/org/apache/cassandra/db/ExpirationDateOverflowHandling.java#L118
  2. https://github.com/apache/cassandra/blob/cassandra-3.11/src/java/org/apache/cassandra/db/LivenessInfo.java#L330
...