fix: Skip deleted shard groups during backup

pull/19864/head
Ben Johnson 2020-11-02 08:40:24 -07:00
parent ea1a3dbe60
commit 5f1968b331
3 changed files with 13 additions and 1 deletions

View File

@ -249,8 +249,15 @@ func (b *cmdBackupBuilder) backupBucket(ctx context.Context, org *influxdb.Organ
// Iterate over and backup each shard. // Iterate over and backup each shard.
for _, rpi := range dbi.RetentionPolicies { for _, rpi := range dbi.RetentionPolicies {
for _, sg := range rpi.ShardGroups { for _, sg := range rpi.ShardGroups {
if sg.Deleted() {
continue
}
for _, sh := range sg.Shards { for _, sh := range sg.Shards {
if err := b.backupShard(ctx, org, bkt, rpi.Name, sh.ID); err != nil { if err := b.backupShard(ctx, org, bkt, rpi.Name, sh.ID); influxdb.ErrorCode(err) == influxdb.ENotFound {
b.logger.Warn("Shard removed during backup", zap.Uint64("shard_id", sh.ID))
continue
} else if err != nil {
return err return err
} }
} }

View File

@ -386,6 +386,10 @@ func (e *Engine) RestoreBucket(ctx context.Context, id influxdb.ID, buf []byte)
// Create shards. // Create shards.
for _, sgi := range rpi.ShardGroups { for _, sgi := range rpi.ShardGroups {
if sgi.Deleted() {
continue
}
for _, sh := range sgi.Shards { for _, sh := range sgi.Shards {
if err := e.tsdbStore.CreateShard(dbi.Name, rpi.Name, sh.ID, true); err != nil { if err := e.tsdbStore.CreateShard(dbi.Name, rpi.Name, sh.ID, true); err != nil {
return nil, err return nil, err

View File

@ -17,6 +17,7 @@ import (
"sync" "sync"
"time" "time"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/influxql/query" "github.com/influxdata/influxdb/v2/influxql/query"
"github.com/influxdata/influxdb/v2/logger" "github.com/influxdata/influxdb/v2/logger"
"github.com/influxdata/influxdb/v2/models" "github.com/influxdata/influxdb/v2/models"