diff options
| author | Douglas Rumbaugh <dbr4@psu.edu> | 2024-02-09 13:09:05 -0500 |
|---|---|---|
| committer | Douglas Rumbaugh <dbr4@psu.edu> | 2024-02-09 13:15:04 -0500 |
| commit | 3ddafd3b9ac089252814af87cb7d9fe534cf59a4 (patch) | |
| tree | 775dc0241c5e87cc22267d093f0447abc245f4c1 | |
| parent | aa1b40e9249afc03bf1a2f35de4cbf67c7f9b47e (diff) | |
| download | dynamic-extension-3ddafd3b9ac089252814af87cb7d9fe534cf59a4.tar.gz | |
Removed centralized version structure
| -rw-r--r-- | include/framework/DynamicExtension.h | 38 | ||||
| -rw-r--r-- | include/framework/scheduling/Epoch.h | 5 |
2 files changed, 8 insertions, 35 deletions
diff --git a/include/framework/DynamicExtension.h b/include/framework/DynamicExtension.h index 238fc7f..7ea5370 100644 --- a/include/framework/DynamicExtension.h +++ b/include/framework/DynamicExtension.h @@ -12,8 +12,6 @@ #include <atomic> #include <cstdio> #include <vector> -#include <set> -#include <mutex> #include "framework/interface/Scheduler.h" #include "framework/scheduling/FIFOScheduler.h" @@ -26,12 +24,10 @@ #include "framework/util/Configuration.h" #include "framework/scheduling/Epoch.h" - - namespace de { template <RecordInterface R, ShardInterface<R> S, QueryInterface<R, S> Q, LayoutPolicy L=LayoutPolicy::TEIRING, - DeletePolicy D=DeletePolicy::TAGGING, SchedulerInterface SCHED=SerialScheduler> + DeletePolicy D=DeletePolicy::TAGGING, SchedulerInterface SCHED=FIFOScheduler> class DynamicExtension { typedef S Shard; typedef MutableBuffer<R> Buffer; @@ -62,8 +58,6 @@ public: m_current_epoch.store({new _Epoch(0, vers, m_buffer, 0), 0}); m_previous_epoch.store({nullptr, 0}); m_next_epoch.store({nullptr, 0}); - - m_versions.insert(vers); } ~DynamicExtension() { @@ -80,10 +74,6 @@ public: delete m_previous_epoch.load().epoch; delete m_buffer; - - for (auto e : m_versions) { - delete e; - } } /* @@ -320,8 +310,8 @@ private: Buffer *m_buffer; - std::mutex m_struct_lock; - std::set<Structure *> m_versions; + //std::mutex m_struct_lock; + //std::set<Structure *> m_versions; alignas(64) std::atomic<bool> m_reconstruction_scheduled; @@ -448,11 +438,6 @@ private: end_job(current_epoch); - std::unique_lock<std::mutex> m_struct_lock; - m_versions.insert(m_next_epoch.load().epoch->get_structure()); - m_struct_lock.release(); - - return m_next_epoch.load().epoch; } @@ -494,23 +479,6 @@ private: } while(true); delete epoch; - - /* - * Following the epoch's destruction, any buffers - * or structures with no remaining references can - * be safely freed. - */ - std::unique_lock<std::mutex> lock(m_struct_lock); - - for (auto itr = m_versions.begin(); itr != m_versions.end();) { - if ((*itr)->get_reference_count() == 0) { - auto tmp = *itr; - itr = m_versions.erase(itr); - delete tmp; - } else { - itr++; - } - } } static void reconstruction(void *arguments) { diff --git a/include/framework/scheduling/Epoch.h b/include/framework/scheduling/Epoch.h index 3ffa145..9377fb0 100644 --- a/include/framework/scheduling/Epoch.h +++ b/include/framework/scheduling/Epoch.h @@ -47,6 +47,11 @@ public: if (m_structure) { m_structure->release_reference(); } + + if (m_structure->get_reference_count() == 0) { + delete m_structure; + } + } /* |