zhaozhao.zz
5ddd507624
if we read a expired key, misses++
2018-10-19 18:16:29 +08:00
zhaozhao.zz
7ab9cba59b
do not delete expired keys in KEYS command
2018-10-19 18:00:57 +08:00
antirez
f30b18f4de
Fix again stack generation on the Raspberry Pi.
...
The fix was removed by c8ca71d40
attempting to fix the stack generation
on ARM64, without testing if it would still work on ARM32.
Now it should work both sides.
2018-10-19 10:39:57 +02:00
youjiali1995
a6499ecac2
migrate: fix mismatch of RESTORE reply when some keys have expired.
2018-10-18 18:57:51 +08:00
Itamar Haber
edeaf85cab
Plugs a potential underflow
2018-10-17 19:33:11 +03:00
antirez
144832ee67
Streams: use bulk replies instead of status replies.
...
They play better with Lua scripting, otherwise Lua will see status
replies as "ok" = "string" which is very odd, and actually as @oranagra
reasoned in issue #5456 in the rest of the Redis code base there was no
such concern as saving a few bytes when the protocol is emitted.
2018-10-17 17:21:09 +02:00
Itamar Haber
acb3b55280
Corrects inline documentation of syntax
2018-10-17 16:13:55 +03:00
antirez
fdb575993f
Fix conditional in XGROUP.
2018-10-17 13:00:35 +02:00
antirez
ad78b50f62
Update help.h for redis-cli.
2018-10-17 12:57:21 +02:00
antirez
492fd5c011
Fix XGROUP CREATE MKSTREAM handling of .
2018-10-17 12:10:52 +02:00
antirez
2e3d403349
Process MKSTREAM option of XGROUP CREATE at a later time.
...
This avoids issues with having to replicate a command that produced
errors.
2018-10-17 12:04:06 +02:00
antirez
ab11c5ebd1
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-10-17 11:36:03 +02:00
antirez
cb27dd1a68
XGROUP CREATE: MKSTREAM option for automatic stream creation.
2018-10-17 11:27:27 +02:00
zhaozhao.zz
e2de7e7524
MULTI: OOM err if cannot free enough memory in MULTI/EXEC context
2018-10-17 16:40:45 +08:00
Salvatore Sanfilippo
3f7bc5a5d2
Merge pull request #5333 from soloestoy/stream-commands-flag
...
Scripting & Streams: some commands need right flags
2018-10-17 07:50:32 +02:00
Damien Tournoud
29e488cbb0
Overhead is the allocated size of the AOF buffer, not its length
2018-10-16 11:47:42 -07:00
zhaozhao.zz
a273ce9578
Streams: rewrite empty streams with certain lastid
2018-10-16 23:47:27 +08:00
antirez
c1689166b7
Streams: rewrite empty streams with XADD MAXLEN 0. Use XSETID.
...
Related to #5426 .
2018-10-16 16:48:31 +02:00
antirez
ea78a1db32
XSETID: accept IDs based on last entry.
...
Related to #5426 .
2018-10-16 16:46:17 +02:00
antirez
e3446fea9e
Streams: XSTREAM SETID -> XSETID.
...
Keep vanilla stream commands at toplevel, see #5426 .
2018-10-16 13:17:14 +02:00
Salvatore Sanfilippo
af09df08d7
Merge pull request #5426 from soloestoy/feature-xstream
...
Bugfix data inconsistency after aof rewrite, and add XSTREAM command.
2018-10-16 13:10:36 +02:00
hujiecs
297950e8b8
several typos fixed, optimize MSETNX to avoid unnecessary loop
2018-10-16 15:48:03 +08:00
Salvatore Sanfilippo
1caabd59b2
Merge pull request #5416 from halaei/fix-timer-selected-db
...
fix timer context selected database
2018-10-15 13:01:58 +02:00
antirez
3640e029d6
Make comment about nack->consumer test for minidle more obvious.
...
Related to #5437 .
2018-10-15 12:01:17 +02:00
antirez
0b1784b188
Streams: use propagate_last_id itself as streamPropagateGroupID trigger.
...
Avoid storing the dirty value. See #5437 .
2018-10-15 11:52:24 +02:00
antirez
820b1e6e7d
Streams: better naming: lastid_updated -> propagate_last_id.
...
See #5437 but also I updated a previous usage of the same var name.
2018-10-15 11:50:18 +02:00
Salvatore Sanfilippo
440574d624
Merge pull request #5437 from soloestoy/fix-xclaim
...
Fix xclaim
2018-10-15 11:47:21 +02:00
antirez
f54cde3a15
Rax: radix tree updated to latest version from antirez/rax.
2018-10-13 14:17:38 +02:00
zhaozhao.zz
5cc0522303
Streams: panic if streamID invalid after check, should not be possible.
2018-10-11 21:46:47 +08:00
zhaozhao.zz
08ae522ff9
Streams: propagate lastid in XCLAIM when it has effect
2018-10-11 21:44:20 +08:00
zhaozhao.zz
183ef7ae9b
Streams: XCLAIM ignore minidle if NACK is created by FORCE
...
Because the NACK->consumer is NULL, if idletime < minidle
the NACK does not belong to any consumer, then redis will crash
in XPENDING.
2018-10-11 21:20:49 +08:00
zhaozhao.zz
4dc48a0d11
Streams: bugfix XCLAIM should propagate group name not consumer name
2018-10-11 21:12:09 +08:00
antirez
91685eeeb1
LOLWUT: capitalize Nees.
2018-10-11 13:00:55 +02:00
antirez
1048b5d13a
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-10-10 12:51:39 +02:00
antirez
c9d9ae7baa
Fix propagation of consumer groups last ID.
...
Issue #5433 .
2018-10-10 12:51:02 +02:00
zhaozhao.zz
35b7296ff4
Avoid recreate write handler for protected client.
2018-10-09 20:34:11 +08:00
antirez
8e2bbe9105
Free protected clients asynchronously.
...
Related to #4840 .
Note that when we re-enter the event loop with aeProcessEvents() we
don't process timers, nor before/after sleep callbacks, so we should
never end calling freeClientsInAsyncFreeQueue() when re-entering the
loop.
2018-10-09 13:28:51 +02:00
antirez
929c686cce
Actually use the protectClient() API where needed.
...
Related to #4804 .
2018-10-09 13:18:52 +02:00
antirez
69c30965eb
Introduce protectClient() + some refactoring.
...
The idea is to have an API for the cases like -BUSY state and DEBUG
RELOAD where we have to manually deinstall the read handler.
See #4804 .
2018-10-09 13:15:41 +02:00
Salvatore Sanfilippo
6660458a4c
Merge pull request #4804 from soloestoy/fix-debug-load
...
debug: avoid free client unexpectedly when reload & loadaof
2018-10-09 12:56:08 +02:00
antirez
db86dfb985
aof.c: improve indentation and change warning message.
...
Related to #5201 .
I removed the !!! Warning part since compared to the other errors, a
missing EXEC is in theory a normal happening in the AOF file, at least
in theory: may happen in a differnet number of situations, and it's
probably better to don't give the user the feeling that something really
bad happened.
2018-10-09 11:51:04 +02:00
Salvatore Sanfilippo
1a476b69ad
Merge pull request #5201 from soloestoy/abort-if-lost-exec-aof-load
...
AOF: discard if we lost EXEC when loading aof
2018-10-09 11:47:04 +02:00
zhaozhao.zz
480e299436
Streams: rewrite id in XSTREAM CREATE *
2018-10-09 16:22:30 +08:00
zhaozhao.zz
b3e80d2f65
Stream & AOF: rewrite stream in correct way
2018-10-09 15:40:20 +08:00
zhaozhao.zz
ec511fa709
Streams: add a new command XTREAM
...
XSTREAM CREATE <key> <id or *> -- Create a new empty stream.
XSTREAM SETID <key> <id or $> -- Set the current stream ID.
2018-10-09 13:11:04 +08:00
antirez
3e78344d87
Refactoring of XADD / XTRIM MAXLEN rewriting.
...
See #5141 .
2018-10-08 12:05:22 +02:00
Salvatore Sanfilippo
e5f1de1448
Merge pull request #5141 from soloestoy/fix-xtrim-inconsistency
...
Fix XTRIM and XADD with MAXLEN inconsistency
2018-10-08 12:00:00 +02:00
O(ʒ)
534c3bc21a
Fix typo
2018-10-07 13:37:58 +02:00
antirez
3d07ed983e
Fix typo in replicationCron() comment.
2018-10-05 18:30:45 +02:00
antirez
ce8b6ede34
Fix typo in design comment of bio.c.
2018-10-05 18:29:23 +02:00
antirez
68c0e6e331
xclaimCommand(): fix comment typos.
2018-10-04 17:34:06 +02:00
Hamid Alaei
87264235cc
fix timer context selected database
2018-10-04 17:02:10 +03:30
antirez
32e0d2376f
streamAppendItem(): Update the radix tree pointer only if changed.
2018-10-02 19:45:33 +02:00
antirez
9d4f51e1ff
Listpack: optionally force reallocation on inserts.
...
This is useful in order to spot bugs where we fail
at updating the pointer returned by the insertion
function. Normally often the same pointer is returned,
making it harder than needed to spot bugs.
Related to #5210 .
2018-10-02 19:37:36 +02:00
antirez
73a78adf13
Fix printf type mismatch in genRedisInfoString().
2018-10-02 16:26:30 +02:00
antirez
c7c3b23787
streamIteratorRemoveEntry(): set back lp only if pointer changed.
...
Most of the times the pointer will remain the same since integers of
similar size don't take more space in listpacks.
Related to #5210 .
2018-10-02 16:20:40 +02:00
Salvatore Sanfilippo
9fe7cd8f14
Merge pull request #5210 from soloestoy/raxinsert-in-xdel
...
Streams: update listpack with new pointer in XDEL
2018-10-02 16:18:55 +02:00
Salvatore Sanfilippo
2b09884faf
Merge pull request #5392 from soloestoy/bugfix-brpoplpush
...
bugfix: replace lastcmd with cmd when rewrite BRPOPLPUSH as RPOPLPUSH
2018-10-02 16:09:22 +02:00
Salvatore Sanfilippo
e19a06d2dd
Merge pull request #5242 from oranagra/script_mem
...
script cache memory in INFO and MEMORY includes both script code and overheads
2018-10-02 16:03:05 +02:00
Salvatore Sanfilippo
fe43406929
Merge pull request #5397 from bmerry/fix-bad-zmalloc-size
...
Fix invalid use of sdsZmallocSize on an embedded string
2018-10-01 13:30:42 +02:00
Salvatore Sanfilippo
9ce638695c
Merge pull request #5398 from bmerry/fix-zrealloc-accounting
...
Fix incorrect memory usage accounting in zrealloc
2018-10-01 13:28:53 +02:00
Salvatore Sanfilippo
cd2ee8b113
Merge pull request #5396 from oranagra/cmdstats_exec
...
fix #5024 - commandstats for multi-exec were logged as EXEC.
2018-10-01 13:24:49 +02:00
Salvatore Sanfilippo
1da93f85cc
Merge pull request #5400 from halaei/fix-dict-get-on-not-found
...
fix dict get on not found
2018-10-01 13:22:33 +02:00
Hamid Alaei
86fb7b20bf
fix dict get on not found
2018-10-01 13:57:25 +03:30
antirez
9e0e5ccbf4
Fix XINFO comment for consistency.
2018-10-01 11:38:58 +02:00
Bruce Merry
8fd1031b10
Fix incorrect memory usage accounting in zrealloc
...
When HAVE_MALLOC_SIZE is false, each call to zrealloc causes used_memory
to increase by PREFIX_SIZE more than it should, due to mis-matched
accounting between the original zmalloc (which includes PREFIX size in
its increment) and zrealloc (which misses it from its decrement).
I've also supplied a command-line test to easily demonstrate the
problem. It's not wired into the test framework, because I don't know
TCL so I'm not sure how to automate it.
2018-09-30 11:49:03 +02:00
Oran Agra
f03aed3ca9
fix #5024 - commandstats for multi-exec were logged as EXEC.
...
this was broken a while back by ba9154d7e7
the purpose of which was to fix commandstats for GEOADD
2018-09-30 12:43:11 +03:00
Bruce Merry
ecc48369ce
Fix invalid use of sdsZmallocSize on an embedded string
...
sdsZmallocSize assumes a dynamically allocated SDS. When given a string
object created by createEmbeddedStringObject, it calls zmalloc_size on a
pointer that isn't the one returned by zmalloc
2018-09-30 11:32:48 +02:00
antirez
08c26591e3
Try to avoid issues with GCC pragmas and older compilers.
...
See issue #5394 .
2018-09-28 13:00:44 +02:00
zhaozhao.zz
fc9b4e7958
bugfix: replace lastcmd with cmd when rewrite BRPOPLPUSH as RPOPLPUSH
...
There are two problems if we use lastcmd:
1. BRPOPLPUSH cannot be rewrited as RPOPLPUSH in multi/exec
In mulit/exec context, the lastcmd is exec.
2. Redis will crash when execute RPOPLPUSH loading from AOF
In fakeClient, the lastcmd is NULL.
2018-09-28 12:06:48 +08:00
Andrey Bugaevskiy
466c277b4f
Move child termination to readSyncBulkPayload
2018-09-27 19:38:58 +03:00
antirez
5aa347b377
Modules: hellodict example WIP #3 : KEYRANGE.
2018-09-27 17:01:35 +02:00
antirez
0aecb135c9
Modules: Modules: dictionary API WIP #13 : Compare API exported.
2018-09-27 11:46:22 +02:00
antirez
80bde9844b
Modules: Modules: dictionary API WIP #12 : DictCompare API.
2018-09-27 11:44:25 +02:00
antirez
7af83a0c11
Modules: Modules: dictionary API WIP #11 : DictCompareC API.
2018-09-27 11:44:16 +02:00
antirez
20f047965c
Modules: hellodict example WIP #1 : GET command.
2018-09-27 11:22:43 +02:00
antirez
880ca07719
Modules: hellodict example WIP #1 : SET command.
2018-09-26 17:52:12 +02:00
antirez
bbe18eacda
Modules: remove useless defines in hellotimer.c
2018-09-26 17:42:00 +02:00
antirez
6c3bfb00fc
Modules: fix top comment of hellotimer.c
2018-09-26 17:41:08 +02:00
antirez
bec4bfaa0b
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-09-26 13:39:16 +02:00
antirez
1e585d01de
Modules: dictionary API WIP #10 : export API to modules.
2018-09-26 13:39:01 +02:00
Salvatore Sanfilippo
1d6711a764
Merge pull request #5373 from gkorland/patch-5
...
add missing argument to function doc
2018-09-25 17:18:50 +02:00
antirez
3ff82790e1
Modules: dictionary API WIP #9 : iterator returning string object.
2018-09-25 16:49:46 +02:00
antirez
fb1d5717de
Modules: dictionary API WIP #8 : Iterator next/prev.
2018-09-25 16:25:46 +02:00
antirez
58ac1f8bbe
Modules: dictionary API WIP #7 : don't store the context.
...
Storing the context is useless, because we can't really reuse that
later. For instance in the API RM_DictNext() that returns a
RedisModuleString for the next key iterated, the user should pass the
new context, because we may run the keys of the dictionary in a
different context of the one where the dictionary was created. Also the
dictionary may be created without a context, but we may still demand
automatic memory management for the returned strings while iterating.
2018-09-25 12:58:16 +02:00
antirez
b6c794acf6
Modules: dictionary API WIP #6 : implement automatic memory management.
2018-09-25 12:45:08 +02:00
antirez
448d696549
Modules: dictionary API work in progress #5 : rename API for consistency.
...
By using the "C" suffix for functions getting pointer/len, we can do the
same in the future for other modules APIs that need a variant with
pointer/len and that are now accepting a RedisModuleString.
2018-09-25 12:31:46 +02:00
antirez
c7e0c410d6
Modules: change RedisModuleString API to allow NULL context.
...
The burden of having to always create RedisModuleString objects within a
module context was too much, especially now that we have threaded
operations and modules are doing more interesting things. The context in
the string API is currently only used for automatic memory managemnet,
so now the API was modified so that the user can opt-out this feature by
passing a NULL context.
2018-09-24 17:20:00 +02:00
antirez
3968550135
Modules: dictionary API work in progress #4 : reseek API.
2018-09-24 16:43:47 +02:00
antirez
14b2f7b033
Modules: dictionary API work in progress #3 : Iterator creation.
2018-09-24 11:44:49 +02:00
antirez
bb64c7d8b2
Modules: dictionary API work in progress #2 : Del API.
2018-09-24 11:16:58 +02:00
antirez
c5e0bc1070
Modules: dictionary API work in progress #1 .
2018-09-21 17:54:09 +02:00
Guy Korland
8b87876094
add missing argument to function doc
2018-09-21 02:46:31 +03:00
Andrey Bugaevskiy
98a64523c4
Prevent RDB autosave from overwriting full resync results
...
During the full database resync we may still have unsaved changes
on the receiving side. This causes a race condition between
synced data rename/load and the rename of rdbSave tempfile.
2018-09-19 19:58:39 +03:00
antirez
0d6f11f4d1
Module cluster flags: use RM_SetClusterFlags() in the example.
2018-09-19 16:17:20 +02:00
antirez
3213e8de92
Module cluster flags: add RM_SetClusterFlags() API.
2018-09-19 12:02:37 +02:00
antirez
777cc5b987
Module cluster flags: add hooks for NO_FAILOVER flag.
2018-09-19 11:43:37 +02:00
antirez
c202ba2b35
Module cluster flags: add hooks for NO_REDIRECTION flag.
2018-09-19 11:31:22 +02:00
antirez
744fe7f348
Module cluster flags: initial vars / defines added.
2018-09-19 11:20:52 +02:00
antirez
7cdf272d46
Modules: rename the reused static client to something more general.
2018-09-18 13:22:05 +02:00
antirez
9df1f73e4c
Modules: associate a fake client to timer context callback.
2018-09-18 13:19:33 +02:00
antirez
bf18044082
Modules: associate a fake client to cluster message context callback.
...
Fixes #5354 .
2018-09-18 13:15:40 +02:00
artix
81c4be42c1
Cluster Manager: clusterManagerFixOpenSlot now counts node's keys in slot
...
if node is neither migrating nor importing.
2018-09-17 16:26:46 +02:00
antirez
12fd92bf67
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-09-17 16:24:52 +02:00
antirez
9f43264f86
Revert "fix repeat argument issue and reduce unnessary loop times for redis-cli."
...
Reverts commit 9505dd2011
since the commit introduced the very serious bug issue #5286 .
2018-09-17 16:24:07 +02:00
Salvatore Sanfilippo
54871412c2
Merge pull request #5348 from gkorland/patch-2
...
No need to return "OK"
2018-09-17 15:42:50 +02:00
Salvatore Sanfilippo
f39bb4107c
Merge pull request #5352 from gkorland/patch-3
...
typo fix
2018-09-17 15:41:24 +02:00
Guy Korland
3176f8e955
Merge pull request #1 from gkorland/patch-5
...
Fix few typos
2018-09-17 14:15:39 +03:00
Guy Korland
3b0f008615
Fix few typos
2018-09-17 14:13:46 +03:00
Guy Korland
44f9e0d7c7
RedisModule_HashSet call must end with NULL
...
Extended the RedisModule_HashSet doc to mark that each call must end with NULL
2018-09-17 13:54:56 +03:00
Guy Korland
b2fc998ad6
typo fix
2018-09-16 15:21:21 +03:00
antirez
c560ade831
LOLWUT: split the command from version-specific implementations.
2018-09-14 12:35:59 +02:00
antirez
411f4b4c12
Slave removal: add a few forgotten aliases for CONFIG SET.
2018-09-13 21:43:15 +02:00
antirez
9849cf2df5
LOLWUT: add Redis version in the output.
...
This creates an incentive to run the command and as a side effect
experience the art piece inside.
2018-09-13 21:36:02 +02:00
Guy Korland
62015d4fb0
No need to return "OK"
...
No need to return "+OK" in this case since the result is an Array of all the nodes
2018-09-13 15:42:17 +03:00
antirez
d23cae5f06
LOLWUT: Ness -> Nees.
2018-09-13 09:03:36 +02:00
antirez
ffbf8f4b8e
LOLWUT: Limit maximum CPU effort.
2018-09-13 08:31:55 +02:00
antirez
5c9a7b891f
LOLWUT: change padding conditional to a more direct one.
2018-09-13 08:29:55 +02:00
antirez
02817d8b3d
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-09-13 08:08:56 +02:00
antirez
4dc37c240e
LOLWUT: fix crash when col < 2.
...
Close #5345 .
2018-09-13 08:08:30 +02:00
Slobodan Mišković
30377f154f
Fix spelling descrive -> describe
2018-09-12 12:10:07 -07:00
antirez
690560e8db
LOLWUT: fix structure typo in comment.
2018-09-12 17:53:00 +02:00
antirez
cf0abff567
LOLWUT: Fix license copyright year.
2018-09-12 12:40:40 +02:00
antirez
77bdfb5339
LOLWUT: increase the translation factor.
2018-09-12 12:28:28 +02:00
antirez
0dd8fd062d
LOLWUT: change default size to fit a normal terminal better.
2018-09-12 12:26:33 +02:00
antirez
43385c4375
LOLWUT: wrap it into a proper command.
2018-09-12 11:34:10 +02:00
antirez
eac2a79cf5
LOLWUT: draw Schotter by Georg Nees.
2018-09-12 11:16:07 +02:00
antirez
2ead41e05b
LOLWUT: draw rotated squares using trivial trigonometry.
2018-09-12 10:36:02 +02:00
antirez
a974531d1a
LOLWUT: draw lines using Bresenham algorithm.
2018-09-11 21:15:43 +02:00
antirez
7777379814
LOLWUT: Rendering of the virtual canvas to a string.
2018-09-11 17:32:57 +02:00
antirez
096c74c886
LOLWUT: show the output verbatim in redis-cli.
2018-09-11 16:29:31 +02:00
antirez
2dbf2047ac
LOLWUT: canvas structure and BSD license on top.
2018-09-11 16:09:24 +02:00
antirez
65ce839d09
LOLWUT: Emit Braille unicode according to pixel pattern.
2018-09-11 16:04:25 +02:00
antirez
0c1d28e2d0
Slave removal: remove slave from object.c.
2018-09-11 15:32:28 +02:00
antirez
db146de086
Slave removal: server.c logs fixed.
2018-09-11 15:32:28 +02:00
antirez
ca6aed02f8
Slave removal: replace very few things in Sentinel.
...
SENTINEL REPLICAS was added as an alias, in the configuration rewriting
now it uses known-replica, however all the rest is basically at API
level of logged events and messages having to do with the protocol, so
there is very little to do here compared to the Redis core itself, to
preserve compatibility.
2018-09-11 15:32:28 +02:00
antirez
1051d93837
Slave removal: scripting.c logs and other stuff fixed.
2018-09-11 15:32:28 +02:00
antirez
61b7a176ef
Slave removal: replication.c logs fixed.
2018-09-11 15:32:28 +02:00
antirez
cff5f36d94
Slave removal: networking.c logs fixed.
2018-09-11 15:32:28 +02:00
antirez
05e8db24ed
Slave removal: blocked.c logs fixed.
2018-09-11 15:32:28 +02:00
antirez
8296e5c846
Slave removal: slave mode -> replica mode text in redis-cli.
2018-09-11 15:32:28 +02:00
antirez
6f3d357d8f
Slave removal: slave -> replica in redis.conf and output buffer option.
2018-09-11 15:32:28 +02:00
antirez
6f58486139
Slave removal: config.c converted + config rewriting hacks.
...
Aliases added for all the commands mentioning slave. Moreover CONFIG
REWRITE will use the new names, and will be able to reuse the old lines
mentioning the old options.
2018-09-11 15:32:28 +02:00
antirez
a9419e2386
Slave removal: Convert cluster.c log messages and command names.
2018-09-11 15:32:28 +02:00
antirez
f579b77449
Slave removal: redis-cli --slave -> --replica.
...
--slave alias remains but is undocumented, just for backward
compatibiltiy.
2018-09-11 15:32:28 +02:00
antirez
ef2c7a5bbb
Slave removal: SLAVEOF -> REPLICAOF. SLAVEOF is now an alias.
2018-09-11 15:32:28 +02:00
Salvatore Sanfilippo
14629278e3
Merge pull request #5307 from mesbahamin/use_geohash_defines_in_check
...
Use geohash limit defines in constraint check
2018-09-07 12:31:27 +02:00
Salvatore Sanfilippo
83b8eaa638
Merge pull request #5239 from jeffreylovitz/cli-help-fix
...
CLI Help text loop verifies arg count
2018-09-07 12:28:22 +02:00
Salvatore Sanfilippo
a62b8410ef
Merge pull request #5322 from youjiali1995/fix-sentinel-randomize
...
sentinel: fix randomized sentinelTimer.
2018-09-07 12:10:35 +02:00
Salvatore Sanfilippo
aba57a1bb7
Merge pull request #5324 from youjiali1995/fix-bio
...
bio: fix bioWaitStepOfType.
2018-09-07 12:06:02 +02:00
zhaozhao.zz
8d24f8b46b
Scripting & Streams: some commands need right flags
...
xadd with id * generates random stream id
xadd & xtrim with approximate maxlen count may
trim stream randomly
xinfo may get random radix-tree-keys/nodes
xpending may get random idletime
xclaim: master and slave may have different
idletime in stream
2018-09-06 21:12:46 +08:00
Weiliang Li
db74d71eb3
fix usage typo in redis-cli
2018-09-06 13:40:05 +08:00
antirez
7895835df6
Use commands (effects) replication by default in scripts.
...
See issue #5250 and issue #5292 for more info.
2018-09-05 19:33:56 +02:00
antirez
7e11825ef4
Safer script stop condition on OOM.
...
Here the idea is that we do not want freeMemoryIfNeeded() to propagate a
DEL command before the script and change what happens in the script
execution once it reaches the slave. For example see this potential
issue (in the words of @soloestoy):
On master, we run the following script:
if redis.call('get','key')
then
redis.call('set','xxx','yyy')
end
redis.call('set','c','d')
Then when redis attempts to execute redis.call('set','xxx','yyy'), we call freeMemoryIfNeeded(), and the key may get deleted, and because redis.call('set','xxx','yyy') has already been executed on master, this script will be replicated to slave.
But the slave received "DEL key" before the script, and will ignore maxmemory, so after that master has xxx and c, slave has only one key c.
Note that this patch (and other related work) was authored collaboratively in
issue #5250 with the help of @soloestoy and @oranagra.
Related to issue #5250 .
2018-09-05 15:48:08 +02:00
antirez
092e4de613
Propagate read-only scripts as SCRIPT LOAD.
...
See issue #5250 and the new comments added to the code in this commit
for details.
2018-09-05 15:44:33 +02:00
antirez
51b627d916
Don't perform eviction when re-entering the event loop.
...
Related to #5250 .
2018-09-05 13:10:07 +02:00
youjiali1995
c328834832
bio: fix bioWaitStepOfType.
2018-09-05 16:51:13 +08:00
youjiali1995
a8322f44b3
sentinel: fix randomized sentinelTimer.
2018-09-05 10:32:18 +08:00
antirez
4e5e0d3719
Clarify why remaining may be zero in readQueryFromClient().
...
See #5304 .
2018-09-04 13:29:27 +02:00
antirez
ff57b8d550
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-09-04 13:26:06 +02:00
Salvatore Sanfilippo
2ef829d65c
Merge pull request #5304 from soloestoy/fix-unexpected-readlen
...
networking: fix unexpected negative or zero readlen
2018-09-04 13:25:28 +02:00
Sascha Roland
c1e9186f06
#5299 Fix blocking XREAD for streams that ran dry
...
The conclusion, that a xread request can be answered syncronously in
case that the stream's last_id is larger than the passed last-received-id
parameter, assumes, that there must be entries present, which could be
returned immediately.
This assumption fails for empty streams that actually contained some
entries which got removed by xdel, ... .
As result, the client is answered synchronously with an empty result,
instead of blocking for new entries to arrive.
An additional check for a non-empty stream is required.
2018-09-04 13:13:36 +02:00
Salvatore Sanfilippo
d60c17cbb3
Merge pull request #5315 from soloestoy/optimize-parsing-large-bulk
...
networking: optimize parsing large bulk greater than 32k
2018-09-04 12:49:50 +02:00
antirez
6c001bfc0d
Unblocked clients API refactoring. See #4418 .
2018-09-03 18:39:18 +02:00
Salvatore Sanfilippo
2b689ad641
Merge pull request #4418 from soloestoy/fix-multiple-unblock
...
fix multiple unblock for clientsArePaused()
2018-09-03 18:31:02 +02:00
antirez
3e7349fdaf
Make pending buffer processing safe for CLIENT_MASTER client.
...
Related to #5305 .
2018-09-03 18:17:31 +02:00
zhaozhao.zz
247d2a734b
networking: optimize parsing large bulk greater than 32k
...
If we are going to read a large object from network
try to make it likely that it will start at c->querybuf
boundary so that we can optimize object creation
avoiding a large copy of data.
But only when the data we have not parsed is less than
or equal to ll+2. If the data length is greater than
ll+2, trimming querybuf is just a waste of time, because
at this time the querybuf contains not only our bulk.
It's easy to reproduce the that:
Time1: call `client pause 10000` on slave.
Time2: redis-benchmark -t set -r 10000 -d 33000 -n 10000.
Then slave hung after 10 seconds.
2018-09-04 00:02:25 +08:00
zhaozhao.zz
2290c4bee1
if master is already unblocked, do not unblock it twice
2018-09-03 14:36:48 +08:00
zhaozhao.zz
e3dfd8c811
fix multiple unblock for clientsArePaused()
2018-09-03 14:26:14 +08:00
Amin Mesbah
a036c64c01
Use geohash limit defines in constraint check
...
Slight robustness improvement, especially if the limit values are
changed, as was suggested in antires/redis#4291 [1].
[1] https://github.com/antirez/redis/pull/4291
2018-09-02 00:06:20 -07:00
antirez
7fa493912e
After slave Lua script leaves busy state, re-process the master buffer.
...
Technically speaking we don't really need to put the master client in
the clients that need to be processed, since in practice the PING
commands from the master will take care, however it is conceptually more
sane to do so.
2018-08-31 16:45:02 +02:00
antirez
9ab91b8c6c
While the slave is busy, just accumulate master input.
...
Processing command from the master while the slave is in busy state is
not correct, however we cannot, also, just reply -BUSY to the
replication stream commands from the master. The correct solution is to
stop processing data from the master, but just accumulate the stream
into the buffers and resume the processing later.
Related to #5297 .
2018-08-31 16:45:02 +02:00
antirez
83af8ef1fd
Allow scripts to timeout even if from the master instance.
...
However the master scripts will be impossible to kill.
Related to #5297 .
2018-08-31 16:45:02 +02:00
antirez
f5b29c6444
Allow scripts to timeout on slaves as well.
...
See reasoning in #5297 .
2018-08-31 16:45:01 +02:00
zhaozhao.zz
dce7cefb7c
networking: fix unexpected negative or zero readlen
...
To avoid copying buffers to create a large Redis Object which
exceeding PROTO_IOBUF_LEN 32KB, we just read the remaining data
we need, which may less than PROTO_IOBUF_LEN. But the remaining
len may be zero, if the bulklen+2 equals sdslen(c->querybuf),
in client pause context.
For example:
Time1:
python
>>> import os, socket
>>> server="127.0.0.1"
>>> port=6379
>>> data1="*3\r\n$3\r\nset\r\n$1\r\na\r\n$33000\r\n"
>>> data2="".join("x" for _ in range(33000)) + "\r\n"
>>> data3="\n\n"
>>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>>> s.settimeout(10)
>>> s.connect((server, port))
>>> s.send(data1)
28
Time2:
redis-cli client pause 10000
Time3:
>>> s.send(data2)
33002
>>> s.send(data3)
2
>>> s.send(data3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.error: [Errno 104] Connection reset by peer
To fix that, we should check if remaining is greater than zero.
2018-08-31 20:02:09 +08:00
Salvatore Sanfilippo
d05f5c8f64
Merge pull request #5268 from 0xtonyxia/fix-latency-cmd-comments2
...
Revise the comments of latency command.
2018-08-29 16:19:13 +02:00
Salvatore Sanfilippo
476eea95da
Merge pull request #4216 from lamby/did-not-received-typos
...
Correct "did not received" -> "did not receive" typos/grammar.
2018-08-29 16:18:11 +02:00
zhaozhao.zz
7d39c149c4
Supplement to PR #4835 , just take info/memory/command as random commands
2018-08-29 18:23:05 +08:00
Salvatore Sanfilippo
0e21efdb1c
Merge pull request #4835 from soloestoy/command-script-flag
...
some commands' flags should be set correctly, issue #4834
2018-08-29 12:13:50 +02:00
zhaozhao.zz
32844178ac
some commands' flags should be set correctly, issue #4834
2018-08-29 18:07:01 +08:00
antirez
e245a2046a
Make slave-ignore-maxmemory configurable.
2018-08-27 12:27:17 +02:00
antirez
067647a783
Introduce repl_slave_ignore_maxmemory flag internally.
...
Note: this breaks backward compatibility with Redis 4, since now slaves
by default are exact copies of masters and do not try to evict keys
independently.
2018-08-27 12:20:27 +02:00
antirez
abf52c7cf4
Better variable meaning in processCommand().
2018-08-27 12:17:34 +02:00
antirez
66b5afdaa4
Re-apply rebased #2358 .
2018-08-27 12:17:14 +02:00
antirez
c241f51607
Fix build errors caused by #2358 .
2018-08-27 12:15:55 +02:00
Salvatore Sanfilippo
19880ab851
Merge pull request #5248 from soloestoy/rewrite-brpoplpush
...
rewrite BRPOPLPUSH as RPOPLPUSH to propagate
2018-08-26 16:31:24 +02:00
Salvatore Sanfilippo
80e1695652
Merge pull request #5244 from soloestoy/optimize-pipeline
...
pipeline: do not sdsrange querybuf unless all commands processed
2018-08-26 16:30:49 +02:00
Chris Lamb
132be8aed5
Correct "did not received" -> "did not receive" typos/grammar.
2018-08-26 14:45:39 +02:00
Salvatore Sanfilippo
46d89a9abb
Merge pull request #2992 from lamby/source-date-epoch
...
Use SOURCE_DATE_EPOCH over unreproducible uname + date calls.
2018-08-26 11:25:44 +02:00
Chris Lamb
f63e81c202
Merge branch 'unstable' into config-set-maxmemory-grammar
2018-08-25 21:49:29 +02:00
zhaozhao.zz
f2ad89a314
networking: make setProtocolError simple and clear
...
Function setProtocolError just records proctocol error
details in server log, set client as CLIENT_CLOSE_AFTER_REPLY.
It doesn't care about querybuf sdsrange, because we
will do it after procotol parsing.
2018-08-23 12:21:28 +08:00
dejun.xdj
1ab64d405e
Revise the comments of latency command.
2018-08-22 18:07:02 +08:00
zhaozhao.zz
9a65f9cd3e
block: format code
2018-08-14 20:59:32 +08:00
zhaozhao.zz
8a1219d93b
block: rewrite BRPOPLPUSH as RPOPLPUSH to propagate
2018-08-14 20:58:58 +08:00
zhaozhao.zz
ef2a95c461
networking: just move qb_pos instead of sdsrange in processInlineBuffer
2018-08-14 14:50:37 +08:00
zhaozhao.zz
e623bd22ba
networking: just return C_OK if multibulk processing saw a <= 0 length.
2018-08-14 13:55:30 +08:00
zhaozhao.zz
14c4ddb5a6
pipeline: do not sdsrange querybuf unless all commands processed
...
This is an optimization for processing pipeline, we discussed a
problem in issue #5229 : clients may be paused if we apply `CLIENT
PAUSE` command, and then querybuf may grow too large, the cost of
memmove in sdsrange after parsing a completed command will be
horrible. The optimization is that parsing all commands in queyrbuf
, after that we can just call sdsrange only once.
2018-08-14 00:43:42 +08:00
Oran Agra
f4b27ae222
script cache memory in INFO and MEMORY includes both script code and overheads
2018-08-13 17:36:54 +03:00
Jeffrey Lovitz
bd01334da1
CLI Help text loop verifies arg count
2018-08-12 12:47:01 -04:00
zhaozhao.zz
a3a1460525
Streams: update listpack with new pointer in XDEL
2018-08-04 01:06:53 +08:00
zhaozhao.zz
eb87da6127
AOF: discard if we lost EXEC when loading aof
2018-08-03 23:30:34 +08:00
Salvatore Sanfilippo
39c70e728b
Merge pull request #5146 from 0xtonyxia/fix-xclaim-id-parse
...
Streams: ID of xclaim command should start from the sixth argument.
2018-08-03 13:45:27 +02:00
Salvatore Sanfilippo
7b5e7f3ed0
Merge pull request #5151 from shenlongxing/fix-stream
...
Fix stream command paras
2018-08-03 13:39:32 +02:00
shenlongxing
fe56c67405
Fix stream command paras
2018-08-03 19:01:15 +08:00
antirez
0ce8323c0d
Fix AOF comment to report the current behavior.
...
Realted to #5201 .
2018-08-03 12:46:06 +02:00
antirez
2f282aee0b
Fix zslUpdateScore() edge case.
...
When the element new score is the same of prev/next node, the
lexicographical order kicks in, so we can safely update the node in
place only when the new score is strictly between the adjacent nodes
but never equal to one of them.
Technically speaking we could do extra checks to make sure that even if the
score is the same as one of the adjacent nodes, we can still update on
place, but this rarely happens, so probably not a good deal to make it
more complex.
Related to #5179 .
2018-08-01 19:04:53 +02:00
antirez
29226a3919
More commenting of zslUpdateScore().
2018-08-01 18:54:15 +02:00
antirez
12ff0c0d79
Explain what's the point of zslUpdateScore() in top comment.
2018-08-01 18:53:09 +02:00
antirez
e3e94ec35c
Remove old commented zslUpdateScore() from source.
2018-08-01 18:50:49 +02:00
antirez
0b800c4332
Optimize zslUpdateScore() as asked in #5179 .
2018-08-01 18:50:31 +02:00
antirez
6dd0d6f7dd
zsetAdd() refactored adding zslUpdateScore().
2018-08-01 18:27:56 +02:00
zhaozhao.zz
9042d1c249
Streams: propagate specified MAXLEN instead of approximated
...
Slaves and rebooting redis may have different radix tree struct,
by different stream* config options. So propagating approximated
MAXLEN to AOF/slaves may lead to date inconsistency.
2018-08-01 10:34:12 +08:00
zhaozhao.zz
14d6318b32
Streams: reset approx_maxlen in every maxlen loop
2018-08-01 10:31:27 +08:00
zhaozhao.zz
da6b7516f1
Streams: XTRIM will return an error if MAXLEN with a count < 0
2018-08-01 10:31:27 +08:00
zhaozhao.zz
20c6a7fe2c
Streams: propagate original MAXLEN argument in XADD context
...
If we rewrite the MAXLEN argument as zero when no trimming
was performed, date between master and slave and aof will
be inconsistent, because `xtrim maxlen 0` means delete all
entries in stream.
2018-08-01 10:31:27 +08:00
antirez
2f2987ffc5
Streams IDs parsing refactoring.
...
Related to #5184 .
2018-07-31 18:08:52 +02:00
Salvatore Sanfilippo
187fa78637
Merge pull request #5184 from 0xtonyxia/streams-id-opt
...
Streams: rearrange the usage of '-' and '+' IDs in stream commands.
2018-07-31 17:58:13 +02:00
Salvatore Sanfilippo
7b41701eb8
Merge pull request #5187 from oranagra/testsuite_improvements
...
Testsuite improvements
2018-07-31 17:20:09 +02:00
antirez
e245ed9a44
Cluster cron announce IP minor refactoring.
2018-07-31 17:13:03 +02:00
Salvatore Sanfilippo
093adb7ef9
Merge pull request #5191 from shenlongxing/fix-memory-leak
...
Fix cluster-announce-ip memory leak
2018-07-31 17:11:16 +02:00
antirez
b0392e75ec
Tranfer -> transfer typo fixed.
2018-07-31 16:41:33 +02:00
Salvatore Sanfilippo
92b39a0abf
Merge pull request #5189 from soloestoy/refactor-dbOverwrite
...
refactor dbOverwrite to make lazyfree work
2018-07-31 16:40:35 +02:00
antirez
db693be00d
Refactoring: replace low-level checks with writeCommandsDeniedByDiskError().
2018-07-31 13:16:43 +02:00
antirez
11dd3f4b03
Fix writeCommandsDeniedByDiskError() inverted return value.
2018-07-31 13:14:24 +02:00
antirez
0e49938b68
Better top comment for writeCommandsDeniedByDiskError().
2018-07-31 13:10:37 +02:00
antirez
5401fe7fb9
Introduce writeCommandsDeniedByDiskError().
2018-07-31 13:09:38 +02:00
shenlongxing
35ca670060
Fix cluster-announce-ip memory leak
2018-07-31 16:01:44 +08:00
zhaozhao.zz
fddeeae724
refactor dbOverwrite to make lazyfree work
2018-07-31 12:07:57 +08:00
Salvatore Sanfilippo
ac3c012a7f
Merge pull request #5153 from trevor211/fixLuaScript
...
Consider aof write error as well as rdb in lua script.
2018-07-30 18:10:06 +02:00
Pavel Rochnyack
1e394b73b7
INFO CPU: higher precision of reported values
...
Closes : #5033
2018-07-30 18:06:22 +02:00
Salvatore Sanfilippo
1465755e38
Merge pull request #5183 from gkorland/patch-1
...
Few typo fixes
2018-07-30 17:59:12 +02:00
antirez
3c19ae941d
Add year in log.
...
User: "is there a reason why redis server logs are missing the year in
the "date time"?"
Me: "I guess I did not imagine it would be stable enough to run for
several years".
2018-07-30 17:42:30 +02:00
dejun.xdj
6491717c88
Streams: rearrange the usage of '-' and '+' IDs in stream commands.
2018-07-30 21:33:01 +08:00
dejun.xdj
d6f5ec6f09
Streams: add mmid_supp argument in streamParseIDOrReply().
...
If 'mmid_supp' is set to 0, "-" and "+" will be
treated as an invalid ID.
2018-07-30 21:32:07 +08:00
Guy Korland
acaa18f1d1
Few typo fixes
2018-07-30 16:18:56 +03:00
antirez
be28050ac0
Make dynamic hz actually configurable.
2018-07-30 13:44:52 +02:00
antirez
c426d85c4c
Control dynamic HZ via server configuration.
2018-07-30 13:37:30 +02:00
antirez
4e9c30a6ca
Merge branch 'dynamic-hz' into unstable
2018-07-30 13:31:23 +02:00
Oran Agra
4a30adde31
add DEBUG LOG, to to assist test suite debugging
2018-07-30 12:23:51 +03:00
antirez
fd174cca23
Remove useless conditional from emptyDb().
...
Related to #4852 .
2018-07-25 16:34:57 +02:00
antirez
1c2352f0dd
Make emptyDb() change introduced in #4852 simpler to read.
2018-07-25 16:32:52 +02:00
zhaozhao.zz
dd071ff6c9
optimize flushdb, avoid useless loops
2018-07-25 18:13:34 +08:00
Salvatore Sanfilippo
73cbc33a0a
Merge pull request #5133 from soloestoy/fix-xdel-memory-leak
...
Streams: fix xdel memory leak
2018-07-24 18:57:05 +02:00
zhaozhao.zz
eb0e5fe4e3
Streams: fix xdel memory leak
2018-07-25 00:06:27 +08:00
antirez
0bdeb861f4
Example the magic +1 in migrateCommand().
...
Related to #5154 .
2018-07-24 17:31:43 +02:00
antirez
53d46fa712
Make changes of PR #5154 hopefully simpler.
2018-07-24 17:27:43 +02:00
Salvatore Sanfilippo
e52a036ac6
Merge pull request #5154 from trevor211/optimizeMigrate
...
Do not migrate already expired keys.
2018-07-24 17:24:37 +02:00
antirez
8513f31be0
Streams: refactoring of next entry seek in the iterator.
...
After #5161 the code could be made a bit more obvious for newcomers.
2018-07-24 11:07:27 +02:00
Salvatore Sanfilippo
41a886605a
Merge pull request #5161 from soloestoy/optimize-stream-iterator
...
Streams: skip master fileds only when we are going forward in streamIteratorGetID
2018-07-24 10:59:55 +02:00
antirez
f4ac796c34
string2ll(): better commenting.
2018-07-24 10:27:20 +02:00