Merge
This commit is contained in:
commit
8d73628d88
@ -67,6 +67,7 @@ igor@rurik.mysql.com
|
|||||||
ingo@mysql.com
|
ingo@mysql.com
|
||||||
jan@hundin.mysql.fi
|
jan@hundin.mysql.fi
|
||||||
jani@a80-186-24-72.elisa-laajakaista.fi
|
jani@a80-186-24-72.elisa-laajakaista.fi
|
||||||
|
jani@a80-186-41-201.elisa-laajakaista.fi
|
||||||
jani@dsl-jkl1657.dial.inet.fi
|
jani@dsl-jkl1657.dial.inet.fi
|
||||||
jani@dsl-kpogw4gb5.dial.inet.fi
|
jani@dsl-kpogw4gb5.dial.inet.fi
|
||||||
jani@hynda.(none)
|
jani@hynda.(none)
|
||||||
|
@ -97,9 +97,11 @@ sync_arr_wake_threads_if_sema_free(void);
|
|||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Prints warnings of long semaphore waits to stderr. */
|
Prints warnings of long semaphore waits to stderr. */
|
||||||
|
|
||||||
void
|
ibool
|
||||||
sync_array_print_long_waits(void);
|
sync_array_print_long_waits(void);
|
||||||
/*=============================*/
|
/*=============================*/
|
||||||
|
/* out: TRUE if fatal semaphore wait threshold
|
||||||
|
was exceeded */
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
Validates the integrity of the wait array. Checks
|
Validates the integrity of the wait array. Checks
|
||||||
that the number of reserved cells equals the count variable. */
|
that the number of reserved cells equals the count variable. */
|
||||||
|
@ -1810,7 +1810,8 @@ srv_error_monitor_thread(
|
|||||||
/* in: a dummy parameter required by
|
/* in: a dummy parameter required by
|
||||||
os_thread_create */
|
os_thread_create */
|
||||||
{
|
{
|
||||||
ulint cnt = 0;
|
/* number of successive fatal timeouts observed */
|
||||||
|
ulint fatal_cnt = 0;
|
||||||
dulint old_lsn;
|
dulint old_lsn;
|
||||||
dulint new_lsn;
|
dulint new_lsn;
|
||||||
|
|
||||||
@ -1823,8 +1824,6 @@ srv_error_monitor_thread(
|
|||||||
loop:
|
loop:
|
||||||
srv_error_monitor_active = TRUE;
|
srv_error_monitor_active = TRUE;
|
||||||
|
|
||||||
cnt++;
|
|
||||||
|
|
||||||
/* Try to track a strange bug reported by Harald Fuchs and others,
|
/* Try to track a strange bug reported by Harald Fuchs and others,
|
||||||
where the lsn seems to decrease at times */
|
where the lsn seems to decrease at times */
|
||||||
|
|
||||||
@ -1851,7 +1850,20 @@ loop:
|
|||||||
srv_refresh_innodb_monitor_stats();
|
srv_refresh_innodb_monitor_stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
sync_array_print_long_waits();
|
if (sync_array_print_long_waits()) {
|
||||||
|
fatal_cnt++;
|
||||||
|
if (fatal_cnt > 5) {
|
||||||
|
|
||||||
|
fprintf(stderr,
|
||||||
|
"InnoDB: Error: semaphore wait has lasted > %lu seconds\n"
|
||||||
|
"InnoDB: We intentionally crash the server, because it appears to be hung.\n",
|
||||||
|
srv_fatal_semaphore_wait_threshold);
|
||||||
|
|
||||||
|
ut_error;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
fatal_cnt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Flush stderr so that a database user gets the output
|
/* Flush stderr so that a database user gets the output
|
||||||
to possible MySQL error file */
|
to possible MySQL error file */
|
||||||
|
@ -894,15 +894,18 @@ sync_arr_wake_threads_if_sema_free(void)
|
|||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
Prints warnings of long semaphore waits to stderr. */
|
Prints warnings of long semaphore waits to stderr. */
|
||||||
|
|
||||||
void
|
ibool
|
||||||
sync_array_print_long_waits(void)
|
sync_array_print_long_waits(void)
|
||||||
/*=============================*/
|
/*=============================*/
|
||||||
|
/* out: TRUE if fatal semaphore wait threshold
|
||||||
|
was exceeded */
|
||||||
{
|
{
|
||||||
sync_cell_t* cell;
|
sync_cell_t* cell;
|
||||||
ibool old_val;
|
ibool old_val;
|
||||||
ibool noticed = FALSE;
|
ibool noticed = FALSE;
|
||||||
ulint i;
|
ulint i;
|
||||||
ulint fatal_timeout = srv_fatal_semaphore_wait_threshold;
|
ulint fatal_timeout = srv_fatal_semaphore_wait_threshold;
|
||||||
|
ibool fatal = FALSE;
|
||||||
|
|
||||||
for (i = 0; i < sync_primary_wait_array->n_cells; i++) {
|
for (i = 0; i < sync_primary_wait_array->n_cells; i++) {
|
||||||
|
|
||||||
@ -919,13 +922,7 @@ sync_array_print_long_waits(void)
|
|||||||
if (cell->wait_object != NULL
|
if (cell->wait_object != NULL
|
||||||
&& difftime(time(NULL), cell->reservation_time)
|
&& difftime(time(NULL), cell->reservation_time)
|
||||||
> fatal_timeout) {
|
> fatal_timeout) {
|
||||||
|
fatal = TRUE;
|
||||||
fprintf(stderr,
|
|
||||||
"InnoDB: Error: semaphore wait has lasted > %lu seconds\n"
|
|
||||||
"InnoDB: We intentionally crash the server, because it appears to be hung.\n",
|
|
||||||
fatal_timeout);
|
|
||||||
|
|
||||||
ut_error;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -953,6 +950,8 @@ sync_array_print_long_waits(void)
|
|||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"InnoDB: ###### Diagnostic info printed to the standard error stream\n");
|
"InnoDB: ###### Diagnostic info printed to the standard error stream\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return(fatal);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
@ -8,7 +8,7 @@ use File::Path;
|
|||||||
use DBI;
|
use DBI;
|
||||||
use Sys::Hostname;
|
use Sys::Hostname;
|
||||||
use File::Copy;
|
use File::Copy;
|
||||||
use File::Temp;
|
use File::Temp qw(tempfile);
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ WARNING: THIS PROGRAM IS STILL IN BETA. Comments/patches welcome.
|
|||||||
|
|
||||||
# Documentation continued at end of file
|
# Documentation continued at end of file
|
||||||
|
|
||||||
my $VERSION = "1.21";
|
my $VERSION = "1.22";
|
||||||
|
|
||||||
my $opt_tmpdir = $ENV{TMPDIR} || "/tmp";
|
my $opt_tmpdir = $ENV{TMPDIR} || "/tmp";
|
||||||
|
|
||||||
@ -655,7 +655,7 @@ sub copy_index
|
|||||||
}
|
}
|
||||||
elsif ($opt{method} =~ /^scp\b/)
|
elsif ($opt{method} =~ /^scp\b/)
|
||||||
{
|
{
|
||||||
my ($fh, $tmp)=tempfile('mysqlhotcopy-XXXXXX', DIR => $opt_tmpdir);
|
my ($fh, $tmp)= tempfile('mysqlhotcopy-XXXXXX', DIR => $opt_tmpdir) or
|
||||||
die "Can\'t create/open file in $opt_tmpdir\n";
|
die "Can\'t create/open file in $opt_tmpdir\n";
|
||||||
if (syswrite($fh,$buff) != length($buff))
|
if (syswrite($fh,$buff) != length($buff))
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user