From 5bc41936060283157ea7010578dee60e56143442 Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Fri, 22 Mar 2024 14:02:49 +0100 Subject: [PATCH 01/10] Make `Durabler` interface methods public Signed-off-by: Tim Vaillancourt --- go/vt/vtctl/reparentutil/durability.go | 66 ++++++++++----------- go/vt/vtctl/reparentutil/durability_test.go | 2 +- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/go/vt/vtctl/reparentutil/durability.go b/go/vt/vtctl/reparentutil/durability.go index e68485a395c..29a5b2e712a 100644 --- a/go/vt/vtctl/reparentutil/durability.go +++ b/go/vt/vtctl/reparentutil/durability.go @@ -69,13 +69,13 @@ func init() { // Durabler is the interface which is used to get the promotion rules for candidates and the semi sync setup type Durabler interface { - // promotionRule represents the precedence in which we want to tablets to be promoted. + // PromotionRule represents the precedence in which we want to tablets to be promoted. // The higher the promotion rule of a tablet, the more we want it to be promoted in case of a failover - promotionRule(*topodatapb.Tablet) promotionrule.CandidatePromotionRule - // semiSyncAckers represents the number of semi-sync ackers required for a given tablet if it were to become the PRIMARY instance - semiSyncAckers(*topodatapb.Tablet) int - // isReplicaSemiSync returns whether the "replica" should send semi-sync acks if "primary" were to become the PRIMARY instance - isReplicaSemiSync(primary, replica *topodatapb.Tablet) bool + PromotionRule(*topodatapb.Tablet) promotionrule.CandidatePromotionRule + // SemiSyncAckers represents the number of semi-sync ackers required for a given tablet if it were to become the PRIMARY instance + SemiSyncAckers(*topodatapb.Tablet) int + // IsReplicaSemiSync returns whether the "replica" should send semi-sync acks if "primary" were to become the PRIMARY instance + IsReplicaSemiSync(primary, replica *topodatapb.Tablet) bool } func RegisterDurability(name string, newDurablerFunc NewDurabler) { @@ -108,13 +108,13 @@ func PromotionRule(durability Durabler, tablet *topodatapb.Tablet) promotionrule if tablet == nil || tablet.Alias == nil { return promotionrule.MustNot } - return durability.promotionRule(tablet) + return durability.PromotionRule(tablet) } // SemiSyncAckers returns the primary semi-sync setting for the instance. // 0 means none. Non-zero specifies the number of required ackers. func SemiSyncAckers(durability Durabler, tablet *topodatapb.Tablet) int { - return durability.semiSyncAckers(tablet) + return durability.SemiSyncAckers(tablet) } // IsReplicaSemiSync returns the replica semi-sync setting from the tablet record. @@ -124,7 +124,7 @@ func IsReplicaSemiSync(durability Durabler, primary, replica *topodatapb.Tablet) if primary == nil || primary.Alias == nil || replica == nil || replica.Alias == nil { return false } - return durability.isReplicaSemiSync(primary, replica) + return durability.IsReplicaSemiSync(primary, replica) } //======================================================================= @@ -132,8 +132,8 @@ func IsReplicaSemiSync(durability Durabler, primary, replica *topodatapb.Tablet) // durabilityNone has no semi-sync and returns NeutralPromoteRule for Primary and Replica tablet types, MustNotPromoteRule for everything else type durabilityNone struct{} -// promotionRule implements the Durabler interface -func (d *durabilityNone) promotionRule(tablet *topodatapb.Tablet) promotionrule.CandidatePromotionRule { +// PromotionRule implements the Durabler interface +func (d *durabilityNone) PromotionRule(tablet *topodatapb.Tablet) promotionrule.CandidatePromotionRule { switch tablet.Type { case topodatapb.TabletType_PRIMARY, topodatapb.TabletType_REPLICA: return promotionrule.Neutral @@ -141,13 +141,13 @@ func (d *durabilityNone) promotionRule(tablet *topodatapb.Tablet) promotionrule. return promotionrule.MustNot } -// semiSyncAckers implements the Durabler interface -func (d *durabilityNone) semiSyncAckers(tablet *topodatapb.Tablet) int { +// SemiSyncAckers implements the Durabler interface +func (d *durabilityNone) SemiSyncAckers(tablet *topodatapb.Tablet) int { return 0 } -// isReplicaSemiSync implements the Durabler interface -func (d *durabilityNone) isReplicaSemiSync(primary, replica *topodatapb.Tablet) bool { +// IsReplicaSemiSync implements the Durabler interface +func (d *durabilityNone) IsReplicaSemiSync(primary, replica *topodatapb.Tablet) bool { return false } @@ -159,8 +159,8 @@ type durabilitySemiSync struct { rdonlySemiSync bool } -// promotionRule implements the Durabler interface -func (d *durabilitySemiSync) promotionRule(tablet *topodatapb.Tablet) promotionrule.CandidatePromotionRule { +// PromotionRule implements the Durabler interface +func (d *durabilitySemiSync) PromotionRule(tablet *topodatapb.Tablet) promotionrule.CandidatePromotionRule { switch tablet.Type { case topodatapb.TabletType_PRIMARY, topodatapb.TabletType_REPLICA: return promotionrule.Neutral @@ -168,13 +168,13 @@ func (d *durabilitySemiSync) promotionRule(tablet *topodatapb.Tablet) promotionr return promotionrule.MustNot } -// semiSyncAckers implements the Durabler interface -func (d *durabilitySemiSync) semiSyncAckers(tablet *topodatapb.Tablet) int { +// SemiSyncAckers implements the Durabler interface +func (d *durabilitySemiSync) SemiSyncAckers(tablet *topodatapb.Tablet) int { return 1 } -// isReplicaSemiSync implements the Durabler interface -func (d *durabilitySemiSync) isReplicaSemiSync(primary, replica *topodatapb.Tablet) bool { +// IsReplicaSemiSync implements the Durabler interface +func (d *durabilitySemiSync) IsReplicaSemiSync(primary, replica *topodatapb.Tablet) bool { switch replica.Type { case topodatapb.TabletType_PRIMARY, topodatapb.TabletType_REPLICA: return true @@ -193,8 +193,8 @@ type durabilityCrossCell struct { rdonlySemiSync bool } -// promotionRule implements the Durabler interface -func (d *durabilityCrossCell) promotionRule(tablet *topodatapb.Tablet) promotionrule.CandidatePromotionRule { +// PromotionRule implements the Durabler interface +func (d *durabilityCrossCell) PromotionRule(tablet *topodatapb.Tablet) promotionrule.CandidatePromotionRule { switch tablet.Type { case topodatapb.TabletType_PRIMARY, topodatapb.TabletType_REPLICA: return promotionrule.Neutral @@ -202,13 +202,13 @@ func (d *durabilityCrossCell) promotionRule(tablet *topodatapb.Tablet) promotion return promotionrule.MustNot } -// semiSyncAckers implements the Durabler interface -func (d *durabilityCrossCell) semiSyncAckers(tablet *topodatapb.Tablet) int { +// SemiSyncAckers implements the Durabler interface +func (d *durabilityCrossCell) SemiSyncAckers(tablet *topodatapb.Tablet) int { return 1 } -// isReplicaSemiSync implements the Durabler interface -func (d *durabilityCrossCell) isReplicaSemiSync(primary, replica *topodatapb.Tablet) bool { +// IsReplicaSemiSync implements the Durabler interface +func (d *durabilityCrossCell) IsReplicaSemiSync(primary, replica *topodatapb.Tablet) bool { switch replica.Type { case topodatapb.TabletType_PRIMARY, topodatapb.TabletType_REPLICA: return primary.Alias.Cell != replica.Alias.Cell @@ -223,8 +223,8 @@ func (d *durabilityCrossCell) isReplicaSemiSync(primary, replica *topodatapb.Tab // durabilityTest is like durabilityNone. It overrides the type for a specific tablet to prefer. It is only meant to be used for testing purposes! type durabilityTest struct{} -// promotionRule implements the Durabler interface -func (d *durabilityTest) promotionRule(tablet *topodatapb.Tablet) promotionrule.CandidatePromotionRule { +// PromotionRule implements the Durabler interface +func (d *durabilityTest) PromotionRule(tablet *topodatapb.Tablet) promotionrule.CandidatePromotionRule { if topoproto.TabletAliasString(tablet.Alias) == "zone2-0000000200" { return promotionrule.Prefer } @@ -236,12 +236,12 @@ func (d *durabilityTest) promotionRule(tablet *topodatapb.Tablet) promotionrule. return promotionrule.MustNot } -// semiSyncAckers implements the Durabler interface -func (d *durabilityTest) semiSyncAckers(tablet *topodatapb.Tablet) int { +// SemiSyncAckers implements the Durabler interface +func (d *durabilityTest) SemiSyncAckers(tablet *topodatapb.Tablet) int { return 0 } -// isReplicaSemiSync implements the Durabler interface -func (d *durabilityTest) isReplicaSemiSync(primary, replica *topodatapb.Tablet) bool { +// IsReplicaSemiSync implements the Durabler interface +func (d *durabilityTest) IsReplicaSemiSync(primary, replica *topodatapb.Tablet) bool { return false } diff --git a/go/vt/vtctl/reparentutil/durability_test.go b/go/vt/vtctl/reparentutil/durability_test.go index f1429b29621..5745da64f7e 100644 --- a/go/vt/vtctl/reparentutil/durability_test.go +++ b/go/vt/vtctl/reparentutil/durability_test.go @@ -326,7 +326,7 @@ func TestDurabilityTest(t *testing.T) { for _, testcase := range testcases { t.Run(topoproto.TabletAliasString(testcase.tablet.Alias), func(t *testing.T) { - rule := durabilityRules.promotionRule(testcase.tablet) + rule := durabilityRules.PromotionRule(testcase.tablet) assert.Equal(t, testcase.promotionRule, rule) }) } From 5f618a0e818260d65eb91d30257fd635f2ca6e4b Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Thu, 28 Mar 2024 23:50:41 +0100 Subject: [PATCH 02/10] Add changelog notes Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index 15455ef502c..a96e0c975bb 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -16,6 +16,7 @@ - **[Flag changes](#flag-changes)** - [`pprof-http` default change](#pprof-http-default) - [New `healthcheck-dial-concurrency` flag](#healthcheck-dial-concurrency-flag) + - **[`Durabler` interface method renaming](#durabler-interface-method-renaming) - **[Minor Changes](#minor-changes)** - **[New Stats](#new-stats)** - [VTTablet Query Cache Hits and Misses](#vttablet-query-cache-hits-and-misses) @@ -102,6 +103,15 @@ To continue enabling these endpoints, explicitly set `--pprof-http` when startin The new `--healthcheck-dial-concurrency` flag defines the maximum number of healthcheck connections that can open concurrently. This limit is to avoid hitting Go runtime panics on deployments watching enough tablets [to hit the runtime's maximum thread limit of `10000`](https://pkg.go.dev/runtime/debug#SetMaxThreads) due to blocking network syscalls. This flag applies to `vtcombo`, `vtctld` and `vtgate` only and a value less than the runtime max thread limit _(`10000`)_ is recommended. +### `Durabler` interface method renaming + +The methods of the `Durabler` interface were renamed to public _(capitalized)_ names to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). + +Changes: +- The `promotionRule` method was renamed to `PromotionRule` +- The `semiSyncAckers` method was renamed to `SemiSyncAckers` +- The `isReplicaSemiSync` method was renamed to `IsReplicaSemiSync` + ## Minor Changes ### New Stats From b09337ba59a249b0f46b47fe37ab13a31db780be Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Thu, 28 Mar 2024 23:53:21 +0100 Subject: [PATCH 03/10] Fix markdown Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index a96e0c975bb..30f3de455c4 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -16,7 +16,7 @@ - **[Flag changes](#flag-changes)** - [`pprof-http` default change](#pprof-http-default) - [New `healthcheck-dial-concurrency` flag](#healthcheck-dial-concurrency-flag) - - **[`Durabler` interface method renaming](#durabler-interface-method-renaming) + - **[Method renaming in `Durabler` interface](#method-renaming-in-durabler-interface) - **[Minor Changes](#minor-changes)** - **[New Stats](#new-stats)** - [VTTablet Query Cache Hits and Misses](#vttablet-query-cache-hits-and-misses) @@ -103,7 +103,7 @@ To continue enabling these endpoints, explicitly set `--pprof-http` when startin The new `--healthcheck-dial-concurrency` flag defines the maximum number of healthcheck connections that can open concurrently. This limit is to avoid hitting Go runtime panics on deployments watching enough tablets [to hit the runtime's maximum thread limit of `10000`](https://pkg.go.dev/runtime/debug#SetMaxThreads) due to blocking network syscalls. This flag applies to `vtcombo`, `vtctld` and `vtgate` only and a value less than the runtime max thread limit _(`10000`)_ is recommended. -### `Durabler` interface method renaming +### Method renaming in `Durabler` interface The methods of the `Durabler` interface were renamed to public _(capitalized)_ names to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). From 906774a989418fa5c3bf64de6675c57bce94a51c Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Thu, 28 Mar 2024 23:55:29 +0100 Subject: [PATCH 04/10] Add interface link Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index 30f3de455c4..dba078b032c 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -105,7 +105,7 @@ The new `--healthcheck-dial-concurrency` flag defines the maximum number of heal ### Method renaming in `Durabler` interface -The methods of the `Durabler` interface were renamed to public _(capitalized)_ names to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). +The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). Changes: - The `promotionRule` method was renamed to `PromotionRule` From 5f91ac7411750b2f9d603ebeb25f8d7db721ecbe Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Thu, 28 Mar 2024 23:57:33 +0100 Subject: [PATCH 05/10] Fix markdown Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index dba078b032c..a032c3ced86 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -16,7 +16,7 @@ - **[Flag changes](#flag-changes)** - [`pprof-http` default change](#pprof-http-default) - [New `healthcheck-dial-concurrency` flag](#healthcheck-dial-concurrency-flag) - - **[Method renaming in `Durabler` interface](#method-renaming-in-durabler-interface) + - **[Interface method renaming](#interface-method-renaming) - **[Minor Changes](#minor-changes)** - **[New Stats](#new-stats)** - [VTTablet Query Cache Hits and Misses](#vttablet-query-cache-hits-and-misses) @@ -103,7 +103,7 @@ To continue enabling these endpoints, explicitly set `--pprof-http` when startin The new `--healthcheck-dial-concurrency` flag defines the maximum number of healthcheck connections that can open concurrently. This limit is to avoid hitting Go runtime panics on deployments watching enough tablets [to hit the runtime's maximum thread limit of `10000`](https://pkg.go.dev/runtime/debug#SetMaxThreads) due to blocking network syscalls. This flag applies to `vtcombo`, `vtctld` and `vtgate` only and a value less than the runtime max thread limit _(`10000`)_ is recommended. -### Method renaming in `Durabler` interface +### Interface method renaming The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). From 98fe8738ea5eb5d6d6bd429c83faa145384e5e2c Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Thu, 28 Mar 2024 23:59:03 +0100 Subject: [PATCH 06/10] Fix markdown again Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index a032c3ced86..246a8ae6b0a 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -16,7 +16,7 @@ - **[Flag changes](#flag-changes)** - [`pprof-http` default change](#pprof-http-default) - [New `healthcheck-dial-concurrency` flag](#healthcheck-dial-concurrency-flag) - - **[Interface method renaming](#interface-method-renaming) + - **[`Durabler` interface method renaming](#durabler-interface-method-renaming)** - **[Minor Changes](#minor-changes)** - **[New Stats](#new-stats)** - [VTTablet Query Cache Hits and Misses](#vttablet-query-cache-hits-and-misses) @@ -103,7 +103,7 @@ To continue enabling these endpoints, explicitly set `--pprof-http` when startin The new `--healthcheck-dial-concurrency` flag defines the maximum number of healthcheck connections that can open concurrently. This limit is to avoid hitting Go runtime panics on deployments watching enough tablets [to hit the runtime's maximum thread limit of `10000`](https://pkg.go.dev/runtime/debug#SetMaxThreads) due to blocking network syscalls. This flag applies to `vtcombo`, `vtctld` and `vtgate` only and a value less than the runtime max thread limit _(`10000`)_ is recommended. -### Interface method renaming +### `Durabler` interface method renaming The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). From 24e59ea1d7b032ad55f3807a90a01bec93224270 Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Fri, 29 Mar 2024 00:02:18 +0100 Subject: [PATCH 07/10] Full reparentutil path Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index 246a8ae6b0a..3e0f5abfedd 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -105,7 +105,7 @@ The new `--healthcheck-dial-concurrency` flag defines the maximum number of heal ### `Durabler` interface method renaming -The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). +The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `go/vt/vtctl/reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). Changes: - The `promotionRule` method was renamed to `PromotionRule` From 7ce64f79792f928c157a5801f2259e54418afc36 Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Fri, 29 Mar 2024 00:10:09 +0100 Subject: [PATCH 08/10] More clarity Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index 3e0f5abfedd..f9b19a18307 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -107,6 +107,8 @@ The new `--healthcheck-dial-concurrency` flag defines the maximum number of heal The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `go/vt/vtctl/reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). +Users of custom Durability Policies must rename private `Durabler` methods. + Changes: - The `promotionRule` method was renamed to `PromotionRule` - The `semiSyncAckers` method was renamed to `SemiSyncAckers` From e08000a662d4d72b2afc2ae89a3cccff5d17d93e Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Fri, 29 Mar 2024 01:59:29 +0100 Subject: [PATCH 09/10] move changelog to breaking changes Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index f9b19a18307..3e12d594039 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -6,6 +6,7 @@ - **[Breaking changes](#breaking-changes)** - [`shutdown_grace_period` Default Change](#shutdown-grace-period-default) - [New `unmanaged` Flag and `disable_active_reparents` deprecation](#unmanaged-flag) + - [`Durabler` interface method renaming](#durabler-interface-method-renaming) - **[Query Compatibility](#query-compatibility)** - [Vindex Hints](#vindex-hints) - [Update with Limit Support](#update-limit) @@ -16,7 +17,6 @@ - **[Flag changes](#flag-changes)** - [`pprof-http` default change](#pprof-http-default) - [New `healthcheck-dial-concurrency` flag](#healthcheck-dial-concurrency-flag) - - **[`Durabler` interface method renaming](#durabler-interface-method-renaming)** - **[Minor Changes](#minor-changes)** - **[New Stats](#new-stats)** - [VTTablet Query Cache Hits and Misses](#vttablet-query-cache-hits-and-misses) @@ -39,6 +39,17 @@ New flag `--unmanaged` has been introduced in this release to make it easier to Starting this release, all unmanaged tablets should specify this flag. +#### `Durabler` interface method renaming + +The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `go/vt/vtctl/reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). + +Users of custom Durability Policies must rename private `Durabler` methods. + +Changes: +- The `promotionRule` method was renamed to `PromotionRule` +- The `semiSyncAckers` method was renamed to `SemiSyncAckers` +- The `isReplicaSemiSync` method was renamed to `IsReplicaSemiSync` + ### Query Compatibility #### Vindex Hints @@ -103,17 +114,6 @@ To continue enabling these endpoints, explicitly set `--pprof-http` when startin The new `--healthcheck-dial-concurrency` flag defines the maximum number of healthcheck connections that can open concurrently. This limit is to avoid hitting Go runtime panics on deployments watching enough tablets [to hit the runtime's maximum thread limit of `10000`](https://pkg.go.dev/runtime/debug#SetMaxThreads) due to blocking network syscalls. This flag applies to `vtcombo`, `vtctld` and `vtgate` only and a value less than the runtime max thread limit _(`10000`)_ is recommended. -### `Durabler` interface method renaming - -The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `go/vt/vtctl/reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). - -Users of custom Durability Policies must rename private `Durabler` methods. - -Changes: -- The `promotionRule` method was renamed to `PromotionRule` -- The `semiSyncAckers` method was renamed to `SemiSyncAckers` -- The `isReplicaSemiSync` method was renamed to `IsReplicaSemiSync` - ## Minor Changes ### New Stats From f04968d5afda687b9425dd7acbe65421cfd271a3 Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Fri, 29 Mar 2024 02:10:42 +0100 Subject: [PATCH 10/10] correct repo in link Signed-off-by: Tim Vaillancourt --- changelog/20.0/20.0.0/summary.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/20.0/20.0.0/summary.md b/changelog/20.0/20.0.0/summary.md index 3e12d594039..ace71e115fc 100644 --- a/changelog/20.0/20.0.0/summary.md +++ b/changelog/20.0/20.0.0/summary.md @@ -41,7 +41,7 @@ Starting this release, all unmanaged tablets should specify this flag. #### `Durabler` interface method renaming -The methods of [the `Durabler` interface](https://github.com/timvaillancourt/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `go/vt/vtctl/reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). +The methods of [the `Durabler` interface](https://github.com/vitessio/vitess/blob/main/go/vt/vtctl/reparentutil/durability.go#L70-L79) in `go/vt/vtctl/reparentutil` were renamed to be public _(capitalized)_ methods to make it easier to integrate custom Durability Policies from external packages. See [RFC for details](https://github.com/vitessio/vitess/issues/15544). Users of custom Durability Policies must rename private `Durabler` methods.