@@ -76,11 +76,14 @@ typedef struct {
std::string keyStr;
} expiredItemCtx;

typedef uint16_t DBFileId;

typedef struct {
uint64_t purge_before_ts;
uint64_t purge_before_seq;
uint64_t max_purged_seq;
uint8_t drop_deletes;
DBFileId db_file_id;
uint32_t curr_time;
shared_ptr<Callback<std::string&, bool&> > bloomFilterCallback;
shared_ptr<Callback<std::string&, uint64_t&> > expiryCallback;
@@ -517,11 +520,10 @@ class KVStore {
bool persist = true) = 0;

/**
* Compact a vbucket file.
* Compact a database file.
*/
virtual bool compactVBucket(const uint16_t vbid,
compaction_ctx *c,
Callback<kvstats_ctx> &kvcb) = 0;
virtual bool compactDB(compaction_ctx *c,
Callback<kvstats_ctx> &kvcb) = 0;

virtual vbucket_state *getVBucketState(uint16_t vbid) = 0;

@@ -90,8 +90,8 @@ bool VBDeleteTask::run() {
return !engine->getEpStore()->completeVBucketDeletion(vbucketId, cookie);
}

bool CompactVBucketTask::run() {
return engine->getEpStore()->compactVBucket(vbid, &compactCtx, cookie);
bool CompactTask::run() {
return engine->getEpStore()->doCompact(&compactCtx, cookie);
}

bool StatSnap::run() {
@@ -283,17 +283,14 @@ class VBDeleteTask : public GlobalTask {
/**
* A task for compacting a vbucket db file
*/
class CompactVBucketTask : public GlobalTask {
class CompactTask : public GlobalTask {
public:
CompactVBucketTask(EventuallyPersistentEngine *e, const Priority &p,
uint16_t vbucket, compaction_ctx c, const void *ck,
CompactTask(EventuallyPersistentEngine *e, const Priority &p,
compaction_ctx c, const void *ck,
bool completeBeforeShutdown = false) :
GlobalTask(e, p, 0, completeBeforeShutdown),
vbid(vbucket), compactCtx(c), cookie(ck)
{
std::stringstream ss;
ss<<"Compact VBucket "<<vbid;
desc = ss.str();
compactCtx(c), cookie(ck) {
desc = "Compact DB file " + std::to_string(c.db_file_id);
}

bool run();
@@ -303,7 +300,6 @@ class CompactVBucketTask : public GlobalTask {
}

private:
uint16_t vbid;
compaction_ctx compactCtx;
const void* cookie;
std::string desc;