Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
c06cae0f
Commit
c06cae0f
authored
Nov 25, 2004
by
mats@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix for Bug#6148. Only rewind read position in binary log when the
slave SQL thread is started.
parent
bfdf57ef
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
65 additions
and
7 deletions
+65
-7
mysql-test/r/rpl_start_stop_slave.result
mysql-test/r/rpl_start_stop_slave.result
+12
-0
mysql-test/t/rpl_start_stop_slave.test
mysql-test/t/rpl_start_stop_slave.test
+34
-0
sql/repl_failsafe.cc
sql/repl_failsafe.cc
+2
-1
sql/slave.cc
sql/slave.cc
+11
-3
sql/slave.h
sql/slave.h
+2
-1
sql/sql_repl.cc
sql/sql_repl.cc
+4
-2
No files found.
mysql-test/r/rpl_start_stop_slave.result
0 → 100644
View file @
c06cae0f
slave stop;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
slave start;
stop slave;
create table t1(n int);
start slave;
stop slave io_thread;
start slave io_thread;
drop table t1;
mysql-test/t/rpl_start_stop_slave.test
0 → 100644
View file @
c06cae0f
source
include
/
master
-
slave
.
inc
;
#
# Bug#6148 ()
#
connection
slave
;
stop
slave
;
# Let the master do lots of insertions
connection
master
;
create
table
t1
(
n
int
);
let
$
1
=
5000
;
disable_query_log
;
while
(
$
1
)
{
eval
insert
into
t1
values
(
$
1
);
dec
$
1
;
}
enable_query_log
;
save_master_pos
;
connection
slave
;
start
slave
;
sleep
1
;
stop
slave
io_thread
;
start
slave
io_thread
;
sync_with_master
;
connection
master
;
drop
table
t1
;
save_master_pos
;
connection
slave
;
sync_with_master
;
sql/repl_failsafe.cc
View file @
c06cae0f
...
...
@@ -892,7 +892,8 @@ int load_master_data(THD* thd)
setting active_mi, because init_master_info() sets active_mi with
defaults.
*/
if
(
init_master_info
(
active_mi
,
master_info_file
,
relay_log_info_file
,
0
))
if
(
init_master_info
(
active_mi
,
master_info_file
,
relay_log_info_file
,
0
,
(
SLAVE_IO
|
SLAVE_SQL
)))
send_error
(
&
thd
->
net
,
ER_MASTER_INFO
);
strmake
(
active_mi
->
master_log_name
,
row
[
0
],
sizeof
(
active_mi
->
master_log_name
));
...
...
sql/slave.cc
View file @
c06cae0f
...
...
@@ -137,7 +137,7 @@ int init_slave()
}
if
(
init_master_info
(
active_mi
,
master_info_file
,
relay_log_info_file
,
!
master_host
))
!
master_host
,
(
SLAVE_IO
|
SLAVE_SQL
)
))
{
sql_print_error
(
"Failed to initialize the master info structure"
);
goto
err
;
...
...
@@ -1616,7 +1616,8 @@ void clear_last_slave_error(RELAY_LOG_INFO* rli)
int
init_master_info
(
MASTER_INFO
*
mi
,
const
char
*
master_info_fname
,
const
char
*
slave_info_fname
,
bool
abort_if_no_master_info_file
)
bool
abort_if_no_master_info_file
,
int
thread_mask
)
{
int
fd
,
error
;
char
fname
[
FN_REFLEN
+
128
];
...
...
@@ -1630,8 +1631,15 @@ int init_master_info(MASTER_INFO* mi, const char* master_info_fname,
last time. If this case pos_in_file would be set and we would
get a crash when trying to read the signature for the binary
relay log.
We only rewind the read position if we are starting the SQL
thread. The handle_slave_sql thread assumes that the read
position is at the beginning of the file, and will read the
"signature" and then fast-forward to the last position read.
*/
my_b_seek
(
mi
->
rli
.
cur_log
,
(
my_off_t
)
0
);
if
(
thread_mask
&
SLAVE_SQL
)
{
my_b_seek
(
mi
->
rli
.
cur_log
,
(
my_off_t
)
0
);
}
DBUG_RETURN
(
0
);
}
...
...
sql/slave.h
View file @
c06cae0f
...
...
@@ -411,7 +411,8 @@ void init_master_info_with_options(MASTER_INFO* mi);
void
clear_last_slave_error
(
RELAY_LOG_INFO
*
rli
);
int
init_master_info
(
MASTER_INFO
*
mi
,
const
char
*
master_info_fname
,
const
char
*
slave_info_fname
,
bool
abort_if_no_master_info_file
);
bool
abort_if_no_master_info_file
,
int
thread_mask
);
void
end_master_info
(
MASTER_INFO
*
mi
);
int
init_relay_log_info
(
RELAY_LOG_INFO
*
rli
,
const
char
*
info_fname
);
void
end_relay_log_info
(
RELAY_LOG_INFO
*
rli
);
...
...
sql/sql_repl.cc
View file @
c06cae0f
...
...
@@ -662,7 +662,8 @@ int start_slave(THD* thd , MASTER_INFO* mi, bool net_report)
thread_mask
&=
thd
->
lex
.
slave_thd_opt
;
if
(
thread_mask
)
{
if
(
init_master_info
(
mi
,
master_info_file
,
relay_log_info_file
,
0
))
if
(
init_master_info
(
mi
,
master_info_file
,
relay_log_info_file
,
0
,
thread_mask
))
slave_errno
=
ER_MASTER_INFO
;
else
if
(
server_id_supplied
&&
*
mi
->
host
)
slave_errno
=
start_slave_threads
(
0
/*no mutex */
,
...
...
@@ -867,7 +868,8 @@ int change_master(THD* thd, MASTER_INFO* mi)
thd
->
proc_info
=
"Changing master"
;
LEX_MASTER_INFO
*
lex_mi
=
&
thd
->
lex
.
mi
;
// TODO: see if needs re-write
if
(
init_master_info
(
mi
,
master_info_file
,
relay_log_info_file
,
0
))
if
(
init_master_info
(
mi
,
master_info_file
,
relay_log_info_file
,
0
,
thread_mask
))
{
send_error
(
&
thd
->
net
,
ER_MASTER_INFO
);
unlock_slave_threads
(
mi
);
...
...
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