]> git.saurik.com Git - redis.git/blobdiff - src/object.c
cron part of disk store object cache implemented. Objects are pushed as IO jobs if...
[redis.git] / src / object.c
index 4374a07c1562b5f4a186b8fd2d7cc94870896f73..f4c34dcfd8ab039d2f5801632b5dfff9bff38ae7 100644 (file)
@@ -208,16 +208,16 @@ robj *tryObjectEncoding(robj *o) {
     /* Ok, this object can be encoded...
      *
      * Can I use a shared object? Only if the object is inside a given
-     * range and if this is the main thread, since when VM is enabled we
-     * have the constraint that I/O thread should only handle non-shared
-     * objects, in order to avoid race conditions (we don't have per-object
-     * locking).
+     * range and if the back end in use is in-memory. For disk store every
+     * object in memory used as value should be independent.
      *
      * Note that we also avoid using shared integers when maxmemory is used
-     * because very object needs to have a private LRU field for the LRU
+     * because every object needs to have a private LRU field for the LRU
      * algorithm to work well. */
-    if (server.maxmemory == 0 && value >= 0 && value < REDIS_SHARED_INTEGERS &&
-        pthread_equal(pthread_self(),server.mainthread)) {
+    if (server.ds_enabled == 0 &&
+        server.maxmemory == 0 && value >= 0 && value < REDIS_SHARED_INTEGERS &&
+        pthread_equal(pthread_self(),server.mainthread))
+    {
         decrRefCount(o);
         incrRefCount(shared.integers[value]);
         return shared.integers[value];