diff options
author | Tor Egge <Tor.Egge@yahooinc.com> | 2023-09-05 10:28:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-05 10:28:24 +0200 |
commit | 4d7f48034c42b726334124f72e9c7bde3cd3415a (patch) | |
tree | 1a6f426dd9b1b8427b819d65e4b59aab2d234b65 /searchcore | |
parent | fc02966a4aeeece1cf70e2b8762987e4903829b7 (diff) | |
parent | e6ca36975a9e4c2730b934e3d93bd8d91ddd7c4c (diff) |
Merge pull request #28387 from vespa-engine/geirst/memory-index-write-context-details
Add memory index write context details to index manager state explorer.
Diffstat (limited to 'searchcore')
3 files changed, 29 insertions, 3 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h b/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h index 3283bfb68eb..2157e6a49ec 100644 --- a/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h +++ b/searchcore/src/vespa/searchcore/proton/index/memoryindexwrapper.h @@ -94,6 +94,10 @@ public: _index.pruneRemovedFields(schema); } void flushToDisk(const vespalib::string &flushDir, uint32_t docIdLimit, SerialNum serialNum) override; + + void insert_write_context_state(vespalib::slime::Cursor& object) const override { + _index.insert_write_context_state(object); + } }; } // namespace proton diff --git a/searchcore/src/vespa/searchcorespi/index/imemoryindex.h b/searchcore/src/vespa/searchcorespi/index/imemoryindex.h index 1b370dff262..130042bc048 100644 --- a/searchcore/src/vespa/searchcorespi/index/imemoryindex.h +++ b/searchcore/src/vespa/searchcorespi/index/imemoryindex.h @@ -7,8 +7,9 @@ #include <vespa/vespalib/stllike/string.h> #include <vespa/vespalib/util/memoryusage.h> -namespace vespalib { class IDestructorCallback; } namespace document { class Document; } +namespace vespalib { class IDestructorCallback; } +namespace vespalib::slime { struct Cursor; } namespace searchcorespi::index { /** @@ -78,6 +79,8 @@ struct IMemoryIndex : public searchcorespi::IndexSearchable { virtual void pruneRemovedFields(const search::index::Schema &schema) = 0; virtual search::index::Schema::SP getPrunedSchema() const = 0; + + virtual void insert_write_context_state(vespalib::slime::Cursor& object) const = 0; }; } diff --git a/searchcore/src/vespa/searchcorespi/index/index_manager_explorer.cpp b/searchcore/src/vespa/searchcorespi/index/index_manager_explorer.cpp index 855f3c69bc9..1634937f094 100644 --- a/searchcore/src/vespa/searchcorespi/index/index_manager_explorer.cpp +++ b/searchcore/src/vespa/searchcorespi/index/index_manager_explorer.cpp @@ -2,7 +2,8 @@ #include "index_manager_explorer.h" #include "index_manager_stats.h" - +#include <vespa/searchcorespi/index/imemoryindex.h> +#include <vespa/searchcorespi/index/indexsearchablevisitor.h> #include <vespa/vespalib/data/slime/cursor.h> using vespalib::slime::Cursor; @@ -45,8 +46,23 @@ insertMemoryIndex(Cursor &arrayCursor, const MemoryIndexStats &memoryIndex) insertMemoryUsage(memoryIndexCursor, sstats.memoryUsage()); } -} +class WriteContextInserter : public IndexSearchableVisitor { +private: + Cursor& _object; + bool _has_inserted; + +public: + WriteContextInserter(Cursor& object) : _object(object), _has_inserted(false) {} + void visit(const index::IDiskIndex&) override {} + void visit(const index::IMemoryIndex& index) override { + if (!_has_inserted) { + index.insert_write_context_state(_object); + _has_inserted = true; + } + } +}; +} IndexManagerExplorer::IndexManagerExplorer(IIndexManager::SP mgr) : _mgr(std::move(mgr)) @@ -68,6 +84,9 @@ IndexManagerExplorer::get_state(const Inserter &inserter, bool full) const for (const auto &memoryIndex : stats.getMemoryIndexes()) { insertMemoryIndex(memoryIndexArrayCursor, memoryIndex); } + auto& write_contexts = object.setObject("write_contexts"); + WriteContextInserter visitor(write_contexts); + _mgr->getSearchable()->accept(visitor); } } |