Commits on Apr 4, 2013
Commits on Mar 31, 2013
  1. Increase the default threadpool size to twice the cores or at least

    grisha committed Mar 31, 2013
    Add a counter of threads used by sql commands. This is because sql
    commands can create database locks that "live" across many commands
    and it is possible to deadlock while waiting on a db lock and no
    threads available in the pool to unlock. If you reach this limit,
    the only option is to terminate the connection. (The better thing
    to do would be not to ever block in threads, but for now this will
Commits on Mar 30, 2013
Commits on Mar 29, 2013
  1. SQLSAVE and BGSAVE are now much better equipped with dealing with

    grisha committed Mar 29, 2013
    a busy or locked sqlite database. It's important to note that an
    exclusive transaction on a db will prevent all saving from
    happening, but at this point I cannot think of a way around this.
    Also fix a bug where we would start a deferred multibulk and then
    end up with an error - the whole response should be discarded.
Commits on Mar 27, 2013
Commits on Mar 23, 2013
Commits on Mar 19, 2013
  1. Duh - reference counting is not thread-safe! And a few other fixes.

    grisha committed Mar 19, 2013
    All test should pass and sqlite seems to working stably under heavy
Commits on Mar 16, 2013
  1. A few locking/concurrency fixes related to replication - do not

    grisha committed Mar 16, 2013
    expire keys in randomkey and wrap the propogate() call in a server
Commits on Mar 15, 2013
  1. Change SQLite behaviour to block when objects are locked by

    grisha committed Mar 15, 2013
    transactions. There is now a db connection per client, which
    allows for more concurrency and resolves some issues.
Commits on Jan 10, 2013
Commits on Jan 9, 2013
Commits on Jan 4, 2013
Commits on Jan 3, 2013
  1. Make SELECT always return a column header, if there are no rows to be

    grisha committed Jan 3, 2013
    Add type to the column row.
    Fix a 64bit compiler warning.
Commits on Jan 1, 2013
Commits on Dec 28, 2012
Commits on Dec 26, 2012
  1. Added SQLite

    grisha committed Dec 26, 2012
Commits on Dec 16, 2012
  1. Make sure that the Lua client lock is properly locked and destroyed when

    grisha committed Dec 16, 2012
    the Lua client is freed.
Commits on Nov 21, 2012
  1. Rework our locking strategy:

    grisha committed Nov 21, 2012
    1. Eliminate trylock spins that were needlessly eating CPU cycles.
    2. Instead use a timedEvent to continue pipelined commands, which sadly
       requires an additional eventLoop-level lock.
    3. Release the client lock in debug sleep and in Lua scripts -
       the locking in Lua is only necessary around redis calls.
Commits on Nov 16, 2012
  1. Locking strategy write up

    grisha committed Nov 16, 2012
  2. More accurate benchmark numbers

    grisha committed Nov 16, 2012
  3. There is no need to waste time building key lists if we are not in

    grisha committed Nov 16, 2012
    locking_mode and are in one of the commands that always run in the main
  4. Introduce locking mode. Now most of the locking can be skipped when no

    grisha committed Nov 15, 2012
    threads are running. This should make Thredis perform at native speed
    when locking mode is off.
  5. Rename redis-server to thredis-server and change redis to thredis in a

    grisha committed Nov 13, 2012
    few places to make it less confusing when running both alongside.
  6. Fix an issue with EXEC and possibly other commands blocking on a

    grisha committed Nov 9, 2012
    writable event by using trylock in sendReplyToClient.
    Fix the MONITOR test - it was sporadically failing with ae_select
    because of command ordering.
  7. Make threadpool-size a configurable parameter with an auto option

    grisha committed Nov 8, 2012
    (default), in which case the size of the threadpool would be equal to
    the number of CPU's. (hopefully this is cross-platform)
  8. Add a configuration option slave-allow-key-expires to allow TTL-based…

    kovyrin committed with grisha Aug 7, 2012
    … expires on the slave. This could be useful for non-readonly slaves where temporary data is created based on the replicated keys and it needs to be expired after a TTL.
  9. 2.6 rebase

    grisha committed Nov 7, 2012