summaryrefslogtreecommitdiffstats
path: root/searchcore
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2018-10-12 11:32:09 +0200
committerTor Egge <Tor.Egge@broadpark.no>2018-10-12 11:32:09 +0200
commitee8321ac0ca948e5bc55b05feaac5b0b4343b523 (patch)
treeac43743baddf3add383411f339fae238cf9bf6d2 /searchcore
parent8b75677b527deffe2b4852418ab498c2bc3e3d95 (diff)
Reject removes with old doc id scheme.
Diffstat (limited to 'searchcore')
-rw-r--r--searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp9
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp7
2 files changed, 14 insertions, 2 deletions
diff --git a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
index 7f065d0cc15..4cfccbd8186 100644
--- a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
+++ b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp
@@ -564,6 +564,15 @@ TEST_F("require that removes are routed to handlers", SimpleFixture)
}
+TEST_F("require that removes with old id scheme are rejected", SimpleFixture)
+{
+ storage::spi::LoadType loadType(0, "default");
+ Context context(loadType, storage::spi::Priority(0), storage::spi::Trace::TraceLevel(0));
+
+ EXPECT_EQUAL(RemoveResult(Result::PERMANENT_ERROR, "Old id scheme not supported in elastic mode (doc:old:id-scheme)"),
+ f.engine.remove(bucket1, tstamp1, old_doc->getId(), context));
+}
+
TEST_F("require that remove is NOT rejected if resource limit is reached", SimpleFixture)
{
f._writeFilter._acceptWriteOperation = false;
diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp
index 6475efdaabb..fb3b9bc7c5a 100644
--- a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp
+++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp
@@ -353,10 +353,13 @@ PersistenceEngine::RemoveResult
PersistenceEngine::remove(const Bucket& b, Timestamp t, const DocumentId& did, Context&)
{
std::shared_lock<std::shared_timed_mutex> rguard(_rwMutex);
- assert(did.hasDocType());
- DocTypeName docType(did.getDocType());
LOG(spam, "remove(%s, %" PRIu64 ", \"%s\")", b.toString().c_str(),
static_cast<uint64_t>(t.getValue()), did.toString().c_str());
+ if (!did.hasDocType()) {
+ return RemoveResult(Result::PERMANENT_ERROR,
+ make_string("Old id scheme not supported in elastic mode (%s)", did.toString().c_str()));
+ }
+ DocTypeName docType(did.getDocType());
IPersistenceHandler::SP handler = getHandler(b.getBucketSpace(), docType);
if (!handler) {
return RemoveResult(Result::PERMANENT_ERROR,