1. 10 Sep, 2020 2 commits
  2. 01 Sep, 2020 10 commits
  3. 20 Jul, 2020 3 commits
    • dmurnane's avatar
      Notify systemd on sentinel startup (#7168) · 29b20fd5
      dmurnane authored
      
      Co-authored-by: default avatarDaniel Murnane <dmurnane@eitccorp.com>
      (cherry picked from commit 9242ccf2)
      29b20fd5
    • Oran Agra's avatar
      EXEC always fails with EXECABORT and multi-state is cleared · 05e483cb
      Oran Agra authored
      In order to support the use of multi-exec in pipeline, it is important that
      MULTI and EXEC are never rejected and it is easy for the client to know if the
      connection is still in multi state.
      
      It was easy to make sure MULTI and DISCARD never fail (done by previous
      commits) since these only change the client state and don't do any actual
      change in the server, but EXEC is a different story.
      
      Since in the past, it was possible for clients to handle some EXEC errors and
      retry the EXEC, we now can't affort to return any error on EXEC other than
      EXECABORT, which now carries with it the real reason for the abort too.
      
      Other fixes in this commit:
      - Some checks that where performed at the time of queuing need to be re-
        validated when EXEC runs, for instance if the transaction contains writes
        commands, it needs to be aborted. there was one check that was already done
        in execCommand (-READONLY), but other checks where missing: -OOM, -MISCONF,
        -NOREPLICAS, -MASTERDOWN
      - When a command is rejected by processCommand it was rejected with addReply,
        which was not recognized as an error in case the bad command came from the
        master. this will enable to count or MONITOR these errors in the future.
      - make it easier for tests to create additional (non deferred) clients.
      - add tests for the fixes of this commit.
      
      (cherry picked from commit 65a3307b)
      05e483cb
    • Tomasz Poradowski's avatar
      ensure SHUTDOWN_NOSAVE in Sentinel mode · 3328b7a5
      Tomasz Poradowski authored
      - enforcing of SHUTDOWN_NOSAVE flag in one place to make it consitent
        when running in Sentinel mode
      
      (cherry picked from commit 4ee011ad)
      3328b7a5
  4. 12 Jun, 2020 2 commits
  5. 09 Jun, 2020 1 commit
    • Oran Agra's avatar
      Avoid rejecting WATCH / UNWATCH, like MULTI/EXEC/DISCARD · b35fdf1d
      Oran Agra authored
      Much like MULTI/EXEC/DISCARD, the WATCH and UNWATCH are not actually
      operating on the database or server state, but instead operate on the
      client state. the client may send them all in one long pipeline and check
      all the responses only at the end, so failing them may lead to a
      mismatch between the client state on the server and the one on the
      client end, and execute the wrong commands (ones that were meant to be
      discarded)
      
      the watched keys are not actually stored in the client struct, but they
      are in fact part of the client state. for instance, they're not cleared
      or moved in SWAPDB or FLUSHDB.
      b35fdf1d
  6. 28 May, 2020 1 commit
    • antirez's avatar
      Remove the meaningful offset feature. · 2112a570
      antirez authored
      After a closer look, the Redis core devleopers all believe that this was
      too fragile, caused many bugs that we didn't expect and that were very
      hard to track. Better to find an alternative solution that is simpler.
      2112a570
  7. 14 May, 2020 4 commits
    • antirez's avatar
      Track events processed while blocked globally. · 74249be4
      antirez authored
      Related to #7234.
      74249be4
    • antirez's avatar
      Some rework of #7234. · 8bf660af
      antirez authored
      8bf660af
    • Oran Agra's avatar
      fix redis 6.0 not freeing closed connections during loading. · 9da134cd
      Oran Agra authored
      This bug was introduced by a recent change in which readQueryFromClient
      is using freeClientAsync, and despite the fact that now
      freeClientsInAsyncFreeQueue is in beforeSleep, that's not enough since
      it's not called during loading in processEventsWhileBlocked.
      furthermore, afterSleep was called in that case but beforeSleep wasn't.
      
      This bug also caused slowness sine the level-triggered mode of epoll
      kept signaling these connections as readable causing us to keep doing
      connRead again and again for ll of these, which keep accumulating.
      
      now both before and after sleep are called, but not all of their actions
      are performed during loading, some are only reserved for the main loop.
      
      fixes issue #7215
      9da134cd
    • antirez's avatar
      Tracking: send eviction messages when evicting entries. · e3b5648d
      antirez authored
      A fix for #7249.
      e3b5648d
  8. 08 May, 2020 4 commits
  9. 30 Apr, 2020 2 commits
    • antirez's avatar
      Comment clearly why we moved some code in #6623. · 606134f9
      antirez authored
      606134f9
    • srzhao's avatar
      fix pipelined WAIT performance issue. · ee627bb6
      srzhao authored
      If client gets blocked again in `processUnblockedClients`, redis will not send
      `REPLCONF GETACK *` to slaves untill next eventloop, so the client will be
      blocked for 100ms by default(10hz) if no other file event fired.
      
      move server.get_ack_from_slaves sinppet after `processUnblockedClients`, so
      that both the first WAIT command that puts client in blocked context and the
      following WAIT command processed in processUnblockedClients would trigger
      redis-sever to send `REPLCONF GETACK *`, so that the eventloop would get
      `REPLCONG ACK <reploffset>` from slaves and unblocked ASAP.
      ee627bb6
  10. 28 Apr, 2020 4 commits
  11. 27 Apr, 2020 2 commits
  12. 24 Apr, 2020 1 commit
    • antirez's avatar
      LCS -> STRALGO LCS. · 3722f89f
      antirez authored
      STRALGO should be a container for mostly read-only string
      algorithms in Redis. The algorithms should have two main
      characteristics:
      
      1. They should be non trivial to compute, and often not part of
      programming language standard libraries.
      2. They should be fast enough that it is a good idea to have optimized C
      implementations.
      
      Next thing I would love to see? A small strings compression algorithm.
      3722f89f
  13. 17 Apr, 2020 1 commit
  14. 15 Apr, 2020 1 commit
  15. 07 Apr, 2020 2 commits
    • antirez's avatar
      Speedup INFO by counting client memory incrementally. · 35c64b89
      antirez authored
      Related to #5145.
      
      Design note: clients may change type when they turn into replicas or are
      moved into the Pub/Sub category and so forth. Moreover the recomputation
      of the bytes used is problematic for obvious reasons: it changes
      continuously, so as a conservative way to avoid accumulating errors,
      each client remembers the contribution it gave to the sum, and removes
      it when it is freed or before updating it with the new memory usage.
      35c64b89
    • antirez's avatar
      LCS: initial functionality implemented. · a518a9a7
      antirez authored
      a518a9a7