1 /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */ 2 /* 3 * Copyright 2017 Couchbase, Inc 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 #include "collections/collections_callbacks.h" 19 #include "kv_bucket.h" 20 #include "vbucket.h" 21 22 namespace Collections { 23 namespace VB { 24 callback(CacheLookup& lookup)25void LogicallyDeletedCallback::callback(CacheLookup& lookup) { 26 VBucketPtr vb = store.getVBucket(lookup.getVBucketId()); 27 if (!vb) { 28 return; 29 } 30 // Check with collections if this key should be loaded, status EEXISTS is 31 // the only way to inform the scan to not continue with this key. 32 if (vb->lockCollections().isLogicallyDeleted( 33 lookup.getKey(), lookup.getBySeqno(), lookup.getSeparator())) { 34 setStatus(ENGINE_KEY_EEXISTS); 35 return; 36 } 37 } 38 39 } // end namespace VB 40 } // end namespace Collections