code: func readTTL(rootDir string, bucket string, key string) (time.Duration, bool, error) {
  	filename := filepath.Join(rootDir, bucket, "."+key+".ttl")
  
  	bytes, err := ioutil.ReadFile(filename)
  	if err != nil {
  		if os.IsNotExist(err) {
  			return legacy.Forever, false, nil
  		}
  		return legacy.Forever, false, trace.Wrap(err)
  	}
  	if len(bytes) == 0 {
  		return legacy.Forever, false, nil
  	}
  
  	var expiryTime time.Time
  	if err = expiryTime.UnmarshalText(bytes); err != nil {
  		return legacy.Forever, false, trace.Wrap(err)
  	}
  
  	ttl := expiryTime.Sub(time.Now())
  	if ttl < 0 {
  		return legacy.Forever, true, nil
  	}
  	return ttl, false, nil
  }
docs: // DELETE IN: 2.8.0
  // readTTL reads in TTL for the given key. If no TTL key is found,
  // legacy.Forever is returned.