Commit 11b49c9b authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new

into  mysql.com:/home/emurphy/src/mysql/bk-clean/mysql-5.1-merge

parents 377968d2 e0f275ec
Loading
Loading
Loading
Loading
+0 −130
Original line number Diff line number Diff line
@@ -1769,25 +1769,6 @@ innobase_report_binlog_offset_and_commit(
	trx->mysql_log_file_name = log_file_name;
	trx->mysql_log_offset = (ib_longlong)end_offset;

#ifdef HAVE_REPLICATION
	if (thd->variables.sync_replication) {
		/* Let us store the binlog file name and the position, so that
		we know how long to wait for the binlog to the replicated to
		the slave in synchronous replication. */

		if (trx->repl_wait_binlog_name == NULL) {

			trx->repl_wait_binlog_name =
				  (char*)mem_alloc_noninline(FN_REFLEN + 100);
		}

		ut_a(strlen(log_file_name) < FN_REFLEN + 100);

		strcpy(trx->repl_wait_binlog_name, log_file_name);

		trx->repl_wait_binlog_pos = (ib_longlong)end_offset;
	}
#endif /* HAVE_REPLICATION */
	trx->flush_log_later = TRUE;

	innobase_commit(thd, TRUE);
@@ -1856,117 +1837,6 @@ innobase_commit_complete(
		trx_commit_complete_for_mysql(trx);
	}

#ifdef HAVE_REPLICATION
	if (thd->variables.sync_replication
		&& trx->repl_wait_binlog_name
		&& innobase_repl_state != 0) {

		struct timespec abstime;
		int	cmp;
		int	ret;

		/* In synchronous replication, let us wait until the MySQL
		replication has sent the relevant binlog segment to the
		replication slave. */

		pthread_mutex_lock(&innobase_repl_cond_mutex);
try_again:
		if (innobase_repl_state == 0) {

			pthread_mutex_unlock(&innobase_repl_cond_mutex);

			return(0);
		}

		cmp = strcmp(innobase_repl_file_name,
					trx->repl_wait_binlog_name);
		if (cmp > 0
			|| (cmp == 0 && innobase_repl_pos
				>= (my_off_t)trx->repl_wait_binlog_pos)) {
			/* We have already sent the relevant binlog to the
			slave: no need to wait here */

			pthread_mutex_unlock(&innobase_repl_cond_mutex);

/*			printf("Binlog now sent\n"); */

			return(0);
		}

		/* Let us update the info about the minimum binlog position
		of waiting threads in the innobase_repl_... variables */

		if (innobase_repl_wait_file_name_inited != 0) {
			cmp = strcmp(trx->repl_wait_binlog_name,
					innobase_repl_wait_file_name);
			if (cmp < 0
				|| (cmp == 0
					&& (my_off_t)trx->repl_wait_binlog_pos
					<= innobase_repl_wait_pos)) {
				/* This thd has an even lower position, let
				us update the minimum info */

				strcpy(innobase_repl_wait_file_name,
					trx->repl_wait_binlog_name);

				innobase_repl_wait_pos =
					trx->repl_wait_binlog_pos;
			}
		} else {
			strcpy(innobase_repl_wait_file_name,
						trx->repl_wait_binlog_name);

			innobase_repl_wait_pos = trx->repl_wait_binlog_pos;

			innobase_repl_wait_file_name_inited = 1;
		}
		set_timespec(abstime, thd->variables.sync_replication_timeout);

		/* Let us suspend this thread to wait on the condition;
		when replication has progressed far enough, we will release
		these waiting threads. The following call
		pthread_cond_timedwait also atomically unlocks
		innobase_repl_cond_mutex. */

		innobase_repl_n_wait_threads++;

/*		printf("Waiting for binlog to be sent\n"); */

		ret = pthread_cond_timedwait(&innobase_repl_cond,
					&innobase_repl_cond_mutex, &abstime);
		innobase_repl_n_wait_threads--;

		if (ret != 0) {
			ut_print_timestamp(stderr);

			sql_print_error("MySQL synchronous replication was "
					"not able to send the binlog to the "
					"slave within the timeout %lu. We "
					"assume that the slave has become "
					"inaccessible, and switch off "
					"synchronous replication until the "
					"communication to the slave works "
					"again. MySQL synchronous replication "
					"has sent binlog to the slave up to "
					"file %s, position %lu. This "
					"transaction needs it to be sent up "
					"to file %s, position %lu.",
					thd->variables.sync_replication_timeout,
					innobase_repl_file_name,
					(ulong) innobase_repl_pos,
					trx->repl_wait_binlog_name,
					(ulong) trx->repl_wait_binlog_pos);

			innobase_repl_state = 0;

			pthread_mutex_unlock(&innobase_repl_cond_mutex);

			return(0);
		}

		goto try_again;
	}
#endif // HAVE_REPLICATION
	return(0);
}

+0 −3
Original line number Diff line number Diff line
@@ -316,9 +316,6 @@ int innobase_rollback_by_xid(
	XID	*xid);	/* in : X/Open XA Transaction Identification */


int innobase_repl_report_sent_binlog(THD *thd, char *log_file_name,
	my_off_t end_offset);

/***********************************************************************
Create a consistent view for a cursor based on current transaction
which is created if the corresponding MySQL thread still lacks one.
+0 −17
Original line number Diff line number Diff line
@@ -6160,23 +6160,6 @@ The minimum value for this variable is 4096.",
  {"sync-frm", OPT_SYNC_FRM, "Sync .frm to disk on create. Enabled by default.",
   (gptr*) &opt_sync_frm, (gptr*) &opt_sync_frm, 0, GET_BOOL, NO_ARG, 1, 0,
   0, 0, 0, 0},
#ifdef HAVE_REPLICATION
  {"sync-replication", OPT_SYNC_REPLICATION,
   "Enable synchronous replication.",
   (gptr*) &global_system_variables.sync_replication,
   (gptr*) &global_system_variables.sync_replication,
   0, GET_ULONG, REQUIRED_ARG, 0, 0, 1, 0, 1, 0},
  {"sync-replication-slave-id", OPT_SYNC_REPLICATION_SLAVE_ID,
   "Synchronous replication is wished for this slave.",
   (gptr*) &global_system_variables.sync_replication_slave_id,
   (gptr*) &global_system_variables.sync_replication_slave_id,
   0, GET_ULONG, REQUIRED_ARG, 0, 0, ~0L, 0, 1, 0},
  {"sync-replication-timeout", OPT_SYNC_REPLICATION_TIMEOUT,
   "Synchronous replication timeout.",
   (gptr*) &global_system_variables.sync_replication_timeout,
   (gptr*) &global_system_variables.sync_replication_timeout,
   0, GET_ULONG, REQUIRED_ARG, 10, 0, ~0L, 0, 1, 0},
#endif /* HAVE_REPLICATION */
  {"table_cache", OPT_TABLE_OPEN_CACHE,
   "Deprecated; use --table_open_cache instead.",
   (gptr*) &table_cache_size, (gptr*) &table_cache_size, 0, GET_ULONG,
+0 −13
Original line number Diff line number Diff line
@@ -436,14 +436,6 @@ sys_var_thd_storage_engine sys_storage_engine("storage_engine",
				       &SV::table_type);
#ifdef HAVE_REPLICATION
sys_var_sync_binlog_period sys_sync_binlog_period("sync_binlog", &sync_binlog_period);
sys_var_thd_ulong	sys_sync_replication("sync_replication",
                                               &SV::sync_replication);
sys_var_thd_ulong	sys_sync_replication_slave_id(
						"sync_replication_slave_id",
                                               &SV::sync_replication_slave_id);
sys_var_thd_ulong	sys_sync_replication_timeout(
						"sync_replication_timeout",
                                               &SV::sync_replication_timeout);
#endif
sys_var_bool_ptr	sys_sync_frm("sync_frm", &opt_sync_frm);
sys_var_long_ptr	sys_table_def_size("table_definition_cache",
@@ -966,11 +958,6 @@ SHOW_VAR init_vars[]= {
  {sys_sync_binlog_period.name,(char*) &sys_sync_binlog_period,     SHOW_SYS},
#endif
  {sys_sync_frm.name,         (char*) &sys_sync_frm,               SHOW_SYS},
#ifdef HAVE_REPLICATION
  {sys_sync_replication.name, (char*) &sys_sync_replication,        SHOW_SYS},
  {sys_sync_replication_slave_id.name, (char*) &sys_sync_replication_slave_id,SHOW_SYS},
  {sys_sync_replication_timeout.name, (char*) &sys_sync_replication_timeout,SHOW_SYS},
#endif
#ifdef HAVE_TZNAME
  {"system_time_zone",        system_time_zone,                     SHOW_CHAR},
#endif
+0 −5
Original line number Diff line number Diff line
@@ -241,11 +241,6 @@ struct system_variables
  my_bool new_mode;
  my_bool query_cache_wlock_invalidate;
  my_bool engine_condition_pushdown;
#ifdef HAVE_REPLICATION
  ulong sync_replication;
  ulong sync_replication_slave_id;
  ulong sync_replication_timeout;
#endif /* HAVE_REPLICATION */
  my_bool innodb_table_locks;
  my_bool innodb_support_xa;
  my_bool ndb_force_send;
+9 −9

File changed.

Contains only whitespace changes.

Loading