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
890a2ed9
Commit
890a2ed9
authored
May 22, 2011
by
Pieter Noordhuis
Browse files
Configurable synchronous I/O timeout
parent
b075621f
Changes
3
Hide whitespace changes
Inline
Side-by-side
src/redis.c
View file @
890a2ed9
...
@@ -871,6 +871,7 @@ void initServerConfig() {
...
@@ -871,6 +871,7 @@ void initServerConfig() {
server
.
masterport
=
6379
;
server
.
masterport
=
6379
;
server
.
master
=
NULL
;
server
.
master
=
NULL
;
server
.
replstate
=
REDIS_REPL_NONE
;
server
.
replstate
=
REDIS_REPL_NONE
;
server
.
repl_syncio_timeout
=
REDIS_REPL_SYNCIO_TIMEOUT
;
server
.
repl_serve_stale_data
=
1
;
server
.
repl_serve_stale_data
=
1
;
/* Double constants initialization */
/* Double constants initialization */
...
...
src/redis.h
View file @
890a2ed9
...
@@ -159,6 +159,9 @@
...
@@ -159,6 +159,9 @@
#define REDIS_REPL_TRANSFER 3
/* Receiving .rdb from master */
#define REDIS_REPL_TRANSFER 3
/* Receiving .rdb from master */
#define REDIS_REPL_CONNECTED 4
/* Connected to master */
#define REDIS_REPL_CONNECTED 4
/* Connected to master */
/* Synchronous read timeout - slave side */
#define REDIS_REPL_SYNCIO_TIMEOUT 5
/* Slave replication state - from the point of view of master
/* Slave replication state - from the point of view of master
* Note that in SEND_BULK and ONLINE state the slave receives new updates
* Note that in SEND_BULK and ONLINE state the slave receives new updates
* in its output queue. In the WAIT_BGSAVE state instead the server is waiting
* in its output queue. In the WAIT_BGSAVE state instead the server is waiting
...
@@ -586,6 +589,7 @@ struct redisServer {
...
@@ -586,6 +589,7 @@ struct redisServer {
char
*
masterhost
;
char
*
masterhost
;
int
masterport
;
int
masterport
;
redisClient
*
master
;
/* client that is master for this slave */
redisClient
*
master
;
/* client that is master for this slave */
int
repl_syncio_timeout
;
/* timeout for synchronous I/O calls */
int
replstate
;
/* replication status if the instance is a slave */
int
replstate
;
/* replication status if the instance is a slave */
off_t
repl_transfer_left
;
/* bytes left reading .rdb */
off_t
repl_transfer_left
;
/* bytes left reading .rdb */
int
repl_transfer_s
;
/* slave -> master SYNC socket */
int
repl_transfer_s
;
/* slave -> master SYNC socket */
...
...
src/replication.c
View file @
890a2ed9
...
@@ -315,7 +315,7 @@ void readSyncBulkPayload(aeEventLoop *el, int fd, void *privdata, int mask) {
...
@@ -315,7 +315,7 @@ void readSyncBulkPayload(aeEventLoop *el, int fd, void *privdata, int mask) {
/* If repl_transfer_left == -1 we still have to read the bulk length
/* If repl_transfer_left == -1 we still have to read the bulk length
* from the master reply. */
* from the master reply. */
if
(
server
.
repl_transfer_left
==
-
1
)
{
if
(
server
.
repl_transfer_left
==
-
1
)
{
if
(
syncReadLine
(
fd
,
buf
,
1024
,
3600
)
==
-
1
)
{
if
(
syncReadLine
(
fd
,
buf
,
1024
,
server
.
repl_syncio_timeout
)
==
-
1
)
{
redisLog
(
REDIS_WARNING
,
redisLog
(
REDIS_WARNING
,
"I/O error reading bulk count from MASTER: %s"
,
"I/O error reading bulk count from MASTER: %s"
,
strerror
(
errno
));
strerror
(
errno
));
...
@@ -414,13 +414,13 @@ void syncWithMaster(aeEventLoop *el, int fd, void *privdata, int mask) {
...
@@ -414,13 +414,13 @@ void syncWithMaster(aeEventLoop *el, int fd, void *privdata, int mask) {
size_t
authlen
;
size_t
authlen
;
authlen
=
snprintf
(
authcmd
,
sizeof
(
authcmd
),
"AUTH %s
\r\n
"
,
server
.
masterauth
);
authlen
=
snprintf
(
authcmd
,
sizeof
(
authcmd
),
"AUTH %s
\r\n
"
,
server
.
masterauth
);
if
(
syncWrite
(
fd
,
authcmd
,
authlen
,
5
)
==
-
1
)
{
if
(
syncWrite
(
fd
,
authcmd
,
authlen
,
server
.
repl_syncio_timeout
)
==
-
1
)
{
redisLog
(
REDIS_WARNING
,
"Unable to AUTH to MASTER: %s"
,
redisLog
(
REDIS_WARNING
,
"Unable to AUTH to MASTER: %s"
,
strerror
(
errno
));
strerror
(
errno
));
goto
error
;
goto
error
;
}
}
/* Read the AUTH result. */
/* Read the AUTH result. */
if
(
syncReadLine
(
fd
,
buf
,
1024
,
3600
)
==
-
1
)
{
if
(
syncReadLine
(
fd
,
buf
,
1024
,
server
.
repl_syncio_timeout
)
==
-
1
)
{
redisLog
(
REDIS_WARNING
,
"I/O error reading auth result from MASTER: %s"
,
redisLog
(
REDIS_WARNING
,
"I/O error reading auth result from MASTER: %s"
,
strerror
(
errno
));
strerror
(
errno
));
goto
error
;
goto
error
;
...
@@ -432,7 +432,7 @@ void syncWithMaster(aeEventLoop *el, int fd, void *privdata, int mask) {
...
@@ -432,7 +432,7 @@ void syncWithMaster(aeEventLoop *el, int fd, void *privdata, int mask) {
}
}
/* Issue the SYNC command */
/* Issue the SYNC command */
if
(
syncWrite
(
fd
,
"SYNC
\r\n
"
,
7
,
5
)
==
-
1
)
{
if
(
syncWrite
(
fd
,
"SYNC
\r\n
"
,
7
,
server
.
repl_syncio_timeout
)
==
-
1
)
{
redisLog
(
REDIS_WARNING
,
"I/O error writing to MASTER: %s"
,
redisLog
(
REDIS_WARNING
,
"I/O error writing to MASTER: %s"
,
strerror
(
errno
));
strerror
(
errno
));
goto
error
;
goto
error
;
...
...
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