Skip to content

Commit fe5045a

Browse files
authored
Merge pull request #32580 from vespa-engine/toregge/add-and-remove-index-metrics-when-schema-changes
Add and remove index metrics when schema changes.
2 parents 5cdc448 + 8a0626f commit fe5045a

File tree

6 files changed

+27
-4
lines changed

6 files changed

+27
-4
lines changed

searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ DocumentSubDbInitializerResult::DocumentSubDbInitializerResult()
1212
_summaryManager(std::make_shared<SummaryManager::SP>()),
1313
_attributeManager(std::make_shared<AttributeManager::SP>()),
1414
_indexManager(std::make_shared<IIndexManager::SP>()),
15-
_flushConfig()
15+
_flushConfig(),
16+
_schema()
1617
{
1718
}
1819

searchcore/src/vespa/searchcore/proton/server/document_subdb_initializer_result.h

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class DocumentSubDbInitializerResult
2323
std::shared_ptr<AttributeManager::SP> _attributeManager;
2424
std::shared_ptr<searchcorespi::IIndexManager::SP> _indexManager;
2525
DocumentDBFlushConfig _flushConfig;
26+
std::shared_ptr<const search::index::Schema> _schema;
2627

2728
public:
2829
DocumentSubDbInitializerResult();
@@ -53,6 +54,8 @@ class DocumentSubDbInitializerResult
5354

5455
void setFlushConfig(const DocumentDBFlushConfig &flushConfig);
5556
const DocumentDBFlushConfig &getFlushConfig() const { return _flushConfig; }
57+
void set_schema(std::shared_ptr<const search::index::Schema> schema) { _schema = std::move(schema); }
58+
std::shared_ptr<const search::index::Schema> get_schema() const { return _schema; }
5659
};
5760

5861
} // namespace proton

searchcore/src/vespa/searchcore/proton/server/documentdb.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,9 @@ DocumentDB::close()
568568
_metricsWireService.set_attributes(metrics.ready.attributes, {});
569569
_metricsWireService.set_attributes(metrics.notReady.attributes, {});
570570

571+
// Tear down index metrics
572+
_metricsWireService.set_index_fields(metrics.ready.index, {});
573+
571574
masterExecute([this] () {
572575
closeSubDBs();
573576
});

searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.cpp

+16-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <vespa/searchcore/proton/flushengine/threadedflushtarget.h>
1313
#include <vespa/searchcore/proton/index/index_manager_initializer.h>
1414
#include <vespa/searchcore/proton/index/index_writer.h>
15+
#include <vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h>
1516
#include <vespa/searchcore/proton/reference/document_db_reference.h>
1617
#include <vespa/searchcore/proton/reference/gid_to_lid_change_handler.h>
1718
#include <vespa/searchcore/proton/reference/i_document_db_reference_resolver.h>
@@ -94,10 +95,11 @@ createIndexManagerInitializer(const DocumentDBConfig &configSnapshot, SerialNum
9495
}
9596

9697
void
97-
SearchableDocSubDB::setupIndexManager(searchcorespi::IIndexManager::SP indexManager)
98+
SearchableDocSubDB::setupIndexManager(searchcorespi::IIndexManager::SP indexManager, const Schema& schema)
9899
{
99100
_indexMgr = std::move(indexManager);
100101
_indexWriter = std::make_shared<IndexWriter>(_indexMgr);
102+
reconfigure_index_metrics(schema);
101103
}
102104

103105
DocumentSubDbInitializer::UP
@@ -115,7 +117,7 @@ void
115117
SearchableDocSubDB::setup(const DocumentSubDbInitializerResult &initResult)
116118
{
117119
Parent::setup(initResult);
118-
setupIndexManager(initResult.indexManager());
120+
setupIndexManager(initResult.indexManager(), *initResult.get_schema());
119121
_docIdLimit.set(_dms->getCommittedDocIdLimit());
120122
applyFlushConfig(initResult.getFlushConfig());
121123
}
@@ -282,6 +284,17 @@ SearchableDocSubDB::getFlushTargetsInternal()
282284
return ret;
283285
}
284286

287+
void
288+
SearchableDocSubDB::reconfigure_index_metrics(const Schema& schema)
289+
{
290+
std::vector<std::string> field_names;
291+
field_names.reserve(schema.getNumIndexFields());
292+
for (auto& field : schema.getIndexFields()) {
293+
field_names.emplace_back(field.getName());
294+
}
295+
_metricsWireService.set_index_fields(_metrics.ready.index, std::move(field_names));
296+
}
297+
285298
void
286299
SearchableDocSubDB::setIndexSchema(std::shared_ptr<const Schema> schema, SerialNum serialNum)
287300
{
@@ -292,6 +305,7 @@ SearchableDocSubDB::setIndexSchema(std::shared_ptr<const Schema> schema, SerialN
292305

293306
_indexMgr->setSchema(*schema, serialNum);
294307
reconfigureIndexSearchable();
308+
reconfigure_index_metrics(*schema);
295309
}
296310

297311
size_t

searchcore/src/vespa/searchcore/proton/server/searchabledocsubdb.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,10 @@ SearchableDocSubDB : public FastAccessDocSubDB,
7979
const IndexConfig &indexCfg,
8080
std::shared_ptr<searchcorespi::IIndexManager::SP> indexManager) const;
8181

82-
void setupIndexManager(searchcorespi::IIndexManager::SP indexManager);
82+
void setupIndexManager(searchcorespi::IIndexManager::SP indexManager, const Schema& schema);
8383
void initFeedView(IAttributeWriter::SP attrWriter, const DocumentDBConfig &configSnapshot);
8484
void reconfigureMatchingMetrics(const vespa::config::search::RankProfilesConfig &config);
85+
void reconfigure_index_metrics(const Schema& schema);
8586

8687
bool reconfigure(std::unique_ptr<Configure> configure) override;
8788
void reconfigureIndexSearchable();

searchcore/src/vespa/searchcore/proton/server/storeonlydocsubdb.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,7 @@ StoreOnlyDocSubDB::createInitializer(const DocumentDBConfig &configSnapshot, Ser
323323
summaryTask->addDependency(dmsInitTask);
324324

325325
result->writableResult().setFlushConfig(configSnapshot.getMaintenanceConfigSP()->getFlushConfig());
326+
result->writableResult().set_schema(configSnapshot.getSchemaSP());
326327
return result;
327328
}
328329

0 commit comments

Comments
 (0)