5190 Commits

Author SHA1 Message Date
Pierre-Yves Ritschard
27aded68c7 Do not expect UPSTART_JOB to be redis 2014-12-10 21:36:53 +01:00
antirez
5b6e4e866d Better read-only behavior for expired keys in slaves.
Slaves key expire is orchestrated by the master. Sometimes the master
will send the synthesized DEL to expire keys on the slave with a non
trivial delay (when the key is not accessed, only the incremental expiry
algorithm will expire it in background).

During that time, a key is logically expired, but slaves still return
the key if you GET (or whatever) it. This is a bad behavior.

However we can't simply trust the slave view of the key, since we need
the master to be able to send write commands to update the slave data
set, and DELs should only happen when the key is expired in the master
in order to ensure consistency.

However 99.99% of the issues with this behavior is when a client which
is not a master sends a read only command. In this case we are safe and
can consider the key as non existing.

This commit does a few changes in order to make this sane:

1. lookupKeyRead() is modified in order to return NULL if the above
conditions are met.
2. Calls to lookupKeyRead() in commands actually writing to the data set
are repliaced with calls to lookupKeyWrite().

There are redundand checks, so for example, if in "2" something was
overlooked, we should be still safe, since anyway, when the master
writes the behavior is to don't care about what expireIfneeded()
returns.

This commit is related to  #1768, #1770, #2131.
2014-12-10 16:10:21 +01:00
Salvatore Sanfilippo
1aa2f9357c Merge pull request #2133 from chooper/histfile-override
override histfile from env - fixes #831 and copies #833
2014-12-10 15:28:41 +01:00
antirez
8a03ffa160 Sentinel: INFO-CACHE comments reworked a bit.
Changed in order to make them more review friendly, based on the
experience of reviewing the code myself.
2014-12-10 11:15:13 +01:00
antirez
3f2975ad12 Sentinel: INFO-CACHE GCC minior code cleanup.
I guess the initial goal of the initialization was to suppress GCC
warning, but if we have to initialize, we can do it with the base-case
value instead of NULL which is never retained.
2014-12-10 11:12:26 +01:00
antirez
043ae412ca Sentinel: removed useless flag var from INFO-CACHE. 2014-12-10 11:05:37 +01:00
antirez
71e4635ae9 Sentinel: INFO-CACHE reply format command shortened. 2014-12-10 11:04:24 +01:00
Salvatore Sanfilippo
2a8f657b3b Merge pull request #2148 from mattsta/feature/sentinel/info-cache
Add SENTINEL INFO-CACHE [masters...]
2014-12-10 11:02:42 +01:00
antirez
b06903493f Merge branch 'unstable' of github.com:/antirez/redis into unstable 2014-12-10 09:51:00 +01:00
Salvatore Sanfilippo
8b2dbb7477 Merge pull request #2203 from Brochen/unstable
Update sds.c
2014-12-10 09:50:36 +01:00
antirez
a6793ec030 test-sds target in Makefile to run sds.c tests. 2014-12-10 09:50:27 +01:00
antirez
1a5d6bf9f8 sds.c: more tests for sdstrim(). 2014-12-10 09:48:56 +01:00
Brochen
3b452712ea Update sds.c
in the case (all chars of the string s found in 'cset' ),
line[573] will no more do the same thing line[572] did.
this will be more faster especially in the case that the string s is very long and all chars of string s found in 'cset'
2014-12-10 11:19:13 +08:00
Salvatore Sanfilippo
b55a5a2bcb Merge pull request #2165 from sunheehnus/zipmap-read
zipmap.c: update comments above
2014-12-09 15:57:17 +01:00
Salvatore Sanfilippo
b00ed695ef Merge pull request #2176 from deepakverma/redis_bench_authfix
redis-benchmark AUTH command to be discarded after the first send #2150
2014-12-09 15:24:44 +01:00
Salvatore Sanfilippo
dcbccce614 Merge pull request #2119 from sunheehnus/unstable
sds.c/sdscatvprintf: va_end needs to be fixed
2014-12-09 15:13:05 +01:00
antirez
26b5bd7ef5 Include stropts only if __sun is defined. 2014-12-09 12:59:46 +01:00
Salvatore Sanfilippo
bf0896307b Merge pull request #2177 from badboy/solaris-ioctl-warn-fix
Fix implicit declaration of ioctl on Solaris
2014-12-09 12:57:22 +01:00
Salvatore Sanfilippo
df397740c1 Merge pull request #2179 from sunheehnus/bitops-read
bitops.c/redisPopcount: optimization in loop
2014-12-09 12:46:15 +01:00
Salvatore Sanfilippo
cb1c8a4300 Merge pull request #2189 from jbergstroem/glibc_220_default_warn
Silence _BSD_SOURCE warnings in glibc 2.20 and forward
2014-12-09 12:24:04 +01:00
antirez
ea53a9918e Mark whatisdoing.sh as deprecated in top-comment. 2014-12-09 12:18:34 +01:00
Salvatore Sanfilippo
beb39015a0 Merge pull request #2192 from sergeyklay/patch-1
getting pid fixes
2014-12-09 12:09:08 +01:00
Salvatore Sanfilippo
f2af27f04c Merge pull request #2197 from sunheehnus/sparkline
sparkline.c: mov label-ini into the AddSample Function
2014-12-09 11:27:40 +01:00
Salvatore Sanfilippo
7e47299aa5 Merge pull request #2200 from badboy/iss2066-additional
Only ignore sigpipe in interactive mode
2014-12-09 08:59:49 +01:00
Jan-Erik Rediger
95f157c35a Only ignore sigpipe in interactive mode
This allows shell pipes to correctly end redis-cli.

Ref #2066
2014-12-09 00:58:42 +01:00
Sun He
a2d667d2b7 sparkline.c: AddSample skip Empty label 2014-12-08 11:43:32 +08:00
Sun He
c965d0425d sparkline.c: mov label-ini into the AddSample Function 2014-12-08 11:15:06 +08:00
Serghei Iakovlev
0b5732b3b3 Update whatisdoing.sh
Improved getting pid
2014-12-05 18:48:20 +02:00
Serghei Iakovlev
4759bface5 getting pid fixes
```sh
$ ~ pidof redis-server
# nothing

$ ~ ps aux | grep [r]edis
redis      593  0.0  0.0  36900  5564 ?        Ssl  Dec02   1:37 /usr/bin/redis-server 127.0.0.1:6379
klay     15927  0.0  0.0  16772  6068 pts/6    S+   13:58   0:00 redis-cli

$ ~ uname -a
Linux edge 3.17.4-1-ARCH #1 SMP PREEMPT Fri Nov 21 21:14:42 CET 2014 x86_64 GNU/Linux
```
2014-12-05 14:50:45 +02:00
antirez
5143a209e3 Simplify lua_cmsgpack macro and fix build on old Linux distros.
Thanks to @badboy for the help in checking the build after the fix.
2014-12-05 10:51:25 +01:00
Johan Bergström
77c03b4941 Silence _BSD_SOURCE warnings in glibc 2.20 and forward
See https://sourceware.org/glibc/wiki/Release/2.20#Packaging_Changes
2014-12-05 12:41:59 +11:00
antirez
368de4315a Check that tcp-backlog is matched by /proc/sys/net/core/somaxconn. 2014-12-04 11:02:53 +01:00
antirez
cf30e64410 Network bandwidth tracking + refactoring.
Track bandwidth used by clients and replication (but diskless
replication is not tracked since the actual transfer happens in the
child process).

This includes a refactoring that makes tracking new instantaneous
metrics simpler.
2014-12-03 12:16:25 +01:00
antirez
8d56b142b0 Don't show the ASCII logo if syslog is enabled.
Closes issue #1935.
2014-12-03 10:50:47 +01:00
antirez
ac6a7e5925 Regression test for issue #2175. 2014-12-03 10:38:56 +01:00
antirez
59d12da5d4 Handle infinite explicitly in createStringObjectFromLongLong(). 2014-12-03 10:37:01 +01:00
Sun He
e03fbdd000 bitops.c/bitopCommand: skip short minlen for FAST PATH 2014-12-03 10:07:58 +08:00
antirez
b81104a288 Use exp format and more precision output for ZSCAN.
Ref: issue #2175
2014-12-02 18:20:09 +01:00
antirez
12a9ec9a84 Over 80 chars comment trimmed in pfcountCommand(). 2014-12-02 17:03:22 +01:00
antirez
4d23a26c6e Mark PFCOUNT as read-only, even if not true.
PFCOUNT is technically speaking a write command, since the cached value
of the HLL is exposed in the data structure (design error, mea culpa), and
can be modified by PFCOUNT.

However if we flag PFCOUNT as "w", read only slaves can't execute the
command, which is a problem since there are environments where slaves
are used to scale PFCOUNT reads.

Nor it is possible to just prevent PFCOUNT to modify the data structure
in slaves, since without the cache we lose too much efficiency.

So while this commit allows slaves to create a temporary inconsistency
(the strings representing the HLLs in the master and slave can be
different in certain moments) it is actually harmless.

In the long run this should be probably fixed by turning the HLL into a
more opaque representation, for example by storing the cached value in
the part of the string which is not exposed (this should be possible
with SDS strings).
2014-12-02 16:57:23 +01:00
antirez
66096204cf Mark diskless replication as experimental in redis.conf. 2014-12-02 14:13:32 +01:00
Sun He
38ce5147a5 bitops.c/redisPopcount: little optimization in loop 2014-12-02 14:46:15 +08:00
Deepak Verma
ff62818d66 replaced // comments #2150 2014-12-01 22:54:49 +00:00
Jan-Erik Rediger
c3539abccb Fix implicit declaration of ioctl on Solaris 2014-12-01 23:22:03 +01:00
azure provisioned user
773dcf4e60 redis-benchmark AUTH command to be discarded after the first send #2150 2014-12-01 21:42:40 +00:00
antirez
e346d72200 Test: wait for actual startup in start_server.
start_server now uses return value from Tcl exec to get the server pid,
however this introduces errors that depend from timing: a lot of the
testing code base assumed the server to be actually up and running when
server_start returns.

So the old code that waits to see the pid in the log file was restored.
2014-11-28 11:49:26 +01:00
antirez
820d9dd5cb Test: try to cleanup still running Redis instances on exit.
It's hard to run the Redis test continuously if it leaks processes on
exceptions / errors.
2014-11-28 11:38:17 +01:00
antirez
bf470753ee Test framework: exit on timeout with report.
There was no sane way to detect tests that may never end because of
Redis bugs or tests bugs.
2014-11-28 11:05:58 +01:00
antirez
0186fa3aa5 Cluster PUBLISH message: fix totlen count.
bulk_data field size was not removed from the count. It is not possible
to declare it simply as 'char bulk_data[]' since the structure is nested
into another structure.
2014-11-28 10:21:47 +01:00
antirez
ded0f6c8dc redis-benchmark: default num of requests is now 100000.
10000 completes in a too short time and may easily provide unreliable
figures because of tiny duration.
2014-11-28 09:23:39 +01:00