mirror of
https://github.com/fluencelabs/redis
synced 2025-03-19 00:50:50 +00:00
In databasesCron() never test more DBs than we have.
This commit is contained in:
parent
4b1ccdfd49
commit
08b107e405
14
src/redis.c
14
src/redis.c
@ -650,8 +650,12 @@ void updateDictResizePolicy(void) {
|
|||||||
void activeExpireCycle(void) {
|
void activeExpireCycle(void) {
|
||||||
static unsigned int current_db = 0;
|
static unsigned int current_db = 0;
|
||||||
unsigned int j, iteration = 0;
|
unsigned int j, iteration = 0;
|
||||||
|
unsigned int dbs_per_call = REDIS_DBCRON_DBS_PER_CALL;
|
||||||
long long start = ustime(), timelimit;
|
long long start = ustime(), timelimit;
|
||||||
|
|
||||||
|
/* Don't test more DBs than we have. */
|
||||||
|
if (dbs_per_call > server.dbnum) dbs_per_call = server.dbnum;
|
||||||
|
|
||||||
/* We can use at max REDIS_EXPIRELOOKUPS_TIME_PERC percentage of CPU time
|
/* We can use at max REDIS_EXPIRELOOKUPS_TIME_PERC percentage of CPU time
|
||||||
* per iteration. Since this function gets called with a frequency of
|
* per iteration. Since this function gets called with a frequency of
|
||||||
* server.hz times per second, the following is the max amount of
|
* server.hz times per second, the following is the max amount of
|
||||||
@ -659,7 +663,7 @@ void activeExpireCycle(void) {
|
|||||||
timelimit = 1000000*REDIS_EXPIRELOOKUPS_TIME_PERC/server.hz/100;
|
timelimit = 1000000*REDIS_EXPIRELOOKUPS_TIME_PERC/server.hz/100;
|
||||||
if (timelimit <= 0) timelimit = 1;
|
if (timelimit <= 0) timelimit = 1;
|
||||||
|
|
||||||
for (j = 0; j < REDIS_DBCRON_DBS_PER_CALL; j++) {
|
for (j = 0; j < dbs_per_call; j++) {
|
||||||
int expired;
|
int expired;
|
||||||
redisDb *db = server.db+(current_db % server.dbnum);
|
redisDb *db = server.db+(current_db % server.dbnum);
|
||||||
|
|
||||||
@ -845,17 +849,21 @@ void databasesCron(void) {
|
|||||||
* cron loop iteration. */
|
* cron loop iteration. */
|
||||||
static unsigned int resize_db = 0;
|
static unsigned int resize_db = 0;
|
||||||
static unsigned int rehash_db = 0;
|
static unsigned int rehash_db = 0;
|
||||||
|
unsigned int dbs_per_call = REDIS_DBCRON_DBS_PER_CALL;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
|
|
||||||
|
/* Don't test more DBs than we have. */
|
||||||
|
if (dbs_per_call > server.dbnum) dbs_per_call = server.dbnum;
|
||||||
|
|
||||||
/* Resize */
|
/* Resize */
|
||||||
for (j = 0; j < REDIS_DBCRON_DBS_PER_CALL; j++) {
|
for (j = 0; j < dbs_per_call; j++) {
|
||||||
tryResizeHashTables(resize_db % server.dbnum);
|
tryResizeHashTables(resize_db % server.dbnum);
|
||||||
resize_db++;
|
resize_db++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rehash */
|
/* Rehash */
|
||||||
if (server.activerehashing) {
|
if (server.activerehashing) {
|
||||||
for (j = 0; j < REDIS_DBCRON_DBS_PER_CALL; j++) {
|
for (j = 0; j < dbs_per_call; j++) {
|
||||||
int work_done = incrementallyRehash(rehash_db % server.dbnum);
|
int work_done = incrementallyRehash(rehash_db % server.dbnum);
|
||||||
rehash_db++;
|
rehash_db++;
|
||||||
if (work_done) {
|
if (work_done) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user