- 27 Aug, 2020 1 commit
-
-
valentinogeron authored
If the server gets MULTI command followed by only read commands, and right before it gets the EXEC it reaches OOM, the client will get OOM response. So, from now on, it will get OOM response only if there was at least one command that was tagged with `use-memory` flag
-
- 23 Jun, 2020 1 commit
-
-
Oran Agra authored
In order to support the use of multi-exec in pipeline, it is important that MULTI and EXEC are never rejected and it is easy for the client to know if the connection is still in multi state. It was easy to make sure MULTI and DISCARD never fail (done by previous commits) since these only change the client state and don't do any actual change in the server, but EXEC is a different story. Since in the past, it was possible for clients to handle some EXEC errors and retry the EXEC, we now can't affort to return any error on EXEC other than EXECABORT, which now carries with it the real reason for the abort too. Other fixes in this commit: - Some checks that where performed at the time of queuing need to be re- validated when EXEC runs, for instance if the transaction contains writes commands, it needs to be aborted. there was one check that was already done in execCommand (-READONLY), but other checks where missing: -OOM, -MISCONF, -NOREPLICAS, -MASTERDOWN - When a command is rejected by processCommand it was rejected with addReply, which was not recognized as an error in case the bad command came from the master. this will enable to count or MONITOR these errors in the future. - make it easier for tests to create additional (non deferred) clients. - add tests for the fixes of this commit.
-
- 09 Jun, 2020 1 commit
-
-
antirez authored
-
- 23 Mar, 2020 1 commit
-
-
Oran Agra authored
Redis refusing to run MULTI or EXEC during script timeout may cause partial transactions to run. 1) if the client sends MULTI+commands+EXEC in pipeline without waiting for response, but these arrive to the shards partially while there's a busy script, and partially after it eventually finishes: we'll end up running only part of the transaction (since multi was ignored, and exec would fail). 2) similar to the above if EXEC arrives during busy script, it'll be ignored and the client state remains in a transaction. the 3rd test which i added for a case where MULTI and EXEC are ok, and only the body arrives during busy script was already handled correctly since processCommand calls flagTransaction
-
- 22 Sep, 2019 1 commit
-
-
valentino authored
discard command should not fail during OOM, otherwise client MULTI state will not be cleared.
-
- 27 Mar, 2013 2 commits
- 29 Nov, 2012 1 commit
-
-
antirez authored
-
- 22 Nov, 2012 3 commits
- 30 Jan, 2012 1 commit
-
-
Michal Kwiatkowski authored
-
- 25 Nov, 2011 1 commit
-
-
antirez authored
-
- 05 Jul, 2010 1 commit
-
-
antirez authored
WATCH will now consider touched keys target of EXPIRE command after the WATCH is performed, but not before
-
- 02 Jun, 2010 2 commits
-
-
Pieter Noordhuis authored
-
Pieter Noordhuis authored
changed how server.tcl accepts options to support more directives without requiring more arguments to the proc
-
- 25 May, 2010 2 commits