1. 15 11月, 2019 7 次提交
  2. 07 11月, 2019 3 次提交
    • A
      Update PR #6537: use a fresh time outside call(). · d3f4dec4
      antirez 提交于
      One problem with the solution proposed so far in #6537 is that key
      lookups outside a command execution via call(), still used a cached
      time. The cached time needed to be refreshed in multiple places,
      especially because of modules callbacks from timers, cluster bus, and
      thread safe contexts, that may use RM_Open().
      
      In order to avoid this problem, this commit introduces the ability to
      detect if we are inside call(): this way we can use the reference fixed
      time only when we are in the context of a command execution or Lua
      script, but for the asynchronous lookups, we can still use mstime() to
      get a fresh time reference.
      d3f4dec4
    • A
      Update PR #6537 patch to for generality. · 33f42665
      antirez 提交于
      After the thread in #6537 and thanks to the suggestions received, this
      commit updates the original patch in order to:
      
      1. Solve the problem of updating the time in multiple places by updating
      it in call().
      2. Avoid introducing a new field but use our cached time.
      
      This required some minor refactoring to the function updating the time,
      and the introduction of a new cached time in microseconds in order to
      use less gettimeofday() calls.
      33f42665
    • Z
      expires: refactoring judgment about whether a key is expired · 68d71d83
      zhaozhao.zz 提交于
      Calling lookupKey*() many times to search a key in one command
      may get different result.
      
      That's because lookupKey*() calls expireIfNeeded(), and delete
      the key when reach the expire time. So we can get an robj before
      the expire time, but a NULL after the expire time.
      
      The worst is that may lead to Redis crash, for example
      `RPOPLPUSH foo foo` the first time we get a list form `foo` and
      hold the pointer, but when we get `foo` again it's expired and
      deleted. Now we hold a freed memory, when execute rpoplpushHandlePush()
      redis crash.
      
      To fix it, we can refactor the judgment about whether a key is expired,
      using the same basetime `server.cmd_start_mstime` instead of calling
      mstime() everytime.
      68d71d83
  3. 01 11月, 2019 1 次提交
    • A
      Modules: fix thread safe context creation crash. · 62588dbf
      antirez 提交于
      See #6525, this likely creates a NULL deference if the client was
      terminated by Redis between the creation of the blocked client and the
      creation of the thread safe context.
      62588dbf
  4. 25 9月, 2019 9 次提交
  5. 05 9月, 2019 5 次提交
  6. 04 9月, 2019 1 次提交
    • A
      redis-cli: always report server errors on read errors. · 08b03e23
      antirez 提交于
      Before this commit we may have not consumer buffers when a read error is
      encountered. Such buffers may contain errors that are important clues
      for the user: for instance a protocol error in the payload we send in
      pipe mode will cause the server to abort the connection. If the user
      does not get the protocol error, debugging what is happening can be a
      nightmare.
      
      This commit fixes issue #3756.
      08b03e23
  7. 01 8月, 2019 3 次提交
  8. 31 7月, 2019 1 次提交
  9. 30 7月, 2019 1 次提交
  10. 07 7月, 2019 3 次提交
  11. 16 5月, 2019 1 次提交
  12. 15 5月, 2019 4 次提交
  13. 14 5月, 2019 1 次提交
    • A
      Test: fix slowlog test false positive. · 7ac7ffd5
      antirez 提交于
      In fast systems "SLOWLOG RESET" is fast enough to don't be logged even
      when the time limit is "1" sometimes. Leading to false positives such
      as:
      
      [err]: SLOWLOG - can be disabled in tests/unit/slowlog.tcl
      Expected '1' to be equal to '0'
      7ac7ffd5