[MB-3980] pager may purge an item before its expiration time if user sets a new expiration time for an already expired key Created: 13/Jun/11  Updated: 09/Jan/13  Resolved: 25/Jul/11

Status: Closed
Project: Couchbase Server
Component/s: couchbase-bucket
Affects Version/s: 1.6.5.3
Fix Version/s: 1.7.1
Security Level: Public

Type: Bug Priority: Major
Reporter: Farshid Ghods (Inactive) Assignee: Chiyoung Seo
Resolution: Fixed Votes: 0
Labels: 1.7.0-release-notes, zynga
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   
exp = 7 sec, exp_pager_stime=5 , vbucket = 0 . working set 4000 keys

first few iterations are okay but get fails more often in later iterations.

iteration 0 ok
iteration 1 ok
iteration 2 ok
iteration 3 ok
iteration 4 438 keys not_found
iteration 5 ok
iteration 6 ok
iteration 7 1232 keys not_found
iteration 8 ok
iteration 9 466 keys not_found
iteration 10 ok
iteration 11 ok
iteration 12 1320 keys not_found
iteration 13 ok
iteration 14 327 keys not_found
iteration 15 ok
iteration 16 ok
iteration 17 1503 keys not_found
iteration 18 ok
iteration 19 521 keys not_found
iteration 20 ok
iteration 21 ok
iteration 22 1660 keys not_found
iteration 23 ok
iteration 24 346 keys not_found
iteration 25 ok
iteration 26 ok
iteration 27 1682 keys not_found
iteration 28 ok
iteration 29 233 keys not_found
iteration 30 ok
iteration 31 ok
iteration 32 1565 keys not_found
iteration 33 ok
iteration 34 472 keys not_found
iteration 35 ok
iteration 36 ok


  while iteration < 50:
      start = time.time()
      for key in keys:
          mc.set(key, expiration, 0, payload, vbucket=0)
      for key in keys:
          try:
              a, b, c = mc.get(key, vbucket=0)
          except Exception as ex:
              print "unable to get key {0} in {1}th iteration because {2}".format(key, iteration, ex)
      iteration += 1
      delta = time.time() - start
      time.sleep(abs(expiration - delta))


 Comments   
Comment by Farshid Ghods (Inactive) [ 16/Jun/11 ]
Integrated in github-ep-engine-1-7-1 #123 (See [http://qa.hq.northscale.net/job/github-ep-engine-1-7-1/123/])
    MB-3980 Fix to the race condition in purging expired items.

Chiyoung Seo :
Files :
* item_pager.cc
* ep.cc
* ep.hh
Comment by Farshid Ghods (Inactive) [ 06/Jul/11 ]
Integrated in github-ep-engine-2-0 #13 (See [http://qa.hq.northscale.net/job/github-ep-engine-2-0/13/])
    MB-3980 Fix to the race condition in purging expired items.

Chiyoung Seo :
Files :
* item_pager.cc
* ep.hh
* ep.cc
Generated at Sun Jul 13 17:48:15 CDT 2014 using JIRA 5.2.4#845-sha1:c9f4cc41abe72fb236945343a1f485c2c844dac9.