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
1649e509
Commit
1649e509
authored
Feb 14, 2013
by
antirez
Browse files
Cluster: the cluster state structure is now heap allocated.
parent
9dfd11c3
Changes
5
Expand all
Show whitespace changes
Inline
Side-by-side
src/cluster.c
View file @
1649e509
This diff is collapsed.
Click to expand it.
src/config.c
View file @
1649e509
...
@@ -375,8 +375,8 @@ void loadServerConfigFromString(char *config) {
...
@@ -375,8 +375,8 @@ void loadServerConfigFromString(char *config) {
err
=
"argument must be 'yes' or 'no'"
;
goto
loaderr
;
err
=
"argument must be 'yes' or 'no'"
;
goto
loaderr
;
}
}
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"cluster-config-file"
)
&&
argc
==
2
)
{
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"cluster-config-file"
)
&&
argc
==
2
)
{
zfree
(
server
.
cluster
.
configfile
);
zfree
(
server
.
cluster
->
configfile
);
server
.
cluster
.
configfile
=
zstrdup
(
argv
[
1
]);
server
.
cluster
->
configfile
=
zstrdup
(
argv
[
1
]);
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"lua-time-limit"
)
&&
argc
==
2
)
{
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"lua-time-limit"
)
&&
argc
==
2
)
{
server
.
lua_time_limit
=
strtoll
(
argv
[
1
],
NULL
,
10
);
server
.
lua_time_limit
=
strtoll
(
argv
[
1
],
NULL
,
10
);
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"slowlog-log-slower-than"
)
&&
}
else
if
(
!
strcasecmp
(
argv
[
0
],
"slowlog-log-slower-than"
)
&&
...
...
src/db.c
View file @
1649e509
...
@@ -745,14 +745,14 @@ int *zunionInterGetKeys(struct redisCommand *cmd,robj **argv, int argc, int *num
...
@@ -745,14 +745,14 @@ int *zunionInterGetKeys(struct redisCommand *cmd,robj **argv, int argc, int *num
void
SlotToKeyAdd
(
robj
*
key
)
{
void
SlotToKeyAdd
(
robj
*
key
)
{
unsigned
int
hashslot
=
keyHashSlot
(
key
->
ptr
,
sdslen
(
key
->
ptr
));
unsigned
int
hashslot
=
keyHashSlot
(
key
->
ptr
,
sdslen
(
key
->
ptr
));
zslInsert
(
server
.
cluster
.
slots_to_keys
,
hashslot
,
key
);
zslInsert
(
server
.
cluster
->
slots_to_keys
,
hashslot
,
key
);
incrRefCount
(
key
);
incrRefCount
(
key
);
}
}
void
SlotToKeyDel
(
robj
*
key
)
{
void
SlotToKeyDel
(
robj
*
key
)
{
unsigned
int
hashslot
=
keyHashSlot
(
key
->
ptr
,
sdslen
(
key
->
ptr
));
unsigned
int
hashslot
=
keyHashSlot
(
key
->
ptr
,
sdslen
(
key
->
ptr
));
zslDelete
(
server
.
cluster
.
slots_to_keys
,
hashslot
,
key
);
zslDelete
(
server
.
cluster
->
slots_to_keys
,
hashslot
,
key
);
}
}
unsigned
int
GetKeysInSlot
(
unsigned
int
hashslot
,
robj
**
keys
,
unsigned
int
count
)
{
unsigned
int
GetKeysInSlot
(
unsigned
int
hashslot
,
robj
**
keys
,
unsigned
int
count
)
{
...
@@ -763,7 +763,7 @@ unsigned int GetKeysInSlot(unsigned int hashslot, robj **keys, unsigned int coun
...
@@ -763,7 +763,7 @@ unsigned int GetKeysInSlot(unsigned int hashslot, robj **keys, unsigned int coun
range
.
min
=
range
.
max
=
hashslot
;
range
.
min
=
range
.
max
=
hashslot
;
range
.
minex
=
range
.
maxex
=
0
;
range
.
minex
=
range
.
maxex
=
0
;
n
=
zslFirstInRange
(
server
.
cluster
.
slots_to_keys
,
range
);
n
=
zslFirstInRange
(
server
.
cluster
->
slots_to_keys
,
range
);
while
(
n
&&
n
->
score
==
hashslot
&&
count
--
)
{
while
(
n
&&
n
->
score
==
hashslot
&&
count
--
)
{
keys
[
j
++
]
=
n
->
obj
;
keys
[
j
++
]
=
n
->
obj
;
n
=
n
->
level
[
0
].
forward
;
n
=
n
->
level
[
0
].
forward
;
...
...
src/redis.c
View file @
1649e509
...
@@ -1187,7 +1187,7 @@ void initServerConfig() {
...
@@ -1187,7 +1187,7 @@ void initServerConfig() {
server.repl_ping_slave_period = REDIS_REPL_PING_SLAVE_PERIOD;
server.repl_ping_slave_period = REDIS_REPL_PING_SLAVE_PERIOD;
server.repl_timeout = REDIS_REPL_TIMEOUT;
server.repl_timeout = REDIS_REPL_TIMEOUT;
server.cluster_enabled = 0;
server.cluster_enabled = 0;
server.cluster
.
configfile = zstrdup("nodes.conf");
server.cluster
_
configfile = zstrdup("nodes.conf");
server.lua_caller = NULL;
server.lua_caller = NULL;
server.lua_time_limit = REDIS_LUA_TIME_LIMIT;
server.lua_time_limit = REDIS_LUA_TIME_LIMIT;
server.lua_client = NULL;
server.lua_client = NULL;
...
@@ -1661,7 +1661,7 @@ int processCommand(redisClient *c) {
...
@@ -1661,7 +1661,7 @@ int processCommand(redisClient *c) {
!(c->cmd->getkeys_proc == NULL && c->cmd->firstkey == 0)) {
!(c->cmd->getkeys_proc == NULL && c->cmd->firstkey == 0)) {
int hashslot;
int hashslot;
if (server.cluster
.
state != REDIS_CLUSTER_OK) {
if (server.cluster
->
state != REDIS_CLUSTER_OK) {
addReplyError(c,"The cluster is down. Check with CLUSTER INFO for more information");
addReplyError(c,"The cluster is down. Check with CLUSTER INFO for more information");
return REDIS_OK;
return REDIS_OK;
} else {
} else {
...
@@ -1670,7 +1670,7 @@ int processCommand(redisClient *c) {
...
@@ -1670,7 +1670,7 @@ int processCommand(redisClient *c) {
if (n == NULL) {
if (n == NULL) {
addReplyError(c,"Multi keys request invalid in cluster");
addReplyError(c,"Multi keys request invalid in cluster");
return REDIS_OK;
return REDIS_OK;
} else if (n != server.cluster
.
myself) {
} else if (n != server.cluster
->
myself) {
addReplySds(c,sdscatprintf(sdsempty(),
addReplySds(c,sdscatprintf(sdsempty(),
"-%s %d %s:%d\r\n", ask ? "ASK" : "MOVED",
"-%s %d %s:%d\r\n", ask ? "ASK" : "MOVED",
hashslot,n->ip,n->port));
hashslot,n->ip,n->port));
...
...
src/redis.h
View file @
1649e509
...
@@ -821,7 +821,8 @@ struct redisServer {
...
@@ -821,7 +821,8 @@ struct redisServer {
xor of REDIS_NOTIFY... flags. */
xor of REDIS_NOTIFY... flags. */
/* Cluster */
/* Cluster */
int
cluster_enabled
;
/* Is cluster enabled? */
int
cluster_enabled
;
/* Is cluster enabled? */
clusterState
cluster
;
/* State of the cluster */
char
*
cluster_configfile
;
/* Cluster auto-generated config file name. */
clusterState
*
cluster
;
/* State of the cluster */
/* Scripting */
/* Scripting */
lua_State
*
lua
;
/* The Lua interpreter. We use just one for all clients */
lua_State
*
lua
;
/* The Lua interpreter. We use just one for all clients */
redisClient
*
lua_client
;
/* The "fake client" to query Redis from Lua */
redisClient
*
lua_client
;
/* The "fake client" to query Redis from Lua */
...
...
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