Commit aa14d736 authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-4.1

into mysql.com:/home/my/mysql-4.1


BitKeeper/etc/logging_ok:
  auto-union
parents c428135e b5f445a0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -97,9 +97,11 @@ sync_arr_wake_threads_if_sema_free(void);
/**************************************************************************
Prints warnings of long semaphore waits to stderr. */

void
ibool
sync_array_print_long_waits(void);
/*=============================*/
			/* out: TRUE if fatal semaphore wait threshold
			was exceeded */
/************************************************************************
Validates the integrity of the wait array. Checks
that the number of reserved cells equals the count variable. */
+16 −4
Original line number Diff line number Diff line
@@ -1810,7 +1810,8 @@ srv_error_monitor_thread(
			/* in: a dummy parameter required by
			os_thread_create */
{
	ulint	cnt	= 0;
	/* number of successive fatal timeouts observed */
	ulint	fatal_cnt	= 0;
	dulint	old_lsn;
	dulint	new_lsn;

@@ -1823,8 +1824,6 @@ srv_error_monitor_thread(
loop:
	srv_error_monitor_active = TRUE;

	cnt++;

	/* Try to track a strange bug reported by Harald Fuchs and others,
	where the lsn seems to decrease at times */

@@ -1851,7 +1850,20 @@ srv_error_monitor_thread(
		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
	to possible MySQL error file */
+7 −8
Original line number Diff line number Diff line
@@ -894,15 +894,18 @@ sync_arr_wake_threads_if_sema_free(void)
/**************************************************************************
Prints warnings of long semaphore waits to stderr. */

void
ibool
sync_array_print_long_waits(void)
/*=============================*/
			/* out: TRUE if fatal semaphore wait threshold
			was exceeded */
{
        sync_cell_t*   	cell;
        ibool		old_val;
	ibool		noticed = FALSE;
	ulint           i;
	ulint		fatal_timeout = srv_fatal_semaphore_wait_threshold;
	ibool		fatal = FALSE;

        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
		    && difftime(time(NULL), cell->reservation_time)
		    > fatal_timeout) {

			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;
			fatal = TRUE;
                }
       	}

@@ -953,6 +950,8 @@ sync_array_print_long_waits(void)
		fprintf(stderr,
"InnoDB: ###### Diagnostic info printed to the standard error stream\n");
	}

	return(fatal);
}

/**************************************************************************
+4 −4
Original line number Diff line number Diff line
@@ -8,7 +8,7 @@ use File::Path;
use DBI;
use Sys::Hostname;
use File::Copy;
use File::Temp;
use File::Temp qw(tempfile);

=head1 NAME

@@ -39,7 +39,7 @@ WARNING: THIS PROGRAM IS STILL IN BETA. Comments/patches welcome.

# Documentation continued at end of file

my $VERSION = "1.21";
my $VERSION = "1.22";

my $opt_tmpdir = $ENV{TMPDIR} || "/tmp";

@@ -655,7 +655,7 @@ sub copy_index
    }
    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";
      if (syswrite($fh,$buff) != length($buff))
      {