Mikołaj Sielużycki
f6d9d6175f
sstables: Harden bad_alloc handling during memtable flush.
...
dirty_memory_manager monitors memory and triggers memtable flushing if
there is too much pressure. If bad_alloc happens during the flush, it
may break the loop and flushes won't be triggered automatically, leading
to blocked writes as memory won't be automatically released.
The solution is to add exception handling to the loop, so that the inner
part always returns a non-exceptional future (meaning the loop will
break only on node shutdown).
try/catch is used around on_internal_error instead of
on_internal_error_noexcept, as the latter doesn't have a version that
accepts an exception pointer. To get the exception message from
std::exception_ptr a rethrow is needed anyway, so this was a simpler
approach.
Fixes : #4174
Message-Id: <20220114082452.89189-1-mikolaj.sieluzycki@scylladb.com >
2022-01-14 16:09:21 +02:00
..
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-10-05 12:57:54 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2022-01-07 12:04:38 +02:00
2021-11-23 08:27:30 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-12-02 19:43:30 +02:00
2021-12-10 12:35:12 +03:00
2021-06-06 19:18:49 +03:00
2021-07-27 20:06:53 +03:00
2021-07-08 16:53:38 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-10-05 12:58:55 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-07-02 19:02:14 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-11-16 17:44:56 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-10-20 17:54:17 +03:00
2021-07-19 14:42:38 +02:00
2022-01-04 19:48:14 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-08-08 08:01:19 +02:00
2022-01-07 12:04:38 +02:00
2021-08-22 21:21:46 +03:00
2022-01-13 23:09:02 +02:00
2021-06-06 19:18:49 +03:00
2022-01-14 13:57:44 +02:00
2022-01-13 23:09:02 +02:00
2021-07-08 17:52:34 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-09-13 18:05:11 +03:00
2021-08-22 21:21:46 +03:00
2021-06-06 19:18:49 +03:00
2022-01-07 12:04:38 +02:00
2021-08-08 08:01:19 +02:00
2022-01-05 09:06:16 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-11-15 17:58:46 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-10-24 11:29:23 +03:00
2022-01-05 17:29:21 +02:00
2021-06-06 19:18:49 +03:00
2022-01-07 12:04:38 +02:00
2021-06-06 19:18:49 +03:00
2021-06-07 21:41:08 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-08-08 08:01:19 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2022-01-11 17:04:16 +02:00
2021-11-29 21:45:21 -05:00
2021-06-06 19:18:49 +03:00
2021-08-22 21:11:52 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2022-01-14 16:09:21 +02:00
2021-10-05 11:57:02 +03:00
2022-01-07 12:04:38 +02:00
2021-06-06 19:18:49 +03:00
2021-12-20 09:29:05 +02:00
2021-11-15 17:58:46 +02:00
2022-01-11 10:49:26 +02:00
2022-01-12 14:37:19 +02:00
2022-01-07 13:51:48 +02:00
2022-01-04 19:48:14 +02:00
2021-11-17 09:01:24 +02:00
2021-07-28 13:28:51 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2022-01-07 12:04:38 +02:00
2021-08-08 08:01:19 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-07-28 13:28:51 +03:00
2021-06-06 19:18:49 +03:00
2021-12-13 21:31:36 +01:00
2022-01-12 12:19:19 +01:00
2021-09-30 07:23:43 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2022-01-12 12:19:19 +01:00
2022-01-13 23:10:18 +02:00
2021-09-20 15:44:14 +03:00
2021-09-07 15:47:22 +03:00
2022-01-12 12:19:19 +01:00
2022-01-07 12:04:38 +02:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-10-01 10:20:28 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2022-01-07 12:04:38 +02:00
2022-01-12 14:37:19 +02:00
2021-11-29 11:10:46 +01:00
2022-01-06 17:07:30 +02:00
2022-01-12 12:19:19 +01:00
2021-06-06 19:18:49 +03:00
2022-01-06 17:07:30 +02:00
2022-01-12 12:19:19 +01:00
2022-01-07 12:04:38 +02:00
2021-11-15 17:58:46 +02:00
2022-01-06 17:07:30 +02:00
2022-01-07 12:04:38 +02:00
2021-07-01 19:16:11 +03:00
2021-12-15 13:54:23 +02:00
2021-06-06 19:18:49 +03:00
2021-08-02 22:26:26 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-07-28 13:30:32 +03:00
2021-06-06 19:18:49 +03:00
2021-06-06 19:18:49 +03:00
2021-07-28 13:19:24 +03:00
2021-06-06 19:18:49 +03:00
2022-01-07 12:04:38 +02:00
2020-10-21 11:14:44 +03:00
2021-09-09 11:49:05 +03:00
2022-01-07 12:04:38 +02:00
2022-01-06 17:07:30 +02:00
2022-01-06 17:07:30 +02:00
2022-01-06 17:07:30 +02:00
2022-01-07 12:04:38 +02:00
2021-06-06 19:18:49 +03:00
2021-10-27 17:02:00 +03:00
2021-08-24 16:30:51 +03:00
2021-11-11 16:39:34 +03:00