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
b3281e93
Commit
b3281e93
authored
Mar 11, 2013
by
antirez
Browse files
In databasesCron() never test more DBs than we have.
parent
2677c97d
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/redis.c
View file @
b3281e93
...
@@ -623,8 +623,12 @@ void updateDictResizePolicy(void) {
...
@@ -623,8 +623,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
...
@@ -632,7 +636,7 @@ void activeExpireCycle(void) {
...
@@ -632,7 +636,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
);
...
@@ -816,17 +820,21 @@ void databasesCron(void) {
...
@@ -816,17 +820,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
)
{
...
...
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