diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2018-10-12 11:32:09 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2018-10-12 11:32:09 +0200 |
commit | ee8321ac0ca948e5bc55b05feaac5b0b4343b523 (patch) | |
tree | ac43743baddf3add383411f339fae238cf9bf6d2 /searchcore | |
parent | 8b75677b527deffe2b4852418ab498c2bc3e3d95 (diff) |
Reject removes with old doc id scheme.
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp | 9 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp | 7 |
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, |