Changeset: fab713f29cd8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fab713f29cd8
Modified Files:
        sql/scripts/25_debug.sql
        sql/storage/sql_storage.h
        sql/storage/store.c
Branch: candidate-exceptions
Log Message:

added enable/disable log flushing procedures.


diffs (65 lines):

diff --git a/sql/scripts/25_debug.sql b/sql/scripts/25_debug.sql
--- a/sql/scripts/25_debug.sql
+++ b/sql/scripts/25_debug.sql
@@ -52,6 +52,14 @@ create procedure sys.evalAlgebra( ra_stm
 create procedure sys.flush_log ()
        external name sql."flush_log";
 
+-- Helper function to disable the log merger
+create procedure suspend_log_flushing()
+        external name sql.suspend_log_flushing;
+
+-- Helper function to enable the log merger
+create procedure resume_log_flushing()
+        external name sql.resume_log_flushing;
+
 create function sys.debug(debug int) returns integer
        external name mdb."setDebug";
 
diff --git a/sql/storage/sql_storage.h b/sql/storage/sql_storage.h
--- a/sql/storage/sql_storage.h
+++ b/sql/storage/sql_storage.h
@@ -349,6 +349,8 @@ extern void store_exit(void);
 
 extern int store_apply_deltas(bool locked);
 extern void store_flush_log(void);
+extern void store_suspend_log(void);
+extern void store_resume_log(void);
 extern void store_manager(void);
 extern void idle_manager(void);
 
diff --git a/sql/storage/store.c b/sql/storage/store.c
--- a/sql/storage/store.c
+++ b/sql/storage/store.c
@@ -2139,7 +2139,7 @@ flusher_should_run(void)
        if (ATOMIC_GET(&store_nr_active) > 0)
                reason_not_to = "awaiting idle time";
 
-       if (!flusher.enabled)
+       if (!flusher.enabled && !my_flush_now)
                reason_not_to = "disabled";
 
        bool do_it = (reason_to && !reason_not_to);
@@ -2236,6 +2236,22 @@ store_flush_log(void)
 }
 
 void
+store_suspend_log(void)
+{
+       MT_lock_set(&bs_lock);
+       flusher.enabled = false;
+       MT_lock_unset(&bs_lock);
+}
+
+void
+store_resume_log(void)
+{
+       MT_lock_set(&bs_lock);
+       flusher.enabled = true;
+       MT_lock_unset(&bs_lock);
+}
+
+void
 store_manager(void)
 {
        MT_thread_setworking("sleeping");
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to