diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-12-03 16:35:42 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-12-03 16:35:42 +0000 |
commit | 5aea90d49290743d1e67077bd006067d86318f7f (patch) | |
tree | a2604d90564c07503043326fa6859e158f3646e5 /searchlib | |
parent | 65dea59d21e36a80b733c368b0bdcb761a1a250c (diff) |
Throw exception on illegal config and fail early.
Diffstat (limited to 'searchlib')
3 files changed, 19 insertions, 4 deletions
diff --git a/searchlib/src/tests/transactionlog/translogclient_test.cpp b/searchlib/src/tests/transactionlog/translogclient_test.cpp index 744f00527bc..de8f9e5c462 100644 --- a/searchlib/src/tests/transactionlog/translogclient_test.cpp +++ b/searchlib/src/tests/transactionlog/translogclient_test.cpp @@ -5,6 +5,7 @@ #include <vespa/vespalib/objects/identifiable.h> #include <vespa/searchlib/index/dummyfileheadercontext.h> #include <vespa/document/util/bytebuffer.h> +#include <vespa/vespalib/util/exceptions.h> #include <vespa/fastos/file.h> #include <thread> @@ -568,10 +569,14 @@ TEST("partialUpdateTest") { } TEST("testCrcVersions") { - createAndFillDomain("ccitt_crc32", Encoding(Encoding::Crc::ccitt_crc32, Encoding::Compression::none), 0); - createAndFillDomain("xxh64", Encoding(Encoding::Crc::xxh64, Encoding::Compression::none), 1); + try { + createAndFillDomain("ccitt_crc32", Encoding(Encoding::Crc::ccitt_crc32, Encoding::Compression::none), 0); + ASSERT_TRUE(false); + } catch (vespalib::IllegalArgumentException & e) { + EXPECT_TRUE(e.getMessage().find("Compression:none is not allowed for the tls") != vespalib::string::npos); + } + createAndFillDomain("xxh64", Encoding(Encoding::Crc::xxh64, Encoding::Compression::zstd), 0); - verifyDomain("ccitt_crc32"); verifyDomain("xxh64"); } diff --git a/searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp b/searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp index f37e9b4876a..1f414eaa6d3 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp +++ b/searchlib/src/vespa/searchlib/transactionlog/domainconfig.cpp @@ -1,6 +1,7 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include "domainconfig.h" +#include <vespa/vespalib/util/exceptions.h> namespace search::transactionlog { @@ -12,4 +13,13 @@ DomainConfig::DomainConfig() _chunkSizeLimit(0x40000) // 256k { } +DomainConfig & +DomainConfig::setEncoding(Encoding v) { + if (v.getCompression() == Encoding::none) { + throw vespalib::IllegalArgumentException("Compression:none is not allowed for the tls", VESPA_STRLOC); + } + _encoding = v; + return *this; +} + } diff --git a/searchlib/src/vespa/searchlib/transactionlog/domainconfig.h b/searchlib/src/vespa/searchlib/transactionlog/domainconfig.h index 186227ae958..7701896fa92 100644 --- a/searchlib/src/vespa/searchlib/transactionlog/domainconfig.h +++ b/searchlib/src/vespa/searchlib/transactionlog/domainconfig.h @@ -11,7 +11,7 @@ class DomainConfig { public: using duration = vespalib::duration; DomainConfig(); - DomainConfig & setEncoding(Encoding v) { _encoding = v; return *this; } + DomainConfig & setEncoding(Encoding v); DomainConfig & setPartSizeLimit(size_t v) { _partSizeLimit = v; return *this; } DomainConfig & setChunkSizeLimit(size_t v) { _chunkSizeLimit = v; return *this; } DomainConfig & setCompressionLevel(uint8_t v) { _compressionLevel = v; return *this; } |