From a4da3a2b832b2df01f2db1d32a5c369c0ad89818 Mon Sep 17 00:00:00 2001
From: Jason Volk <jason@zemos.net>
Date: Sat, 7 Nov 2020 23:30:45 -0800
Subject: [PATCH] ircd::m::dbs: Add runlevel QUIT handler for bgcancel(events).

---
 matrix/dbs.cc | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/matrix/dbs.cc b/matrix/dbs.cc
index c5fe6ccd2..b3564b9fe 100644
--- a/matrix/dbs.cc
+++ b/matrix/dbs.cc
@@ -153,6 +153,18 @@ noexcept
 	fs::base::db.set(their_dbpath);
 }
 
+/// Cancels all background work by the events database. This will make the
+/// database shutdown more fluid, without waiting for large compactions.
+static const ircd::run::changed
+ircd_m_dbs_handle_quit
+{
+	ircd::run::level::QUIT, []
+	{
+		if(ircd::m::dbs::events)
+			ircd::db::bgcancel(*ircd::m::dbs::events, false); // non-blocking
+	}
+};
+
 //
 // write_opts
 //