Commit Graph

5830 Commits

Author SHA1 Message Date
John Sully 9f13b2bd49 Fix hyperloglog corruption 2019-03-15 13:13:01 +01:00
Yossi Gottlieb a88264d934 Add RedisModule_GetKeyNameFromIO(). 2019-03-15 10:23:27 +02:00
antirez 74d6af8f80 Fix ZPOP return type when COUNT=0. Related to #5799. 2019-03-14 17:51:20 +01:00
antirez 052e03495f Fix objectSetLRUOrLFU() when LFU underflows. 2019-03-14 17:06:59 +01:00
antirez d292a51618 Improve comments after merging #5834. 2019-03-14 12:47:36 +01:00
Salvatore Sanfilippo 0cce98f2f9
Merge pull request #5834 from guybe7/trim_module_sds
Trim SDS free space of retained module strings
2019-03-14 12:41:31 +01:00
Guy Benoish b2eb48df89 Fix mismatching keyspace notification classes 2019-03-14 12:11:16 +01:00
Salvatore Sanfilippo d3cd2e9a4a
Merge pull request #4742 from guybe7/zrangebylex_leak
Fix zlexrangespec mem-leak in genericZrangebylexCommand
2019-03-14 11:44:56 +01:00
Salvatore Sanfilippo ec03f2db6b
Merge pull request #4904 from guybe7/memtoll_fix
Use memtoll() in 'CONFIG SET client-output-buffer-limit'
2019-03-14 11:43:55 +01:00
Salvatore Sanfilippo 190b63f993
Merge pull request #5812 from guybe7/fix_string2ld
Increase string2ld's buffer size (and fix HINCRBYFLOAT)
2019-03-14 11:35:01 +01:00
Salvatore Sanfilippo 01ace0b240
Merge pull request #5694 from guybe7/rm_log_args
Check server.verbosity in RM_LogRaw
2019-03-14 11:32:03 +01:00
Salvatore Sanfilippo ebf7274192
Merge pull request #5799 from guybe7/zpop_zero_count
ZPOP should return an empty array if COUNT=0
2019-03-14 11:29:24 +01:00
antirez 6fd4af1f12 Merge branch 'sharedapi' into unstable 2019-03-14 11:24:48 +01:00
vattezhang ad223e2042 fix: fix benchmark cannot exit when NOAUTH err happens 2019-03-13 20:46:33 +08:00
vattezhang 31110f1caf Merge branch 'unstable' of github.com:antirez/redis into unstable 2019-03-13 20:26:54 +08:00
Salvatore Sanfilippo 2537b2140f
Merge pull request #5787 from soloestoy/bugfix-xgroup-create-with-mkstream
Streams: checkType before XGROUP CREATE
2019-03-13 12:34:29 +01:00
Salvatore Sanfilippo 71499ab1c6
Merge pull request #5893 from itamarhaber/bzpop-arity
Fixes BZ[REV]POP's arity
2019-03-13 12:27:35 +01:00
Salvatore Sanfilippo c49abcb794
Merge pull request #5898 from bsolomon1124/make-uninstall-tgt
Provide an uninstall target in Makefile
2019-03-13 12:26:43 +01:00
Salvatore Sanfilippo 372cbc37e7
Merge pull request #5884 from chendq8/cluster_failover
Reduce 100ms of cluster failover time on Manual mode
2019-03-13 12:22:23 +01:00
Salvatore Sanfilippo 84d6ce4f56
Merge pull request #5901 from artix75/bm_threads_cluster_dev
Redis Benchmark: add multithread idle mode
2019-03-13 12:18:32 +01:00
Salvatore Sanfilippo 53d1dc170c
Merge pull request #5921 from vattezhang/unstable_temp
fix: fix the if condition in clusterManagerShowClusterInfo
2019-03-13 12:18:08 +01:00
Salvatore Sanfilippo 3e648907ee
Merge pull request #5907 from spjwebster/xclaim-increment-delivery-count
Increment delivery counter on XCLAIM unless RETRYCOUNT specified
2019-03-13 11:55:46 +01:00
Salvatore Sanfilippo 610aff3251
Merge pull request #5924 from swilly22/redismodule-replicated-cmd-ctx-flag
document additional flag of RM_GetContextFlags
2019-03-13 11:52:07 +01:00
Salvatore Sanfilippo 02dab20026
Merge pull request #5894 from soloestoy/fix-rdb-warning
Fix compile some warnings
2019-03-13 11:47:48 +01:00
zhaozhao.zz 5a3d3d8be4 Fix compile warning in redis-cli.c 2019-03-13 16:54:34 +08:00
swilly22 89bf4db4fa document additional flag of RM_GetContextFlags 2019-03-13 08:22:40 +02:00
Steve Webster dfcb227b50 Only increment delivery count if JUSTID option is omitted 2019-03-12 20:27:53 +00:00
Salvatore Sanfilippo e5acc5ef4f
Merge pull request #2774 from rouzier/blocking-list-commands-support-milliseconds-floating
Added millisecond resolution for blpop command && friends
2019-03-12 18:10:28 +01:00
Salvatore Sanfilippo fba6e26e87
Merge pull request #5913 from wurongxin1987/unstable
fix a bufferoverflow bug
2019-03-12 17:25:21 +01:00
Salvatore Sanfilippo b0bc602bb3
Merge pull request #5900 from artix75/cluster_backup
Cluster Manager: add importing/migrating nodes to backup info
2019-03-12 17:21:17 +01:00
Salvatore Sanfilippo c02b414e9a
Merge pull request #5903 from soloestoy/sunionstore-lazyfree
try lazyfree temp set in SUNION & SDIFF
2019-03-12 17:20:52 +01:00
Salvatore Sanfilippo 45645aee7f
Merge pull request #5915 from swilly22/redismodule-replicated-cmd-ctx-flag
Extend REDISMODULE_CTX_FLAGS to indicate if command was sent by master
2019-03-12 17:17:19 +01:00
artix 5284d67e37 Redis Benchmark: fix possible usage of freed pointer (getRedisConfig)
Fixes issue #5912
2019-03-12 17:07:23 +01:00
Salvatore Sanfilippo f63bbb4335
Merge pull request #5920 from chendq8/aofrewrite
remove temp-rewriteaof-xxx.aof when interrupt aofrewrite
2019-03-12 17:03:02 +01:00
vattezhang bdc783b472 fix: fix the if condition in clusterManagerShowClusterInfo 2019-03-12 22:01:02 +08:00
vattezhang 270a111433 Merge branch 'unstable' of github.com:antirez/redis into unstable 2019-03-12 21:52:20 +08:00
chendianqiang 3621223fbb remove temp-rewriteaof-xxx.aof when interrupt aofrewrite 2019-03-12 20:46:40 +08:00
swilly22 468860ae18 Extend REDISMODULE_CTX_FLAGS to indicate if command was sent by master 2019-03-11 10:02:19 +02:00
antirez 8a46d32be2 Make comment in #5911 stay inside 80 cols. 2019-03-10 09:48:06 +01:00
wurongxin 0298d3ad18 fix a bufferoverflow bug 2019-03-10 15:30:32 +08:00
John Sully 5b52bc738b Replicas aren't allowed to run the replicaof command 2019-03-09 11:04:48 -05:00
Steve Webster f1e7df4b7c Increment delivery counter on XCLAIM unless RETRYCOUNT specified
The XCLAIM docs state the XCLAIM increments the delivery counter for
messages. This PR makes the code match the documentation - which seems
like the desired behaviour - whilst still allowing RETRYCOUNT to be
specified manually.

My understanding of the way streamPropagateXCLAIM() works is that this
change will safely propagate to replicas since retry count is pulled
directly from the streamNACK struct.

Fixes #5194
2019-03-08 17:09:11 +00:00
artix 8fadebfcca Redis Benchmark: handle CLUSTERDOWN error 2019-03-08 11:05:02 +01:00
zhaozhao.zz 0137f1a2e3 try lazyfree temp set in SUNION & SDIFF 2019-03-07 22:08:04 +08:00
Yuan Zhou feb4ebff45 server.h: remove dead code
hashTypeTryObjectEncoding() is not used now
2019-03-07 18:38:27 +08:00
artix c389ad0d52 Redis Benchmark: fix key randomization with zero keyspacelen 2019-03-07 11:30:09 +01:00
artix 0e963e068d Redis Benchmark: add multithread idle mode
Fix issue #5891
2019-03-07 11:14:07 +01:00
Brad Solomon d5b24d31d7 Provide an uninstall target in Makefile
On `make uninstall`, removes:

- /usr/local/bin/redis-benchmark
- /usr/local/bin/redis-check-aof
- /usr/local/bin/redis-check-rdb
- /usr/local/bin/redis-cli
- /usr/local/bin/redis-sentinel
- /usr/local/bin/redis-server

(Only the src/ versions are removed in `make clean`)
2019-03-06 21:24:45 -05:00
artix 93e51239ce Cluster Manager: add importing/migrating nodes to backup info 2019-03-06 16:38:36 +01:00
antirez c33cb4938a ACL: GENPASS subcommand. 2019-03-05 15:51:37 +01:00
zhaozhao.zz fb81d1b3f8 Fix compile warning when log aux field 2019-03-04 19:43:00 +08:00
Itamar Haber cd2743c0e6 Fixes BZ[REV]POP's arity 2019-03-03 23:10:45 +02:00
antirez 4edb1d7e10 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2019-03-02 21:19:21 +01:00
antirez b9b140e2e2 Use the RDB info fields to provide info to users.
Fix #5790 and 5878.

Maybe a better option was to have such fields named with the first
byte '%' as those are info fields for specification, however now to
break it in a backward incompatible way is not an option, so let's use
the fields actively to provide info when sensible, otherwise ignore
when they are not really helpful.
2019-03-02 21:17:42 +01:00
Salvatore Sanfilippo 56cf413844
Merge pull request #5888 from artix75/cluster_backup
Cluster Manager (redis-cli): new "backup" command
2019-03-01 18:43:13 +01:00
artix cb1be1ca81 Redis benchmark: update help with threads/cluster options 2019-03-01 18:15:44 +01:00
artix a79b84ab7f Redis benchmark: fix default hset test key 2019-03-01 17:53:14 +01:00
artix 4e78d5cd40 Redis Benchmark: update slots configuration after MOVED/ASK reply 2019-03-01 17:53:14 +01:00
artix daaff484a6 Redis Benchmark: use atomic var for liveclients in 'createClient' 2019-03-01 17:53:14 +01:00
artix 834809cbb3 Redis Benchmark: display 'save' and 'appendonly' configuration 2019-03-01 17:53:14 +01:00
artix 649c947a0f Redis benchmark: add {tag} to all default tests 2019-03-01 17:53:14 +01:00
artix eb8b4feef7 Redis benchmark: fixed issued with config.hostip and code cleanup 2019-03-01 17:53:14 +01:00
artix f95e01266e Redis benchmark: configurable thread count in cluster mode and fixes 2019-03-01 17:53:14 +01:00
artix 5fd5799cf9 Various changes to redis-benchmark thread and cluster support
- MOVED or ASK replies are now handled in cluster mode.
- Only the first slot per node is used in cluster mode.
- Mutlithreading: reduced usage of mutexes in favor of atomic vars.
2019-03-01 17:53:14 +01:00
artix 434f761304 Redis benchmark: table-based slot hashtag placeholder replacement in cluster mode. 2019-03-01 17:53:14 +01:00
artix dfd3cc5f78 Added basic support for clusters to redis-benchmark. 2019-03-01 17:53:14 +01:00
artix 563885d6d9 Thread support for redis-benchmark. 2019-03-01 17:53:14 +01:00
artix e6156a39bd Cluster Manager backup: remove --cluster-ignore-issue option
Always save the backup, even if there are problems in the cluster.
Just display a warn message and save "cluster_errors" property
inside the json.
2019-03-01 17:41:40 +01:00
artix 5e4dfc5c97 Cluster Manager: check cluster before backup
- Prevent cluster backup if cluster has issues and needs to be fixed.
  This behaviour can be overridden by adding the option
  '--cluster-ignore-issues'
2019-03-01 17:41:40 +01:00
artix fb020ab090 Cluster Manager: 'backup' command 2019-03-01 17:41:40 +01:00
Salvatore Sanfilippo b19e8b9a2c
Merge pull request #5875 from chendq8/partialsync
fix:Slave will do full sync when restart with SHUTDOWN SAVE on cluster mode
2019-03-01 17:29:19 +01:00
Salvatore Sanfilippo 80b8f9febc
Merge pull request #5873 from madolson/dev-unstable-minor-benchmark-precision-fix
Updated redis-benchmark so it doesn't show 1 value above 2ms
2019-03-01 16:55:09 +01:00
chendianqiang a16da79228 optimize cluster failover 2019-03-01 15:28:21 +08:00
artix 6cd64c6a98 Cluster Manager: change join issue message 2019-02-28 16:57:57 +01:00
artix 23ad3faa50 Cluster Manager: change text alert clusterManagerWaitForClusterJoin 2019-02-28 16:57:57 +01:00
artix 2593fb9c0c Cluster Manager: code cleanup 2019-02-28 16:57:57 +01:00
artix 6e9864fe0d Cluster Manager: fix bus error in clusterManagerGetLinkStatus 2019-02-28 16:57:57 +01:00
Artix 121adc604b Cluster Manager: fix memory leaks in clusterManagerGetDisconnectedLinks 2019-02-28 16:57:57 +01:00
artix b013d2c4db Cluster Manager: fix memory leak in clusterManagerWaitForClusterJoin 2019-02-28 16:57:57 +01:00
artix 3578aabc05 Cluster Manager: improve join issue checking 2019-02-28 16:57:57 +01:00
artix 2f499304aa Cluster Manager: check for unreachable nodes during cluster join. 2019-02-28 16:57:57 +01:00
Salvatore Sanfilippo 9b0b0b3942
Merge pull request #3649 from Alkorin/fixTypo
Fix typo (unsupproted => unsupported) in error message
2019-02-27 22:33:22 +01:00
antirez 74fdfc3763 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2019-02-27 22:21:00 +01:00
antirez 68c75f248e Gopher: reply in gopher mode only if argv[0] starts with slash.
As documented but never implemented.
2019-02-27 22:20:31 +01:00
Salvatore Sanfilippo 88b720672c
Merge pull request #5877 from vattezhang/unstable_sentinel_cmd
fix: fix sentinel command table and new flags format
2019-02-27 15:45:03 +01:00
vattezhang 9d632230b6 fix: fix sentinel command table and new flags format 2019-02-27 21:35:58 +08:00
vattezhang 0f0f787a37 fix: fix sentinel command table and new flags format 2019-02-27 21:20:00 +08:00
chendianqiang 8f7e97258b fix replicationid will not change for server.masterhost==NULL in cluster mode when restart slave 2019-02-27 17:43:05 +08:00
antirez f311a529be Make PR #5872 more compatible with Redis coding style. 2019-02-27 09:34:50 +01:00
Salvatore Sanfilippo 0dcb003887
Merge pull request #5872 from madolson/dev-unstable-acl-setuser-fix
Updated acl setuser to be all or nothing
2019-02-27 09:31:57 +01:00
Madelyn Olson b79efef5d6 Updated redis-benchmark so it doesn't show 1 value above 2ms at higher precision 2019-02-26 21:12:55 +00:00
Madelyn Olson 075a3b8893 Updated acl setuser to be all or nothing 2019-02-26 02:04:29 +00:00
antirez a7780f716e Merge branch 'gopher' into unstable 2019-02-25 18:16:58 +01:00
antirez 21f92e9e34 RESP3: SETNAME option for HELLO. 2019-02-25 16:56:58 +01:00
antirez d4d15315a8 RESP3: AUTH option for HELLO. 2019-02-25 16:55:16 +01:00
antirez 5748439770 RESP3: refactoring of CLIENT SETNAME to implement SETNAME in HELLO. 2019-02-25 16:51:49 +01:00
antirez 3b420034bb RESP3: allow HELLO to be used with version = 2. 2019-02-25 16:41:00 +01:00
antirez 36d1588215 ACL: authCommand() refactored into ACLAuthenticateUser(). 2019-02-25 16:39:44 +01:00
antirez 87594a7470 ACL: move AUTH implementation in acl.c. 2019-02-25 16:33:38 +01:00
antirez e247c9ac6a Gopher: don't add the Lastline. 2019-02-24 21:38:15 +01:00
antirez 07473feaeb ACL: fix ACLSaveToFile() return value. 2019-02-22 12:45:13 +01:00
antirez 2bea3929d0 ACL: less error prone error handling in ACLSaveToFile(). 2019-02-22 12:43:08 +01:00
antirez 8b087dff34 Gopher: TODO list. 2019-02-22 11:17:39 +01:00
Salvatore Sanfilippo 2d3cad684c
Merge pull request #5850 from artix75/dev
Cluster Manager: fix replica assignment anti-affinity (create)
2019-02-22 10:28:31 +01:00
Salvatore Sanfilippo 21b8560e95
Merge pull request #5858 from madolson/dev-unstable-acl-deluser
Making deleting users better defined and update documentation
2019-02-22 10:27:37 +01:00
Salvatore Sanfilippo 3a7fd48e30
Merge pull request #5859 from madolson/dev-unstable-networking-cleanup
Refactored manual computation of object length
2019-02-22 10:25:17 +01:00
antirez f94d711c83 Gopher: basic serving of string type. 2019-02-22 10:21:24 +01:00
antirez e00b22e090 Gopher: initial request handling. 2019-02-21 23:13:08 +01:00
Madelyn Olson 9131fc56d6 Refactored manual computation of object length 2019-02-21 21:35:00 +00:00
Madelyn Olson fdc4003d23 Making deleting users better defined and update documentation 2019-02-21 21:34:14 +00:00
antirez 3de9ccf190 Gopher: config setting to turn support on/off. 2019-02-21 17:28:53 +01:00
antirez 624568ae3f Merge branch 'unstable' of github.com:/antirez/redis into unstable 2019-02-21 17:03:19 +01:00
antirez 291e6bccf3 ACL: remove leak in ACLLoadFromFile(). 2019-02-21 17:03:06 +01:00
antirez 91aecf0138 ACL: implement ACL SAVE. 2019-02-21 17:01:08 +01:00
antirez 484af7aa7a ACL: ACLSaveToFile() implemented. 2019-02-21 16:50:28 +01:00
antirez e4f3a2eecd ACL: add LOAD subcommand to ACL HELP. 2019-02-21 16:31:33 +01:00
Salvatore Sanfilippo 967a98f570
Merge pull request #4811 from oranagra/cli-diskless-repl
Add redis-cli support for diskless replication (CAPA EOF)
2019-02-21 12:54:15 +01:00
Oran Agra b6de51206e redis-cli add support for --memkeys, fix --bigkeys for module types
* bigkeys used to fail on databases with module type keys
* new code adds more types when it discovers them, but has no way to know element count in modules types yet
* bigkeys was missing XLEN command for streams
* adding --memkeys and --memkeys-samples to make use of the MEMORY USAGE command

see #5167, #5175
2019-02-21 12:18:20 +02:00
artix 0f28754021 Cluster Manager: fix replica assigment anti-affinity (create)
Fix issue #5849
2019-02-20 15:36:15 +01:00
antirez 35ffbead5c Use dictGetFairRandomKey() for RANDOMKEY as well. 2019-02-19 17:29:51 +01:00
antirez 25b392f90c Set dictGetFairRandomKey() samples to 20 for final version.
Distribution improves dramatically: tests show it clearly. Better to
have a slower implementation than a wrong one, because random member
extraction should be correct or tends to be useless for a number of
tasks.
2019-02-19 17:27:42 +01:00
antirez 1613f7a572 Limit sampling size in dictGetFairRandomKey().
This way the implementation is almost as fast as the original one, but
the distribution is not too bad.
2019-02-18 18:38:40 +01:00
antirez 61a01793ed Better distribution for set get-random-element operations. 2019-02-18 18:27:18 +01:00
vattezhang 4cc43a96f6 benchmark: add auth check in benchmark
When we run benchmark but forget to set the right requirepass, benchmark should return error.
2019-02-18 22:48:55 +08:00
antirez 86802d4f26 redis-benchmark: default precision=1, integer ms after 2 milliseconds.
Reltaed to discussion and PR #5840.
2019-02-14 13:19:51 +01:00
Salvatore Sanfilippo da86481e5b
Merge pull request #5840 from madolson/dev-unstable-benchmark-latency
Updated redis benchmark with us precision support
2019-02-14 13:01:26 +01:00
Madelyn Olson f9bababaa7 Rename variable 2019-02-13 21:03:31 +00:00
Madelyn Olson 93640b0a9d Updated redis benchmark with us precision support 2019-02-13 19:52:48 +00:00
Salvatore Sanfilippo fd7484cde2
Merge pull request #5836 from soloestoy/fix-acl-warning
ACL: show categories in COMMAND reply
2019-02-13 18:59:59 +01:00
zhaozhao.zz 14507457a0 ACL: show categories in COMMAND reply
Adding another new filed categories at the end of
command reply, it's easy to read and distinguish
flags and categories, also compatible with old format.
2019-02-14 00:13:01 +08:00
antirez e819c2ef5b ACL: tag LASTSAVE as dangerous.
That's not REALLY needed, but... right now with LASTSAVE being the only
command tagged as "admin" but not "dangerous" what happens is that after
rewrites the rewrite engine will produce from the rules:

    user default on +@all ~* -@dangerous nopass

The rewrite:

    user default on nopass ~* +@all -@admin -@dangerous +lastsave

Which is correct but will have users wondering about why LASTSAVE has
something special.

Since LASTSAVE after all also leaks information about the underlying
server configuration, that may not be great for SAAS vendors, let's tag
it as dangerous as well and forget about this issue :-)
2019-02-13 16:30:44 +01:00
zhaozhao.zz a65094dae8 ACL: fix cat type format warning 2019-02-13 11:47:10 +08:00
antirez bfdcfbb3ed ACL: fix setting of FAST flag. 2019-02-12 17:06:26 +01:00
antirez b9c97c0b2e ACL: CAT subcommand implemented. 2019-02-12 17:02:45 +01:00
Guy Benoish bdd9a8002a Trim SDS free space of retained module strings
In some cases processMultibulkBuffer uses sdsMakeRoomFor to
expand the querybuf, but later in some cases it uses that query
buffer as is for an argv element (see "Optimization"), which means
that the sds in argv may have a lot of wasted space, and then in case
modules keep that argv RedisString inside their data structure, this
space waste will remain for long (until restarted from rdb).
2019-02-12 14:21:21 +01:00
Salvatore Sanfilippo a22815b4e9
Merge pull request #5833 from soloestoy/masteruser
ACL: add masteruser configuration for replication
2019-02-12 10:27:59 +01:00
zhaozhao.zz ea9d3aefec ACL: add masteruser configuration for replication
In mostly production environment, normal user's behavior should be
limited.

Now in redis ACL mechanism we can do it like that:

    user default on +@all ~* -@dangerous nopass
    user admin on +@all ~* >someSeriousPassword

Then the default normal user can not execute dangerous commands like
FLUSHALL/KEYS.

But some admin commands are in dangerous category too like PSYNC,
and the configurations above will forbid replica from sync with master.

Finally I think we could add a new configuration for replication,
it is masteruser option, like this:

    masteruser admin
    masterauth someSeriousPassword

Then replica will try AUTH admin someSeriousPassword and get privilege
to execute PSYNC. If masteruser is NULL, replica would AUTH with only
masterauth like before.
2019-02-12 17:12:37 +08:00
antirez d5e4a7f439 ACL: when client->user is NULL the client is a superuser.
Related to #5832.
2019-02-12 09:44:30 +01:00
antirez cc6d05a1f7 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2019-02-12 09:43:50 +01:00
zhaozhao.zz 0f42447a0e ACL: show client's user 2019-02-12 16:03:58 +08:00
Chris Lamb d0089cf208 Don't assume the __x86_64__ pointer size to avoid warnings on x32.
__x86_64__ is defined on the on the x32 architecture and the conditionals in
debug.c therefore assume the size of (void*) etc:

  debug.c: In function 'getMcontextEip':
  debug.c:757:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
       return (void*) uc->uc_mcontext.gregs[16]; /* Linux 64 */
              ^
  debug.c: In function 'logRegisters':
  debug.c:920:21: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
       logStackContent((void**)uc->uc_mcontext.gregs[15]);

We can remedy this by checking for __ILP32__ first. See:

  https://wiki.debian.org/ArchitectureSpecificsMemo

... for more info.
2019-02-11 17:12:27 +01:00
antirez f0c7cfa459 ACL: return error when removing a non existing password.
Otherwise it's very simple for an human mistake to think a password is
removed because of a typo in the ACL SETUSER myuser <somepass command
line.
2019-02-11 17:01:58 +01:00
antirez f8a6132f15 ACL: refactor+fix AUTH check in processCommand().
The part that is fixed is that now if the default user is off whatever
is its configuration the user is not considered authenticated.
2019-02-11 16:47:02 +01:00
antirez df346bca39 ACL: ACLFreeUserAndKillClients(): free user later.
Soon or later we may have code in freeClient() that may have to deal
with ACLs. Imagine for instance the command proposed multiple times (not
sure if this will ever be accepted but still...):

    ONCLOSE DEL mykey

Accumulating commands to run when a client is disconnected. Now the
function is compatible with such use cases.

Related to #5829.
2019-02-11 16:28:31 +01:00
zhaozhao.zz 2ce96c0fa7 ACL: kill the old users clients after load aclfile 2019-02-11 16:26:00 +01:00
antirez 3df1eb85ca ACL: add command fingerprint for CAT subcommand. 2019-02-08 12:40:42 +01:00
antirez d453936b52 ACL: add arity check in ACL command where missing. 2019-02-08 12:38:41 +01:00
antirez d4890c20c1 ACL: ignore modules commands when adding categories.
We can't trust modules commands flagging, so module commands must be
always explicitly added, with the exception of +@all that will include
everything. However something like +@readonly should not include command
from modules that may be potentially dangerous: our categories must be
safe and reliable and modules may not be like that.
2019-02-08 11:50:39 +01:00
antirez 80f987726d ACL: load ACL file at startup. Prevent silly configurations. 2019-02-07 17:20:03 +01:00
antirez db30727547 ACL: ACLLoadFromFile(): several errors fixed to make it work. 2019-02-07 17:07:51 +01:00
antirez d26c9b5307 ACL: ACLLoadFromFile(), restore DefaultUser global. 2019-02-07 17:00:35 +01:00
antirez 6a7545e4d4 ACL: fix fgets wrong buffer size. 2019-02-07 16:53:41 +01:00
antirez cbed35efd3 ACL: add assertion and fix comment typo. 2019-02-07 16:47:14 +01:00
antirez 7a86ba22e0 ACL: fix a few ACLLoadFromFile() errors and finish ACLFreeUsersSet(). 2019-02-07 16:20:49 +01:00
antirez 1790be1496 ACL: WIP: preserve the old config on loading errors. 2019-02-07 12:57:21 +01:00
antirez 0f0240b526 ACL: implement LOAD subcommand plus some minor rafactoring. 2019-02-07 12:20:30 +01:00
antirez 72e8a080c2 ACL: fix and complete ACLLoadFromFile() loading step. 2019-02-07 12:04:25 +01:00
antirez bbdf02338d ACL: now ACLLoadFromFile() validates against fake user. 2019-02-06 16:44:55 +01:00
antirez 0d3fb9f7f1 ACL: refactoring creation of unlinked users. 2019-02-06 16:19:17 +01:00
antirez e1e0f993d8 ACL: initial design for ACLLoadFromFile() function. 2019-02-06 12:39:11 +01:00
antirez cc116736c1 ACL: ability to configure an external ACL file. 2019-02-05 17:49:52 +01:00
antirez 416c640156 ACL: change behavior of redefined user. Last line counts. 2019-02-05 10:52:05 +01:00
antirez 775bf6193d ACL: implement rewriting of users in redis.conf. 2019-02-05 10:48:17 +01:00
antirez 2262dd184d ACL: fix user/rule inverted error message. 2019-02-04 16:58:35 +01:00
antirez 623b17425e ACL: load the defined users at server startup. 2019-02-04 16:39:07 +01:00
antirez 500b3e128f ACL: implement ACLLoadConfiguredUsers(). 2019-02-04 16:35:15 +01:00
antirez 68fd4a97fa ACL: better error reporting in users configuration errors. 2019-02-04 13:04:35 +01:00
antirez b166c41edd ACL: make ACLAppendUserForLoading() able to report bad argument. 2019-02-04 13:00:58 +01:00
antirez 21e84cdae2 ACL: initial appending of users in user loading list. 2019-02-04 12:55:48 +01:00
antirez 8f16e1ea91 ACL: implement ACLAppendUserForLoading(). 2019-02-01 13:02:59 +01:00
antirez b8323d98e9 ACL: skeleton and first ideas for postponed user loading. 2019-02-01 12:20:09 +01:00
antirez 1769c22248 ACL: set modules help clients to the root user.
It does not make much sense to limit what modules can do: the admin
should instead limit what module commnads an user may call. So
RedisModule_Call() and other module operations should be able to execute
everything they want: the limitation should be posed by the API exported
by the module itself.
2019-02-01 11:37:28 +01:00
antirez b6372f16c4 ACL: assign ACL command ID to modules commands. 2019-02-01 08:17:24 +01:00
antirez ec1aee031c ACL: implement DELUSER. 2019-01-31 18:33:14 +01:00
antirez 74b7afdf71 ACL: check arity of LIST / USERS subcommand. 2019-01-31 18:32:49 +01:00
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