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
e95ca1db
Commit
e95ca1db
authored
Mar 30, 2012
by
Joseph Jang
Browse files
Fixed a memory leak with replication
occurs when two or more dbs are replicated and at least one of them is >db10
parent
9a5cbf9f
Changes
3
Show whitespace changes
Inline
Side-by-side
src/redis.c
View file @
e95ca1db
...
@@ -773,16 +773,11 @@ void createSharedObjects(void) {
...
@@ -773,16 +773,11 @@ void createSharedObjects(void) {
shared.space = createObject(REDIS_STRING,sdsnew(" "));
shared.space = createObject(REDIS_STRING,sdsnew(" "));
shared.colon = createObject(REDIS_STRING,sdsnew(":"));
shared.colon = createObject(REDIS_STRING,sdsnew(":"));
shared.plus = 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);
for (j = 0; j < REDIS_SHARED_SELECT_CMDS; j++) {
shared.select2 = createStringObject("select 2\r\n",10);
shared.select[j] = createObject(REDIS_STRING,
shared.select3 = createStringObject("select 3\r\n",10);
sdscatprintf(sdsempty(),"select %d\r\n", j));
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);
shared.messagebulk = createStringObject("$7\r\nmessage\r\n",13);
shared.messagebulk = createStringObject("$7\r\nmessage\r\n",13);
shared.pmessagebulk = createStringObject("$8\r\npmessage\r\n",14);
shared.pmessagebulk = createStringObject("$8\r\npmessage\r\n",14);
shared.subscribebulk = createStringObject("$9\r\nsubscribe\r\n",15);
shared.subscribebulk = createStringObject("$9\r\nsubscribe\r\n",15);
...
...
src/redis.h
View file @
e95ca1db
...
@@ -47,6 +47,7 @@
...
@@ -47,6 +47,7 @@
#define REDIS_EXPIRELOOKUPS_PER_CRON 10
/* lookup 10 expires per loop */
#define REDIS_EXPIRELOOKUPS_PER_CRON 10
/* lookup 10 expires per loop */
#define REDIS_MAX_WRITE_PER_EVENT (1024*64)
#define REDIS_MAX_WRITE_PER_EVENT (1024*64)
#define REDIS_REQUEST_MAX_SIZE (1024*1024*256)
/* max bytes in inline command */
#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_SHARED_INTEGERS 10000
#define REDIS_REPLY_CHUNK_BYTES (5*1500)
/* 5 TCP packets with default MTU */
#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 */
#define REDIS_INLINE_MAX_SIZE (1024*64)
/* Max size of inline reads */
...
@@ -372,8 +373,7 @@ struct sharedObjectsStruct {
...
@@ -372,8 +373,7 @@ struct sharedObjectsStruct {
*
colon
,
*
nullbulk
,
*
nullmultibulk
,
*
queued
,
*
colon
,
*
nullbulk
,
*
nullmultibulk
,
*
queued
,
*
emptymultibulk
,
*
wrongtypeerr
,
*
nokeyerr
,
*
syntaxerr
,
*
sameobjecterr
,
*
emptymultibulk
,
*
wrongtypeerr
,
*
nokeyerr
,
*
syntaxerr
,
*
sameobjecterr
,
*
outofrangeerr
,
*
loadingerr
,
*
plus
,
*
outofrangeerr
,
*
loadingerr
,
*
plus
,
*
select0
,
*
select1
,
*
select2
,
*
select3
,
*
select4
,
*
select
[
REDIS_SHARED_SELECT_CMDS
],
*
select5
,
*
select6
,
*
select7
,
*
select8
,
*
select9
,
*
messagebulk
,
*
pmessagebulk
,
*
subscribebulk
,
*
unsubscribebulk
,
*
mbulk3
,
*
messagebulk
,
*
pmessagebulk
,
*
subscribebulk
,
*
unsubscribebulk
,
*
mbulk3
,
*
mbulk4
,
*
psubscribebulk
,
*
punsubscribebulk
,
*
mbulk4
,
*
psubscribebulk
,
*
punsubscribebulk
,
*
integers
[
REDIS_SHARED_INTEGERS
];
*
integers
[
REDIS_SHARED_INTEGERS
];
...
...
src/replication.c
View file @
e95ca1db
...
@@ -25,24 +25,15 @@ void replicationFeedSlaves(list *slaves, int dictid, robj **argv, int argc) {
...
@@ -25,24 +25,15 @@ void replicationFeedSlaves(list *slaves, int dictid, robj **argv, int argc) {
if
(
slave
->
slaveseldb
!=
dictid
)
{
if
(
slave
->
slaveseldb
!=
dictid
)
{
robj
*
selectcmd
;
robj
*
selectcmd
;
switch
(
dictid
)
{
if
(
dictid
>=
0
&&
dictid
<
REDIS_SHARED_SELECT_CMDS
)
{
case
0
:
selectcmd
=
shared
.
select0
;
break
;
incrRefCount
(
shared
.
select
[
dictid
]);
case
1
:
selectcmd
=
shared
.
select1
;
break
;
selectcmd
=
shared
.
select
[
dictid
];
case
2
:
selectcmd
=
shared
.
select2
;
break
;
}
else
{
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:
selectcmd
=
createObject
(
REDIS_STRING
,
selectcmd
=
createObject
(
REDIS_STRING
,
sdscatprintf
(
sdsempty
(),
"select %d
\r\n
"
,
dictid
));
sdscatprintf
(
sdsempty
(),
"select %d
\r\n
"
,
dictid
));
selectcmd
->
refcount
=
0
;
break
;
}
}
addReply
(
slave
,
selectcmd
);
addReply
(
slave
,
selectcmd
);
decrRefCount
(
selectcmd
);
slave
->
slaveseldb
=
dictid
;
slave
->
slaveseldb
=
dictid
;
}
}
addReplyMultiBulkLen
(
slave
,
argc
);
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