diff --git a/weed/storage/needle/volume_ttl.go b/weed/storage/needle/volume_ttl.go index 0b4c9579b..4a169870d 100644 --- a/weed/storage/needle/volume_ttl.go +++ b/weed/storage/needle/volume_ttl.go @@ -48,6 +48,9 @@ func ReadTTL(ttlString string) (*TTL, error) { // read stored bytes to a ttl func LoadTTLFromBytes(input []byte) (t *TTL) { + if input[0] == 0 && input[1] == 0 { + return EMPTY_TTL + } return &TTL{Count: input[0], Unit: input[1]} } diff --git a/weed/storage/volume_read_write.go b/weed/storage/volume_read_write.go index bd268c1a6..93ce1eab9 100644 --- a/weed/storage/volume_read_write.go +++ b/weed/storage/volume_read_write.go @@ -91,6 +91,11 @@ func (v *Volume) writeNeedle(n *needle.Needle) (offset uint64, size uint32, isUn return } + if n.Ttl == needle.EMPTY_TTL && v.Ttl != needle.EMPTY_TTL { + n.SetHasTtl() + n.Ttl = v.Ttl + } + n.AppendAtNs = uint64(time.Now().UnixNano()) if offset, size, _, err = n.Append(v.dataFile, v.Version()); err != nil { return