test: Use linux-aio backend again on seastar-based tests
Since mid December, tests started failing with ENOMEM while submitting I/O requests. Logs of failed tests show IO uring was used as backend, but we never deliberately switched to IO uring. Investigation pointed to it happening accidentaly in commit1bac6b75dc, which turned on IO uring for allowing native tool in production, and picked linux-aio backend explicitly when initializing Scylla. But it missed that seastar-based tests would pick the default backend, which is io_uring once enabled. There's a reason we never made io_uring the default, which is that it's not stable enough, and turns out we made the right choice back then and it apparently continue to be unstable causing flakiness in the tests. Let's undo that accidental change in tests by explicitly picking the linux-aio backend for seastar-based tests. This should hopefully bring back stability. Refs #21968. Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com> Closes scylladb/scylladb#22695 (cherry picked from commitce65164315) Signed-off-by: Raphael S. Carvalho <raphaelsc@scylladb.com> Closes scylladb/scylladb#22800
This commit is contained in:
committed by
Avi Kivity
parent
8d1f6df818
commit
5f74b5fdff
10
test.py
10
test.py
@@ -390,6 +390,7 @@ class UnitTestSuite(TestSuite):
|
||||
super().__init__(path, cfg, options, mode)
|
||||
# Map of custom test command line arguments, if configured
|
||||
self.custom_args = cfg.get("custom_args", {})
|
||||
self.extra_cmdline_options = cfg.get("extra_scylla_cmdline_options", [])
|
||||
# Map of tests that cannot run with compaction groups
|
||||
self.all_can_run_compaction_groups_except = cfg.get("all_can_run_compaction_groups_except")
|
||||
|
||||
@@ -401,6 +402,10 @@ class UnitTestSuite(TestSuite):
|
||||
test = UnitTest(self.next_id((shortname, self.suite_key)), shortname, suite, args)
|
||||
self.tests.append(test)
|
||||
|
||||
def prepare_arg(self, arg):
|
||||
extra_cmdline_options = ' '.join(self.extra_cmdline_options)
|
||||
return f'{arg} {extra_cmdline_options}'
|
||||
|
||||
async def add_test(self, shortname, casename) -> None:
|
||||
"""Create a UnitTest class with possibly custom command line
|
||||
arguments and add it to the list of tests"""
|
||||
@@ -413,7 +418,7 @@ class UnitTestSuite(TestSuite):
|
||||
args = self.custom_args.get(shortname, ["-c2 -m2G"])
|
||||
args = merge_cmdline_options(args, self.options.extra_scylla_cmdline_options)
|
||||
for a in args:
|
||||
await self.create_test(shortname, casename, self, a)
|
||||
await self.create_test(shortname, casename, self, self.prepare_arg(a))
|
||||
|
||||
@property
|
||||
def pattern(self) -> str:
|
||||
@@ -531,13 +536,12 @@ class BoostTestSuite(UnitTestSuite):
|
||||
# Skip tests which are not configured, and hence are not built
|
||||
if os.path.join("test", self.name, execname if combined_test else shortname) not in self.options.tests:
|
||||
return
|
||||
|
||||
# Default seastar arguments, if not provided in custom test options,
|
||||
# are two cores and 2G of RAM
|
||||
args = self.custom_args.get(shortname, ["-c2 -m2G"])
|
||||
args = merge_cmdline_options(args, self.options.extra_scylla_cmdline_options)
|
||||
for a in args:
|
||||
await self.create_test(shortname, casename, self, a)
|
||||
await self.create_test(shortname, casename, self, self.prepare_arg(a))
|
||||
|
||||
def junit_tests(self) -> Iterable['Test']:
|
||||
"""Boost tests produce an own XML output, so are not included in a junit report"""
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
type: boost
|
||||
extra_scylla_cmdline_options:
|
||||
- '--reactor-backend linux-aio'
|
||||
# A list of long tests, which should be started early
|
||||
run_first:
|
||||
- index_with_paging_test
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
type: boost
|
||||
extra_scylla_cmdline_options:
|
||||
- '--reactor-backend linux-aio'
|
||||
|
||||
Reference in New Issue
Block a user