Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
redis
Commits
3c38b087
Commit
3c38b087
authored
Mar 30, 2012
by
Salvatore Sanfilippo
Browse files
Merge pull request #417 from josephjang/
e95ca1db
a memory leak with replication on two or more dbs including >= db10
parents
6938960b
e95ca1db
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/redis.c
View file @
3c38b087
...
...
@@ -773,16 +773,11 @@ void createSharedObjects(void) {
shared
.
space
=
createObject
(
REDIS_STRING
,
sdsnew
(
" "
));
shared
.
colon
=
createObject
(
REDIS_STRING
,
sdsnew
(
":"
));
shared
.
plus
=
createObject
(
REDIS_STRING
,
sdsnew
(
"+"
));
shared
.
select0
=
createStringObject
(
"select 0
\r\n
"
,
10
);
shared
.
select1
=
createStringObject
(
"select 1
\r\n
"
,
10
);
shared
.
select2
=
createStringObject
(
"select 2
\r\n
"
,
10
);
shared
.
select3
=
createStringObject
(
"select 3
\r\n
"
,
10
);
shared
.
select4
=
createStringObject
(
"select 4
\r\n
"
,
10
);
shared
.
select5
=
createStringObject
(
"select 5
\r\n
"
,
10
);
shared
.
select6
=
createStringObject
(
"select 6
\r\n
"
,
10
);
shared
.
select7
=
createStringObject
(
"select 7
\r\n
"
,
10
);
shared
.
select8
=
createStringObject
(
"select 8
\r\n
"
,
10
);
shared
.
select9
=
createStringObject
(
"select 9
\r\n
"
,
10
);
for
(
j
=
0
;
j
<
REDIS_SHARED_SELECT_CMDS
;
j
++
)
{
shared
.
select
[
j
]
=
createObject
(
REDIS_STRING
,
sdscatprintf
(
sdsempty
(),
"select %d
\r\n
"
,
j
));
}
shared
.
messagebulk
=
createStringObject
(
"$7
\r\n
message
\r\n
"
,
13
);
shared
.
pmessagebulk
=
createStringObject
(
"$8
\r\n
pmessage
\r\n
"
,
14
);
shared
.
subscribebulk
=
createStringObject
(
"$9
\r\n
subscribe
\r\n
"
,
15
);
...
...
src/redis.h
View file @
3c38b087
...
...
@@ -47,6 +47,7 @@
#define REDIS_EXPIRELOOKUPS_PER_CRON 10
/* lookup 10 expires per loop */
#define REDIS_MAX_WRITE_PER_EVENT (1024*64)
#define REDIS_REQUEST_MAX_SIZE (1024*1024*256)
/* max bytes in inline command */
#define REDIS_SHARED_SELECT_CMDS 10
#define REDIS_SHARED_INTEGERS 10000
#define REDIS_REPLY_CHUNK_BYTES (5*1500)
/* 5 TCP packets with default MTU */
#define REDIS_INLINE_MAX_SIZE (1024*64)
/* Max size of inline reads */
...
...
@@ -372,8 +373,7 @@ struct sharedObjectsStruct {
*
colon
,
*
nullbulk
,
*
nullmultibulk
,
*
queued
,
*
emptymultibulk
,
*
wrongtypeerr
,
*
nokeyerr
,
*
syntaxerr
,
*
sameobjecterr
,
*
outofrangeerr
,
*
loadingerr
,
*
plus
,
*
select0
,
*
select1
,
*
select2
,
*
select3
,
*
select4
,
*
select5
,
*
select6
,
*
select7
,
*
select8
,
*
select9
,
*
select
[
REDIS_SHARED_SELECT_CMDS
],
*
messagebulk
,
*
pmessagebulk
,
*
subscribebulk
,
*
unsubscribebulk
,
*
mbulk3
,
*
mbulk4
,
*
psubscribebulk
,
*
punsubscribebulk
,
*
integers
[
REDIS_SHARED_INTEGERS
];
...
...
src/replication.c
View file @
3c38b087
...
...
@@ -25,24 +25,15 @@ void replicationFeedSlaves(list *slaves, int dictid, robj **argv, int argc) {
if
(
slave
->
slaveseldb
!=
dictid
)
{
robj
*
selectcmd
;
switch
(
dictid
)
{
case
0
:
selectcmd
=
shared
.
select0
;
break
;
case
1
:
selectcmd
=
shared
.
select1
;
break
;
case
2
:
selectcmd
=
shared
.
select2
;
break
;
case
3
:
selectcmd
=
shared
.
select3
;
break
;
case
4
:
selectcmd
=
shared
.
select4
;
break
;
case
5
:
selectcmd
=
shared
.
select5
;
break
;
case
6
:
selectcmd
=
shared
.
select6
;
break
;
case
7
:
selectcmd
=
shared
.
select7
;
break
;
case
8
:
selectcmd
=
shared
.
select8
;
break
;
case
9
:
selectcmd
=
shared
.
select9
;
break
;
default:
if
(
dictid
>=
0
&&
dictid
<
REDIS_SHARED_SELECT_CMDS
)
{
incrRefCount
(
shared
.
select
[
dictid
]);
selectcmd
=
shared
.
select
[
dictid
];
}
else
{
selectcmd
=
createObject
(
REDIS_STRING
,
sdscatprintf
(
sdsempty
(),
"select %d
\r\n
"
,
dictid
));
selectcmd
->
refcount
=
0
;
break
;
}
addReply
(
slave
,
selectcmd
);
decrRefCount
(
selectcmd
);
slave
->
slaveseldb
=
dictid
;
}
addReplyMultiBulkLen
(
slave
,
argc
);
...
...
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