7364 Commits

Author SHA1 Message Date
John Sully
942510f1a5 Change fastlock implementation from naive spinlock to a ticket lock for better fairness and lower peak latency 2019-02-21 00:16:47 -05:00
John Sully
02e7fe400c Cleanup lock contention, and ensure clients are written to in an unsafe way when the global lock is released 2019-02-20 23:30:21 -05:00
artix
0f28754021 Cluster Manager: fix replica assigment anti-affinity (create)
Fix issue #5849
2019-02-20 15:36:15 +01:00
John Sully
29c1105132 Multithreading works! 2019-02-20 01:20:26 -05: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
John Sully
357a9e92e2 Prevent erroneously setting CLIENT_PENDING_WRITE when we have async writes 2019-02-19 01:37:16 -05:00
John Sully
bf41d3916e Most tests failing, except some memory and number of PSYNC syncs 2019-02-19 01:11:00 -05:00
John Sully
acbad0c04e deadlock fixes 2019-02-18 23:52:21 -05:00
John Sully
2526d51d1a Thread safety fixes 2019-02-18 22:25:35 -05:00
John Sully
a7bed6327a Extra AE functionality 2019-02-18 18:56:45 -05: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
John Sully
a47b0f4d3b Load balance connections across threads (config NYI and hardcoded) 2019-02-16 14:26:19 -05:00
John Sully
2c220889c6 Fix recursive fastlock... 2019-02-16 14:25:14 -05:00
John Sully
5fc8747feb make headers C++ safe 2019-02-15 16:55:40 -05:00
John Sully
62090d0a97 make networking.c a C++ file 2019-02-15 14:11:34 -05:00
John Sully
f5caec488d Make the lock recursive, this is because processEventsWhileBlocked may cause us to lock multiple times 2019-02-15 14:11:05 -05:00
John Sully
48f6d0d800 Fix most failing tests 2019-02-15 10:53:32 -05: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
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
John Sully
d62178ec8c Initial work of multithreaded key-db. Note: Fails tests 2019-02-11 03:36:18 -05:00
John Sully
302675d18f Fastlock fixes
Former-commit-id: da84b26785b82672ed8217b74464fa294049bc2b
2019-02-10 22:00:19 -05:00
John Sully
988ea40101 Fastlock fixes 2019-02-10 22:00:19 -05:00
John Sully
e40a203a1d move ae to C++
Former-commit-id: eb9070c8333ebe7d6e0d622f90e904c1b17e9710
2019-02-10 20:24:11 -05:00
John Sully
c4dbc557eb move ae to C++ 2019-02-10 20:24:11 -05:00
John Sully
f10bd5954b Keep pool allocator up to date (even though we aren't enabling it)
Former-commit-id: b7b503d3ce6c20d28684c83ad3855bb7486cb3d3
2019-02-10 19:33:07 -05:00
John Sully
180c93ea4f Keep pool allocator up to date (even though we aren't enabling it) 2019-02-10 19:33:07 -05:00
John Sully
99553d7a77 Prevent so many copies of sdslen getting added
Former-commit-id: 327bbec981feb0d90df416281575953cd71ef6c2
2019-02-10 19:31:46 -05:00
John Sully
44299002e0 Prevent so many copies of sdslen getting added 2019-02-10 19:31:46 -05:00
John Sully
cbdae2a62d Performance enhancements!
Former-commit-id: 7175a8e4ebee74233702b8e308c0d57661b54bac
2019-02-09 13:05:06 -05:00
John Sully
edd87115f1 Performance enhancements! 2019-02-09 13:05:06 -05:00