]> git.saurik.com Git - redis.git/blobdiff - src/dscache.c
Encode sorted set after loading from dump
[redis.git] / src / dscache.c
index 15134cc710fb6e85bc0e086fc69424a3c5363f23..a4d045e1d2c06e37ca1b03255ca08693e63f84a5 100644 (file)
@@ -325,8 +325,12 @@ void freeIOJob(iojob *j) {
  * of an unix pipe in order to "awake" the main thread, and this function
  * is called.
  *
- * If privdata != NULL the function will try to put more jobs in the queue
- * of IO jobs to process as more room is made. */
+ * If privdata == NULL the function will try to put more jobs in the queue
+ * of IO jobs to process as more room is made. privdata is equal to NULL
+ * when the function is called from the event loop, so we want to push
+ * more IO jobs in the queue. Instead when the function is called by
+ * other functions that want to create a write-barrier to avoid race 
+ * conditions we don't push new jobs in the queue. */
 void vmThreadedIOCompletedJob(aeEventLoop *el, int fd, void *privdata,
             int mask)
 {
@@ -392,7 +396,7 @@ void vmThreadedIOCompletedJob(aeEventLoop *el, int fd, void *privdata,
             freeIOJob(j);
         }
         processed++;
-        if (privdata != NULL) cacheScheduleIOPushJobs(0);
+        if (privdata == NULL) cacheScheduleIOPushJobs(0);
         if (processed == toprocess) return;
     }
     if (retval < 0 && errno != EAGAIN) {
@@ -469,7 +473,7 @@ void *IOThreadEntryPoint(void *arg) {
 
         /* Signal the main thread there is new stuff to process */
         redisAssert(write(server.io_ready_pipe_write,"x",1) == 1);
-        redisLog(REDIS_WARNING,"TIME (%c): %lld\n", j->type == REDIS_IOJOB_LOAD ? 'L' : 'S', ustime()-start);
+        redisLog(REDIS_DEBUG,"TIME (%c): %lld\n", j->type == REDIS_IOJOB_LOAD ? 'L' : 'S', ustime()-start);
     }
     /* never reached, but that's the full pattern... */
     unlockThreadedIO();