Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
0420c327
Commit
0420c327
authored
Jul 10, 2018
by
antirez
Browse files
Merge branch 'unstable' of github.com:/antirez/redis into unstable
parents
28e95c7c
7239e9ca
Changes
6
Hide whitespace changes
Inline
Side-by-side
src/ae.c
View file @
0420c327
...
@@ -433,7 +433,7 @@ int aeProcessEvents(aeEventLoop *eventLoop, int flags)
...
@@ -433,7 +433,7 @@ int aeProcessEvents(aeEventLoop *eventLoop, int flags)
* before replying to a client. */
* before replying to a client. */
int
invert
=
fe
->
mask
&
AE_BARRIER
;
int
invert
=
fe
->
mask
&
AE_BARRIER
;
/* Note the "fe->mask & mask & ..." code: maybe an already
/* Note the "fe->mask & mask & ..." code: maybe an already
* processed event removed an element that fired and we still
* processed event removed an element that fired and we still
* didn't processed, so we check if the event is still valid.
* didn't processed, so we check if the event is still valid.
*
*
...
@@ -485,7 +485,7 @@ int aeWait(int fd, int mask, long long milliseconds) {
...
@@ -485,7 +485,7 @@ int aeWait(int fd, int mask, long long milliseconds) {
if
((
retval
=
poll
(
&
pfd
,
1
,
milliseconds
))
==
1
)
{
if
((
retval
=
poll
(
&
pfd
,
1
,
milliseconds
))
==
1
)
{
if
(
pfd
.
revents
&
POLLIN
)
retmask
|=
AE_READABLE
;
if
(
pfd
.
revents
&
POLLIN
)
retmask
|=
AE_READABLE
;
if
(
pfd
.
revents
&
POLLOUT
)
retmask
|=
AE_WRITABLE
;
if
(
pfd
.
revents
&
POLLOUT
)
retmask
|=
AE_WRITABLE
;
if
(
pfd
.
revents
&
POLLERR
)
retmask
|=
AE_WRITABLE
;
if
(
pfd
.
revents
&
POLLERR
)
retmask
|=
AE_WRITABLE
;
if
(
pfd
.
revents
&
POLLHUP
)
retmask
|=
AE_WRITABLE
;
if
(
pfd
.
revents
&
POLLHUP
)
retmask
|=
AE_WRITABLE
;
return
retmask
;
return
retmask
;
}
else
{
}
else
{
...
...
src/blocked.c
View file @
0420c327
...
@@ -406,10 +406,13 @@ void handleClientsBlockedOnKeys(void) {
...
@@ -406,10 +406,13 @@ void handleClientsBlockedOnKeys(void) {
/* Lookup the consumer for the group, if any. */
/* Lookup the consumer for the group, if any. */
streamConsumer
*
consumer
=
NULL
;
streamConsumer
*
consumer
=
NULL
;
int
noack
=
0
;
if
(
group
)
{
if
(
group
)
{
consumer
=
streamLookupConsumer
(
group
,
consumer
=
streamLookupConsumer
(
group
,
receiver
->
bpop
.
xread_consumer
->
ptr
,
receiver
->
bpop
.
xread_consumer
->
ptr
,
1
);
1
);
noack
=
receiver
->
bpop
.
xread_group_noack
;
}
}
/* Emit the two elements sub-array consisting of
/* Emit the two elements sub-array consisting of
...
@@ -426,7 +429,7 @@ void handleClientsBlockedOnKeys(void) {
...
@@ -426,7 +429,7 @@ void handleClientsBlockedOnKeys(void) {
};
};
streamReplyWithRange
(
receiver
,
s
,
&
start
,
NULL
,
streamReplyWithRange
(
receiver
,
s
,
&
start
,
NULL
,
receiver
->
bpop
.
xread_count
,
receiver
->
bpop
.
xread_count
,
0
,
group
,
consumer
,
0
,
&
pi
);
0
,
group
,
consumer
,
noack
,
&
pi
);
/* Note that after we unblock the client, 'gt'
/* Note that after we unblock the client, 'gt'
* and other receiver->bpop stuff are no longer
* and other receiver->bpop stuff are no longer
...
...
src/networking.c
View file @
0420c327
...
@@ -140,6 +140,7 @@ client *createClient(int fd) {
...
@@ -140,6 +140,7 @@ client *createClient(int fd) {
c
->
bpop
.
target
=
NULL
;
c
->
bpop
.
target
=
NULL
;
c
->
bpop
.
xread_group
=
NULL
;
c
->
bpop
.
xread_group
=
NULL
;
c
->
bpop
.
xread_consumer
=
NULL
;
c
->
bpop
.
xread_consumer
=
NULL
;
c
->
bpop
.
xread_group_noack
=
0
;
c
->
bpop
.
numreplicas
=
0
;
c
->
bpop
.
numreplicas
=
0
;
c
->
bpop
.
reploffset
=
0
;
c
->
bpop
.
reploffset
=
0
;
c
->
woff
=
0
;
c
->
woff
=
0
;
...
...
src/server.c
View file @
0420c327
...
@@ -1165,7 +1165,7 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
...
@@ -1165,7 +1165,7 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
}
else
{
}
else
{
/* If there is not a background saving/rewrite in progress check if
/* If there is not a background saving/rewrite in progress check if
* we have to save/rewrite now. */
* we have to save/rewrite now. */
for
(
j
=
0
;
j
<
server
.
saveparamslen
;
j
++
)
{
for
(
j
=
0
;
j
<
server
.
saveparamslen
;
j
++
)
{
struct
saveparam
*
sp
=
server
.
saveparams
+
j
;
struct
saveparam
*
sp
=
server
.
saveparams
+
j
;
/* Save if we reached the given amount of changes,
/* Save if we reached the given amount of changes,
...
@@ -1185,23 +1185,23 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
...
@@ -1185,23 +1185,23 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
rdbSaveBackground
(
server
.
rdb_filename
,
rsiptr
);
rdbSaveBackground
(
server
.
rdb_filename
,
rsiptr
);
break
;
break
;
}
}
}
}
/* Trigger an AOF rewrite if needed. */
/* Trigger an AOF rewrite if needed. */
if
(
server
.
aof_state
==
AOF_ON
&&
if
(
server
.
aof_state
==
AOF_ON
&&
server
.
rdb_child_pid
==
-
1
&&
server
.
rdb_child_pid
==
-
1
&&
server
.
aof_child_pid
==
-
1
&&
server
.
aof_child_pid
==
-
1
&&
server
.
aof_rewrite_perc
&&
server
.
aof_rewrite_perc
&&
server
.
aof_current_size
>
server
.
aof_rewrite_min_size
)
server
.
aof_current_size
>
server
.
aof_rewrite_min_size
)
{
{
long
long
base
=
server
.
aof_rewrite_base_size
?
long
long
base
=
server
.
aof_rewrite_base_size
?
server
.
aof_rewrite_base_size
:
1
;
server
.
aof_rewrite_base_size
:
1
;
long
long
growth
=
(
server
.
aof_current_size
*
100
/
base
)
-
100
;
long
long
growth
=
(
server
.
aof_current_size
*
100
/
base
)
-
100
;
if
(
growth
>=
server
.
aof_rewrite_perc
)
{
if
(
growth
>=
server
.
aof_rewrite_perc
)
{
serverLog
(
LL_NOTICE
,
"Starting automatic rewriting of AOF on %lld%% growth"
,
growth
);
serverLog
(
LL_NOTICE
,
"Starting automatic rewriting of AOF on %lld%% growth"
,
growth
);
rewriteAppendOnlyFileBackground
();
rewriteAppendOnlyFileBackground
();
}
}
}
}
}
}
...
...
src/server.h
View file @
0420c327
...
@@ -665,6 +665,7 @@ typedef struct blockingState {
...
@@ -665,6 +665,7 @@ typedef struct blockingState {
robj
*
xread_group
;
/* XREADGROUP group name. */
robj
*
xread_group
;
/* XREADGROUP group name. */
robj
*
xread_consumer
;
/* XREADGROUP consumer name. */
robj
*
xread_consumer
;
/* XREADGROUP consumer name. */
mstime_t
xread_retry_time
,
xread_retry_ttl
;
mstime_t
xread_retry_time
,
xread_retry_ttl
;
int
xread_group_noack
;
/* BLOCKED_WAIT */
/* BLOCKED_WAIT */
int
numreplicas
;
/* Number of replicas we are waiting for ACK. */
int
numreplicas
;
/* Number of replicas we are waiting for ACK. */
...
...
src/t_stream.c
View file @
0420c327
...
@@ -1461,6 +1461,7 @@ void xreadCommand(client *c) {
...
@@ -1461,6 +1461,7 @@ void xreadCommand(client *c) {
incrRefCount
(
consumername
);
incrRefCount
(
consumername
);
c
->
bpop
.
xread_group
=
groupname
;
c
->
bpop
.
xread_group
=
groupname
;
c
->
bpop
.
xread_consumer
=
consumername
;
c
->
bpop
.
xread_consumer
=
consumername
;
c
->
bpop
.
xread_group_noack
=
noack
;
}
else
{
}
else
{
c
->
bpop
.
xread_group
=
NULL
;
c
->
bpop
.
xread_group
=
NULL
;
c
->
bpop
.
xread_consumer
=
NULL
;
c
->
bpop
.
xread_consumer
=
NULL
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment