antirez
bc9b118e05
ACL: don't emit useless flags in ACLDescribeUser().
2019-01-31 17:04:42 +01:00
antirez
0f1b06aa40
ACL: implement LIST and USERS subcommands.
2019-01-31 17:01:32 +01:00
antirez
c7cd10dfe9
ACL: flags refactoring, function to describe user.
2019-01-31 16:49:22 +01:00
antirez
479f7f7af4
ACL: add function to return ACLSetUser() string errors.
2019-01-30 16:02:25 +01:00
antirez
0960259835
ACL: don't allow patterns after the * pattern.
2019-01-30 15:59:45 +01:00
antirez
77471dfe86
ACL: implement keys field in ACL GETUSER.
2019-01-30 15:52:36 +01:00
antirez
9db2c84984
ACL: free memory leak when freeing subcommands array.
2019-01-30 11:50:30 +01:00
antirez
36a0168cfd
ACL: return error when adding subcommands of fully added commands.
...
It's almost certainly an error from the user side.
2019-01-30 08:25:12 +01:00
antirez
9c2e64db9c
ACL: remove leak in ACLSetUser().
2019-01-30 08:20:31 +01:00
antirez
efce73a001
ACL: ACLDescribeUserCommandRules(): emit subcommands.
2019-01-30 08:17:33 +01:00
antirez
9ae8e3fefa
ACL: clear the subcommands array when setting category bits.
2019-01-30 08:09:05 +01:00
antirez
feba39d318
ACL: finish/fix ACLDescribeUserCommandRules() first version.
2019-01-29 18:54:21 +01:00
antirez
4db92e5928
ACL: ACLDescribeUserCommandRules(): add final commands.
2019-01-29 18:41:11 +01:00
antirez
11f64c6886
ACL: initial design for ACLDescribeUserCommandRules() and helpers.
2019-01-29 17:25:05 +01:00
antirez
4380423d40
ACL: enforce ACLs in Lua scripts as well.
2019-01-29 10:12:22 +01:00
antirez
acd168a70b
ACL: refactoring and fix of adding subcommands to users.
2019-01-28 18:40:54 +01:00
antirez
7fb9e2b4ce
ACL: reset the subcommands table on +@all / -@all.
...
This also is a bugfix because after -@all the previously enabled
subcommands would remain valid.
2019-01-28 18:27:42 +01:00
antirez
097d57f56e
ACL: fix crash when checking for subcommands.
2019-01-28 18:15:59 +01:00
Guy Benoish
b0c8d6c227
Increase string2ld's buffer size (and fix HINCRBYFLOAT)
...
The string representation of `long double` may take
up to ~5000 chars (see PR #3745 ).
Before this fix HINCRBYFLOAT would never overflow (since
the string could not exceed 256 chars). Now it can.
2019-01-28 17:58:11 +02:00
antirez
6320aa49f3
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2019-01-28 12:13:25 +01:00
antirez
4b9b128c49
ACL: remove leak when removing passwords/patterns.
2019-01-28 12:11:11 +01:00
Salvatore Sanfilippo
4e6abe2bbb
Merge pull request #5808 from ArkayZheng/ArkayWork
...
Fix the output of serverLog in replication.c
2019-01-27 12:16:14 +01:00
antirez
af72a31490
ACL: fix command bit check.
2019-01-26 12:51:43 +01:00
ArkayZheng
76f20729fc
Fix the output bug in rename exceptions.
2019-01-25 21:48:23 +08:00
antirez
b7750a936f
ACL: remove the ALLCOMMANDS user flag at a safer place.
...
This fixes -@<category> as a side effect.
2019-01-25 13:27:33 +01:00
antirez
eb840f9bc5
ACL: fix command ID assignment off by one error.
2019-01-25 13:07:20 +01:00
antirez
53ba09e08a
ACL: remove useless NULL check.
2019-01-25 13:00:49 +01:00
antirez
d5fe17dc11
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2019-01-25 13:00:30 +01:00
Salvatore Sanfilippo
1aa9fa37e3
Merge pull request #5806 from soloestoy/bugfix-acl-check-key-pattern
...
Bugfix in ACLCheckCommandPerm
2019-01-25 13:00:17 +01:00
zhaozhao.zz
0de83bcc62
ACL: fix memory leak when key patterns no match
2019-01-25 19:35:18 +08:00
zhaozhao.zz
8fc0079366
ACL: check patterns instead of passwords in ACLCheckCommandPerm
2019-01-25 19:06:18 +08:00
antirez
b82d356883
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2019-01-25 11:47:50 +01:00
Salvatore Sanfilippo
5cc3b557f6
Merge pull request #5804 from artix75/dev
...
Cluster Manager: remove unused code elements
2019-01-25 11:47:45 +01:00
antirez
510327df0b
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2019-01-25 11:27:34 +01:00
Salvatore Sanfilippo
e545b30f97
Merge pull request #5801 from soloestoy/fix-getuser-null-pointer
...
ACL: fix null pointer in getuser
2019-01-25 11:27:21 +01:00
antirez
7b4f3cc33a
ACL: + and - opcode for categories implemented.
2019-01-24 18:15:46 +01:00
antirez
e8bf9b03ed
ACL: ACLSetUserCommandBitsForCategory() low level API.
2019-01-24 18:11:09 +01:00
artix
9fb160b130
Cluster Manager: remove unused code elements
2019-01-24 17:29:44 +01:00
antirez
f99e0f59ef
ACL: populate category flags from command table.
2019-01-23 16:59:09 +01:00
zhaozhao.zz
496497f81a
ACL: fix null pointer in getuser
2019-01-23 23:57:18 +08:00
antirez
91ec53ed13
ACL: define category names and flags.
2019-01-23 16:47:29 +01:00
antirez
c5e717c637
ACL: command categories added to the command table.
2019-01-23 12:15:10 +01:00
antirez
b8ff73894a
ACL: improve top comments of the command table.
2019-01-23 11:21:02 +01:00
antirez
932a1196d8
ACL: mark more commands as read-only commands.
2019-01-23 11:14:39 +01:00
antirez
effb84be17
ACL: specify better the +@all semantics in comments.
2019-01-23 11:05:54 +01:00
Guy Benoish
2502956835
ZPOP should return an empty array if COUNT=0
2019-01-23 11:11:57 +02:00
antirez
b270322ff9
ACL: ACLUserCanExecuteFutureCommands() function added.
2019-01-23 08:14:56 +01:00
antirez
70e541b7bc
ACL: better define name, and the idea of reserved ID.
2019-01-23 08:10:57 +01:00
antirez
711e514ea4
ACL: update comments in command flags.
2019-01-22 19:02:50 +01:00
antirez
e97481d4f4
ACL: remove no longer existing flag from comment.
2019-01-22 17:57:20 +01:00
antirez
82d194c1ab
ACL: populate command table with new flags.
2019-01-22 17:57:20 +01:00
antirez
9e4fb96ca1
ACL: review of Redis command table and new flags format.
...
However the code is yet not able to parse the new flags format.
2019-01-22 17:57:20 +01:00
antirez
561661b145
ACL: setuser nocommands / -@all implemented.
2019-01-22 17:57:20 +01:00
antirez
8dfeb4fba1
ACL: setuser reset implemented.
2019-01-22 17:57:20 +01:00
antirez
9e5c38282b
ACL: setuser resetkeys implemented.
2019-01-22 17:57:20 +01:00
antirez
2263d6e173
ACL: specify better the command denied error.
2019-01-22 17:57:20 +01:00
antirez
53321c3c2c
ACL: subcommand matching.
2019-01-22 17:57:20 +01:00
antirez
4078755ddb
ACL: setting single commands ACLs implementation.
2019-01-22 17:57:20 +01:00
antirez
10f121295c
ACL: GetUserCommandBit() is a much better name for the function.
2019-01-22 17:57:20 +01:00
antirez
48eeec5fb4
ACL: user commands bitmap check refactoring for new features.
2019-01-22 17:57:20 +01:00
antirez
dbdc68a658
ACL: handle command IDs in case insensitive way.
2019-01-22 17:57:20 +01:00
Salvatore Sanfilippo
94460440b7
Merge pull request #5743 from AngusP/forever-repeat-cli
...
Redis CLI: Fix broken interval and repeat behaviour (incluing in cluster mode)
2019-01-22 17:29:37 +01:00
Salvatore Sanfilippo
ed356c3a79
Merge pull request #5795 from zhicheng/fix-double-free-issue
...
fix clusterManagerGetAntiAffinityScore double free otypes
2019-01-22 17:28:45 +01:00
Salvatore Sanfilippo
7c53e5bdc4
Merge pull request #5796 from soloestoy/fix-acl-compile-warning
...
ACL: fix compile warnings
2019-01-21 17:14:04 +01:00
antirez
4dc69497f5
Refactoring: always kill AOF/RDB child via helper functions.
2019-01-21 11:28:44 +01:00
Salvatore Sanfilippo
adfaf548e3
Merge branch 'unstable' into fixChildInfoPipeFdLeak
2019-01-21 11:20:56 +01:00
antirez
cfdc800a5f
Remove non semantical newline space from PR #5797 .
2019-01-21 11:15:48 +01:00
Salvatore Sanfilippo
9f939610f3
Merge pull request #5797 from trevor211/fixUpdateDictResizePolicy
...
Fix update dict resize policy
2019-01-21 11:14:48 +01:00
WuYunlong
440385de14
Fix child info pipe fd leak when child process gets killed.
2019-01-21 17:48:45 +08:00
WuYunlong
f004a3e7ff
Update dict resize policy when rdb child process gets killed.
2019-01-21 17:33:18 +08:00
WuYunlong
3f0c2b1fa2
Update dict resize policy when aof rewrite process gets killed.
2019-01-21 17:27:36 +08:00
zhaozhao.zz
ab1992c9c6
ACL: fix compile warnings
2019-01-21 14:53:46 +08:00
Zhicheng Wei
c90cf3d82f
fix clusterManagerGetAntiAffinityScore double free otypes
2019-01-19 11:38:36 +08:00
antirez
c8391388c2
ACL: remove server.requirepass + some refactoring.
2019-01-18 11:49:30 +01:00
antirez
7de6e30241
ACL: fix config get requirepass.
2019-01-18 11:30:40 +01:00
antirez
ac6e49de48
ACL: implement resetpass directive and adjust test.
2019-01-18 11:26:32 +01:00
antirez
2c66c525f9
ACL: configure the master connection without user.
2019-01-17 18:33:36 +01:00
antirez
b87815c1f8
ACL: AUTH + no default user password raises an error.
...
This way the behavior is very similar to the past one.
This is useful in order to remember the user she probably failed to
configure a password correctly.
2019-01-17 18:30:23 +01:00
antirez
636424c0ce
ACL: change requirepass stop condition to use ACLs.
2019-01-17 18:22:22 +01:00
antirez
0526d1538b
ACL: partial implementation of ACL GETUSER.
2019-01-17 18:19:04 +01:00
antirez
7b65605ab2
ACL: reimplement requirepass option in term of ACLs.
2019-01-17 18:05:43 +01:00
antirez
4a3419acfc
ACL: fix and improve ACL key checking.
2019-01-16 18:31:05 +01:00
antirez
dbae371090
ACL: create the user pattern list ASAP.
2019-01-16 13:50:00 +01:00
antirez
f78b3ede27
ACL: key matching implemented.
2019-01-16 13:39:04 +01:00
antirez
0db42d4ba8
ACL: implement the key match opcode in ACLSetUser().
2019-01-16 13:29:04 +01:00
zhaozhao.zz
645d44d545
Streams: checkType before XGROUP CREATE
...
Fix issue #5785 , in case create group on a key is not stream.
2019-01-16 19:19:14 +08:00
antirez
ff92c06947
ACL: fix command exec check by returning.
2019-01-15 18:28:43 +01:00
antirez
c79b01f4ba
ACL: the AUTH command can be always executed.
2019-01-15 18:26:44 +01:00
antirez
cca64672f4
ACL: AUTH uses users. ACL WHOAMI implemented.
2019-01-15 18:16:20 +01:00
antirez
35fe59935e
ACL: automatically authenticate the nopass default user.
2019-01-15 17:57:49 +01:00
antirez
52e9922987
ACL: AUTH command new form, using the ACL subsystem.
2019-01-15 13:45:16 +01:00
antirez
b39409bcf8
ACL: nopass user setting.
...
This is needed in order to model the current behavior of authenticating
the connection directly when no password is set. Now with ACLs this will
be obtained by setting the default user as "nopass" user. Moreover this
flag can be used in order to create other users that do not require any
password but will work with "AUTH username <any-password>".
2019-01-15 13:16:31 +01:00
antirez
4f7ff85b88
ACL: ability to set/remove user passwords.
2019-01-15 12:58:54 +01:00
antirez
7aea02fa87
ACL: initial implementation of the ACL command.
2019-01-15 09:36:12 +01:00
antirez
a2e376ba52
ACL: ACLCheckCommandPerm() implementation WIP.
2019-01-14 18:35:21 +01:00
antirez
733438fe23
RESP3: Populate new fields for the AOF fake client.
...
However we should remove this fake client ad-hoc creation, and replace
it with the proper call to createClient(-1), and then adjust the fake
client as we like.
2019-01-14 17:01:49 +01:00
antirez
09391369b8
ACL: fix field name typo causing segfault.
2019-01-14 16:09:29 +01:00
antirez
a0a4fb85ff
ACL: Fix compilation by adding prototype and c->cmd fix.
2019-01-14 13:22:56 +01:00
antirez
2da2e452ab
ACL: ACLLCOMMAND flags.
2019-01-14 13:21:21 +01:00
antirez
648411eb7d
ACL: Add hook in processCommand() to check the ACLs before call().
2019-01-14 13:20:45 +01:00
antirez
f95152d4c8
ACL: Add skeleton for function checking ability to execute a command.
2019-01-14 13:19:50 +01:00
antirez
4376575d83
ACL: ACLSetUser(), add allcommands in comment.
2019-01-14 13:19:42 +01:00
antirez
67754ae021
ACL: ACLSetUser(), fix flag and add allcommands +@all opcode.
2019-01-14 13:18:12 +01:00
antirez
e7d15e4820
ACL: implement to first trivial opcodes in ACLSetUser().
2019-01-11 13:03:50 +01:00
antirez
aced0328e3
ACL: avoid a radix tree lookup for the default user.
2019-01-11 11:32:41 +01:00
antirez
7f8314760a
ACL: modify comment from PR.
2019-01-11 11:30:09 +01:00
Salvatore Sanfilippo
6078d85b52
Merge pull request #5769 from charsyam/feature/fix-segmentfault-when-server-starts
...
fix segmentfault when server start in unstable branch
2019-01-11 11:27:09 +01:00
antirez
4b72d087e9
ACL: ACLSetUser(), initial ideas in comments.
2019-01-11 11:25:55 +01:00
charsyam
45952df700
fix segmentfault when server start
2019-01-11 19:12:06 +09:00
antirez
dc4f7ad106
ACL: create the default user.
2019-01-11 11:02:55 +01:00
antirez
6bb6a6d3a8
ACL: implement ACLCreateUser().
2019-01-10 17:01:12 +01:00
antirez
e4846b028d
ACL: implement ACLGetUserByName().
2019-01-10 16:40:45 +01:00
antirez
29c88a9ce5
ACL: initialization function.
2019-01-10 16:39:32 +01:00
antirez
e9a902a958
ACL: split acl.c into clear sections.
2019-01-10 16:35:55 +01:00
antirez
4278104acc
ACL: add a reference to the user in each client.
2019-01-10 16:34:13 +01:00
antirez
4729f71495
ACL: improved version of the user structure.
2019-01-10 12:47:52 +01:00
antirez
45ff9f33d6
ACL: ACLCheckUserCredentials() next id should be static.
2019-01-09 21:47:43 +01:00
antirez
7fc882c578
ACL: use a fixed table for command IDs.
2019-01-09 21:31:29 +01:00
antirez
010b24f864
ACL: set the command ID while populating the commands table.
2019-01-09 17:23:23 +01:00
antirez
91f1d8026b
ACL: introduce the concept of command ID.
2019-01-09 17:20:47 +01:00
antirez
42271cff2d
ACL: fix ACLCheckUserCredentials() usage in AUTH.
2019-01-09 17:09:30 +01:00
antirez
f5d918b2bb
ACL: HELLO should stop if the user is not authenticated.
2019-01-09 17:00:30 +01:00
antirez
b43d70df56
ACL: refactoring of the original authentication code.
2019-01-09 17:00:30 +01:00
antirez
4d80b0e965
RESP3: allow HELLO during busy script and not authenticated states.
2019-01-09 17:00:30 +01:00
antirez
9018388c3f
RESP3: Allow any command in RESP3 Pub/Sub mode.
2019-01-09 17:00:30 +01:00
antirez
a4f8f4a824
RESP3: PING should reply normally in RESP3 Pub/Sub mode.
...
Because in RESP3 commands can be sent in the Pub/Sub connection without
problems, so it's better if in such mode there is no exception about
PING.
2019-01-09 17:00:30 +01:00
antirez
eaaac08892
RESP3: Pubsub messages in new push format if client is in RESP3 mode.
2019-01-09 17:00:30 +01:00
antirez
bc75a94e2d
RESP3: pubsub messages API completely refactored.
2019-01-09 17:00:30 +01:00
antirez
798a329192
RESP3: extract code to send pubsub messages into functions.
2019-01-09 17:00:30 +01:00
antirez
709a6612eb
RESP3: addReplyString() -> addReplyProto().
...
The function naming was totally nuts. Let's fix it as we break PRs
anyway with RESP3 refactoring and changes.
2019-01-09 17:00:30 +01:00
antirez
7d4b600f5d
RESP3: redis-cli support for boolean in TTY output.
2019-01-09 17:00:30 +01:00
antirez
e291170385
RESP3: verbatim reply API + DEBUG PROTOCOL support.
2019-01-09 17:00:30 +01:00
antirez
afba211297
RESP3: DEBUG PROTOCOL: boolean types.
2019-01-09 17:00:30 +01:00
antirez
8042afb246
RESP3: Fix addReplyBool() RESP2/3 output.
2019-01-09 17:00:30 +01:00
antirez
4e2dd54df0
RESP3: DEBUG PROTOCOL: fix strcasecmp() check.
2019-01-09 17:00:30 +01:00
antirez
795ad670f9
RESP3: DEBUG PROTOCOL command. Only types already supported by API.
2019-01-09 17:00:30 +01:00
antirez
c3bf646ef3
RESP3: fix DEBUG DIGEST-VALUE with new API.
2019-01-09 17:00:30 +01:00
antirez
62b2642c51
RESP3: redis-cli: show the double as received from Redis.
2019-01-09 17:00:30 +01:00
antirez
a2b2d88f38
RESP3: hiredis: initial double implementation.
2019-01-09 17:00:30 +01:00
antirez
005915b5c3
RESP3: hiredis: map and set display for TTY output.
2019-01-09 17:00:30 +01:00
antirez
809e3a44a7
RESP3: addReplyBool() implemented.
2019-01-09 17:00:29 +01:00
antirez
4f0860cbfd
RESP3: initial implementation of the HELLO command.
2019-01-09 17:00:29 +01:00
antirez
e5fdd6b6bf
RESP3: fix HMGET bug introduced with RESP3 changes.
2019-01-09 17:00:29 +01:00
antirez
0652b05caf
RESP3: fix genericHgetallCommand() assert.
2019-01-09 17:00:29 +01:00
antirez
c2e5be0421
RESP3: fix zrangeGenericCommand() proto dependent array len.
2019-01-09 17:00:29 +01:00
antirez
8a0391fbc9
RESP3: t_stream.c updated.
2019-01-09 17:00:29 +01:00
antirez
baf5b3f93a
RESP3: module.c updated.
2019-01-09 17:00:29 +01:00
antirez
920611a419
RESP3: latency.c updated.
2019-01-09 17:00:29 +01:00
antirez
ddb98ad56f
RESP3: hyperloglog.c updated.
2019-01-09 17:00:29 +01:00
antirez
3fd78f41e8
RESP3: restore the concept of null array for RESP2 compat.
2019-01-09 17:00:29 +01:00
antirez
2ad6e875ba
RESP3: add shared.nullarray for better RESP2 compat.
2019-01-09 17:00:29 +01:00
antirez
1a17cdfadf
RESP3: addReplyNullArray() added for better RESP2 compat.
2019-01-09 17:00:29 +01:00
antirez
86c30a92f9
RESP3: geo.c updated.
2019-01-09 17:00:29 +01:00
antirez
071da9844c
RESP3: blocked.c updated.
2019-01-09 17:00:29 +01:00
antirez
9705c12d85
RESP3: sentinel.c updated.
2019-01-09 17:00:29 +01:00
antirez
3a3d806989
RESP3: bitops.c updated.
2019-01-09 17:00:29 +01:00
antirez
317f8b9d38
RESP3: most null replies converted.
2019-01-09 17:00:29 +01:00
antirez
1b7298e66a
RESP3: addReplyNull() added.
2019-01-09 17:00:29 +01:00
antirez
fc9a3de97d
RESP3: remove other pointless shared object.
2019-01-09 17:00:29 +01:00
antirez
b7e8b734c9
RESP3: remove certain constants to spot places to fix.
2019-01-09 17:00:29 +01:00
antirez
a1feda2388
RESP3: Scripting RESP3 mode set/map protocol -> Lua conversion.
2019-01-09 17:00:29 +01:00
antirez
9330bcc7ee
RESP3: Fix API in scripting.c leaving Lua conversions RESP2.
2019-01-09 17:00:29 +01:00
antirez
f07f3d729f
RESP3: Use new aggregate reply API in slowlog.c.
2019-01-09 17:00:29 +01:00
antirez
feb6b31832
RESP3: Use new aggregate reply API in t_set.c.
2019-01-09 17:00:29 +01:00
antirez
dcbd40cea4
RESP3: Use new aggregate reply API in cluster.c.
2019-01-09 17:00:29 +01:00
antirez
c7f80e4f1a
RESP3: Make WITHSCORES reply back with a flat array in RESP2.
2019-01-09 17:00:29 +01:00
antirez
fe67418ba4
RESP3: Use new deferred len API in object.c.
2019-01-09 17:00:29 +01:00
antirez
13966522ea
RESP3: bring RESP2 compatibility to previous changes.
2019-01-09 17:00:29 +01:00
antirez
e14aabf936
RESP3: addReply*Len() support for RESP2 backward comp.
2019-01-09 17:00:29 +01:00
antirez
1ac6926647
RESP3: put RESP version in the client structure.
2019-01-09 17:00:29 +01:00
antirez
f44e00b691
RESP3: Use new API and types in t_hash.c.
2019-01-09 17:00:29 +01:00
antirez
b507654716
RESP3: Use new deferred len API in dict.c.
2019-01-09 17:00:29 +01:00
antirez
cdd10193c5
RESP3: Use new deferred len API in config.c.
2019-01-09 17:00:29 +01:00
antirez
470c28380f
RESP3: Use new deferred len API in t_zset.c.
2019-01-09 17:00:29 +01:00
antirez
a577230a58
RESP3: Use new deferred len API in t_string.c.
2019-01-09 17:00:29 +01:00
antirez
07bce54093
RESP3: Use new deferred len API in replication.c.
2019-01-09 17:00:29 +01:00
antirez
073293693e
RESP3: Use new deferred len API in server.c.
2019-01-09 17:00:29 +01:00
antirez
57c5a766a2
RESP3: Aggregate deferred lengths functions.
2019-01-09 17:00:29 +01:00
antirez
914ee43108
RESP3: Double replies and aggregate lengths initial functions.
2019-01-09 17:00:29 +01:00
Salvatore Sanfilippo
14400d073b
Merge pull request #5729 from artix75/cluster_manager_fix_cmd
...
Cluster Manager del-node: use CLUSTER RESET in place of SHUTDOWN
2019-01-09 10:11:27 +01:00
chenyangyang
30d8d05cd6
Update ae.c
...
Update comment
2019-01-06 15:01:25 +08:00
Angus Pearson
2925bdc63b
Add comment explaining negative repeat
2019-01-02 19:28:04 +00:00
Angus Pearson
2f6ed9333f
Fix broken interval and repeat bahaviour in redis-cli (incluing cluster mode)
...
This addresses two problems, one where infinite (negative) repeat count is broken for all types for Redis,
and another specific to cluster mode where redirection is needed.
Now allows and works correctly for negative (i.e. -1) repeat values passed with `-r` argument to redis-cli
as documented here https://redis.io/topics/rediscli#continuously-run-the-same-command which seems to have
regressed as a feature in 95b988 (though that commit removed bad integer wrap-around to `0` behaviour).
This broken behaviour exists currently (e50458), and redis-cli will just exit immediately with repeat `-r <= 0`
as opposed to send commands indefinitely as it should with `-r < 0`
Additionally prevents a repeat * interval seconds hang/time spent doing nothing at the start before issuing
commands in cluster mode (`-c`), where the command needed to redirect to a slot on another node, as commands
where failing and waiting to be reissued but this was fully repeated before being reissued. For example,
redis-cli -c -r 10 -i 0.5 INCR test_key_not_on_6379
Would hang and show nothing for 5 seconds (10 * 0.5) before showing
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5
(integer) 6
(integer) 7
(integer) 8
(integer) 9
(integer) 10
at half second intervals as intended.
2019-01-02 18:50:58 +00:00
Bruce Merry
6b818efeb6
Make dbSwapDatabases take args as long
...
This prevents an integer overflow bug. Closes #5737 .
2018-12-31 11:51:03 +02:00
artix
17797660f1
Cluster Manager del-node: use CLUSTER RESET in place of SHUTDOWN
...
See issue #5687
2018-12-27 17:20:42 +01:00
antirez
8a87de130f
Modules shared API: export new core APIs.
2018-12-20 17:57:49 +01:00
antirez
d3eb0028e9
Modules shared API: also unregister the module as user.
2018-12-20 17:57:46 +01:00
antirez
9403b3d7a3
Modules shared API: prevent unloading of used modules.
2018-12-20 17:57:43 +01:00
antirez
6bb8cdaebe
Modules shared API: unregister APIs function.
2018-12-20 17:57:40 +01:00
antirez
27f6e9bb9b
Modules shared API: initial core functions.
...
Based on ideas and code in PR #5560 by @MeirShpilraien.
2018-12-20 17:57:35 +01:00
antirez
850b64c116
Revert shared APIs to modify the design.
2018-12-20 17:56:38 +01:00
MeirShpilraien
ab37289fa6
added module ability to register api to be used by other modules
2018-12-20 17:55:18 +01:00
artix
503fd229e4
Cluster Manager: enable --cluster-replace also for 'fix' command.
2018-12-19 17:29:25 +01:00
artix
cc29590188
Fixed memory leak in clusterManagerCompareKeysValues.
2018-12-18 18:45:10 +01:00
artix
143bfa1e6e
Cluster Manager: compare key values after BUSYKEY error (migration).
...
If a key exists in the target node during a migration (BUSYKEY),
the value of the key on both nodes (source and target) will be compared.
If the key has the same value on both keys, the migration will be
automatically retried with the REPLACE argument in order to override
the target's key.
If the key has different values, the behaviour will depend on such
cases:
- In case of 'fix' command, the migration will stop and the user
will be warned to manually check the key(s).
- In other cases (ie. reshard), if the user launched the command
with the --cluster-replace option, the migration will be
retried with the REPLACE argument, elsewhere the migration will
stop and the user will be warned.
2018-12-18 17:45:35 +01:00
Guy Benoish
ed88f77d6d
Check server.verbosity in RM_LogRaw
2018-12-13 13:57:38 +01:00
artix
d935cfcb89
Cluster Manager: avoid using reply error messages to check slot status.
...
Slot assignment status is now checked by using CLUSTER SLOTS.
Furthermore, one memory leak has been fixed.
2018-12-12 13:34:43 +01:00
antirez
129f2d2746
freeMemoryIfNeeded() small refactoring.
...
Related to issue #5686 and PR #5689 .
2018-12-12 11:37:15 +01:00
Salvatore Sanfilippo
7ae184bfea
Merge pull request #5689 from soloestoy/donot-evict-when-AOF-loading
...
evict: don't care about mem if loading
2018-12-12 11:29:10 +01:00
antirez
03e2bb0cfd
Crashing is too much in addReplyErrorLength().
...
See #5663 .
2018-12-11 17:50:18 +01:00
zhaozhao.zz
b9cd89d108
evict: don't care about mem if loading
...
When loading data, we call processEventsWhileBlocked
to process events and execute commands.
But if we are loading AOF it's dangerous, because
processCommand would call freeMemoryIfNeeded to evict,
and that will break data consistency, see issue #5686 .
2018-12-12 00:25:58 +08:00
antirez
0110e46f6e
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-12-11 13:30:04 +01:00
antirez
a31ca8d753
stringmatchlen() fuzz test added.
...
Verified to be able to trigger at least #5632 . Does not report other
issues.
2018-12-11 13:29:30 +01:00
antirez
c710d4afdc
Fix stringmatchlen() read past buffer bug.
...
See #5632 .
2018-12-11 13:18:52 +01:00
Salvatore Sanfilippo
f77edf4234
Merge pull request #5665 from louiszhw/unstable
...
fix comments fault discription
2018-12-11 13:03:09 +01:00
Salvatore Sanfilippo
e8529d1b1e
Merge pull request #4264 from lsytj0413/unstable
...
fix a typo: craeted -> created
2018-12-11 13:02:28 +01:00
zhaozhao.zz
6100be7d82
fix typo
2018-12-11 19:53:54 +08:00
zhaozhao.zz
1530c0a7dd
multi: ignore multiState's cmd_flags when loading AOF
2018-12-11 19:47:36 +08:00
antirez
274531396c
Reject EXEC containing write commands against RO replica.
...
Thanks to @soloestoy for discovering this issue in #5667 .
This is an alternative fix in order to avoid both cycling the clients
and also disconnecting clients just having valid read-only transactions
pending.
2018-12-11 11:39:21 +01:00
artix
27ddb2ba3a
Cluster Manager:
...
- Multiple owners checking in 'fix'/'check' commands is now
optional (using --cluster-search-multiple-owners).
- Updated help.
2018-12-10 18:01:18 +01:00
artix
0c1336caf4
Cluster Manager:
...
- FixOpenSlot now correctly updates in-memory cluster configuration.
- Improved output messages.
2018-12-10 17:43:58 +01:00
artix
1a56fc913e
Cluster Manager: 'fix' command now handles open slots with migrating state
...
in one node and importing state in multiple nodes.
2018-12-10 17:43:58 +01:00
artix
d5f7703367
Cluster Manager: setting new slot owner is now handled atomically
...
in 'fix' command.
2018-12-10 17:43:58 +01:00
artix
eaac9f9e93
Cluster Manager: code cleanup.
2018-12-10 17:43:58 +01:00
artix
5bf13eaaf8
Cluster Manager: check/fix commands now handle multiple owners even if
...
all slots are covered and not open.
2018-12-10 17:39:54 +01:00
Salvatore Sanfilippo
5bfd8ae253
Merge pull request #5626 from soloestoy/remove-useless-code
...
remove useless tryObjectEncoding in debug assert
2018-12-07 17:09:56 +01:00
Salvatore Sanfilippo
03629ba0b6
Merge pull request #5633 from oranagra/frag_bytes_signed
...
fix #5580 , display fragmentation and rss overhead bytes as signed
2018-12-07 17:09:10 +01:00
antirez
cdab4c3e09
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-12-07 17:07:14 +01:00
antirez
7e0cc2bb91
Remove no longer relevant comment in processCommand().
2018-12-07 17:06:55 +01:00
Salvatore Sanfilippo
c6341ce373
Merge pull request #5673 from soloestoy/check-current-client-after-freememory
...
networking: current_client should not be NULL when trim qb_pos
2018-12-07 17:03:48 +01:00
antirez
5a0b7212c9
DEBUG DIGEST-VALUE implemented.
2018-12-07 16:41:54 +01:00
antirez
e9400e8efd
DEBUG DIGEST refactoring: extract function to digest a value.
2018-12-07 16:30:33 +01:00
zhaozhao.zz
28c4281495
networking: current_client should not be NULL when trim qb_pos
2018-12-07 19:14:33 +08:00
yura
74f942cfa5
redis-cli reshard/rebalance: ability to force replacement on existing keys
2018-12-07 14:14:11 +03:00
Salvatore Sanfilippo
9f87ef9399
Merge pull request #5460 from krallin/env-password
...
cli: pass auth through REDISCLI_AUTH
2018-12-07 11:30:07 +01:00
Salvatore Sanfilippo
75c181ee2b
Merge pull request #5664 from yongman/fix-rediscli-output-format
...
Fix cluster call reply format readable
2018-12-07 11:28:18 +01:00
lsytj0413
6aa9606995
fix a typo: craeted -> created
2018-12-06 11:08:59 +08:00
hdmg
b1e35d3244
fix comments fault discription
2018-12-05 17:15:02 +08:00
yongman
dfe81b33fe
Fix cluster call reply format readable
2018-12-04 17:36:42 +08:00
Madelyn Olson
e2c1f80b46
Fixed a serverPanic when sending an invalid command to a monitor client
2018-12-04 07:17:17 +00:00
Oran Agra
b587c54c24
fix #5580 , display fragmentation and rss overhead bytes as signed
...
these metrics become negative when RSS is smaller than the used_memory.
This can easily happen when the program allocated a lot of memory and haven't
written to it yet, in which case the kernel doesn't allocate any pages to the process
2018-12-02 15:29:20 +02:00
zhaozhao.zz
0da171b3a6
remove useless tryObjectEncoding in debug assert
2018-11-30 12:05:46 +08:00
Salvatore Sanfilippo
4c544394eb
Merge pull request #5562 from soloestoy/memory-usage-more-accurate
...
MEMORY command: make USAGE more accurate
2018-11-28 18:16:04 +01:00
Salvatore Sanfilippo
04a5189b50
Merge pull request #5594 from yongman/fix-rediscli-fixcoverage
...
Fix choose a random master node for slot assignment
2018-11-28 18:13:04 +01:00
zhaozhao.zz
d56c631343
MEMORY command: make USAGE more accurate
...
In MEMORY USAGE command, we count the key argv[2] into usage,
but the argument in command may contains free spaces because of
sdsMakeRoomFor. But the key in db never contains free spaces
because we use sdsdup when dbAdd, so using the real key to
count the usage is more accurate.
2018-11-29 01:01:51 +08:00
Salvatore Sanfilippo
d403208d51
Merge pull request #5572 from Weiliang-Li/patch3-util
...
fix comment typo in util.c
2018-11-28 17:14:21 +01:00
Salvatore Sanfilippo
ef00633759
Merge pull request #5597 from lamby/clarify-socket-creation-error-message
...
Clarify the "Creating Server TCP listening socket" error message
2018-11-28 17:06:51 +01:00
Salvatore Sanfilippo
1eca933d6f
Merge pull request #5598 from lamby/dont-treat-unsupported-protocols-as-fatal-errors
...
Don't treat unsupported protocols as fatal errors
2018-11-28 17:06:17 +01:00
Salvatore Sanfilippo
1dd8d2c7ef
Merge pull request #5599 from devnexen/backtrace_support_on_bsd
...
Backtrace/register dump on BSD.
2018-11-28 17:01:33 +01:00
Salvatore Sanfilippo
6a6471aad5
Merge pull request #4737 from guybe7/zlexcount_fix
...
Don't call sdscmp() with shared.maxstring or shared.minstring
2018-11-28 16:53:32 +01:00
antirez
edd3939bef
Abort instead of crashing when loading bad stream master key.
...
See #5612 .
2018-11-28 16:24:53 +01:00
David Carlier
ac086b1932
OpenBSD support.
...
Special treatment here as backtrace support is optional,
cannot be found via pkg-config and similar neither.
2018-11-25 08:10:26 +00:00
David Carlier
69ca907868
Backtrace/register dump on BSD.
...
FreeBSD/DragonFlyBSD does have backtrace only it does not
belong to libc.
2018-11-25 07:21:56 +00:00
Chris Lamb
fbff351406
Don't treat unsupported protocols as fatal errors
...
If we encounter an unsupported protocol in the "bind" list, don't
ipso-facto consider it a fatal error. We continue to abort startup if
there are no listening sockets at all.
This ensures that the lack of IPv6 support does not prevent Redis from
starting on Debian where we try to bind to the ::1 interface by default
(via "bind 127.0.0.1 ::1"). A machine with IPv6 disabled (such as some
container systems) would simply fail to start Redis after the initiall
call to apt(8).
This is similar to the case for where "bind" is not specified:
https://github.com/antirez/redis/issues/3894
... and was based on the corresponding PR:
https://github.com/antirez/redis/pull/4108
... but also adds EADDRNOTAVAIL to the list of errors to catch which I
believe is missing from there.
This issue was raised in Debian as both <https://bugs.debian.org/900284 >
& <https://bugs.debian.org/914354 >.
2018-11-23 18:01:12 +01:00
Chris Lamb
9cfcf37968
Clarify the "Creating Server TCP listening socket" error.
...
This really helps spot it in the logs, otherwise it does not look like a
warning/error. For example:
Creating Server TCP listening socket ::1:6379: bind: Cannot assign requested address
... is not nearly as clear as:
Could not create server TCP listening listening socket ::1:6379: bind: Cannot assign requested address
2018-11-23 17:57:01 +01:00
yongman
221dfbd322
fix typo
2018-11-23 23:51:16 +08:00
yongman
2961c89161
Fix choose a random master node for slot assignment
2018-11-23 16:58:55 +08:00
Salvatore Sanfilippo
0c12ebf6e7
Merge pull request #5553 from devnexen/dflybsd_build_fix
...
DragonFlyBSD little build fix
2018-11-22 11:16:30 +01:00
yongman
2f76829dc7
skip slave nodes when sending cluster setslot command
2018-11-21 23:01:35 +08:00
Salvatore Sanfilippo
8acc07e6f0
Merge pull request #5579 from yongman/fix-rediscli-pointer-access
...
Fix pointer access and memory leak in redis-cli.
2018-11-20 10:38:59 +01:00
antirez
2bd6802fa1
Stream: fix XREADGROUP history reading of deleted messages.
...
This commit fixes #5570 . It is a similar bug to one fixed a few weeks
ago and is due to the range API to be called with NULL as "end ID"
parameter instead of repeating again the start ID, to be sure that we
selectively issue the entry with a given ID, or we get zero returned
(and we know we should emit a NULL reply).
2018-11-19 17:00:34 +01:00
antirez
18d0759b14
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-11-19 16:51:09 +01:00
antirez
29251f58e2
Streams: fix XREADGROUP history reading when CG last_id is low.
...
This fixes the issue reported in #5570 .
This was fixed the hard way, that is, propagating more information to
the lower level API about this being a request to read just the history,
so that the code is simpler and less likely to regress.
2018-11-19 16:41:27 +01:00
antirez
3830ef2483
t_stream.c comment resized to 80 cols.
2018-11-19 16:26:02 +01:00
yongman
64324901f2
Fix pointer access and memory leak in redis-cli.
2018-11-16 17:27:27 +08:00
Weiliang Li
cabc06076b
fix comment typo in util.c
...
fix comment typo in util.c
2018-11-15 16:55:40 +08:00
David Carlier
4e0af5efd4
DragonFlyBSD little build fix
2018-11-11 18:49:55 +00:00
Salvatore Sanfilippo
7721fe83e9
Merge pull request #5507 from devnexen/clang_build_fix_warnings
...
Fix clang build.
2018-11-08 12:12:28 +01:00
David Carlier
1d98666327
only FreeBSD change/little warning addressing
2018-11-08 10:13:52 +00:00
antirez
0cb798ea2b
Fix cluster-replica-no-failover option name.
...
Thanks to @NicolasLM, see issue #5537 .
2018-11-07 12:54:46 +01:00
antirez
560cdf359f
MEMORY command: make strcasecmp() conditional like the following.
2018-11-06 18:15:51 +01:00
Salvatore Sanfilippo
249cd9381d
Merge pull request #4526 from itamarhaber/memory_help
...
Standardizes `MEMORY HELP` subcommand
2018-11-06 18:13:17 +01:00
Salvatore Sanfilippo
e93387c1d3
Merge pull request #5526 from valentino-redislabs/init-server-hz
...
fix short period of server.hz being uninitialised
2018-11-06 13:00:15 +01:00
Salvatore Sanfilippo
1423abd15b
Merge pull request #5520 from itamarhaber/latency_help
...
Adds HELP to LATENCY
2018-11-06 12:28:08 +01:00
Salvatore Sanfilippo
d9e822a14b
Merge pull request #5529 from yongman/fix-rediscli-malloc
...
fix zmalloc in clusterManagerComputeReshardTable
2018-11-06 12:05:24 +01:00
yongman
4e74d9cf55
fix malloc in clusterManagerComputeReshardTable
2018-11-06 10:51:19 +08:00
artix
3a2d82ae8e
Cluster Manager: removed unused var.
2018-11-05 14:19:45 +01:00
artix
18ddbf0352
Cluster Manager: further improvements to "fix":
...
- clusterManagerFixOpenSlot: ensure that the
slot is unassigned before ADDSLOTS
- clusterManagerFixSlotsCoverage: after cold
migration, the slot configuration
is now updated on all the nodes.
2018-11-05 14:15:31 +01:00
artix
d6f0a9ac72
Cluster Manager: fixed string parsing issue in clusterManagerGetConfigSignature
2018-11-05 14:15:22 +01:00
artix
2e9859cbfc
Cluster Manager: better fix subcommand.
2018-11-05 14:15:12 +01:00
artix
be3a9dbb6f
Cluster Manager: fixed typos in comments.
2018-11-05 14:15:01 +01:00
artix
ab270a9777
Cluster Manager: fixed 'DELSLOT' subcommand typo.
2018-11-05 14:14:45 +01:00
antirez
6ba50784b5
Fix XCLAIM missing entry bug.
...
This bug had a double effect:
1. Sometimes entries may not be emitted, producing broken protocol where
the array length was greater than the emitted entires, blocking the
client waiting for more data.
2. Some other time the right entry was claimed, but a wrong entry was
returned to the client.
This fix should correct both the instances.
2018-11-05 13:17:32 +01:00
antirez
514bbdd670
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-11-05 13:07:14 +01:00
antirez
e7c579e1fe
Improve streamReplyWithRange() top comment.
2018-11-05 13:06:01 +01:00
valentino
eae8d05826
fix short period of server.hz being uninitialized
...
server.hz was uninitialized between initServerConfig and initServer.
this can lead to someone (e.g. queued modules) doing createObject,
and accessing an uninitialized variable, that can potentially be 0,
and lead to a crash.
2018-11-05 12:01:26 +02:00
michael-grunder
5fa41e0c84
Use typedef'd mstime_t instead of time_t
...
This fixes an overflow on 32-bit systems.
2018-11-03 15:13:28 -07:00
Itamar Haber
e039c85bb4
Adds HELP to LATENCY
...
Signed-off-by: Itamar Haber <itamar@redislabs.com>
2018-11-02 22:58:16 +02:00
Guy Korland
48d8b3d8ac
Fix some typos
2018-10-31 17:33:53 +02:00
antirez
fa675256c1
Add support for Sentinel authentication.
...
So far it was not possible to setup Sentinel with authentication
enabled. This commit introduces this feature: every Sentinel will try to
authenticate with other sentinels using the same password it is
configured to accept clients with.
So for instance if a Sentinel has a "requirepass" configuration
statemnet set to "foo", it will use the "foo" password to authenticate
with every other Sentinel it connects to. So basically to add the
"requirepass" to all the Sentinels configurations is enough in order to
make sure that:
1) Clients will require the password to access the Sentinels instances.
2) Each Sentinel will use the same password to connect and authenticate
with every other Sentinel in the group.
Related to #3279 and #3329 .
2018-10-31 12:56:47 +01:00
antirez
666b3437e6
Disable protected mode in Sentinel mode.
...
Sentinel must be exposed, so protected mode is just an issue for users
in case Redis was started in Sentinel mode.
Related to #3279 and #3329 .
2018-10-31 12:37:48 +01:00
antirez
06a4acb7d3
When replica kills a pending RDB save during SYNC, log it.
...
This logs what happens in the context of the fix in PR #5367 .
2018-10-31 11:47:10 +01:00
Salvatore Sanfilippo
6204d8c139
Merge pull request #5367 from nUl1/fullresync-stopbgsave
...
Prevent RDB autosave from overwriting full resync results
2018-10-31 11:42:04 +01:00
David Carlier
cf2f5e19d9
tweak form feedback
2018-10-31 09:53:07 +00:00
David Carlier
a21d1522c7
allow flavors
2018-10-30 14:38:05 +00:00
David Carlier
6534b3e09e
Fix clang build.
...
Some math functions require c11 standard.
2018-10-30 13:23:43 +00:00
antirez
0c875c7751
asyncCloseClientOnOutputBufferLimitReached(): don't free fake clients.
...
Fake clients are used in special situations and are not linked to the
normal clients list, freeing them will always result in Redis crashing
in one way or the other.
It's not common to send replies to fake clients, but we have one usage
in the modules API. When a client is blocked, we associate to the
blocked client object (that is safe to manipulate in a thread), a fake
client that accumulates replies. So because of this bug there was
the problem described in issue #5443 .
The fix was verified to work with the provided example module. To write
a regression is very hard and unlikely to be triggered in the future.
2018-10-30 13:38:41 +01:00
David Carlier
ae3bfe583e
needs it for the global
2018-10-26 14:12:47 +00:00
David Carlier
0b73d0a8d2
Fix non Linux build.
...
timezone global is a linux-ism whereas it is a function under BSD.
Here a helper to get the timezone value in a more portable manner.
2018-10-26 14:02:09 +00:00
antirez
b8febe60b4
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-10-25 13:08:58 +02:00
antirez
f5494b1862
Add command fingerprint comment for XSETID.
2018-10-25 13:08:48 +02:00
Salvatore Sanfilippo
6dde56bf93
Merge pull request #5454 from soloestoy/multi-oom
...
MULTI: OOM err if cannot free enough memory in MULTI/EXEC context
2018-10-25 13:00:19 +02:00
antirez
998001fbf2
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-10-25 11:50:15 +02:00
Salvatore Sanfilippo
12d5be1bf2
Merge pull request #5459 from itamarhaber/xpending_count_underflow
...
A fix to XPENDING's count underflow
2018-10-25 11:50:04 +02:00
antirez
6e11ef30e0
Fix XRANGE COUNT option for value of 0.
2018-10-25 11:36:24 +02:00
antirez
f06e8c331c
Fix typo in streamReplyWithRange() top comment.
2018-10-24 16:28:44 +02:00
Salvatore Sanfilippo
e8c108e938
Merge pull request #5469 from soloestoy/stat-key-miss-if-expired
...
if we read a expired key, misses++
2018-10-24 12:31:28 +02:00
Salvatore Sanfilippo
a2131f907a
Merge pull request #5453 from damz/pr/aof-buffer-evict
...
Overhead is the allocated size of the AOF buffer, not its length
2018-10-24 12:28:28 +02:00
antirez
8749fc3f67
Simplify part of the #5470 patch.
2018-10-24 12:26:27 +02:00
Salvatore Sanfilippo
3c89fb5ffd
Merge pull request #5470 from soloestoy/keys-no-trigger-expire
...
do not delete expired keys in KEYS command
2018-10-24 12:23:59 +02:00
antirez
54e8dd11ff
Use guide comments to make changes in #5462 more obvious.
2018-10-22 17:43:48 +02:00
antirez
0f18d8e0ed
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-10-22 17:41:43 +02:00
Salvatore Sanfilippo
3f6893a4e2
Merge pull request #5462 from youjiali1995/fix-migrate-expired-keys
...
migrate: fix mismatch of RESTORE reply when some keys have expired.
2018-10-22 17:40:37 +02:00
antirez
c33ef454f0
Remove useless complexity from MSET implementation.
2018-10-22 12:24:02 +02:00
Salvatore Sanfilippo
2f8912c36c
Merge pull request #5451 from hujiecs/unstable
...
several typos fixed, optimize MSETNX to avoid unnecessary loop
2018-10-22 12:17:08 +02:00
hujie
e610dbce14
fix typo in config.c
2018-10-21 10:37:36 +08:00
hujie
63e41ee192
fix typo
2018-10-20 12:18:56 +08:00
Thomas Orozco
f24ad5d831
cli: pass auth through REDISCLI_AUTH
...
This adds support for passing a password through a REDISCLI_AUTH
environment variable (which is safer than the CLI), which might often be
safer than passing it through a CLI argument.
Passing a password this way does not trigger the warning about passing a
password through CLI arguments, and CLI arguments take precedence over
it.
2018-10-19 19:15:14 +02:00
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 ba9154d7e7bf959b002533384319a1e90545447b
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
17c5f17686
Add log when server dies of SIGTERM during loading
...
this is very confusing to see the server disappears as if it got SIGKILL when it was not the case.
2018-08-13 17:43:29 +03: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
antirez
b9a8e56439
Merge branch 'removeRedundantCheck' of https://github.com/dsomeshwar/redis into unstable
2018-07-24 10:24:24 +02:00
antirez
b28cbe90e1
Restore string2ll() to original version.
...
See PR #5157 .
2018-07-24 10:22:12 +02:00
antirez
1a8d7cd9c2
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-07-24 00:21:49 +02:00
antirez
e8f5d21940
string2ll(): remove duplicated check for special case.
...
Related to #5157 . The PR author correctly indentified that the check was
duplicated, but removing the second one introduces a bug that was fixed
in the past (hence the duplication). Instead we can remove the first
instance of the check without issues.
2018-07-24 00:20:20 +02:00
antirez
1daee8c748
string2ll(): test for NULL pointer in all the cases.
2018-07-24 00:18:39 +02:00
Salvatore Sanfilippo
ab1d5fe11a
Merge pull request #5160 from oranagra/fix_zmalloc_usable
...
fix recursion typo in zmalloc_usable
2018-07-24 00:07:59 +02:00
antirez
9a375e5408
Change 42 to 1000 as warning level for cached scripts.
...
Related to #4883 .
2018-07-23 18:44:58 +02:00
Salvatore Sanfilippo
445a2a2b1b
Merge pull request #4883 from itamarhaber/lua_scripts-in-info-memory
...
Adds memory information about the scripts' cache to INFO
2018-07-23 18:43:05 +02:00
antirez
b65ddfb16a
Dynamic HZ: adapt cron frequency to number of clients.
2018-07-23 14:21:04 +02:00
antirez
e6ea603ad3
Dynamic HZ: separate hz from the configured hz.
...
This way we can remember what the user configured HZ is, but change the
actual HZ dynamically if needed in the dynamic HZ feature
implementation.
2018-07-23 14:13:58 +02:00
Itamar Haber
993716c351
Adds Lua overheads to MEMORY STATS, smartens the MEMORY DOCTOR
2018-07-22 21:16:00 +03:00
zhaozhao.zz
9674ede85a
Streams: skip master fileds only when we are going forward in streamIteratorGetID
2018-07-22 17:52:09 +08:00
Oran Agra
780815dd6e
fix recursion typo in zmalloc_usable
2018-07-22 10:17:35 +03:00
dsomeshwar
bb5b8b3a6f
removing redundant check
2018-07-21 23:42:08 +05:30
WuYunlong
4017a11144
Do not migrate already expired keys.
2018-07-21 10:00:32 +08:00
WuYunlong
dd760bd5e6
Consider aof write error as well as rdb in lua script.
2018-07-21 08:48:51 +08:00
antirez
4ff47a0b9b
Top comment clientsCron().
2018-07-20 09:46:18 +02:00
antirez
aba6855282
Clarify that clientsCronTrackExpansiveClients() indexes may jump ahead.
2018-07-20 09:36:48 +02:00
antirez
be88c0b16a
Rename INFO CLIENT max buffers field names for correctness.
...
They are actually delayed a few seconds, so let's call them "recent".
2018-07-19 17:38:20 +02:00
antirez
0cf3794e6e
Fix wrong array index variable in getExpansiveClientsInfo().
2018-07-19 17:34:15 +02:00
antirez
ea3a20c5d0
Change INFO CLIENTS sections to report pre-computed max/min client buffers.
2018-07-19 17:16:19 +02:00
dejun.xdj
de5ca516ae
Streams: ID of xclaim command starts from the sixth argument.
2018-07-19 20:48:08 +08:00
antirez
8f7e496ba5
Rename var in clientsCronTrackExpansiveClients() for clarity.
2018-07-19 13:59:13 +02:00
antirez
8d617596f1
Implement a function to retrieve the expansive clients mem usage.
2018-07-19 13:58:04 +02:00
antirez
85a1b4f807
clientsCronTrackExpansiveClients() actual implementation.
2018-07-19 13:54:20 +02:00
antirez
d4c5fc57db
clientsCronTrackExpansiveClients() skeleton and ideas.
2018-07-19 13:49:00 +02:00
antirez
1c95c07596
Make vars used only by INFO CLIENTS local to the block.
...
Related to #4727 .
2018-07-19 12:23:05 +02:00
Salvatore Sanfilippo
16b8d364cc
Merge pull request #4727 from kingpeterpaule/redis-fix-info-cli
...
move getClientsMaxBuffers func into info clients command
2018-07-19 12:21:35 +02:00
antirez
0aca977c47
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-07-18 17:41:37 +02:00
antirez
313b2240ae
In addReplyErrorLength() only panic when replying to slave.
...
See #5135 for more context.
2018-07-18 17:41:16 +02:00
antirez
6183f0590d
Refine comment in addReplyErrorLength() about replying to masters/slaves.
...
See #5135 for some context.
2018-07-18 17:40:07 +02:00
Salvatore Sanfilippo
22e9321c3e
Merge pull request #5138 from oranagra/improve_defrag_test
...
make active defrag test more stable
2018-07-18 11:05:03 +02:00
Oran Agra
f89c93c8ad
make active defrag test more stable
...
on slower machines, the active defrag test tended to fail.
although the fragmentation ratio was below the treshold, the defragger was
still in the middle of a scan cycle.
this commit changes:
- the defragger uses the current fragmentation state, rather than the cache one
that is updated by server cron every 100ms. this actually fixes a bug of
starting one excess scan cycle
- the test lets the defragger use more CPU cycles, in hope that the defrag
will be faster, but also give it more time before we give up.
2018-07-18 10:16:33 +03:00
Salvatore Sanfilippo
8213f64d64
Merge pull request #5122 from trevor211/allowWritesWhenAofDisabled
...
Accept write commands if persisting is disabled
2018-07-17 18:08:46 +02:00
Salvatore Sanfilippo
46fd927800
Merge pull request #4237 from aspirewit/update-comment
...
Update the comment
2018-07-17 18:04:55 +02:00
antirez
6201f7b4e0
Streams: better error when $ is given with XREADGROUP.
2018-07-17 17:54:10 +02:00
Salvatore Sanfilippo
4bff45c7a6
Merge pull request #5136 from 0xtonyxia/fix-xread-id-parse
...
Fix xreadgroup with '$' ID.
2018-07-17 17:50:31 +02:00
antirez
afc7e08a20
Panic when we are sending an error to our master/slave.
...
Related to #5135 , see discussion there.
2018-07-17 17:42:30 +02:00
dejun.xdj
846cf12ae5
Streams: remove meaningless if condition.
...
It's already checked if xreadgroup is set and groupname is NULL.
2018-07-17 18:23:47 +08:00
dejun.xdj
6501b6bb6d
Streams: return an error message if using xreadgroup with '$' ID.
...
Redis will always return an empty result when '$' ID is specified
with xreadgroup command, it's meaningless.
2018-07-17 18:19:10 +08:00
Oran Agra
d55598988b
fix rare replication stream corruption with disk-based replication
...
The slave sends \n keepalive messages to the master while parsing the rdb,
and later sends REPLCONF ACK once a second. rarely, the master recives both
a linefeed char and a REPLCONF in the same read, \n*3\r\n$8\r\nREPLCONF\r\n...
and it tries to trim two chars (\r\n) from the query buffer,
trimming the '*' from *3\r\n$8\r\nREPLCONF\r\n...
then the master tries to process a command starting with '3' and replies to
the slave a bunch of -ERR and one +OK.
although the slave silently ignores these (prints a log message), this corrupts
the replication offset at the slave since the slave increases the replication
offset, and the master did not.
other than the fix in processInlineBuffer, i did several other improvments
while hunting this very rare bug.
- when redis replies with "unknown command" it includes a portion of the
arguments, not just the command name. so it would be easier to understand
what was recived, in my case, on the slave side, it was -ERR, but
the "arguments" were the interesting part (containing info on the error).
- about a year ago i added code in addReplyErrorLength to print the error to
the log in case of a reply to master (since this string isn't actually
trasmitted to the master), now changed that block to print a similar log
message to indicate an error being sent from the master to the slave.
note that the slave is marked as CLIENT_SLAVE only after PSYNC was received,
so this will not cause any harm for REPLCONF, and will only indicate problems
that are gonna corrupt the replication stream anyway.
- two places were c->reply was emptied, and i wanted to reset sentlen
this is a precaution (i did not actually see such a problem), since a
non-zero sentlen will cause corruption to be transmitted on the socket.
2018-07-17 12:51:49 +03:00
antirez
cefe21d28a
dict.c: remove a few trailing spaces.
2018-07-17 10:39:47 +02:00
Salvatore Sanfilippo
4fc2099235
Merge pull request #5128 from kingpeterpaule/remove-one-loop-in-freeMemoryIfNeeded
...
remove ineffective loop in dictGetSomeKeys.
2018-07-17 10:38:55 +02:00
Salvatore Sanfilippo
9fbd49bbaf
Merge pull request #5113 from 0xtonyxia/using-compare-func-instead
...
Streams: using streamCompareID() instead of direct compare.
2018-07-16 18:34:35 +02:00
Salvatore Sanfilippo
cab396761e
Merge pull request #5127 from oranagra/sds_req_type
...
bugfix in sdsReqType creating 64bit sds headers on 32bit systems
2018-07-16 18:32:14 +02:00
antirez
f9c84d6d39
Hopefully improve commenting of #5126 .
...
Reading the PR gave me the opportunity to better specify what the code
was doing in places where I was not immediately sure about what was
going on. Moreover I documented the structure in server.h so that people
reading the header file will immediately understand what the structure
is useful for.
2018-07-16 17:56:54 +02:00
Salvatore Sanfilippo
e22a1218bc
Merge pull request #5126 from oranagra/slave_buf_memory_2
...
slave buffers were wasteful and incorrectly counted causing eviction
2018-07-16 17:45:50 +02:00
Oran Agra
bf680b6f8c
slave buffers were wasteful and incorrectly counted causing eviction
...
A) slave buffers didn't count internal fragmentation and sds unused space,
this caused them to induce eviction although we didn't mean for it.
B) slave buffers were consuming about twice the memory of what they actually needed.
- this was mainly due to sdsMakeRoomFor growing to twice as much as needed each time
but networking.c not storing more than 16k (partially fixed recently in 237a38737).
- besides it wasn't able to store half of the new string into one buffer and the
other half into the next (so the above mentioned fix helped mainly for small items).
- lastly, the sds buffers had up to 30% internal fragmentation that was wasted,
consumed but not used.
C) inefficient performance due to starting from a small string and reallocing many times.
what i changed:
- creating dedicated buffers for reply list, counting their size with zmalloc_size
- when creating a new reply node from, preallocate it to at least 16k.
- when appending a new reply to the buffer, first fill all the unused space of the
previous node before starting a new one.
other changes:
- expose mem_not_counted_for_evict info field for the benefit of the test suite
- add a test to make sure slave buffers are counted correctly and that they don't cause eviction
2018-07-16 16:43:42 +03:00
zhaozhao.zz
73306c6fed
Streams: correctly propagate xdel if needed
2018-07-16 20:48:07 +08:00
antirez
103c5a1a3c
Add a few comments to streamIteratorRemoveEntry().
2018-07-16 12:41:55 +02:00
Salvatore Sanfilippo
a317f55d25
Merge pull request #5131 from soloestoy/optimize-xdel
...
Streams: free lp if all elements are deleted
2018-07-16 12:39:38 +02:00
antirez
185e0d9cd8
Modify XINFO field from last-id to last-generated-id.
...
Related to #5129 .
2018-07-16 12:25:26 +02:00
zhaozhao.zz
c9324f81a2
Streams: free lp if all elements are deleted
2018-07-16 15:57:41 +08:00
paule
b6ce7d5ddc
Update dict.c
...
change coding style.
2018-07-16 14:29:59 +08:00
zhaozhao.zz
b4ba5ac840
Streams: show last id for streams and groups
2018-07-16 13:24:54 +08:00
peterpaule
816fc6cbc6
remove one ineffective loop in dictGetSomeKeys.
2018-07-16 11:28:22 +08:00
Oran Agra
b05a22e261
bugfix in sdsReqType creating 64bit sds headers on 32bit systems
2018-07-15 18:24:18 +03:00
dejun.xdj
491682a668
Streams: using streamCompareID() instead of direct compare in block.c.
2018-07-14 15:03:05 +08:00
dejun.xdj
a2177cd2b6
Streams: add streamCompareID() declaration in stream.h.
2018-07-14 15:02:24 +08:00
dejun.xdj
0484dbcf68
Streams: using streamCompareID() instead of direct compare.
2018-07-14 20:34:06 +08:00
WuYunlong
2d4366c544
Accept write commands if persisting is disabled,
...
event if we do have problems persisting on disk
previously.
2018-07-14 09:06:23 +08:00
andrewsensus
8dc08ae215
update leap year comment
2018-07-13 09:46:30 -06:00
Salvatore Sanfilippo
a44a59340c
Merge pull request #5119 from trevor211/fixSlowlogConfig
...
Fix slowlog config
2018-07-13 17:35:15 +02:00
WuYunlong
d6ba4fd56d
Fix config set slowlog-log-slower-than and condition in createLatencyReport
2018-07-13 17:53:55 +08:00
artix
d4182a0a0d
Cluster Manager: more checks on --cluster-weight option.
2018-07-13 10:51:58 +02:00
artix
d222eda9f0
Redis-trib deprecated: it no longer works and it
...
outputs a warning to the user.
2018-07-13 10:51:58 +02:00
artix
513eb5728c
Cluster Manager: auth support (-a argument).
2018-07-13 10:51:58 +02:00
Shen Longxing
c2a85fb3c5
Delete unused role checking.
...
When check rdb file, it is unnecessary to check role.
2018-07-12 21:21:37 +08:00
Salvatore Sanfilippo
4cb5bd4e9d
Merge pull request #4820 from charpty/wip-serverc-simplify
...
Remove unnecessary return statements
2018-07-12 13:42:15 +02:00
antirez
b6260a0270
Streams: when re-delivering because of SETID, reset deliveries counter.
...
We don't want to increment the deliveries here, because the sysadmin
reset the consumer group so the desire is likely to restart processing,
and having the PEL polluted with old information is not useful but
probably confusing.
Related to #5111 .
2018-07-12 13:19:39 +02:00
antirez
a7c180e559
Simplify duplicated NACK #5112 fix.
...
We don't really need to distinguish between the case the consumer is the
same or is a different one.
2018-07-12 13:15:54 +02:00
Salvatore Sanfilippo
bf4def0fbc
Merge pull request #5112 from 0xtonyxia/fix-xreadgroup-crash-after-setid
...
Streams: fix xreadgroup crash after xgroup SETID is sent.
2018-07-12 13:04:22 +02:00
tengfeng
9505dd2011
fix repeat argument issue and reduce unnessary loop times for redis-cli.
2018-07-10 20:58:01 +08:00
antirez
0420c3276f
Merge branch 'unstable' of github.com:/antirez/redis into unstable
2018-07-10 12:06:44 +02:00
antirez
28e95c7c52
Streams: fix typo "consumer".
2018-07-10 12:04:31 +02:00
antirez
a8c1bb310e
Streams: fix new XREADGROUP sync logic.
2018-07-10 12:02:03 +02:00
antirez
1a02b5f6ee
Streams: make blocking for > a truly special case.
...
To simplify the semantics of blocking for a group, this commit changes
the implementation to better match the description we provide of
conusmer groups: blocking for > will make the consumer waiting for new
elements in the group. However blocking for any other ID will always
serve the local history of the consumer.
However it must be noted that the > ID is actually an alias for the
special ID ms/seq of UINT64_MAX,UINT64_MAX.
2018-07-10 11:34:17 +02:00
antirez
a71e814853
Streams: send an error to consumers blocked on non-existing group.
...
To detect when the group (or the whole key) is destroyed to send an
error to the consumers blocked in such group is a problem, so we leave
the consumers listening, the sysadmin is free to create or destroy
groups assuming she/he knows what to do. However a client may be blocked
in a given consumer group, that is later destroyed. Then the stream
receives new elements. In that case there is no sane behavior to serve
the consumer... but to report an error about the group no longer
existing.
More about detecting this synchronously and why it is not done:
1. Normally we don't do that, we leave clients blocked for other data
types such as lists.
2. When we free a stream object there is no longer information about
what was the key it was associated with, so while destroying the
consumer groups we miss the info to unblock the clients in that moment.
3. Objects can be reclaimed in other threads where it is no longer safe
to do client operations.
2018-07-10 11:19:06 +02:00
antirez
09327f11dd
Streams: fix unblocking logic into a consumer group.
...
When a client blocks for a consumer group, we don't know the actual ID
we want to be served: other clients blocked in the same consumer group
may be served first, so the consumer group latest delivered ID changes.
This was not handled correctly, all the clients in the consumer group
were unblocked without data but the first.
2018-07-10 11:11:41 +02:00
dejun.xdj
3f8a3efe5f
Streams: fix xreadgroup crash after xgroup SETID is sent.
...
For issue #5111 .
2018-07-10 16:26:13 +08:00
Salvatore Sanfilippo
7239e9ca5f
Merge pull request #5095 from 0xtonyxia/fix-indentation
...
Fix indentation.
2018-07-09 13:56:39 +02:00
dejun.xdj
61f12973f7
Bugfix: PEL is incorrect when consumer is blocked using xreadgroup with NOACK option.
...
Save NOACK option into client.blockingState structure.
2018-07-09 13:40:29 +02:00
antirez
b67f027699
redis-cli: fix #4990 additional argument in help.
2018-07-09 13:36:47 +02:00
antirez
18d65849fd
redis-cli: fix #5096 double error message.
2018-07-09 13:25:48 +02:00
antirez
846203279c
redis-cli: cliConnect() flags CC_FORCE and CC_QUIET.
...
We need CC_QUIET in order to fix #5096 by silently failing if needed.
2018-07-09 13:24:30 +02:00
dejun.xdj
289d8d9c2c
CLIENT UNBLOCK: fix client unblock help message.
2018-07-09 13:03:57 +02:00
minkikim89
62a4a8c1d5
fix whitespace in redis-cli.c
2018-07-09 12:59:13 +02:00
WuYunlong
0a5805d7f1
fix compile warning in addReplySubcommandSyntaxError
2018-07-09 12:57:12 +02:00
antirez
cb78c84235
Use nolocks_localtime() for safer logging.
2018-07-04 16:50:22 +02:00
antirez
81778d91bf
Cache timezone and daylight active flag for safer logging.
...
With such information will be able to use a private localtime()
implementation serverLog(), which does not use any locking and is both
thread and fork() safe.
2018-07-04 16:45:00 +02:00
antirez
18d8205bbd
Localtime: clarify is_leap_year() working with comments.
2018-07-04 15:50:41 +02:00