1. 20 Aug, 2013 1 commit
  2. 02 Apr, 2013 1 commit
    • antirez's avatar
      Throttle BGSAVE attempt on saving error. · ed2d9881
      antirez authored
      When a BGSAVE fails, Redis used to flood itself trying to BGSAVE at
      every next cron call, that is either 10 or 100 times per second
      depending on configuration and server version.
      
      This commit does not allow a new automatic BGSAVE attempt to be
      performed before a few seconds delay (currently 5).
      
      This avoids both the auto-flood problem and filling the disk with
      logs at a serious rate.
      
      The five seconds limit, considering a log entry of 200 bytes, will use
      less than 4 MB of disk space per day that is reasonable, the sysadmin
      should notice before of catastrofic events especially since by default
      Redis will stop serving write queries after the first failed BGSAVE.
      
      This fixes issue #849
      ed2d9881
  3. 13 Mar, 2013 2 commits
  4. 19 Jan, 2013 2 commits
    • antirez's avatar
      Whitelist SIGUSR1 to avoid auto-triggering errors. · da540228
      antirez authored
      This commit fixes issue #875 that was caused by the following events:
      
      1) There is an active child doing BGSAVE.
      2) flushall is called (or any other condition that makes Redis killing
      the saving child process).
      3) An error is sensed by Redis as the child exited with an error (killed
      by a singal), that stops accepting write commands until a BGSAVE happens
      to be executed with success.
      
      Whitelisting SIGUSR1 and making sure Redis always uses this signal in
      order to kill its own children fixes the issue.
      da540228
    • guiquanz's avatar
      Fixed many typos. · 560e0499
      guiquanz authored
      560e0499
  5. 20 Nov, 2012 1 commit
    • antirez's avatar
      Children creating AOF or RDB files now report memory used by COW. · 5ab4151d
      antirez authored
      Finally Redis is able to report the amount of memory used by
      copy-on-write while saving an RDB or writing an AOF file in background.
      
      Note that this information is currently only logged (at NOTICE level)
      and not shown in INFO because this is less trivial (but surely doable
      with some minor form of interprocess communication).
      
      The reason we can't capture this information on the parent before we
      call wait3() is that the Linux kernel will release the child memory
      ASAP, and only retain the minimal state for the process that is useful
      to report the child termination to the parent.
      
      The COW size is obtained by summing all the Private_Dirty fields found
      in the "smap" file inside the proc filesystem for the process.
      
      All this is Linux specific and is not available on other systems.
      5ab4151d
  6. 08 Nov, 2012 1 commit
  7. 24 Oct, 2012 1 commit
  8. 27 Sep, 2012 1 commit
  9. 02 Jun, 2012 1 commit
    • antirez's avatar
      RDB type loading functions clarified in comments. · ebdcd723
      antirez authored
      Improved comments to make clear that rdbLoadType() just loads a
      general TYPE in the context of RDB that can be an object type or an
      expire type, end-of-file, and so forth.
      
      While rdbLoadObjectType() enforces that the type is a valid Object Type
      otherwise it returns -1.
      ebdcd723
  10. 25 May, 2012 1 commit
    • antirez's avatar
      Four new persistence fields in INFO. A few renamed. · 6b4d92e2
      antirez authored
      The 'persistence' section of INFO output now contains additional four
      fields related to RDB and AOF persistence:
      
       rdb_last_bgsave_time_sec       Duration of latest BGSAVE in sec.
       rdb_current_bgsave_time_sec    Duration of current BGSAVE in sec.
       aof_last_rewrite_time_sec      Duration of latest AOF rewrite in sec.
       aof_current_rewrite_time_sec   Duration of current AOF rewrite in sec.
      
      The 'current' fields are set to -1 if a BGSAVE / AOF rewrite is not in
      progress. The 'last' fileds are set to -1 if no previous BGSAVE / AOF
      rewrites were performed.
      
      Additionally a few fields in the persistence section were renamed for
      consistency:
      
       changes_since_last_save -> rdb_changes_since_last_save
       bgsave_in_progress -> rdb_bgsave_in_progress
       last_save_time -> rdb_last_save_time
       last_bgsave_status -> rdb_last_bgsave_status
       bgrewriteaof_in_progress -> aof_rewrite_in_progress
       bgrewriteaof_scheduled -> aof_rewrite_scheduled
      
      After the renaming, fields in the persistence section start with rdb_ or
      aof_ prefix depending on the persistence method they describe.
      The field 'loading' and related fields are not prefixed because they are
      unique for both the persistence methods.
      6b4d92e2
  11. 24 Apr, 2012 1 commit
  12. 10 Apr, 2012 4 commits
  13. 08 Apr, 2012 1 commit
  14. 07 Apr, 2012 1 commit
  15. 02 Apr, 2012 1 commit
  16. 23 Mar, 2012 1 commit
  17. 13 Mar, 2012 2 commits
  18. 10 Mar, 2012 1 commit
  19. 07 Mar, 2012 1 commit
    • antirez's avatar
      Refuse writes if can't persist on disk. · c25e7eaf
      antirez authored
      Redis now refuses accepting write queries if RDB persistence is
      configured, but RDB snapshots can't be generated for some reason.
      The status of the latest background save operation is now exposed
      in the INFO output as well. This fixes issue #90.
      c25e7eaf
  20. 16 Feb, 2012 1 commit
    • Pieter Noordhuis's avatar
      Don't expire keys when loading an RDB after a SYNC · cb598cdd
      Pieter Noordhuis authored
      The cron is responsible for expiring keys. When keys are expired at
      load time, it is possible that the snapshot of a master node gets
      modified. This can in turn lead to inconsistencies in the data set.
      
      A more concrete example of this behavior follows. A user reported a
      slave that would show an monotonically increase input buffer length,
      shortly after completing a SYNC. Also, `INFO` output showed a single
      blocked client, which could only be the master link. Investigation
      showed that indeed the `BRPOP` command was fed by the master. This
      command can only end up in the stream of write operations when it did
      NOT block, and effectively executed `RPOP`. However, when the key
      involved in the `BRPOP` is expired BEFORE the command is executed, the
      client executing it will block. The client in this case, is the master
      link.
      cb598cdd
  21. 25 Jan, 2012 1 commit
  22. 03 Jan, 2012 1 commit
  23. 21 Dec, 2011 2 commits
  24. 12 Nov, 2011 1 commit
  25. 09 Nov, 2011 3 commits
  26. 08 Nov, 2011 1 commit
  27. 23 Oct, 2011 1 commit
  28. 14 Oct, 2011 1 commit
  29. 04 Oct, 2011 1 commit
  30. 22 Sep, 2011 1 commit
  31. 25 Jun, 2011 1 commit