提交 1649e509 编写于 作者: A antirez

Cluster: the cluster state structure is now heap allocated.

上级 9dfd11c3
此差异已折叠。
...@@ -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") &&
......
...@@ -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;
......
...@@ -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));
......
...@@ -820,8 +820,9 @@ struct redisServer { ...@@ -820,8 +820,9 @@ struct redisServer {
int notify_keyspace_events; /* Events to propagate via Pub/Sub. This is an int notify_keyspace_events; /* Events to propagate via Pub/Sub. This is an
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 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册