Skip to content

Commit c4fdf87

Browse files
committed
backup: pass URIs instead of stores to ResolveBackupManifests
First attempt to reduce ResolveBackupManifests signature and metadata loading logic bloat. Epic: none Release note: none
1 parent b61788f commit c4fdf87

File tree

5 files changed

+32
-80
lines changed

5 files changed

+32
-80
lines changed

pkg/backup/backupdest/backup_destination.go

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -557,8 +557,6 @@ func ResolveBackupManifests(
557557
mem *mon.BoundAccount,
558558
defaultCollectionURI string,
559559
collectionURIs []string,
560-
baseStores []cloud.ExternalStorage,
561-
incStores []cloud.ExternalStorage,
562560
mkStore cloud.ExternalStorageFromURIFactory,
563561
resolvedSubdir string,
564562
fullyResolvedBaseDirectory []string,
@@ -590,7 +588,7 @@ func ResolveBackupManifests(
590588

591589
if !ReadBackupIndexEnabled.Get(&execCfg.Settings.SV) || !exists || isCustomIncLocation {
592590
return legacyResolveBackupManifests(
593-
ctx, execCfg, mem, defaultCollectionURI, baseStores, incStores, mkStore,
591+
ctx, execCfg, mem, defaultCollectionURI, mkStore,
594592
resolvedSubdir, fullyResolvedBaseDirectory, fullyResolvedIncrementalsDirectory,
595593
endTime, encryption, kmsEnv, user, includeSkipped, includeCompacted,
596594
)
@@ -609,8 +607,6 @@ func legacyResolveBackupManifests(
609607
execCfg *sql.ExecutorConfig,
610608
mem *mon.BoundAccount,
611609
defaultCollectionURI string,
612-
baseStores []cloud.ExternalStorage,
613-
incStores []cloud.ExternalStorage,
614610
mkStore cloud.ExternalStorageFromURIFactory,
615611
resolvedSubdir string,
616612
fullyResolvedBaseDirectory []string,
@@ -637,6 +633,27 @@ func legacyResolveBackupManifests(
637633
mem.Shrink(ctx, ownedMemSize)
638634
}
639635
}()
636+
637+
baseStores, baseCleanupFn, err := MakeBackupDestinationStores(ctx, user, mkStore, fullyResolvedBaseDirectory)
638+
if err != nil {
639+
return nil, nil, nil, 0, err
640+
}
641+
defer func() {
642+
if err := baseCleanupFn(); err != nil {
643+
log.Dev.Warningf(ctx, "failed to close base store: %+v", err)
644+
}
645+
}()
646+
647+
incStores, incCleanupFn, err := MakeBackupDestinationStores(ctx, user, mkStore, fullyResolvedIncrementalsDirectory)
648+
if err != nil {
649+
return nil, nil, nil, 0, err
650+
}
651+
defer func() {
652+
if err := incCleanupFn(); err != nil {
653+
log.Dev.Warningf(ctx, "failed to close inc store: %+v", err)
654+
}
655+
}()
656+
640657
baseManifest, memSize, err := backupinfo.ReadBackupManifestFromStore(ctx, mem, baseStores[0], fullyResolvedBaseDirectory[0],
641658
encryption, kmsEnv)
642659
if err != nil {
@@ -646,11 +663,6 @@ func legacyResolveBackupManifests(
646663

647664
var incrementalBackups []string
648665
if len(incStores) > 0 {
649-
rootStore, err := mkStore(ctx, defaultCollectionURI, user)
650-
if err != nil {
651-
return nil, nil, nil, 0, err
652-
}
653-
defer rootStore.Close()
654666
incrementalBackups, err = LegacyFindPriorBackups(ctx, incStores[0], includeManifest)
655667
if err != nil {
656668
return nil, nil, nil, 0, err
@@ -771,23 +783,15 @@ func indexedResolveBackupManifests(
771783
ctx, sp := tracing.ChildSpan(ctx, "backupdest.ResolveBackupManifestsWithIndexes")
772784
defer sp.Finish()
773785

774-
rootStores := make([]cloud.ExternalStorage, 0, len(collectionURIs))
786+
rootStores, rootCleanupFn, err := MakeBackupDestinationStores(ctx, user, mkStore, collectionURIs)
787+
if err != nil {
788+
return nil, nil, nil, 0, err
789+
}
775790
defer func() {
776-
for _, store := range rootStores {
777-
if store != nil {
778-
if err := store.Close(); err != nil {
779-
log.Dev.Errorf(ctx, "error closing store: %v", err)
780-
}
781-
}
791+
if err := rootCleanupFn(); err != nil {
792+
log.Dev.Warningf(ctx, "failed to close collection store: %s", err)
782793
}
783794
}()
784-
for _, uri := range collectionURIs {
785-
store, err := mkStore(ctx, uri, user)
786-
if err != nil {
787-
return nil, nil, nil, 0, err
788-
}
789-
rootStores = append(rootStores, store)
790-
}
791795

792796
indexes, err := GetBackupTreeIndexMetadata(
793797
ctx, rootStores[0], resolvedSubdir,

pkg/backup/backupdest/backup_destination_test.go

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -396,31 +396,13 @@ func TestResolveBackupManifests(t *testing.T) {
396396
})
397397
require.NoError(t, err)
398398

399-
baseStores, err := util.MapE(fullyResolvedBaseDirs, func(uri string) (cloud.ExternalStorage, error) {
400-
return execCfg.DistSQLSrv.ExternalStorageFromURI(ctx, uri, username.RootUserName())
401-
})
402-
require.NoError(t, err)
403-
for i := range baseStores {
404-
defer baseStores[i].Close()
405-
}
406-
407-
incStores, err := util.MapE(fullyResolvedIncDirs, func(uri string) (cloud.ExternalStorage, error) {
408-
return execCfg.DistSQLSrv.ExternalStorageFromURI(ctx, uri, username.RootUserName())
409-
})
410-
require.NoError(t, err)
411-
for i := range incStores {
412-
defer incStores[i].Close()
413-
}
414-
415399
t.Run("resolve backup manifests with latest AOST", func(t *testing.T) {
416400
uris, manifests, locality, memSize, err := ResolveBackupManifests(
417401
ctx,
418402
&execCfg,
419403
&mem,
420404
collections[0],
421405
collections,
422-
baseStores,
423-
incStores,
424406
execCfg.DistSQLSrv.ExternalStorageFromURI,
425407
fullSubdir,
426408
fullyResolvedBaseDirs,
@@ -448,8 +430,6 @@ func TestResolveBackupManifests(t *testing.T) {
448430
&mem,
449431
collections[0],
450432
collections,
451-
baseStores,
452-
incStores,
453433
execCfg.DistSQLSrv.ExternalStorageFromURI,
454434
fullSubdir,
455435
fullyResolvedBaseDirs,

pkg/backup/compaction_job.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -745,17 +745,6 @@ func getBackupChain(
745745
log.Dev.Warningf(ctx, "failed to cleanup base backup stores: %+v", err)
746746
}
747747
}()
748-
incStores, incCleanup, err := backupdest.MakeBackupDestinationStores(
749-
ctx, user, mkStore, resolvedIncDirs,
750-
)
751-
if err != nil {
752-
return nil, nil, nil, nil, err
753-
}
754-
defer func() {
755-
if err := incCleanup(); err != nil {
756-
log.Dev.Warningf(ctx, "failed to cleanup incremental backup stores: %+v", err)
757-
}
758-
}()
759748
baseEncryptionInfo := encryptionOpts
760749
if encryptionOpts != nil && !encryptionOpts.HasKey() {
761750
baseEncryptionInfo, err = backupencryption.GetEncryptionFromBaseStore(
@@ -770,7 +759,7 @@ func getBackupChain(
770759
defer mem.Close(ctx)
771760

772761
_, manifests, localityInfo, memReserved, err := backupdest.ResolveBackupManifests(
773-
ctx, execCfg, &mem, defaultCollectionURI, dest.To, baseStores, incStores, mkStore, resolvedSubdir,
762+
ctx, execCfg, &mem, defaultCollectionURI, dest.To, mkStore, resolvedSubdir,
774763
resolvedBaseDirs, resolvedIncDirs, endTime, baseEncryptionInfo, kmsEnv,
775764
user, false /*includeSkipped */, true /*includeCompacted */, len(dest.IncrementalStorage) > 0,
776765
)

pkg/backup/restore_planning.go

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1738,18 +1738,7 @@ func doRestorePlan(
17381738
}
17391739
defer func() {
17401740
if err := cleanupFn(); err != nil {
1741-
log.Dev.Warningf(ctx, "failed to close incremental store: %+v", err)
1742-
}
1743-
}()
1744-
1745-
incStores, cleanupFn, err := backupdest.MakeBackupDestinationStores(ctx, p.User(), mkStore,
1746-
fullyResolvedIncrementalsDirectory)
1747-
if err != nil {
1748-
return err
1749-
}
1750-
defer func() {
1751-
if err := cleanupFn(); err != nil {
1752-
log.Dev.Warningf(ctx, "failed to close incremental store: %+v", err)
1741+
log.Dev.Warningf(ctx, "failed to close base store: %+v", err)
17531742
}
17541743
}()
17551744

@@ -1805,7 +1794,7 @@ func doRestorePlan(
18051794
// directories, return the URIs and manifests of all backup layers in all
18061795
// localities. Incrementals will be searched for automatically.
18071796
defaultURIs, mainBackupManifests, localityInfo, memReserved, err := backupdest.ResolveBackupManifests(
1808-
ctx, p.ExecCfg(), &mem, defaultCollectionURI, from, baseStores, incStores, mkStore,
1797+
ctx, p.ExecCfg(), &mem, defaultCollectionURI, from, mkStore,
18091798
fullyResolvedSubdir, fullyResolvedBaseDirectory, fullyResolvedIncrementalsDirectory, endTime,
18101799
encryption, &kmsEnv, p.User(), false, includeCompacted, len(incFrom) > 0,
18111800
)

pkg/backup/show.go

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -346,20 +346,10 @@ you must pass the 'encryption_info_dir' parameter that points to the directory o
346346
info.enc = encryption
347347

348348
mkStore := p.ExecCfg().DistSQLSrv.ExternalStorageFromURI
349-
incStores, cleanupFn, err := backupdest.MakeBackupDestinationStores(ctx, p.User(), mkStore,
350-
fullyResolvedIncrementalsDirectory)
351-
if err != nil {
352-
return err
353-
}
354-
defer func() {
355-
if err := cleanupFn(); err != nil {
356-
log.Dev.Warningf(ctx, "failed to close incremental store: %+v", err)
357-
}
358-
}()
359349

360350
info.defaultURIs, info.manifests, info.localityInfo, memReserved,
361351
err = backupdest.ResolveBackupManifests(
362-
ctx, p.ExecCfg(), &mem, defaultCollectionURI, dest, baseStores, incStores, mkStore, subdir,
352+
ctx, p.ExecCfg(), &mem, defaultCollectionURI, dest, mkStore, subdir,
363353
fullyResolvedDest, fullyResolvedIncrementalsDirectory, hlc.Timestamp{},
364354
encryption, &kmsEnv, p.User(), true /* includeSkipped */, true, /* includeCompacted */
365355
len(explicitIncPaths) > 0,

0 commit comments

Comments
 (0)