1. 25 Feb, 2014 15 commits
  2. 20 Feb, 2014 10 commits
  3. 18 Feb, 2014 2 commits
    • antirez's avatar
      Sentinel: SENTINEL_SLAVE_RECONF_RETRY_PERIOD -> RECONF_TIMEOUT · 905c55d5
      antirez authored
      Rename define to match the new meaning.
      905c55d5
    • antirez's avatar
      Sentinel: fix slave promotion timeout. · 1b345ec3
      antirez authored
      If we can't reconfigure a slave in time during failover, go forward as
      anyway the slave will be fixed by Sentinels in the future, once they
      detect it is misconfigured.
      
      Otherwise a failover in progress may never terminate if for some reason
      the slave is uncapable to sync with the master while at the same time
      it is not disconnected.
      1b345ec3
  4. 17 Feb, 2014 5 commits
    • antirez's avatar
      Sentinel: initial testing framework. · 351e7900
      antirez authored
      Nothing tested at all so far... Just the infrastructure spawning N
      Sentinels and N Redis instances that the test will use again and again.
      351e7900
    • antirez's avatar
      Test: colorstr moved to util.tcl. · f71c7de8
      antirez authored
      f71c7de8
    • antirez's avatar
      Test: code to test server availability refactored. · 0886c98f
      antirez authored
      Some inline test moved into server_is_up procedure.
      Also find_available_port was moved into util since it is going
      to be used for the Sentinel test as well.
      0886c98f
    • antirez's avatar
      Get absoulte config file path before processig 'dir'. · 4237f14a
      antirez authored
      The code tried to obtain the configuration file absolute path after
      processing the configuration file. However if config file was a relative
      path and a "dir" statement was processed reading the config, the absolute
      path obtained was wrong.
      
      With this fix the absolute path is obtained before processing the
      configuration while the server is still in the original directory where
      it was executed.
      4237f14a
    • antirez's avatar
      Sentinel: better specify startup errors due to config file. · 5efee4f0
      antirez authored
      Now it logs the file name if it is not accessible. Also there is a
      different error for the missing config file case, and for the non
      writable file case.
      5efee4f0
  5. 13 Feb, 2014 5 commits
    • antirez's avatar
      Redis 2.8.6. · 1d4d9e7b
      antirez authored
      1d4d9e7b
    • antirez's avatar
      Update cached time in rdbLoad() callback. · 85492dcf
      antirez authored
      server.unixtime and server.mstime are cached less precise timestamps
      that we use every time we don't need an accurate time representation and
      a syscall would be too slow for the number of calls we require.
      
      Such an example is the initialization and update process of the last
      interaction time with the client, that is used for timeouts.
      
      However rdbLoad() can take some time to load the DB, but at the same
      time it did not updated the time during DB loading. This resulted in the
      bug described in issue #1535, where in the replication process the slave
      loads the DB, creates the redisClient representation of its master, but
      the timestamp is so old that the master, under certain conditions, is
      sensed as already "timed out".
      
      Thanks to @yoav-steinberg and Redis Labs Inc for the bug report and
      analysis.
      85492dcf
    • antirez's avatar
      Log when CONFIG REWRITE goes bad. · eb10bb31
      antirez authored
      eb10bb31
    • antirez's avatar
      Test: regression for issue #1549. · ebdb37ce
      antirez authored
      It was verified that reverting the commit that fixes the bug, the test
      no longer passes.
      ebdb37ce
    • antirez's avatar
      Fix script cache bug in the scripting engine. · 9b73a274
      antirez authored
      This commit fixes a serious Lua scripting replication issue, described
      by Github issue #1549. The root cause of the problem is that scripts
      were put inside the script cache, assuming that slaves and AOF already
      contained it, even if the scripts sometimes produced no changes in the
      data set, and were not actaully propagated to AOF/slaves.
      
      Example:
      
          eval "if tonumber(KEYS[1]) > 0 then redis.call('incr', 'x') end" 1 0
      
      Then:
      
          evalsha <sha1 step 1 script> 1 0
      
      At this step sha1 of the script is added to the replication script cache
      (the script is marked as known to the slaves) and EVALSHA command is
      transformed to EVAL. However it is not dirty (there is no changes to db),
      so it is not propagated to the slaves. Then the script is called again:
      
          evalsha <sha1 step 1 script> 1 1
      
      At this step master checks that the script already exists in the
      replication script cache and doesn't transform it to EVAL command. It is
      dirty and propagated to the slaves, but they fail to evaluate the script
      as they don't have it in the script cache.
      
      The fix is trivial and just uses the new API to force the propagation of
      the executed command regardless of the dirty state of the data set.
      
      Thank you to @minus-infinity on Github for finding the issue,
      understanding the root cause, and fixing it.
      9b73a274
  6. 12 Feb, 2014 2 commits
    • antirez's avatar
      AOF write error: retry with a frequency of 1 hz. · 96973a7c
      antirez authored
      96973a7c
    • antirez's avatar
      AOF: don't abort on write errors unless fsync is 'always'. · fadbbdd3
      antirez authored
      A system similar to the RDB write error handling is used, in which when
      we can't write to the AOF file, writes are no longer accepted until we
      are able to write again.
      
      For fsync == always we still abort on errors since there is currently no
      easy way to avoid replying with success to the user otherwise, and this
      would violate the contract with the user of only acknowledging data
      already secured on disk.
      fadbbdd3
  7. 07 Feb, 2014 1 commit