mirror: lengthen the request timeout to 60 seconds

This is complicated slightly by a need to keep the tests fast, so
we introduce an environment variable that can override the constant
This commit is contained in:
nick
2013-10-30 22:45:12 +00:00
parent cd3281f62d
commit 53cbe14556
4 changed files with 32 additions and 4 deletions

View File

@@ -762,7 +762,22 @@ void mirror_run( struct server *serve )
ctrl.write_watcher.data = (void*) &ctrl;
ev_init( &ctrl.timeout_watcher, mirror_timeout_cb );
ctrl.timeout_watcher.repeat = MS_REQUEST_LIMIT_SECS_F ;
char * env_request_limit = getenv( "FLEXNBD_MS_REQUEST_LIMIT_SECS" );
double timeout_limit = MS_REQUEST_LIMIT_SECS_F;
if ( NULL != env_request_limit ) {
char *endptr = NULL;
errno = 0;
double limit = strtod( env_request_limit, &endptr );
warn( SHOW_ERRNO( "Got %f from strtod", limit ) );
if ( errno == 0 ) {
timeout_limit = limit;
}
}
ctrl.timeout_watcher.repeat = timeout_limit;
ev_init( &ctrl.limit_watcher, mirror_limit_cb );
ctrl.limit_watcher.repeat = 1.0; // We check bps every second. seems sane.

View File

@@ -50,9 +50,12 @@ enum mirror_state;
* request, this is the time between the end of the NBD request and the
* start of the NBD reply. For a write request, this is the time
* between the end of the written data and the start of the NBD reply.
* Can be overridden by the environment variable:
* FLEXNBD_MS_REQUEST_LIMIT_SECS
*/
#define MS_REQUEST_LIMIT_SECS 4
#define MS_REQUEST_LIMIT_SECS_F 4.0
#define MS_REQUEST_LIMIT_SECS 60
#define MS_REQUEST_LIMIT_SECS_F 60.0
enum mirror_finish_action {
ACTION_EXIT,