Skip to content

Commit 28f0475

Browse files
daverigbyabhinavdangeti
authored andcommitted
Remove unnecessary Item() constuctor couchbase#2
Remove another constructor of Item, the one which takes only a data size - i.e. allocates a value but doesn't copy it in. In all existing use-cases this can be replaced with either: a) The constructor which does copy the data in, as the use-case was doing performing the copy in two stages (construct Item of correct size, then memcpy()). b) The consturctor which takes both ptr and size, with with ptr==NULL - this is already handled by the setData() private method of Item. Change-Id: Iffbfef423e82bb021f74860a72dc7b5936bf2215 Reviewed-on: http://review.couchbase.org/42625 Reviewed-by: Michael Wiederhold <[email protected]> Reviewed-by: Trond Norbye <[email protected]> Reviewed-by: abhinav dangeti <[email protected]> Tested-by: abhinav dangeti <[email protected]>
1 parent 9d76ac1 commit 28f0475

File tree

6 files changed

+17
-30
lines changed

6 files changed

+17
-30
lines changed

src/couch-kvstore/couch-kvstore.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1506,7 +1506,7 @@ couchstore_error_t CouchKVStore::fetchDoc(Db *db, DocInfo *docinfo,
15061506

15071507
if (metaOnly || (fetchDelete && docinfo->deleted)) {
15081508
Item *it = new Item(docinfo->id.buf, (size_t)docinfo->id.size,
1509-
docinfo->size, itemFlags, (time_t)exptime,
1509+
itemFlags, (time_t)exptime, NULL, docinfo->size,
15101510
ext_meta, ext_len, cas, docinfo->db_seq, vbId);
15111511
if (docinfo->deleted) {
15121512
it->setDeleted();

src/ep_engine.cc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5020,8 +5020,8 @@ ENGINE_ERROR_CODE EventuallyPersistentEngine::setWithMeta(const void* cookie,
50205020
uint8_t ext_meta[1];
50215021
uint8_t ext_len = EXT_META_LEN;
50225022
*(ext_meta) = datatype;
5023-
Item *itm = new Item(key, keylen, vallen, flags, expiration, ext_meta, ext_len,
5024-
cas, -1, vbucket);
5023+
Item *itm = new Item(key, keylen, flags, expiration, dta, vallen,
5024+
ext_meta, ext_len, cas, -1, vbucket);
50255025

50265026
if (itm == NULL) {
50275027
return sendResponse(response, NULL, 0, NULL, 0, NULL, 0,
@@ -5038,7 +5038,6 @@ ENGINE_ERROR_CODE EventuallyPersistentEngine::setWithMeta(const void* cookie,
50385038
}
50395039

50405040
itm->setRevSeqno(seqno);
5041-
memcpy((char*)itm->getData(), dta, vallen);
50425041

50435042
bool allowExisting = (opcode == PROTOCOL_BINARY_CMD_SET_WITH_META ||
50445043
opcode == PROTOCOL_BINARY_CMD_SETQ_WITH_META);
@@ -5407,7 +5406,7 @@ EventuallyPersistentEngine::returnMeta(const void* cookie,
54075406
uint8_t ext_meta[1];
54085407
uint8_t ext_len = EXT_META_LEN;
54095408
*(ext_meta) = datatype;
5410-
Item *itm = new Item(key, keylen, vallen, flags, exp, ext_meta,
5409+
Item *itm = new Item(key, keylen, flags, exp, dta, vallen, ext_meta,
54115410
ext_len, cas, -1, vbucket);
54125411

54135412
if (!itm) {
@@ -5416,7 +5415,6 @@ EventuallyPersistentEngine::returnMeta(const void* cookie,
54165415
PROTOCOL_BINARY_RESPONSE_ENOMEM, 0, cookie);
54175416
}
54185417

5419-
memcpy((char*)itm->getData(), dta, vallen);
54205418
if (mutate_type == SET_RET_META) {
54215419
ret = epstore->set(*itm, cookie);
54225420
} else {

src/ep_engine.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ class EventuallyPersistentEngine : public ENGINE_HANDLE_V1 {
199199
uint8_t ext_meta[1];
200200
uint8_t ext_len = EXT_META_LEN;
201201
*(ext_meta) = datatype;
202-
*itm = new Item(key, nkey, nbytes, flags, expiretime, ext_meta,
202+
*itm = new Item(key, nkey, flags, expiretime, NULL, nbytes, ext_meta,
203203
ext_len);
204204
if (*itm == NULL) {
205205
return memoryCondition();

src/item.h

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -285,23 +285,6 @@ class ItemMetaData {
285285
class Item : public RCValue {
286286
public:
287287

288-
Item(const void* k, const size_t nk, const size_t nb,
289-
const uint32_t fl, const time_t exp, uint8_t* ext_meta = NULL,
290-
uint8_t ext_len = 0, uint64_t theCas = 0, int64_t i = -1,
291-
uint16_t vbid = 0, uint8_t nru_value = INITIAL_NRU_VALUE) :
292-
metaData(theCas, 1, fl, exp),
293-
key(static_cast<const char*>(k), nk),
294-
bySeqno(i),
295-
queuedTime(ep_current_time()),
296-
vbucketId(vbid),
297-
op(queue_op_set),
298-
nru(nru_value)
299-
{
300-
cb_assert(bySeqno != 0);
301-
setData(NULL, nb, ext_meta, ext_len);
302-
ObjectRegistry::onCreateItem(this);
303-
}
304-
305288
Item(const std::string &k, const uint32_t fl, const time_t exp,
306289
const value_t &val, uint64_t theCas = 0, int64_t i = -1,
307290
uint16_t vbid = 0, uint64_t sno = 1, uint8_t nru_value = INITIAL_NRU_VALUE) :

src/stored-value.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -582,8 +582,8 @@ add_type_t HashTable::unlocked_addTempItem(int &bucket_num,
582582
uint8_t ext_meta[1];
583583
uint8_t ext_len = EXT_META_LEN;
584584
*(ext_meta) = PROTOCOL_BINARY_RAW_BYTES;
585-
Item itm(key.c_str(), key.length(), (size_t)0, (uint32_t)0, (time_t)0,
586-
ext_meta, ext_len, 0, StoredValue::state_temp_init);
585+
Item itm(key.c_str(), key.length(), /*flags*/0, /*exp*/0, /*data*/NULL,
586+
/*size*/0, ext_meta, ext_len, 0, StoredValue::state_temp_init);
587587

588588
// if a temp item for a possibly deleted, set it non-resident by resetting
589589
// the value cuz normally a new item added is considered resident which

src/tapconnection.cc

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1870,8 +1870,11 @@ Item* TapProducer::getNextItem(const void *c, uint16_t *vbucket, uint16_t &ret,
18701870
ret = TAP_MUTATION;
18711871
} else if (r == ENGINE_KEY_ENOENT) {
18721872
// Item was deleted and set a message type to tap_deletion.
1873-
itm = new Item(qi->getKey().c_str(), qi->getNKey(), 0,
1874-
0, 0, NULL, 0, 0, -1, qi->getVBucketId());
1873+
itm = new Item(qi->getKey().c_str(), qi->getNKey(),
1874+
/*flags*/0, /*exp*/0,
1875+
/*data*/NULL, /*size*/0,
1876+
/*ext_meta*/NULL, /*ext_len*/0,
1877+
/*cas*/0, /*seqno*/-1, qi->getVBucketId());
18751878
itm->setRevSeqno(qi->getRevSeqno());
18761879
ret = TAP_DELETION;
18771880
} else if (r == ENGINE_EWOULDBLOCK) {
@@ -1900,8 +1903,11 @@ Item* TapProducer::getNextItem(const void *c, uint16_t *vbucket, uint16_t &ret,
19001903
}
19011904
++stats.numTapFGFetched;
19021905
} else if (qi->getOperation() == queue_op_del) {
1903-
itm = new Item(qi->getKey().c_str(), qi->getNKey(), 0,
1904-
0, 0, NULL, 0, qi->getCas(), -1, qi->getVBucketId());
1906+
itm = new Item(qi->getKey().c_str(), qi->getNKey(),
1907+
/*flags*/0, /*exp*/0,
1908+
/*data*/NULL, /*size*/0,
1909+
/*ext_meta*/NULL, /*ext_len*/0,
1910+
qi->getCas(), /*seqno*/-1, qi->getVBucketId());
19051911
itm->setRevSeqno(qi->getRevSeqno());
19061912
ret = TAP_DELETION;
19071913
++stats.numTapDeletes;

0 commit comments

Comments
 (0)