]> git.saurik.com Git - redis.git/blobdiff - src/migrate.c
Use the newer mdb_dbi_open instead of mdb_open.
[redis.git] / src / migrate.c
index 23f40e4898d4536935cc813774439be9a607d614..6d8aad7f5c48f5b5c10705ef4c376a74c99db9e1 100644 (file)
@@ -253,7 +253,6 @@ socket_rd_err:
 }
 
 void stopKeyArchive(void) {
 }
 
 void stopKeyArchive(void) {
-    redisAssert(server.mdb_state == REDIS_MDB_ON);
     redisAssert(env != NULL);
 
     mdb_dbi_close(env, dbi);
     redisAssert(env != NULL);
 
     mdb_dbi_close(env, dbi);
@@ -264,7 +263,6 @@ void stopKeyArchive(void) {
 }
 
 int startKeyArchive(void) {
 }
 
 int startKeyArchive(void) {
-    redisAssert(server.mdb_state == REDIS_MDB_OFF);
     redisAssert(env == NULL);
 
     int ret;
     redisAssert(env == NULL);
 
     int ret;
@@ -278,16 +276,16 @@ int startKeyArchive(void) {
     ret = mdb_env_set_maxdbs(env, 1);
     if (ret != 0) return ret;
 
     ret = mdb_env_set_maxdbs(env, 1);
     if (ret != 0) return ret;
 
-    mkdir(server.mdb_environment, 0644);
+    mkdir(server.mdb_environment, 0755);
 
 
-    ret = mdb_env_open(env, server.mdb_environment, MDB_FIXEDMAP | MDB_NOSYNC, 0664);
+    ret = mdb_env_open(env, server.mdb_environment, MDB_FIXEDMAP | MDB_NOSYNC, 0644);
     if (ret != 0) return ret;
 
     MDB_txn *txn;
     ret = mdb_txn_begin(env, NULL, 0, &txn);
     if (ret != 0) return ret;
 
     if (ret != 0) return ret;
 
     MDB_txn *txn;
     ret = mdb_txn_begin(env, NULL, 0, &txn);
     if (ret != 0) return ret;
 
-    ret = mdb_open(txn, NULL, 0, &dbi);
+    ret = mdb_dbi_open(txn, NULL, 0, &dbi);
     if (ret != 0) return ret;
 
     mdb_txn_commit(txn);
     if (ret != 0) return ret;
 
     mdb_txn_commit(txn);
@@ -400,3 +398,27 @@ recover_err:
     sdsfree(sval);
     return NULL;
 }
     sdsfree(sval);
     return NULL;
 }
+
+void purge(robj *key) {
+    if (server.mdb_state == REDIS_MDB_OFF)
+        return;
+
+    int ret;
+
+    MDB_val kval;
+    kval.mv_data = key->ptr;
+    kval.mv_size = sdslen((sds)key->ptr);
+
+    MDB_txn *txn;
+    ret = mdb_txn_begin(env, NULL, 0, &txn);
+    if (ret != 0)
+        return;
+
+    ret = mdb_del(txn, dbi, &kval, NULL);
+    if (ret != 0) {
+        mdb_txn_abort(txn);
+        return;
+    }
+
+    mdb_txn_commit(txn);
+}