Skip to content

Commit 007b1ac

Browse files
craig[bot]sumeerbholayuzefovichrail
committed
146301: admission: ensure GetPebbleMetrics is not called after StoreGrantCoor… r=RaduBerinde a=sumeerbhola …dinators.close Fixes #140454, #144172 Epic: none Release note: None 146415: roachtest: metamorphically enable buffered writes r=yuzefovich a=yuzefovich This commit adjusts the roachtest runner to enable buffered writes in 50% cases (unless the test is marked as a benchmark). It also adds a new operation to change the corresponding cluster setting too. Informs: #143860. Epic: None Release note: None 146455: ci: remove unused MacOS signing script r=jlinder,rickystewart a=rail This script has been replaced by a new one that uses `rcodesign` on Linux. Release note: none Epic: none Co-authored-by: sumeerbhola <[email protected]> Co-authored-by: Yahor Yuzefovich <[email protected]> Co-authored-by: Rail Aliiev <[email protected]>
4 parents a717f19 + cdd3670 + 4b8ca50 + bf016aa commit 007b1ac

File tree

4 files changed

+33
-89
lines changed

4 files changed

+33
-89
lines changed

build/teamcity/internal/cockroach/release/publish/sign_staged_macos_release.sh

-81
This file was deleted.

pkg/cmd/roachtest/operations/cluster_settings.go

+6
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ func registerClusterSettings(r registry.Registry) {
108108
Generator: timeBasedValues(timeutil.Now, []string{"true", "false"}, 12*time.Hour),
109109
Owner: registry.OwnerObservability,
110110
},
111+
{
112+
// Periodically switch between two transaction protocol variants.
113+
Name: "kv.transaction.write_buffering.enabled",
114+
Generator: timeBasedValues(timeutil.Now, []string{"true", "false"}, 6*time.Hour),
115+
Owner: registry.OwnerKV,
116+
},
111117
}
112118
sanitizeOpName := func(name string) string {
113119
return strings.ReplaceAll(name, ".", "_")

pkg/cmd/roachtest/test_runner.go

+19-8
Original file line numberDiff line numberDiff line change
@@ -936,15 +936,26 @@ func (r *testRunner) runWorker(
936936
// Apply metamorphic settings not explicitly defined by the test.
937937
// These settings should only be applied to non-benchmark tests.
938938
if !testSpec.Benchmark {
939-
// 50% chance of enabling the rangefeed buffered sender. Disabled by
940-
// default. Disabled for mixed-version tests since this cluster setting
941-
// is only supported in >= v25.2.
942-
useBufferedSender := prng.Intn(2) == 0
943-
if !t.spec.Suites.Contains(registry.MixedVersion) && useBufferedSender {
944-
c.clusterSettings["kv.rangefeed.buffered_sender.enabled"] = "true"
939+
// 50% chance of enabling the rangefeed buffered sender.
940+
// 50% change of enabling buffered writes.
941+
//
942+
// Disabled by default. Disabled for mixed-version tests
943+
// since these cluster settings are not supported in all
944+
// versions.
945+
for _, tc := range []struct {
946+
setting string
947+
label string
948+
}{
949+
{setting: "kv.rangefeed.buffered_sender.enabled", label: "metamorphicBufferedSender"},
950+
{setting: "kv.transaction.write_buffering.enabled", label: "metamorphicWriteBuffering"},
951+
} {
952+
enable := prng.Intn(2) == 0
953+
if !t.spec.Suites.Contains(registry.MixedVersion) && enable {
954+
c.clusterSettings[tc.setting] = "true"
955+
c.status(fmt.Sprintf("metamorphically setting %q to 'true'", tc.setting))
956+
t.AddParam(tc.label, fmt.Sprint(enable))
957+
}
945958
}
946-
c.status(fmt.Sprintf("metamorphically using buffered sender: %t", useBufferedSender))
947-
t.AddParam("metamorphicBufferedSender", fmt.Sprint(useBufferedSender))
948959
}
949960

950961
c.goCoverDir = t.GoCoverArtifactsDir()

pkg/util/admission/grant_coordinator.go

+8
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,14 @@ func (sgc *StoreGrantCoordinators) TryGetSnapshotQueueForStore(storeID roachpb.S
276276
func (sgc *StoreGrantCoordinators) close() {
277277
// closeCh can be nil in tests that never called SetPebbleMetricsProvider.
278278
if sgc.closeCh != nil {
279+
// Ensure that the goroutine has observed the close and will no longer
280+
// call GetPebbleMetrics, since the engines will be closed soon after this
281+
// method returns, and calling GetPebbleMetrics on closed engines is not
282+
// permitted.
283+
sgc.closeCh <- struct{}{}
284+
// Close the channel, so that if close gets called twice due to a bug,
285+
// sending on the closed channel will panic instead of the send being
286+
// blocked forever.
279287
close(sgc.closeCh)
280288
}
281289

0 commit comments

Comments
 (0)