Skip to content

Commit 3ecac16

Browse files
committed
MB-27554: [BP] Make VBucket::getNumNonResidentItems virtual
Originally a647ff3 Change VBucket::getNumNonResidentItems() to be a virtual method, with implementations for Ephemeral and EP VBuckets. Change-Id: Ic73bd50c77e38f89a38cc52c794415f6bb428fff Reviewed-on: http://review.couchbase.org/88378 Well-Formed: Build Bot <[email protected]> Tested-by: Build Bot <[email protected]> Reviewed-by: Dave Rigby <[email protected]>
1 parent 6a470ac commit 3ecac16

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

engines/ep/src/ep_vb.cc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,17 @@ size_t EPVBucket::getNumItems() const {
261261
}
262262
}
263263

264+
size_t EPVBucket::getNumNonResidentItems() const {
265+
if (eviction == VALUE_ONLY) {
266+
return ht.getNumInMemoryNonResItems();
267+
} else {
268+
size_t num_items = ht.getNumItems();
269+
size_t num_res_items =
270+
ht.getNumInMemoryItems() - ht.getNumInMemoryNonResItems();
271+
return num_items > num_res_items ? (num_items - num_res_items) : 0;
272+
}
273+
}
274+
264275
ENGINE_ERROR_CODE EPVBucket::statsVKey(const DocKey& key,
265276
const void* cookie,
266277
EventuallyPersistentEngine& engine,

engines/ep/src/ep_vb.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ class EPVBucket : public VBucket {
7171

7272
size_t getNumItems() const override;
7373

74+
size_t getNumNonResidentItems() const override;
75+
7476
ENGINE_ERROR_CODE statsVKey(const DocKey& key,
7577
const void* cookie,
7678
EventuallyPersistentEngine& engine,

engines/ep/src/ephemeral_vb.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ class EphemeralVBucket : public VBucket {
7272

7373
size_t getNumItems() const override;
7474

75+
size_t getNumNonResidentItems() const override {
76+
return 0;
77+
}
78+
7579
ENGINE_ERROR_CODE statsVKey(const DocKey& key,
7680
const void* cookie,
7781
EventuallyPersistentEngine& engine,

engines/ep/src/vbucket.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,7 @@ class VBucket : public std::enable_shared_from_this<VBucket> {
556556
*/
557557
virtual size_t getNumItems() const = 0;
558558

559-
size_t getNumNonResidentItems() const;
559+
virtual size_t getNumNonResidentItems() const = 0;
560560

561561
size_t getNumTempItems(void) {
562562
return ht.getNumTempItems();

0 commit comments

Comments
 (0)