Skip to content

Commit 6ba3c63

Browse files
committed
server: only auto-upgrade system tenant from meta1 leaseholder
Running the auto-upgrade process from all nodes does some amount of wasted work. Let's avoid that by only running it from the meta1 leaseholder. This only applies to the system tenant. For shared-process multi-tenancy, we may consider allowing secondary tenants access to this same information. For separate process multi-tenancy, a different solution would be needed. Informs #152916 Release note: None
1 parent fe5ec41 commit 6ba3c63

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

pkg/clusterversion/setting.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,23 @@ var PreserveDowngradeVersion = settings.RegisterStringSetting(
252252
settings.WithPublic,
253253
)
254254

255+
// AutoUpgradeEnabled is used to enable and disable automatic upgrade.
256+
var AutoUpgradeEnabled = settings.RegisterBoolSetting(
257+
settings.ApplicationLevel,
258+
"cluster.auto_upgrade.enabled",
259+
"disable automatic cluster version upgrade until reset",
260+
true,
261+
settings.WithReportable(true),
262+
settings.WithPublic,
263+
)
264+
265+
var AutoUpgradeSystemClusterFromMeta1Leaseholder = settings.RegisterBoolSetting(
266+
settings.ApplicationLevel,
267+
"cluster.auto_upgrade.initiate_from_meta1leaseholder.enabled",
268+
"only initiate automatic cluster version upgrade from the Meta1 leaseholder (system-cluster only)",
269+
true,
270+
)
271+
255272
var metaPreserveDowngradeLastUpdated = metric.Metadata{
256273
Name: "cluster.preserve-downgrade-option.last-updated",
257274
Help: "Unix timestamp of last updated time for cluster.preserve_downgrade_option",
@@ -291,13 +308,3 @@ func MakeMetricsAndRegisterOnVersionChangeCallback(sv *settings.Values) Metrics
291308
PreserveDowngradeLastUpdated: gauge,
292309
}
293310
}
294-
295-
// AutoUpgradeEnabled is used to enable and disable automatic upgrade.
296-
var AutoUpgradeEnabled = settings.RegisterBoolSetting(
297-
settings.ApplicationLevel,
298-
"cluster.auto_upgrade.enabled",
299-
"disable automatic cluster version upgrade until reset",
300-
true,
301-
settings.WithReportable(true),
302-
settings.WithPublic,
303-
)

pkg/server/auto_upgrade.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ func (s *topLevelServer) startAttemptUpgrade(ctx context.Context) error {
4747
}
4848

4949
for r := retry.StartWithCtx(ctx, retryOpts); r.Next(); {
50+
if clusterversion.AutoUpgradeSystemClusterFromMeta1Leaseholder.Get(&s.ClusterSettings().SV) {
51+
isMeta1LH, err := s.sqlServer.isMeta1Leaseholder(ctx, s.clock.NowAsClockTimestamp())
52+
if err != nil || !isMeta1LH {
53+
log.Ops.VInfof(ctx, 2, "not upgrading since we are not the Meta1 leaseholder; err=%v", err)
54+
continue
55+
}
56+
}
57+
5058
clusterVersion, err := s.clusterVersion(ctx)
5159
if err != nil {
5260
log.Dev.Errorf(ctx, "unable to retrieve cluster version: %v", err)

0 commit comments

Comments
 (0)