fix: error instead of panic when enterprise tries to restore with OSS (#22019)
parent
733a6b4245
commit
d0fe2ba2ff
|
@ -26,6 +26,7 @@
|
|||
- [#21947](https://github.com/influxdata/influxdb/pull/21947): fix: prevent silently dropped writes with overlapping shards
|
||||
- [#21978](https://github.com/influxdata/influxdb/pull/21978): fix: restore portable backup bug
|
||||
- [#21992](https://github.com/influxdata/influxdb/pull/21992): fix: systemd-start script should be executable by group and others
|
||||
- [#22019](https://github.com/influxdata/influxdb/pull/22019): fix: error instead of panic when enterprise tries to restore with OSS
|
||||
|
||||
v1.9.2 [unreleased]
|
||||
- [#21631](https://github.com/influxdata/influxdb/pull/21631): fix: group by returns multiple results per group in some circumstances
|
||||
|
|
|
@ -28,18 +28,24 @@ const (
|
|||
BackupMagicHeader = 0x59590101
|
||||
)
|
||||
|
||||
type MetaClient interface {
|
||||
encoding.BinaryMarshaler
|
||||
Database(name string) *meta.DatabaseInfo
|
||||
}
|
||||
|
||||
type OSSMetaClient interface {
|
||||
MetaClient
|
||||
Data() meta.Data
|
||||
SetData(data *meta.Data) error
|
||||
}
|
||||
|
||||
// Service manages the listener for the snapshot endpoint.
|
||||
type Service struct {
|
||||
wg sync.WaitGroup
|
||||
|
||||
Node *influxdb.Node
|
||||
|
||||
MetaClient interface {
|
||||
encoding.BinaryMarshaler
|
||||
Database(name string) *meta.DatabaseInfo
|
||||
Data() meta.Data
|
||||
SetData(data *meta.Data) error
|
||||
}
|
||||
MetaClient MetaClient
|
||||
|
||||
TSDBStore interface {
|
||||
BackupShard(id uint64, since time.Time, w io.Writer) error
|
||||
|
@ -182,7 +188,15 @@ func (s *Service) updateMetaStore(conn net.Conn, bits []byte, backupDBName, rest
|
|||
return fmt.Errorf("failed to decode meta: %s", err)
|
||||
}
|
||||
|
||||
data := s.MetaClient.Data()
|
||||
ossClient, ok := s.MetaClient.(OSSMetaClient)
|
||||
if !ok {
|
||||
if err := s.respondIDMap(conn, map[uint64]uint64{}); err != nil {
|
||||
return err
|
||||
}
|
||||
return fmt.Errorf("updateMetaStore only supported for OSS - likely tried to restore with OSS tooling instead of influxd-ctl")
|
||||
}
|
||||
|
||||
data := ossClient.Data()
|
||||
|
||||
IDMap, newDBs, err := data.ImportData(md, backupDBName, restoreDBName, backupRPName, restoreRPName)
|
||||
if err != nil {
|
||||
|
@ -192,7 +206,7 @@ func (s *Service) updateMetaStore(conn net.Conn, bits []byte, backupDBName, rest
|
|||
return err
|
||||
}
|
||||
|
||||
err = s.MetaClient.SetData(&data)
|
||||
err = ossClient.SetData(&data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue