1. 01 Dec, 2017 7 commits
  2. 30 Nov, 2017 6 commits
    • antirez's avatar
      045d65c3
    • antirez's avatar
      PSYNC2: just store script bodies into RDB. · 452ad2e9
      antirez authored
      Related to #4483. As suggested by @soloestoy, we can retrieve the SHA1
      from the body. Given that in the new implementation using AUX fields we
      ended copying around a lot to create new objects and strings, extremize
      such concept and trade CPU for space inside the RDB file.
      452ad2e9
    • antirez's avatar
      PSYNC2: luaCreateFunction() should handle NULL client parameter. · 28dfdca7
      antirez authored
      See #4483. This is needed because luaCreateFunction() is now called
      from RDB loading code outside a client context.
      28dfdca7
    • antirez's avatar
      PSYNC2: Save Lua scripts state into RDB file. · f11a7585
      antirez authored
      This is currently needed in order to fix #4483, but this can be
      useful in other contexts, so maybe later we may want to remove the
      conditionals and always save/load scripts.
      
      Note that we are using the "lua" AUX field here, in order to guarantee
      backward compatibility of the RDB file. The unknown AUX fields must be
      discarded by past versions of Redis.
      f11a7585
    • antirez's avatar
      Prevent corruption of server.executable after DEBUG RESTART. · 3b9be93f
      antirez authored
      Doing the following ended with a broken server.executable:
      
      1. Start Redis with src/redis-server
      2. Send CONFIG SET DIR /tmp/
      3. Send DEBUG RESTART
      
      At this point we called execve with an argv[0] that is no longer related
      to the new path. So after the restart the absolute path of the
      executable is recomputed in the wrong way. With this fix we pass the
      absolute path already computed as argv[0].
      3b9be93f
    • antirez's avatar
      Be more verbose when DEBUG RESTART fails. · d8f87010
      antirez authored
      d8f87010
  3. 28 Nov, 2017 3 commits
  4. 27 Nov, 2017 7 commits
  5. 24 Nov, 2017 4 commits
  6. 23 Nov, 2017 2 commits
  7. 22 Nov, 2017 3 commits
  8. 21 Nov, 2017 2 commits
  9. 19 Nov, 2017 1 commit
  10. 08 Nov, 2017 1 commit
  11. 06 Nov, 2017 1 commit
    • antirez's avatar
      Fix saving of zero-length lists. · a1944c3e
      antirez authored
      Normally in modern Redis you can't create zero-len lists, however it's
      possible to load them from old RDB files generated, for instance, using
      Redis 2.8 (see issue #4409). The "Right Thing" would be not loading such
      lists at all, but this requires to hook in rdb.c random places in a not
      great way, for a problem that is at this point, at best, minor.
      
      Here in this commit instead I just fix the fact that zero length lists,
      materialized as quicklists with the first node set to NULL, were
      iterated in the wrong way while they are saved, leading to a crash.
      
      The other parts of the list implementation are apparently able to deal
      with empty lists correctly, even if they are no longer a thing.
      a1944c3e
  12. 03 Nov, 2017 1 commit
    • antirez's avatar
      SDS: improve sdsRemoveFreeSpace() to avoid useless data copy. · 34d5804d
      antirez authored
      Since SDS v2, we no longer have a single header, so the function to
      rewrite the SDS in terms of the minimum space required, instead of just
      using realloc() and let the underlying allocator decide what to do,
      was doing an allocation + copy every time the minimum possible header
      needed to represent the string was different than the current one.
      This could be often a bit wasteful, because if we go, for instance, from
      the 32 bit fields header to the 16 bit fields header, the overhead of
      the header is normally very small. With this commit we call realloc
      instead, unless the change in header size is very significant in relation
      to the string length.
      34d5804d
  13. 02 Nov, 2017 1 commit
  14. 01 Nov, 2017 1 commit