Merge 'master' into feat-k10-12441-B-validate-index

This commit is contained in:
Aaron H. Alpar
2022-11-30 10:07:41 -08:00
2 changed files with 34 additions and 3 deletions

View File

@@ -121,8 +121,37 @@ func (c *commandRepositorySetParameters) setRetentionModeParameter(ctx context.C
log(ctx).Infof(" - setting %v to %s.\n", desc, v)
}
func (c *commandRepositorySetParameters) updateEpochParameters(mp *format.MutableParameters, anyChange, upgradeToEpochManager *bool) {
*anyChange = true
func updateRepositoryParameters(
ctx context.Context,
upgradeToEpochManager bool,
mp format.MutableParameters,
rep repo.DirectRepositoryWriter,
blobcfg format.BlobStorageConfiguration,
requiredFeatures []feature.Required,
) error {
if upgradeToEpochManager {
log(ctx).Infof("migrating current indexes to epoch format")
if err := rep.ContentManager().PrepareUpgradeToIndexBlobManagerV1(ctx, mp.EpochParameters); err != nil {
return errors.Wrap(err, "error upgrading indexes")
}
}
if err := rep.FormatManager().SetParameters(ctx, mp, blobcfg, requiredFeatures); err != nil {
return errors.Wrap(err, "error setting parameters")
}
if upgradeToEpochManager {
if err := format.WriteLegacyIndexPoisonBlob(ctx, rep.BlobStorage()); err != nil {
log(ctx).Errorf("unable to write legacy index poison blob: %v", err)
}
}
return nil
}
func (c *commandRepositorySetParameters) run(ctx context.Context, rep repo.DirectRepositoryWriter) error {
var anyChange bool
if !mp.EpochParameters.Enabled {
mp.EpochParameters = epoch.DefaultParameters()
@@ -223,7 +252,8 @@ func (c *commandRepositorySetParameters) run(ctx context.Context, rep repo.Direc
return errors.Errorf("no changes")
}
if err := c.applyNewParameters(ctx, rep, requiredFeatures, blobcfg, mp, upgradeToEpochManager); err != nil {
err = updateRepositoryParameters(ctx, upgradeToEpochManager, mp, rep, blobcfg, requiredFeatures)
if err != nil {
return errors.Wrap(err, "error updating repository parameters")
}

View File

@@ -114,6 +114,7 @@ func (e *CLITest) TweakFile(t *testing.T, dirn, fglob string) {
t.Helper()
const RwUserGroupOther = 0o666
// find a file within the repository to corrupt
mch, err := fs.Glob(os.DirFS(dirn), fglob)
require.NoError(t, err)