1. 24 May, 2012 1 commit
    • antirez's avatar
      Allow an AOF rewrite buffer > 2GB (Fix for issue #504). · 47ca4b6e
      antirez authored
      During the AOF rewrite process, the parent process needs to accumulate
      the new writes in an in-memory buffer: when the child will terminate the
      AOF rewriting process this buffer (that ist the difference between the
      dataset when the rewrite was started, and the current dataset) is
      flushed to the new AOF file.
      
      We used to implement this buffer using an sds.c string, but sds.c has a
      2GB limit. Sometimes the dataset can be big enough, the amount of writes
      so high, and the rewrite process slow enough that we overflow the 2GB
      limit, causing a crash, documented on github by issue #504.
      
      In order to prevent this from happening, this commit introduces a new
      system to accumulate writes, implemented by a linked list of blocks of
      10 MB each, so that we also avoid paying the reallocation cost.
      
      Note that theoretically modern operating systems may implement realloc()
      simply as a remaping of the old pages, thus with very good performances,
      see for instance the mremap() syscall on Linux. However this is not
      always true, and jemalloc by default avoids doing this because there are
      issues with the current implementation of mremap().
      
      For this reason we are using a linked list of blocks instead of a single
      block that gets reallocated again and again.
      
      The changes in this commit lacks testing, that will be performed before
      merging into the unstable branch. This fix will not enter 2.4 because it
      is too invasive. However 2.4 will log a warning when the AOF rewrite
      buffer is near to the 2GB limit.
      47ca4b6e
  2. 21 May, 2012 1 commit
    • antirez's avatar
      Use comments to split aof.c into sections. · 5a559993
      antirez authored
      This makes the code more readable, it is still not the case to split the
      file itself into three different files, but the logical separation
      improves the readability especially since new commits are going to
      introduce an additional section.
      5a559993
  3. 07 Apr, 2012 1 commit
  4. 27 Mar, 2012 1 commit
  5. 25 Mar, 2012 1 commit
    • antirez's avatar
      New INFO field aof_delayed_fsync introduced. · c1d01b3c
      antirez authored
      This new field counts all the times Redis is configured with AOF enabled and
      fsync policy 'everysec', but the previous fsync performed by the
      background thread was not able to complete within two seconds, forcing
      Redis to perform a write against the AOF file while the fsync is still
      in progress (likely a blocking operation).
      c1d01b3c
  6. 14 Mar, 2012 1 commit
  7. 10 Mar, 2012 1 commit
  8. 24 Jan, 2012 1 commit
  9. 23 Jan, 2012 1 commit
  10. 17 Jan, 2012 1 commit
  11. 03 Jan, 2012 1 commit
  12. 21 Dec, 2011 6 commits
  13. 20 Dec, 2011 1 commit
  14. 15 Dec, 2011 2 commits
  15. 13 Dec, 2011 5 commits
  16. 12 Nov, 2011 1 commit
  17. 10 Nov, 2011 1 commit
  18. 09 Nov, 2011 2 commits
  19. 08 Nov, 2011 1 commit
  20. 26 Oct, 2011 1 commit
  21. 08 Oct, 2011 1 commit
  22. 22 Sep, 2011 1 commit
  23. 19 Sep, 2011 2 commits
  24. 16 Sep, 2011 4 commits
  25. 15 Sep, 2011 1 commit