Skip to content

Commit adac4cc

Browse files
vCraNaman-B-Parlecha
authored andcommitted
Receive: Remove migration of legacy storage to multi-tsdb (thanos-io#8289)
This has been in since 0.13 (~5 years ago). This fixes issues caused when the default-tenant does not have any data and gets churned, resulting in the migration assuming that per-tenant directories are actually blocks, resulting in blocks not being queryable. Signed-off-by: Aaron Walker <[email protected]>
1 parent fb7dae1 commit adac4cc

File tree

2 files changed

+8
-21
lines changed

2 files changed

+8
-21
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ We use *breaking :warning:* to mark changes that are not backward compatible (re
2727
- [#8192](https://github.com/thanos-io/thanos/pull/8192) Sidecar: fix default get config timeout
2828

2929
### Removed
30+
- [#8289](https://github.com/thanos-io/thanos/pull/8289) Receive: *breaking :warning:* Removed migration of legacy-TSDB to multi-TSDB. Ensure you are running version >0.13
3031

3132
### Fixed
3233
- [#8199](https://github.com/thanos-io/thanos/pull/8199) Query: handle panics or nil pointer dereference in querier gracefully when query analyze returns nil

cmd/thanos/receive.go

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -210,10 +210,9 @@ func runReceive(
210210
}
211211
}
212212

213-
// TODO(brancz): remove after a couple of versions
214-
// Migrate non-multi-tsdb capable storage to multi-tsdb disk layout.
215-
if err := migrateLegacyStorage(logger, conf.dataDir, conf.defaultTenantID); err != nil {
216-
return errors.Wrapf(err, "migrate legacy storage in %v to default tenant %v", conf.dataDir, conf.defaultTenantID)
213+
// Create TSDB for the default tenant.
214+
if err := createDefautTenantTSDB(logger, conf.dataDir, conf.defaultTenantID); err != nil {
215+
return errors.Wrapf(err, "create default tenant tsdb in %v", conf.dataDir)
217216
}
218217

219218
relabelContentYaml, err := conf.relabelConfigPath.Content()
@@ -796,38 +795,25 @@ func startTSDBAndUpload(g *run.Group,
796795
return nil
797796
}
798797

799-
func migrateLegacyStorage(logger log.Logger, dataDir, defaultTenantID string) error {
798+
func createDefautTenantTSDB(logger log.Logger, dataDir, defaultTenantID string) error {
800799
defaultTenantDataDir := path.Join(dataDir, defaultTenantID)
801800

802801
if _, err := os.Stat(defaultTenantDataDir); !os.IsNotExist(err) {
803-
level.Info(logger).Log("msg", "default tenant data dir already present, not attempting to migrate storage")
802+
level.Info(logger).Log("msg", "default tenant data dir already present, will not create")
804803
return nil
805804
}
806805

807806
if _, err := os.Stat(dataDir); os.IsNotExist(err) {
808-
level.Info(logger).Log("msg", "no existing storage found, no data migration attempted")
807+
level.Info(logger).Log("msg", "no existing storage found, not creating default tenant data dir")
809808
return nil
810809
}
811810

812-
level.Info(logger).Log("msg", "found legacy storage, migrating to multi-tsdb layout with default tenant", "defaultTenantID", defaultTenantID)
813-
814-
files, err := os.ReadDir(dataDir)
815-
if err != nil {
816-
return errors.Wrapf(err, "read legacy data dir: %v", dataDir)
817-
}
811+
level.Info(logger).Log("msg", "default tenant data dir not found, creating", "defaultTenantID", defaultTenantID)
818812

819813
if err := os.MkdirAll(defaultTenantDataDir, 0750); err != nil {
820814
return errors.Wrapf(err, "create default tenant data dir: %v", defaultTenantDataDir)
821815
}
822816

823-
for _, f := range files {
824-
from := path.Join(dataDir, f.Name())
825-
to := path.Join(defaultTenantDataDir, f.Name())
826-
if err := os.Rename(from, to); err != nil {
827-
return errors.Wrapf(err, "migrate file from %v to %v", from, to)
828-
}
829-
}
830-
831817
return nil
832818
}
833819

0 commit comments

Comments
 (0)