From b72103cb11347f0dd108bd2321f29b0d6ab05106 Mon Sep 17 00:00:00 2001 From: Douglas Rumbaugh Date: Mon, 23 Oct 2023 13:18:30 -0400 Subject: Bugfixes --- include/framework/DynamicExtension.h | 6 +++++- include/framework/scheduling/SerialScheduler.h | 1 + include/framework/structure/MutableBuffer.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'include/framework') diff --git a/include/framework/DynamicExtension.h b/include/framework/DynamicExtension.h index fc7922c..26221d8 100644 --- a/include/framework/DynamicExtension.h +++ b/include/framework/DynamicExtension.h @@ -259,6 +259,7 @@ private: } Q::delete_buffer_query_state(buffer_state); + buffer->release_reference(); args->result_set.set_value(std::move(result)); delete args; @@ -276,10 +277,13 @@ private: } std::future> schedule_query(Structure *version, Buffer *buffer, void *query_parms) { + buffer->take_reference(); // FIXME: this is wrong. The buffer and version need to be + // taken atomically, together. + QueryArgs *args = new QueryArgs(); args->buffer = buffer; args->version = version; - args->buffer = query_parms; + args->query_parms = query_parms; m_sched.schedule_job(async_query, 0, args); diff --git a/include/framework/scheduling/SerialScheduler.h b/include/framework/scheduling/SerialScheduler.h index 5d6e5c2..da2bb8e 100644 --- a/include/framework/scheduling/SerialScheduler.h +++ b/include/framework/scheduling/SerialScheduler.h @@ -51,6 +51,7 @@ public: void schedule_job(std::function job, size_t size, void *args) { size_t ts = m_counter.fetch_add(1); m_task_queue.push(Task(size, ts, job, args)); + m_cv.notify_all(); } void shutdown() { diff --git a/include/framework/structure/MutableBuffer.h b/include/framework/structure/MutableBuffer.h index 804ca5e..4e0b5c2 100644 --- a/include/framework/structure/MutableBuffer.h +++ b/include/framework/structure/MutableBuffer.h @@ -195,6 +195,7 @@ public: bool finish_merge() { m_merge_lock.unlock(); + m_merging.store(false); return true; } -- cgit v1.2.3