Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

fixed diskstore race condition

  • Loading branch information...
commit 7493d2a0325fe33dc75317bfedf9b1c1e5b0d0b5 1 parent dc75b1e
@antirez antirez authored
Showing with 10 additions and 2 deletions.
  1. +10 −2 src/dscache.c
View
12 src/dscache.c
@@ -890,8 +890,16 @@ int waitForSwappedKey(redisClient *c, robj *key) {
listAddNodeTail(l,c);
/* Are we already loading the key from disk? If not create a job */
- if (de == NULL)
- cacheScheduleIO(c->db,key,REDIS_IO_LOAD);
+ if (de == NULL) {
+ int flags = cacheScheduleIOGetFlags(c->db,key);
+
+ /* It is possible that even if there are no clients waiting for
+ * a load operation, still we have a load operation in progress.
+ * For instance think to a client performing a GET and then
+ * closing the connection */
+ if ((flags & (REDIS_IO_LOAD|REDIS_IO_LOADINPROG)) == 0)
+ cacheScheduleIO(c->db,key,REDIS_IO_LOAD);
+ }
return 1;
}
Please sign in to comment.
Something went wrong with that request. Please try again.