Skip to content

Commit 4b8ca50

Browse files
committed
roachtest: metamorphically enable buffered writes
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. Release note: None
1 parent 5805a97 commit 4b8ca50

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

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
@@ -960,15 +960,26 @@ func (r *testRunner) runWorker(
960960
// Apply metamorphic settings not explicitly defined by the test.
961961
// These settings should only be applied to non-benchmark tests.
962962
if !testSpec.Benchmark {
963-
// 50% chance of enabling the rangefeed buffered sender. Disabled by
964-
// default. Disabled for mixed-version tests since this cluster setting
965-
// is only supported in >= v25.2.
966-
useBufferedSender := prng.Intn(2) == 0
967-
if !t.spec.Suites.Contains(registry.MixedVersion) && useBufferedSender {
968-
c.clusterSettings["kv.rangefeed.buffered_sender.enabled"] = "true"
963+
// 50% chance of enabling the rangefeed buffered sender.
964+
// 50% change of enabling buffered writes.
965+
//
966+
// Disabled by default. Disabled for mixed-version tests
967+
// since these cluster settings are not supported in all
968+
// versions.
969+
for _, tc := range []struct {
970+
setting string
971+
label string
972+
}{
973+
{setting: "kv.rangefeed.buffered_sender.enabled", label: "metamorphicBufferedSender"},
974+
{setting: "kv.transaction.write_buffering.enabled", label: "metamorphicWriteBuffering"},
975+
} {
976+
enable := prng.Intn(2) == 0
977+
if !t.spec.Suites.Contains(registry.MixedVersion) && enable {
978+
c.clusterSettings[tc.setting] = "true"
979+
c.status(fmt.Sprintf("metamorphically setting %q to 'true'", tc.setting))
980+
t.AddParam(tc.label, fmt.Sprint(enable))
981+
}
969982
}
970-
c.status(fmt.Sprintf("metamorphically using buffered sender: %t", useBufferedSender))
971-
t.AddParam("metamorphicBufferedSender", fmt.Sprint(useBufferedSender))
972983
}
973984

974985
c.goCoverDir = t.GoCoverArtifactsDir()

0 commit comments

Comments
 (0)