[QUEUED scylladb next] compaction_manager: Swallow ENOSPCs in ::stop()

0 views
Skip to first unread message

Commit Bot

<bot@cloudius-systems.com>
unread,
Oct 4, 2022, 1:54:35 AM10/4/22
to scylladb-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: next

compaction_manager: Swallow ENOSPCs in ::stop()

When being stopped compaction manager may step on ENOSPC. This is not a
reason to fail stopping process with abort, better to warn this fact in
logs and proceed as if nothing happened

refs: #11245

Signed-off-by: Pavel Emelyanov <xe...@scylladb.com>

---
diff --git a/compaction/compaction_manager.cc b/compaction/compaction_manager.cc
--- a/compaction/compaction_manager.cc
+++ b/compaction/compaction_manager.cc
@@ -848,14 +848,31 @@ future<> compaction_manager::really_do_stop() {
cmlog.info("Stopped");
}

+template <typename Ex>
+requires std::is_base_of_v<std::exception, Ex> &&
+requires (const Ex& ex) {
+ { ex.code() } noexcept -> std::same_as<const std::error_code&>;
+}
+auto swallow_enospc(const Ex& ex) noexcept {
+ if (ex.code().value() != ENOSPC) {
+ return make_exception_future<>(std::make_exception_ptr(ex));
+ }
+
+ cmlog.warn("Got ENOSPC on stop, ignoring...");
+ return make_ready_future<>();
+}
+
void compaction_manager::do_stop() noexcept {
if (_state == state::none || _state == state::stopped) {
return;
}

try {
_state = state::stopped;
- _stop_future = really_do_stop();
+ _stop_future = really_do_stop()
+ .handle_exception_type([] (const std::system_error& ex) { return swallow_enospc(ex); })
+ .handle_exception_type([] (const storage_io_error& ex) { return swallow_enospc(ex); })
+ ;
} catch (...) {
cmlog.error("Failed to stop the manager: {}", std::current_exception());
}

Commit Bot

<bot@cloudius-systems.com>
unread,
Oct 4, 2022, 8:23:53 AM10/4/22
to scylladb-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: master

Commit Bot

<bot@cloudius-systems.com>
unread,
Oct 13, 2022, 8:37:45 AM10/13/22
to scylladb-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: next-5.1

compaction_manager: Swallow ENOSPCs in ::stop()

When being stopped compaction manager may step on ENOSPC. This is not a
reason to fail stopping process with abort, better to warn this fact in
logs and proceed as if nothing happened

refs: #11245

Signed-off-by: Pavel Emelyanov <xe...@scylladb.com>

---
diff --git a/compaction/compaction_manager.cc b/compaction/compaction_manager.cc
--- a/compaction/compaction_manager.cc
+++ b/compaction/compaction_manager.cc
@@ -842,14 +842,31 @@ future<> compaction_manager::really_do_stop() {

Commit Bot

<bot@cloudius-systems.com>
unread,
Oct 13, 2022, 8:58:43 AM10/13/22
to scylladb-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: next-5.0

compaction_manager: Swallow ENOSPCs in ::stop()

When being stopped compaction manager may step on ENOSPC. This is not a
reason to fail stopping process with abort, better to warn this fact in
logs and proceed as if nothing happened

refs: #11245

Signed-off-by: Pavel Emelyanov <xe...@scylladb.com>

---
diff --git a/compaction/compaction_manager.cc b/compaction/compaction_manager.cc
--- a/compaction/compaction_manager.cc
+++ b/compaction/compaction_manager.cc
@@ -616,14 +616,31 @@ future<> compaction_manager::really_do_stop() {
try {

Commit Bot

<bot@cloudius-systems.com>
unread,
Oct 13, 2022, 9:02:58 AM10/13/22
to scylladb-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: next-4.6

compaction_manager: Swallow ENOSPCs in ::stop()

When being stopped compaction manager may step on ENOSPC. This is not a
reason to fail stopping process with abort, better to warn this fact in
logs and proceed as if nothing happened

refs: #11245

Signed-off-by: Pavel Emelyanov <xe...@scylladb.com>

---
diff --git a/compaction/compaction_manager.cc b/compaction/compaction_manager.cc
--- a/compaction/compaction_manager.cc
+++ b/compaction/compaction_manager.cc
@@ -542,14 +542,31 @@ future<> compaction_manager::really_do_stop() {

Commit Bot

<bot@cloudius-systems.com>
unread,
Oct 13, 2022, 4:09:31 PM10/13/22
to scylladb-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: branch-5.0

compaction_manager: Swallow ENOSPCs in ::stop()

When being stopped compaction manager may step on ENOSPC. This is not a
reason to fail stopping process with abort, better to warn this fact in
logs and proceed as if nothing happened

refs: #11245

Signed-off-by: Pavel Emelyanov <xe...@scylladb.com>

---
diff --git a/compaction/compaction_manager.cc b/compaction/compaction_manager.cc
--- a/compaction/compaction_manager.cc
+++ b/compaction/compaction_manager.cc
@@ -616,14 +616,31 @@ future<> compaction_manager::really_do_stop() {

Commit Bot

<bot@cloudius-systems.com>
unread,
Oct 13, 2022, 5:31:51 PM10/13/22
to scylladb-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: branch-5.1

compaction_manager: Swallow ENOSPCs in ::stop()

When being stopped compaction manager may step on ENOSPC. This is not a
reason to fail stopping process with abort, better to warn this fact in
logs and proceed as if nothing happened

refs: #11245

Signed-off-by: Pavel Emelyanov <xe...@scylladb.com>

---
diff --git a/compaction/compaction_manager.cc b/compaction/compaction_manager.cc
--- a/compaction/compaction_manager.cc
+++ b/compaction/compaction_manager.cc
@@ -842,14 +842,31 @@ future<> compaction_manager::really_do_stop() {
cmlog.info("Stopped");

Commit Bot

<bot@cloudius-systems.com>
unread,
Oct 13, 2022, 6:10:50 PM10/13/22
to scylladb-dev@googlegroups.com, Pavel Emelyanov
From: Pavel Emelyanov <xe...@scylladb.com>
Committer: Pavel Emelyanov <xe...@scylladb.com>
Branch: branch-4.6

compaction_manager: Swallow ENOSPCs in ::stop()

When being stopped compaction manager may step on ENOSPC. This is not a
reason to fail stopping process with abort, better to warn this fact in
logs and proceed as if nothing happened

refs: #11245

Signed-off-by: Pavel Emelyanov <xe...@scylladb.com>

---
diff --git a/compaction/compaction_manager.cc b/compaction/compaction_manager.cc
--- a/compaction/compaction_manager.cc
+++ b/compaction/compaction_manager.cc
@@ -542,14 +542,31 @@ future<> compaction_manager::really_do_stop() {
try {
Reply all
Reply to author
Forward
0 new messages