Merge pull request #492 from rwindelz/fix-ttl

fix(store): TTL should range 1..n rather than 1..n+1
release-0.4
Xiang Li 2014-01-20 09:28:38 -08:00
commit d122ed3bcd
1 changed files with 13 additions and 1 deletions

View File

@ -113,7 +113,19 @@ func (n *node) Write(value string, index uint64) *etcdErr.Error {
func (n *node) ExpirationAndTTL() (*time.Time, int64) {
if !n.IsPermanent() {
return &n.ExpireTime, int64(n.ExpireTime.Sub(time.Now())/time.Second) + 1
/* compute ttl as:
ceiling( (expireTime - timeNow) / nanosecondsPerSecond )
which ranges from 1..n
rather than as:
( (expireTime - timeNow) / nanosecondsPerSecond ) + 1
which ranges 1..n+1
*/
ttlN := n.ExpireTime.Sub(time.Now())
ttl := ttlN / time.Second
if (ttlN % time.Second) > 0 {
ttl++
}
return &n.ExpireTime, int64(ttl)
}
return nil, 0
}