Skip to content

Commit

Permalink
use a bool to turn on exporting creation timestamp in seconds
Browse files Browse the repository at this point in the history
  • Loading branch information
sandeepsukhani committed Apr 9, 2024
1 parent af5d407 commit 4123731
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 28 deletions.
29 changes: 16 additions & 13 deletions pkg/storage/stores/shipper/indexshipper/tsdb/identifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,14 @@ func (p prefixedIdentifier) Name() string {
// Identifier has all the information needed to resolve a TSDB index
// Notably this abstracts away OS path separators, etc.
type SingleTenantTSDBIdentifier struct {
// origTS holds original timestamp from filename which was parsed to TS as time.Time.
// exportTSInSecs tells whether creation timestamp should be exported in unix seconds instead of nanoseconds.
// timestamp in filename could be a unix second or a unix nanosecond so
// retaining the original timestamp to be able to reproduce filename back from parsed identifier.
origTS int64
TS time.Time
From, Through model.Time
Checksum uint32
// helps us to be able to reproduce filename back from parsed identifier.
// Should be true ideally for older files with creation timestamp in seconds.
exportTSInSecs bool
TS time.Time
From, Through model.Time
Checksum uint32
}

// implement Hash
Expand All @@ -81,8 +82,10 @@ func (i SingleTenantTSDBIdentifier) Hash(h hash.Hash32) (err error) {

// str builds filename with format <file-creation-ts> + `-` + `compactor` + `-` + <oldest-chunk-start-ts> + `-` + <latest-chunk-end-ts> `-` + <index-checksum>
func (i SingleTenantTSDBIdentifier) str() string {
ts := i.origTS
if ts == 0 {
ts := int64(0)
if i.exportTSInSecs {
ts = i.TS.Unix()
} else {
ts = i.TS.UnixNano()
}
return fmt.Sprintf(
Expand Down Expand Up @@ -148,11 +151,11 @@ func ParseSingleTenantTSDBPath(p string) (id SingleTenantTSDBIdentifier, ok bool
parsedTS = time.Unix(0, ts)
}
return SingleTenantTSDBIdentifier{
origTS: ts,
TS: parsedTS,
From: model.Time(from),
Through: model.Time(through),
Checksum: uint32(checksum),
exportTSInSecs: len(elems[0]) <= 10,
TS: parsedTS,
From: model.Time(from),
Through: model.Time(through),
Checksum: uint32(checksum),
}, true

}
Expand Down
30 changes: 15 additions & 15 deletions pkg/storage/stores/shipper/indexshipper/tsdb/identifier_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,35 +20,35 @@ func TestParseSingleTenantTSDBPath(t *testing.T) {
desc: "simple_works",
input: "1-compactor-1-10-ff.tsdb",
id: SingleTenantTSDBIdentifier{
origTS: 1,
TS: time.Unix(1, 0),
From: 1,
Through: 10,
Checksum: 255,
exportTSInSecs: true,
TS: time.Unix(1, 0),
From: 1,
Through: 10,
Checksum: 255,
},
ok: true,
},
{
desc: "simple_works_with_nanosecond",
input: "1712534400000000000-compactor-1-10-ff.tsdb",
id: SingleTenantTSDBIdentifier{
origTS: 1712534400000000000,
TS: time.Unix(0, 1712534400000000000),
From: 1,
Through: 10,
Checksum: 255,
exportTSInSecs: false,
TS: time.Unix(0, 1712534400000000000),
From: 1,
Through: 10,
Checksum: 255,
},
ok: true,
},
{
desc: "uint32_max_checksum_works",
input: fmt.Sprintf("1-compactor-1-10-%x.tsdb", math.MaxUint32),
id: SingleTenantTSDBIdentifier{
origTS: 1,
TS: time.Unix(1, 0),
From: 1,
Through: 10,
Checksum: math.MaxUint32,
exportTSInSecs: true,
TS: time.Unix(1, 0),
From: 1,
Through: 10,
Checksum: math.MaxUint32,
},
ok: true,
},
Expand Down

0 comments on commit 4123731

Please sign in to comment.