diff options
23 files changed, 156 insertions, 106 deletions
diff --git a/client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx b/client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx index 7299f1cb777..7a630a017cb 100644 --- a/client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx +++ b/client/js/app/src/app/pages/querybuilder/TransformVespaTrace.jsx @@ -128,6 +128,10 @@ function createProtonSpans(children, parentID) { [{ refType: 'CHILD_OF', traceID: traceID, spanID: parentID }] ); data.push(newSpan); + // eslint-disable-next-line no-prototype-builtins + if (!child.hasOwnProperty('traces')) { + return; + } let traces = child['traces']; for (let k = 0; k < traces.length; k++) { let trace = traces[k]; diff --git a/client/js/app/src/app/pages/querybuilder/query-response/download-jeager.jsx b/client/js/app/src/app/pages/querybuilder/query-response/download-jaeger.jsx index 4130172a329..795c53f8c21 100644 --- a/client/js/app/src/app/pages/querybuilder/query-response/download-jeager.jsx +++ b/client/js/app/src/app/pages/querybuilder/query-response/download-jaeger.jsx @@ -20,7 +20,7 @@ function downloadFile(filename, blob) { URL.revokeObjectURL(href); } -export function DownloadJeager({ response, ...props }) { +export function DownloadJaeger({ response, ...props }) { const handleClick = () => { try { const json = JSON.parse(response); diff --git a/client/js/app/src/app/pages/querybuilder/query-response/query-response.jsx b/client/js/app/src/app/pages/querybuilder/query-response/query-response.jsx index 56562ae1717..794e163ef04 100644 --- a/client/js/app/src/app/pages/querybuilder/query-response/query-response.jsx +++ b/client/js/app/src/app/pages/querybuilder/query-response/query-response.jsx @@ -7,7 +7,7 @@ import { CopyButton, Textarea, } from '@mantine/core'; -import { DownloadJeager } from 'app/pages/querybuilder/query-response/download-jeager'; +import { DownloadJaeger } from 'app/pages/querybuilder/query-response/download-jaeger'; import { useQueryBuilderContext } from 'app/pages/querybuilder/context/query-builder-provider'; import { Icon } from 'app/components'; @@ -33,7 +33,7 @@ export function QueryResponse() { </Button> )} </CopyButton> - <DownloadJeager + <DownloadJaeger variant="outline" size="xs" compact diff --git a/client/js/app/src/app/pages/querytracer/query-tracer.jsx b/client/js/app/src/app/pages/querytracer/query-tracer.jsx index 758182d4f3f..ca1a4e99c8f 100644 --- a/client/js/app/src/app/pages/querytracer/query-tracer.jsx +++ b/client/js/app/src/app/pages/querytracer/query-tracer.jsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { Stack, Textarea } from '@mantine/core'; -import { DownloadJeager } from 'app/pages/querybuilder/query-response/download-jeager'; +import { DownloadJaeger } from 'app/pages/querybuilder/query-response/download-jaeger'; export function QueryTracer() { const [response, setResponse] = useState(''); @@ -19,7 +19,7 @@ export function QueryTracer() { value={response} onChange={({ target }) => setResponse(target.value)} /> - <DownloadJeager fullWidth response={response} /> + <DownloadJaeger fullWidth response={response} /> </Stack> ); } diff --git a/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java b/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java index f838e96c930..5da1f1a07be 100644 --- a/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java +++ b/container-search/src/main/java/com/yahoo/prelude/query/parser/AbstractParser.java @@ -7,6 +7,7 @@ import com.yahoo.prelude.Index; import com.yahoo.prelude.IndexFacts; import com.yahoo.prelude.query.AndSegmentItem; import com.yahoo.prelude.query.CompositeItem; +import com.yahoo.prelude.query.IndexedItem; import com.yahoo.prelude.query.Item; import com.yahoo.prelude.query.NullItem; import com.yahoo.prelude.query.PhraseItem; @@ -16,6 +17,7 @@ import com.yahoo.search.query.QueryTree; import com.yahoo.search.query.parser.Parsable; import com.yahoo.search.query.parser.ParserEnvironment; +import java.util.Iterator; import java.util.List; import java.util.ListIterator; @@ -166,6 +168,8 @@ public abstract class AbstractParser implements CustomParser { root = filterParser.applyFilter(root, filterToParse, parsingLanguage, indexFacts); } } + if (defaultIndex != null) + assignDefaultIndex(indexFacts.getCanonicName(defaultIndex), root); return simplifyPhrases(root); } @@ -228,6 +232,31 @@ public abstract class AbstractParser implements CustomParser { return detectionText.toString(); } + /** + * Assigns the default index to query terms having no default index. + * + * This will apply the default index to terms without it added through the filter parameter, + * where setting defaultIndex into state causes incorrect parsing. + * + * @param defaultIndex the default index to assign + * @param item the item to check + */ + private static void assignDefaultIndex(String defaultIndex, Item item) { + if (defaultIndex == null || item == null) return; + + if (item instanceof IndexedItem) { + IndexedItem indexName = (IndexedItem) item; + + if ("".equals(indexName.getIndexName())) + indexName.setIndexName(defaultIndex); + } + else if (item instanceof CompositeItem) { + Iterator<Item> items = ((CompositeItem)item).getItemIterator(); + while (items.hasNext()) + assignDefaultIndex(defaultIndex, items.next()); + } + } + private boolean is(Token.Kind kind, Token tokenOrNull) { if (tokenOrNull == null) return false; return kind.equals(tokenOrNull.kind); diff --git a/container-search/src/test/java/com/yahoo/search/test/QueryWithFilterTestCase.java b/container-search/src/test/java/com/yahoo/search/test/QueryWithFilterTestCase.java index 082cede5ff4..3920a95bd98 100644 --- a/container-search/src/test/java/com/yahoo/search/test/QueryWithFilterTestCase.java +++ b/container-search/src/test/java/com/yahoo/search/test/QueryWithFilterTestCase.java @@ -41,6 +41,17 @@ public class QueryWithFilterTestCase { q.getModel().getQueryTree().toString()); } + /** Tests that default-index is not applied to NOT filters */ + @Test + void testAndFilterWithoutExplicitIndex() { + Query q = newQueryFromEncoded("?query=trump" + + "&model.type=all" + + "&model.defaultIndex=text" + + "&filter=%2B%28filterTerm%29"); + assertEquals("AND text:trump |text:filterTerm", + q.getModel().getQueryTree().toString()); + } + private Query newQueryFromEncoded(String queryString) { return newQueryFromEncoded(queryString, null, new SimpleLinguistics()); } diff --git a/default_build_settings.cmake b/default_build_settings.cmake index 979b71f96b3..e973cfcf7f7 100644 --- a/default_build_settings.cmake +++ b/default_build_settings.cmake @@ -74,12 +74,6 @@ function(setup_vespa_default_build_settings_darwin) set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${DEFAULT_EXTRA_INCLUDE_DIRECTORY}" PARENT_SCOPE) endfunction() -function(setup_vespa_default_build_settings_fedora_34) - message("-- Setting up default build settings for fedora 34") - set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE) - set(DEFAULT_VESPA_LLVM_VERSION "12" PARENT_SCOPE) -endfunction() - function(setup_vespa_default_build_settings_fedora_35) message("-- Setting up default build settings for fedora 35") set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE) @@ -98,6 +92,12 @@ function(setup_vespa_default_build_settings_fedora_37) set(DEFAULT_VESPA_LLVM_VERSION "14" PARENT_SCOPE) endfunction() +function(setup_vespa_default_build_settings_fedora_38) + message("-- Setting up default build settings for fedora 38") + set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE) + set(DEFAULT_VESPA_LLVM_VERSION "14" PARENT_SCOPE) +endfunction() + function(setup_vespa_default_build_settings_amzn_2) message("-- Setting up default build settings for amzn 2") set(DEFAULT_EXTRA_LINK_DIRECTORY "${VESPA_DEPS}/lib64" "/usr/lib64/llvm7.0/lib" PARENT_SCOPE) @@ -236,14 +236,14 @@ function(vespa_use_default_build_settings) setup_vespa_default_build_settings_almalinux_9_0() elseif(VESPA_OS_DISTRO STREQUAL "darwin") setup_vespa_default_build_settings_darwin() - elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 34") - setup_vespa_default_build_settings_fedora_34() elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 35") setup_vespa_default_build_settings_fedora_35() elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 36") setup_vespa_default_build_settings_fedora_36() elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 37") setup_vespa_default_build_settings_fedora_37() + elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "fedora 38") + setup_vespa_default_build_settings_fedora_38() elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "amzn 2") setup_vespa_default_build_settings_amzn_2() elseif(VESPA_OS_DISTRO_COMBINED STREQUAL "amzn 2022") diff --git a/dist/vespa.spec b/dist/vespa.spec index b05a8853da1..4b4c82c436b 100644 --- a/dist/vespa.spec +++ b/dist/vespa.spec @@ -171,13 +171,9 @@ BuildRequires: openssl-devel BuildRequires: vespa-lz4-devel >= 1.9.2-2 BuildRequires: vespa-onnxruntime-devel = 1.12.1 BuildRequires: vespa-libzstd-devel >= 1.4.5-2 -%if 0%{?fc34} -BuildRequires: protobuf-devel %if 0%{?amzn2022} +BuildRequires: protobuf-devel BuildRequires: llvm-devel >= 13.0.0 -%else -BuildRequires: llvm-devel >= 12.0.0 -%endif BuildRequires: boost-devel >= 1.75 BuildRequires: gtest-devel BuildRequires: gmock-devel @@ -198,8 +194,15 @@ BuildRequires: gmock-devel %endif %if 0%{?fc37} BuildRequires: protobuf-devel -BuildRequires: llvm-devel >= 14.0.0 -BuildRequires: boost-devel >= 1.76 +BuildRequires: llvm-devel >= 14.0.5 +BuildRequires: boost-devel >= 1.78 +BuildRequires: gtest-devel +BuildRequires: gmock-devel +%endif +%if 0%{?fc38} +BuildRequires: protobuf-devel +BuildRequires: llvm-devel >= 14.0.5 +BuildRequires: boost-devel >= 1.78 BuildRequires: gtest-devel BuildRequires: gmock-devel %endif @@ -328,12 +331,8 @@ Requires: gtest %endif %if 0%{?fedora} Requires: gtest -%if 0%{?fc34} %if 0%{?amzn2022} %define _vespa_llvm_version 13 -%else -%define _vespa_llvm_version 12 -%endif %endif %if 0%{?fc35} %define _vespa_llvm_version 13 @@ -344,6 +343,9 @@ Requires: gtest %if 0%{?fc37} %define _vespa_llvm_version 14 %endif +%if 0%{?fc38} +%define _vespa_llvm_version 14 +%endif %define _extra_link_directory %{_vespa_deps_prefix}/lib64 %define _extra_include_directory %{_vespa_deps_prefix}/include;/usr/include/openblas %endif @@ -459,12 +461,8 @@ Requires: protobuf %endif %if 0%{?fedora} Requires: protobuf -%if 0%{?fc34} %if 0%{?amzn2022} Requires: llvm-libs >= 13.0.0 -%else -Requires: llvm-libs >= 12.0.0 -%endif %endif %if 0%{?fc35} Requires: llvm-libs >= 13.0.0 @@ -473,7 +471,10 @@ Requires: llvm-libs >= 13.0.0 Requires: llvm-libs >= 14.0.0 %endif %if 0%{?fc37} -Requires: llvm-libs >= 14.0.0 +Requires: llvm-libs >= 14.0.5 +%endif +%if 0%{?fc38} +Requires: llvm-libs >= 14.0.5 %endif %endif Requires: vespa-onnxruntime = 1.12.1 @@ -571,7 +572,7 @@ nearest neighbor search used for low-level benchmarking. %endif %else %setup -q -%if ( 0%{?el8} || 0%{?fc34} ) && %{_vespa_llvm_version} < 13 +%if 0%{?el8} && %{_vespa_llvm_version} < 13 if grep -qs 'result_pair<R>(' /usr/include/llvm/ADT/STLExtras.h then patch /usr/include/llvm/ADT/STLExtras.h < dist/STLExtras.h.diff diff --git a/document/src/vespa/document/bucket/bucketid.cpp b/document/src/vespa/document/bucket/bucketid.cpp index 3752eab4810..9ca4db1e51c 100644 --- a/document/src/vespa/document/bucket/bucketid.cpp +++ b/document/src/vespa/document/bucket/bucketid.cpp @@ -78,7 +78,7 @@ void BucketId::initialize() noexcept { } uint64_t -BucketId::xxhash::operator () (const BucketId& bucketId) const noexcept { +BucketId::hash::operator () (const BucketId& bucketId) const noexcept { const uint64_t raw_id = bucketId.getId(); return XXH3_64bits(&raw_id, sizeof(uint64_t)); } @@ -159,4 +159,3 @@ operator>>(nbostream &is, BucketId &bucketId) } // document VESPALIB_HASH_SET_INSTANTIATE_H(document::BucketId, document::BucketId::hash); -VESPALIB_HASH_SET_INSTANTIATE_H(document::BucketId, document::BucketId::xxhash); diff --git a/document/src/vespa/document/bucket/bucketid.h b/document/src/vespa/document/bucket/bucketid.h index a0f9ca4e94f..370948c1acc 100644 --- a/document/src/vespa/document/bucket/bucketid.h +++ b/document/src/vespa/document/bucket/bucketid.h @@ -37,11 +37,6 @@ class BucketId { public: struct hash { - size_t operator () (const BucketId& g) const noexcept { - return g.getId(); - } - }; - struct xxhash { uint64_t operator () (const BucketId& g) const noexcept; }; diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.cpp b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.cpp index 3ddb1afdb35..486472aec0f 100644 --- a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.cpp +++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.cpp @@ -2,7 +2,6 @@ #include "bucket_db_snapshot.h" #include <vespa/persistence/spi/persistenceprovider.h> -#include <vespa/vespalib/stllike/hash_set.hpp> #include <vespa/vespalib/stllike/hash_map.hpp> #include <cassert> @@ -66,9 +65,4 @@ BucketDbSnapshot::try_get_bucket_info(BucketId bucket_id) const } -namespace vespalib { - -template class hash_map<BucketId, BucketInfo, BucketId::hash>; -template class hash_set<BucketId, BucketId::hash>; - -} +VESPALIB_HASH_MAP_INSTANTIATE_H(document::BucketId, storage::spi::BucketInfo, document::BucketId::hash); diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.h b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.h index d750a73f207..189250194b4 100644 --- a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.h +++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot.h @@ -22,6 +22,10 @@ class BucketDbSnapshot public: using BucketIdSet = vespalib::hash_set<document::BucketId, document::BucketId::hash>; BucketDbSnapshot(); + BucketDbSnapshot(const BucketDbSnapshot &) = delete; + BucketDbSnapshot & operator=(const BucketDbSnapshot &) = delete; + BucketDbSnapshot(BucketDbSnapshot &&) noexcept = default; + BucketDbSnapshot & operator=(BucketDbSnapshot &&) noexcept = default; ~BucketDbSnapshot(); void populate(document::BucketSpace bucket_space, storage::spi::PersistenceProvider& provider); uint32_t count_new_documents(const BucketDbSnapshot &old) const; diff --git a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h index 7799ed8fc58..df6183fd6f9 100644 --- a/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h +++ b/searchcore/src/vespa/searchcore/bmcluster/bucket_db_snapshot_vector.h @@ -16,8 +16,9 @@ class BucketDbSnapshotVector vespalib::hash_map<document::BucketSpace, std::vector<BucketDbSnapshot>, document::BucketSpace::hash> _snapshots; using BucketIdSet = BucketDbSnapshot::BucketIdSet; public: - BucketDbSnapshotVector(const std::vector<storage::spi::PersistenceProvider *>& providers, const storage::lib::ClusterStateBundle &cluster_state_bundle); + BucketDbSnapshotVector(const BucketDbSnapshotVector &) = delete; + BucketDbSnapshotVector & operator = (const BucketDbSnapshotVector &) = delete; ~BucketDbSnapshotVector(); uint32_t count_moved_documents(const BucketDbSnapshotVector &old) const; uint32_t count_lost_unique_documents(const BucketDbSnapshotVector &old) const; diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h index 2a50fbc2d42..7c1c336ab48 100644 --- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h +++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketdb.h @@ -19,7 +19,7 @@ private: using Timestamp = storage::spi::Timestamp; using BucketChecksum = storage::spi::BucketChecksum; using BucketState = bucketdb::BucketState; - using Map = vespalib::hash_map<BucketId, BucketState, document::BucketId::xxhash>; + using Map = vespalib::hash_map<BucketId, BucketState, document::BucketId::hash>; Map _map; BucketId _cachedBucketId; diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp index 830dbfedf20..c6d9bbd82b9 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp @@ -99,7 +99,7 @@ GenericResultHandler::~GenericResultHandler() = default; class BucketIdListResultHandler : public IBucketIdListResultHandler { private: - using BucketIdSet = vespalib::hash_set<document::BucketId, document::BucketId::xxhash>; + using BucketIdSet = vespalib::hash_set<document::BucketId, document::BucketId::hash>; BucketIdSet _bucketSet; public: BucketIdListResultHandler() diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp index e6c8d0b6ab8..71800eb2128 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.cpp @@ -16,7 +16,7 @@ DocsumStoreDocument::DocsumStoreDocument(std::unique_ptr<document::Document> doc DocsumStoreDocument::~DocsumStoreDocument() = default; -std::unique_ptr<document::FieldValue> +DocsumStoreFieldValue DocsumStoreDocument::get_field_value(const vespalib::string& field_name) const { if (_document) { @@ -24,11 +24,11 @@ DocsumStoreDocument::get_field_value(const vespalib::string& field_name) const auto value(field.getDataType().createFieldValue()); if (value) { if (_document->getValue(field, *value)) { - return value; + return DocsumStoreFieldValue(std::move(value)); } } } - return {}; + return DocsumStoreFieldValue(); } void diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h index 3b0bea6e721..26cccc9970f 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_document.h @@ -17,7 +17,7 @@ class DocsumStoreDocument : public IDocsumStoreDocument public: DocsumStoreDocument(std::unique_ptr<document::Document> document); ~DocsumStoreDocument() override; - std::unique_ptr<document::FieldValue> get_field_value(const vespalib::string& field_name) const override; + DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const override; void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const override; void insert_document_id(vespalib::slime::Inserter& inserter) const override; }; diff --git a/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_field_value.h b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_field_value.h new file mode 100644 index 00000000000..d06a2ab8287 --- /dev/null +++ b/searchsummary/src/vespa/searchsummary/docsummary/docsum_store_field_value.h @@ -0,0 +1,38 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#pragma once + +#include <vespa/document/fieldvalue/fieldvalue.h> +#include <memory> + +namespace search::docsummary { + +/* + * Class containing a field value returned from an IDocsumStoreDocument. + */ +class DocsumStoreFieldValue { + const document::FieldValue* _value; + std::unique_ptr<document::FieldValue> _value_store; +public: + explicit DocsumStoreFieldValue(std::unique_ptr<document::FieldValue> value) noexcept + : _value(value.get()), + _value_store(std::move(value)) + { + } + explicit DocsumStoreFieldValue(const document::FieldValue* value) noexcept + : _value(value), + _value_store() + { + } + DocsumStoreFieldValue() + : DocsumStoreFieldValue(nullptr) + { + } + ~DocsumStoreFieldValue() = default; + const document::FieldValue& operator*() const noexcept { return *_value; } + const document::FieldValue* operator->() const noexcept { return _value; } + const document::FieldValue* get() const noexcept { return _value; } + operator bool () const noexcept { return _value != nullptr; } +}; + +} diff --git a/searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp b/searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp index 825c3b39c1b..359959391fd 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp +++ b/searchsummary/src/vespa/searchsummary/docsummary/general_result.cpp @@ -62,13 +62,13 @@ GeneralResult::GetPresentEntryFromEnumValue(uint32_t value) return GetPresentEntry(idx); } -std::unique_ptr<document::FieldValue> +DocsumStoreFieldValue GeneralResult::get_field_value(const vespalib::string& field_name) const { if (_document != nullptr) { return _document->get_field_value(field_name); } - return {}; + return DocsumStoreFieldValue(); } bool diff --git a/searchsummary/src/vespa/searchsummary/docsummary/general_result.h b/searchsummary/src/vespa/searchsummary/docsummary/general_result.h index cff27a496e3..8f7a1377502 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/general_result.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/general_result.h @@ -4,10 +4,7 @@ #include "resultclass.h" #include "docsumstorevalue.h" - -namespace document { -class FieldValue; -} +#include "docsum_store_field_value.h" namespace search::docsummary { @@ -42,7 +39,7 @@ public: } ResEntry *GetPresentEntry(const char *name); ResEntry *GetPresentEntryFromEnumValue(uint32_t val); - std::unique_ptr<document::FieldValue> get_field_value(const vespalib::string& field_name) const; + DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const; bool unpack(const char *buf, const size_t buflen); bool inplaceUnpack(const DocsumStoreValue &value) { diff --git a/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h b/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h index c177568c467..b9c2ae76e7a 100644 --- a/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h +++ b/searchsummary/src/vespa/searchsummary/docsummary/i_docsum_store_document.h @@ -2,10 +2,8 @@ #pragma once +#include "docsum_store_field_value.h" #include <vespa/vespalib/stllike/string.h> -#include <memory> - -namespace document { class FieldValue; } namespace vespalib::slime { struct Inserter; } @@ -20,7 +18,7 @@ class IDocsumStoreDocument { public: virtual ~IDocsumStoreDocument() = default; - virtual std::unique_ptr<document::FieldValue> get_field_value(const vespalib::string& field_name) const = 0; + virtual DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const = 0; virtual void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const = 0; virtual void insert_document_id(vespalib::slime::Inserter& inserter) const = 0; }; diff --git a/storage/src/vespa/storage/bucketdb/bucketmanager.h b/storage/src/vespa/storage/bucketdb/bucketmanager.h index eacd0c8ca6a..124acf1864c 100644 --- a/storage/src/vespa/storage/bucketdb/bucketmanager.h +++ b/storage/src/vespa/storage/bucketdb/bucketmanager.h @@ -34,7 +34,6 @@ class BucketManager : public StorageLink, { public: /** Type used for message queues */ - using CommandList = std::list<std::shared_ptr<api::StorageCommand>>; using BucketInfoRequestList = std::list<std::shared_ptr<api::RequestBucketInfoCommand>>; using BucketInfoRequestMap = std::unordered_map<document::BucketSpace, BucketInfoRequestList, document::BucketSpace::hash>; @@ -55,8 +54,7 @@ private: mutable std::mutex _queueProcessingLock; using ReplyQueue = std::vector<api::StorageReply::SP>; - using ConflictingBuckets = std::unordered_set<document::BucketId, - document::BucketId::hash>; + using ConflictingBuckets = std::unordered_set<document::BucketId, document::BucketId::hash>; ReplyQueue _queuedReplies; ConflictingBuckets _conflictingBuckets; /** @@ -80,9 +78,6 @@ private: framework::Thread::UP _thread; std::chrono::milliseconds _simulated_processing_delay; - BucketManager(const BucketManager&); - BucketManager& operator=(const BucketManager&); - class ScopedQueueDispatchGuard { BucketManager& _mgr; public: @@ -94,8 +89,9 @@ private: }; public: - explicit BucketManager(const config::ConfigUri&, - ServiceLayerComponentRegister&); + BucketManager(const config::ConfigUri&, ServiceLayerComponentRegister&); + BucketManager(const BucketManager&) = delete; + BucketManager& operator=(const BucketManager&) = delete; ~BucketManager(); void startWorkerThread(); @@ -127,8 +123,7 @@ private: void updateMinUsedBits(); bool onRequestBucketInfo(const std::shared_ptr<api::RequestBucketInfoCommand>&) override; - bool processRequestBucketInfoCommands(document::BucketSpace bucketSpace, - BucketInfoRequestList &reqs); + bool processRequestBucketInfoCommands(document::BucketSpace bucketSpace, BucketInfoRequestList &reqs); /** * Enqueue reply and add its bucket to the set of conflicting buckets iff @@ -199,42 +194,26 @@ private: * * Not thread safe. */ - bool replyConflictsWithConcurrentOperation( - const api::BucketReply& reply) const; - + bool replyConflictsWithConcurrentOperation(const api::BucketReply& reply) const; bool enqueueIfBucketHasConflicts(const api::BucketReply::SP& reply); - bool onUp(const std::shared_ptr<api::StorageMessage>&) override; - bool onSetSystemState( - const std::shared_ptr<api::SetSystemStateCommand>&) override; - bool onCreateBucket( - const std::shared_ptr<api::CreateBucketCommand>&) override; - bool onMergeBucket( - const std::shared_ptr<api::MergeBucketCommand>&) override; - bool onRemove( - const std::shared_ptr<api::RemoveCommand>&) override; - bool onRemoveReply( - const std::shared_ptr<api::RemoveReply>&) override; - bool onPut( - const std::shared_ptr<api::PutCommand>&) override; - bool onPutReply( - const std::shared_ptr<api::PutReply>&) override; - bool onUpdate( - const std::shared_ptr<api::UpdateCommand>&) override; - bool onUpdateReply( - const std::shared_ptr<api::UpdateReply>&) override; - bool onNotifyBucketChangeReply( - const std::shared_ptr<api::NotifyBucketChangeReply>&) override; + bool onSetSystemState(const std::shared_ptr<api::SetSystemStateCommand>&) override; + bool onCreateBucket(const std::shared_ptr<api::CreateBucketCommand>&) override; + bool onMergeBucket(const std::shared_ptr<api::MergeBucketCommand>&) override; + bool onRemove(const std::shared_ptr<api::RemoveCommand>&) override; + bool onRemoveReply(const std::shared_ptr<api::RemoveReply>&) override; + bool onPut(const std::shared_ptr<api::PutCommand>&) override; + bool onPutReply(const std::shared_ptr<api::PutReply>&) override; + bool onUpdate(const std::shared_ptr<api::UpdateCommand>&) override; + bool onUpdateReply(const std::shared_ptr<api::UpdateReply>&) override; + bool onNotifyBucketChangeReply(const std::shared_ptr<api::NotifyBucketChangeReply>&) override; bool verifyAndUpdateLastModified(api::StorageCommand& cmd, const document::Bucket& bucket, uint64_t lastModified); - bool onSplitBucketReply( - const std::shared_ptr<api::SplitBucketReply>&) override; - bool onJoinBucketsReply( - const std::shared_ptr<api::JoinBucketsReply>&) override; - bool onDeleteBucketReply( - const std::shared_ptr<api::DeleteBucketReply>&) override; + bool onSplitBucketReply(const std::shared_ptr<api::SplitBucketReply>&) override; + bool onJoinBucketsReply(const std::shared_ptr<api::JoinBucketsReply>&) override; + bool onDeleteBucketReply(const std::shared_ptr<api::DeleteBucketReply>&) override; }; } // storage diff --git a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp index 5bcead79f97..3d0f8ed6e37 100644 --- a/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp +++ b/streamingvisitors/src/vespa/vsm/vsm/docsumfilter.cpp @@ -133,7 +133,7 @@ class DocsumStoreVsmDocument : public IDocsumStoreDocument public: DocsumStoreVsmDocument(const document::Document* document); ~DocsumStoreVsmDocument() override; - std::unique_ptr<document::FieldValue> get_field_value(const vespalib::string& field_name) const override; + DocsumStoreFieldValue get_field_value(const vespalib::string& field_name) const override; void insert_summary_field(const vespalib::string& field_name, vespalib::slime::Inserter& inserter) const override; void insert_document_id(vespalib::slime::Inserter& inserter) const override; }; @@ -145,7 +145,7 @@ DocsumStoreVsmDocument::DocsumStoreVsmDocument(const document::Document* documen DocsumStoreVsmDocument::~DocsumStoreVsmDocument() = default; -std::unique_ptr<document::FieldValue> +DocsumStoreFieldValue DocsumStoreVsmDocument::get_field_value(const vespalib::string& field_name) const { if (_document != nullptr) { @@ -153,11 +153,11 @@ DocsumStoreVsmDocument::get_field_value(const vespalib::string& field_name) cons auto value(field.getDataType().createFieldValue()); if (value) { if (_document->getValue(field, *value)) { - return value; + return DocsumStoreFieldValue(std::move(value)); } } } - return {}; + return DocsumStoreFieldValue(); } void |