@@ -38,7 +38,7 @@ StoredValue::StoredValue(const Item& itm,
3838 chain_next_or_replacement(std::move(n)),
3939 cas(itm.getCas()),
4040 bySeqno(itm.getBySeqno()),
41- lock_expiry_or_delete_time (0 ),
41+ lock_expiry_or_delete_or_complete_time (0 ),
4242 exptime(itm.getExptime()),
4343 flags(itm.getFlags()),
4444 revSeqno(itm.getRevSeqno()),
@@ -86,7 +86,8 @@ StoredValue::StoredValue(const StoredValue& other, UniquePtr n, EPStats& stats)
8686 chain_next_or_replacement(std::move(n)),
8787 cas(other.cas),
8888 bySeqno(other.bySeqno),
89- lock_expiry_or_delete_time(other.lock_expiry_or_delete_time),
89+ lock_expiry_or_delete_or_complete_time(
90+ other.lock_expiry_or_delete_or_complete_time),
9091 exptime(other.exptime),
9192 flags(other.flags),
9293 revSeqno(other.revSeqno),
@@ -292,7 +293,8 @@ const OrderedStoredValue* StoredValue::toOrderedStoredValue() const {
292293bool StoredValue::operator ==(const StoredValue& other) const {
293294 return (cas == other.cas && revSeqno == other.revSeqno &&
294295 bySeqno == other.bySeqno &&
295- lock_expiry_or_delete_time == other.lock_expiry_or_delete_time &&
296+ lock_expiry_or_delete_or_complete_time ==
297+ other.lock_expiry_or_delete_or_complete_time &&
296298 exptime == other.exptime && flags == other.flags &&
297299 isDirty () == other.isDirty () && isDeleted () == other.isDeleted () &&
298300 // Note: deletionCause is only checked if the item is deleted
@@ -368,7 +370,7 @@ void StoredValue::setValueImpl(const Item& itm) {
368370 datatype = itm.getDataType ();
369371 bySeqno = itm.getBySeqno ();
370372 cas = itm.getCas ();
371- lock_expiry_or_delete_time = 0 ;
373+ lock_expiry_or_delete_or_complete_time = 0 ;
372374 exptime = itm.getExptime ();
373375 revSeqno = itm.getRevSeqno ();
374376
@@ -518,7 +520,7 @@ std::ostream& operator<<(std::ostream& os, const StoredValue& sv) {
518520 os << " cas:" << sv.getCas ();
519521 os << " key:\" " << sv.getKey () << " \" " ;
520522 if (sv.isOrdered () && sv.isDeleted ()) {
521- os << " del_time:" << sv.lock_expiry_or_delete_time ;
523+ os << " del_time:" << sv.lock_expiry_or_delete_or_complete_time ;
522524 } else {
523525 os << " exp:" << sv.getExptime ();
524526 }
@@ -552,11 +554,12 @@ size_t OrderedStoredValue::getRequiredStorage(const DocKey& key) {
552554}
553555
554556/* *
555- * Return the time the item was deleted. Only valid for deleted items.
557+ * Return the time the item was deleted. Only valid for completed or deleted
558+ * items.
556559 */
557- rel_time_t OrderedStoredValue::getDeletedTime () const {
558- if (isDeleted ()) {
559- return lock_expiry_or_delete_time ;
560+ rel_time_t OrderedStoredValue::getCompletedOrDeletedTime () const {
561+ if (isDeleted () || isPending () ) {
562+ return lock_expiry_or_delete_or_complete_time ;
560563 } else {
561564 throw std::logic_error (
562565 " OrderedStoredValue::getDeletedItem: Called on Alive item" );
@@ -567,7 +570,7 @@ bool OrderedStoredValue::deleteImpl(DeleteSource delSource) {
567570 if (StoredValue::deleteImpl (delSource)) {
568571 // Need to record the time when an item is deleted for subsequent
569572 // purging (ephemeral_metadata_purge_age).
570- setDeletedTime (ep_current_time ());
573+ setCompletedOrDeletedTime (ep_current_time ());
571574 return true ;
572575 }
573576 return false ;
@@ -579,14 +582,15 @@ void OrderedStoredValue::setValueImpl(const Item& itm) {
579582 // Update the deleted time (note - even if it was already deleted we should
580583 // refresh this).
581584 if (isDeleted ()) {
582- setDeletedTime (ep_current_time ());
585+ setCompletedOrDeletedTime (ep_current_time ());
583586 }
584587}
585588
586- void OrderedStoredValue::setDeletedTime (rel_time_t time) {
587- if (!isDeleted ()) {
589+ void OrderedStoredValue::setCompletedOrDeletedTime (rel_time_t time) {
590+ if (!isDeleted () && ! isPending () ) {
588591 throw std::logic_error (
589- " OrderedStoredValue::setDeletedTime: Called on Alive item" );
592+ " OrderedStoredValue::setCompletedOrDeletedTime: Called on "
593+ " Alive item" );
590594 }
591- lock_expiry_or_delete_time = time;
595+ lock_expiry_or_delete_or_complete_time = time;
592596}
0 commit comments