summaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp')
-rw-r--r--searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp b/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp
index e6084c9cde4..3ca7722e6ca 100644
--- a/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp
+++ b/searchlib/src/vespa/searchlib/tensor/direct_tensor_store.cpp
@@ -2,11 +2,18 @@
#include "direct_tensor_store.h"
#include <vespa/eval/eval/value.h>
+#include <vespa/vespalib/datastore/compacting_buffers.h>
+#include <vespa/vespalib/datastore/compaction_context.h>
+#include <vespa/vespalib/datastore/compaction_strategy.h>
#include <vespa/vespalib/datastore/datastore.hpp>
#include <vespa/vespalib/datastore/buffer_type.hpp>
#include <vespa/vespalib/util/size_literals.h>
+using vespalib::datastore::CompactionContext;
+using vespalib::datastore::CompactionSpec;
+using vespalib::datastore::CompactionStrategy;
using vespalib::datastore::EntryRef;
+using vespalib::datastore::ICompactionContext;
namespace search::tensor {
@@ -78,4 +85,19 @@ DirectTensorStore::move(EntryRef ref)
return new_ref;
}
+vespalib::MemoryUsage
+DirectTensorStore::update_stat(const CompactionStrategy& compaction_strategy)
+{
+ auto array_store_memory_usage = _store.getMemoryUsage();
+ _compaction_spec = CompactionSpec(compaction_strategy.should_compact_memory(array_store_memory_usage), false);
+ return array_store_memory_usage;
+}
+
+std::unique_ptr<ICompactionContext>
+DirectTensorStore::start_compact(const CompactionStrategy& compaction_strategy)
+{
+ auto compacting_buffers = _store.start_compact_worst_buffers(_compaction_spec, compaction_strategy);
+ return std::make_unique<CompactionContext>(*this, std::move(compacting_buffers));
+}
+
}