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
7d970f82
Commit
7d970f82
authored
Oct 25, 2009
by
Luis Soares
Browse files
Options
Browse Files
Download
Plain Diff
automerge: mysql-5.1-rep+2-delivery1 --> mysql-5.1-rpl-merge.
parents
ba0afceb
ce912c8c
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
110 additions
and
28 deletions
+110
-28
CMakeLists.txt
CMakeLists.txt
+4
-0
mysql-test/include/have_semisync_plugin.inc
mysql-test/include/have_semisync_plugin.inc
+7
-0
mysql-test/mysql-test-run.pl
mysql-test/mysql-test-run.pl
+33
-19
mysql-test/suite/rpl/r/rpl_semi_sync.result
mysql-test/suite/rpl/r/rpl_semi_sync.result
+2
-2
mysql-test/suite/rpl/t/rpl_semi_sync.test
mysql-test/suite/rpl/t/rpl_semi_sync.test
+6
-5
plugin/semisync/CMakeLists.txt
plugin/semisync/CMakeLists.txt
+35
-0
plugin/semisync/Makefile.am
plugin/semisync/Makefile.am
+2
-0
plugin/semisync/semisync_master.cc
plugin/semisync/semisync_master.cc
+18
-0
plugin/semisync/semisync_master_plugin.cc
plugin/semisync/semisync_master_plugin.cc
+3
-2
No files found.
CMakeLists.txt
View file @
7d970f82
...
...
@@ -291,6 +291,10 @@ FOREACH(DIR ${DYNAMIC_ENGINE_DIRECTORIES})
ADD_SUBDIRECTORY
(
${
DIR
}
)
ENDFOREACH
(
DIR
${
DYNAMIC_ENGINE_DIRECTORIES
}
)
# Add subdirectories for semisync plugin
IF
(
NOT WITHOUT_DYNAMIC_PLUGINS
)
ADD_SUBDIRECTORY
(
plugin/semisync
)
ENDIF
(
NOT WITHOUT_DYNAMIC_PLUGINS
)
# FIXME "debug" only needed if build type is "Debug", but
# CMAKE_BUILD_TYPE is not set during configure time.
...
...
mysql-test/include/have_semisync_plugin.inc
View file @
7d970f82
...
...
@@ -13,3 +13,10 @@ if (`select LENGTH('$SEMISYNC_MASTER_PLUGIN') = 0`)
{
skip
Need
semisync
plugins
;
}
#
# Check if --plugin-dir was setup for semisync
#
if
(
`SELECT CONCAT('--plugin-dir=', @@plugin_dir) != '$SEMISYNC_PLUGIN_OPT'`
)
{
--
skip
SEMISYNC
plugin
requires
that
--
plugin
-
dir
is
set
to
the
semisync
plugin
dir
(
either
the
.
opt
file
does
not
contain
\
$SEMISYNC_PLUGIN_OPT
or
another
plugin
is
in
use
)
}
mysql-test/mysql-test-run.pl
View file @
7d970f82
...
...
@@ -1833,14 +1833,27 @@ sub environment_setup {
# --------------------------------------------------------------------------
# Add the path where mysqld will find semisync plugins
# --------------------------------------------------------------------------
if
(
!
$opt_embedded_server
)
{
my
$semisync_master_filename
;
my
$semisync_slave_filename
;
if
(
IS_WINDOWS
)
{
$semisync_master_filename
=
"
semisync_master.dll
";
$semisync_slave_filename
=
"
semisync_slave.dll
";
}
else
{
$semisync_master_filename
=
"
libsemisync_master.so
";
$semisync_slave_filename
=
"
libsemisync_slave.so
";
}
my
$lib_semisync_master_plugin
=
mtr_file_exists
(
vs_config_dirs
('
plugin/semisync
',
"
libsemisync_master.so
"
),
"
$basedir
/plugin/semisync/.libs/
libsemisync_master.so
"
,
"
$basedir
/lib/mysql/plugin/
libsemisync_master.so
"
);
mtr_file_exists
(
vs_config_dirs
('
plugin/semisync
',
$semisync_master_filename
),
"
$basedir
/plugin/semisync/.libs/
"
.
$semisync_master_filename
,
"
$basedir
/lib/mysql/plugin/
"
.
$semisync_master_filename
);
my
$lib_semisync_slave_plugin
=
mtr_file_exists
(
vs_config_dirs
('
plugin/semisync
',
"
libsemisync_slave.so
"
),
"
$basedir
/plugin/semisync/.libs/
libsemisync_slave.so
"
,
"
$basedir
/lib/mysql/plugin/
libsemisync_slave.so
"
);
mtr_file_exists
(
vs_config_dirs
('
plugin/semisync
',
$semisync_slave_filename
),
"
$basedir
/plugin/semisync/.libs/
"
.
$semisync_slave_filename
,
"
$basedir
/lib/mysql/plugin/
"
.
$semisync_slave_filename
);
if
(
$lib_semisync_master_plugin
&&
$lib_semisync_slave_plugin
)
{
$ENV
{'
SEMISYNC_MASTER_PLUGIN
'}
=
basename
(
$lib_semisync_master_plugin
);
...
...
@@ -1853,6 +1866,7 @@ sub environment_setup {
$ENV
{'
SEMISYNC_SLAVE_PLUGIN
'}
=
"";
$ENV
{'
SEMISYNC_PLUGIN_OPT
'}
=
"
--plugin-dir=
";
}
}
# ----------------------------------------------------
# Add the path where mysqld will find mypluglib.so
...
...
mysql-test/suite/rpl/r/rpl_semi_sync.result
View file @
7d970f82
...
...
@@ -397,7 +397,7 @@ Rpl_semi_sync_slave_status OFF
# Test non-semi-sync slave connect to semi-sync master
#
set sql_log_bin=0;
INSTALL PLUGIN rpl_semi_sync_master SONAME '
libsemisync_master.so
';
INSTALL PLUGIN rpl_semi_sync_master SONAME '
SEMISYNC_MASTER_PLUGIN
';
set global rpl_semi_sync_master_timeout= 5000;
/* 5s */
set sql_log_bin=1;
...
...
@@ -416,7 +416,7 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
Variable_name Value
include/stop_slave.inc
[ reinstall semi-sync slave plugin and disable semi-sync ]
INSTALL PLUGIN rpl_semi_sync_slave SONAME '
libsemisync_slave.so
';
INSTALL PLUGIN rpl_semi_sync_slave SONAME '
SEMISYNC_SLAVE_PLUGIN
';
set global rpl_semi_sync_slave_enabled= 0;
SHOW VARIABLES LIKE 'rpl_semi_sync_slave_enabled';
Variable_name Value
...
...
mysql-test/suite/rpl/t/rpl_semi_sync.test
View file @
7d970f82
source
include
/
have_semisync_plugin
.
inc
;
source
include
/
not_embedded
.
inc
;
source
include
/
not_windows
.
inc
;
source
include
/
have_innodb
.
inc
;
source
include
/
master
-
slave
.
inc
;
...
...
@@ -61,7 +60,7 @@ let $value = query_get_value(show variables like 'rpl_semi_sync_master_enabled',
if
(
`select '$value' = 'No such row'`
)
{
set
sql_log_bin
=
0
;
INSTALL
PLUGIN
rpl_semi_sync_master
SONAME
'libsemisync_master.so
'
;
eval
INSTALL
PLUGIN
rpl_semi_sync_master
SONAME
'$SEMISYNC_MASTER_PLUGIN
'
;
set
global
rpl_semi_sync_master_timeout
=
5000
;
/* 5s */
set
sql_log_bin
=
1
;
}
...
...
@@ -126,7 +125,7 @@ let $value= query_get_value(show variables like 'rpl_semi_sync_slave_enabled', V
if
(
`select '$value' = 'No such row'`
)
{
set
sql_log_bin
=
0
;
INSTALL
PLUGIN
rpl_semi_sync_slave
SONAME
'libsemisync_slave.so
'
;
eval
INSTALL
PLUGIN
rpl_semi_sync_slave
SONAME
'$SEMISYNC_SLAVE_PLUGIN
'
;
set
sql_log_bin
=
1
;
}
enable_query_log
;
...
...
@@ -536,7 +535,8 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
connection
master
;
set
sql_log_bin
=
0
;
INSTALL
PLUGIN
rpl_semi_sync_master
SONAME
'libsemisync_master.so'
;
replace_result
$SEMISYNC_MASTER_PLUGIN
SEMISYNC_MASTER_PLUGIN
;
eval
INSTALL
PLUGIN
rpl_semi_sync_master
SONAME
'$SEMISYNC_MASTER_PLUGIN'
;
set
global
rpl_semi_sync_master_timeout
=
5000
;
/* 5s */
set
sql_log_bin
=
1
;
set
global
rpl_semi_sync_master_enabled
=
1
;
...
...
@@ -554,7 +554,8 @@ SHOW STATUS LIKE 'Rpl_semi_sync_slave_status';
source
include
/
stop_slave
.
inc
;
echo
[
reinstall
semi
-
sync
slave
plugin
and
disable
semi
-
sync
];
INSTALL
PLUGIN
rpl_semi_sync_slave
SONAME
'libsemisync_slave.so'
;
replace_result
$SEMISYNC_SLAVE_PLUGIN
SEMISYNC_SLAVE_PLUGIN
;
eval
INSTALL
PLUGIN
rpl_semi_sync_slave
SONAME
'$SEMISYNC_SLAVE_PLUGIN'
;
set
global
rpl_semi_sync_slave_enabled
=
0
;
SHOW
VARIABLES
LIKE
'rpl_semi_sync_slave_enabled'
;
SHOW
STATUS
LIKE
'Rpl_semi_sync_slave_status'
;
...
...
plugin/semisync/CMakeLists.txt
0 → 100644
View file @
7d970f82
# Copyright (C) 2006 MySQL AB
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# This is CMakeLists.txt for semi-sync replication plugins
SET
(
CMAKE_CXX_FLAGS_DEBUG
"
${
CMAKE_CXX_FLAGS_DEBUG
}
-DSAFEMALLOC -DSAFE_MUTEX"
)
SET
(
CMAKE_C_FLAGS_DEBUG
"
${
CMAKE_C_FLAGS_DEBUG
}
-DSAFEMALLOC -DSAFE_MUTEX"
)
# Add common include directories
INCLUDE_DIRECTORIES
(
${
CMAKE_SOURCE_DIR
}
/include
${
CMAKE_SOURCE_DIR
}
/zlib
${
CMAKE_SOURCE_DIR
}
/sql
${
CMAKE_SOURCE_DIR
}
/regex
${
CMAKE_SOURCE_DIR
}
/extra/yassl/include
)
SET
(
SEMISYNC_MASTER_SOURCES semisync.cc semisync_master.cc semisync_master_plugin.cc
)
SET
(
SEMISYNC_SLAVE_SOURCES semisync.cc semisync_slave.cc semisync_slave_plugin.cc
)
ADD_DEFINITIONS
(
-DMYSQL_DYNAMIC_PLUGIN
)
ADD_LIBRARY
(
semisync_master SHARED
${
SEMISYNC_MASTER_SOURCES
}
)
TARGET_LINK_LIBRARIES
(
semisync_master mysqld
)
ADD_LIBRARY
(
semisync_slave SHARED
${
SEMISYNC_SLAVE_SOURCES
}
)
TARGET_LINK_LIBRARIES
(
semisync_slave mysqld
)
MESSAGE
(
"build SEMISYNC as DLL"
)
plugin/semisync/Makefile.am
View file @
7d970f82
...
...
@@ -34,3 +34,5 @@ libsemisync_slave_la_LDFLAGS = -module
libsemisync_slave_la_CXXFLAGS
=
$(AM_CFLAGS)
-DMYSQL_DYNAMIC_PLUGIN
libsemisync_slave_la_CFLAGS
=
$(AM_CFLAGS)
-DMYSQL_DYNAMIC_PLUGIN
libsemisync_slave_la_SOURCES
=
semisync.cc semisync_slave.cc semisync_slave_plugin.cc
EXTRA_DIST
=
CMakeLists.txt plug.in
plugin/semisync/semisync_master.cc
View file @
7d970f82
...
...
@@ -45,6 +45,18 @@ char rpl_semi_sync_master_wait_no_slave = 1;
static
int
getWaitTime
(
const
struct
timeval
&
start_tv
);
#ifdef __WIN__
static
int
gettimeofday
(
struct
timeval
*
tv
,
void
*
tz
)
{
unsigned
int
ticks
;
ticks
=
GetTickCount
();
tv
->
tv_usec
=
ticks
*
1000
;
tv
->
tv_sec
=
ticks
/
1000
;
return
0
;
}
#endif
/* __WIN__ */
/*******************************************************************************
*
* <ActiveTranx> class : manage all active transaction nodes
...
...
@@ -728,6 +740,11 @@ int ReplSemiSyncMaster::commitTrx(const char* trx_wait_binlog_name,
int
diff_usecs
=
start_tv
.
tv_usec
+
wait_timeout_
*
TIME_THOUSAND
;
/* Calcuate the waiting period. */
#ifdef __WIN__
abstime
.
tv
.
i64
=
(
__int64
)
start_tv
.
tv_sec
*
TIME_MILLION
*
10
;
abstime
.
tv
.
i64
+=
(
__int64
)
diff_usecs
*
10
;
abstime
.
max_timeout_msec
=
(
long
)
wait_timeout_
;
#else
abstime
.
tv_sec
=
start_tv
.
tv_sec
;
if
(
diff_usecs
<
TIME_MILLION
)
{
...
...
@@ -742,6 +759,7 @@ int ReplSemiSyncMaster::commitTrx(const char* trx_wait_binlog_name,
}
abstime
.
tv_nsec
=
diff_usecs
*
TIME_THOUSAND
;
}
#endif
/* __WIN__ */
/* In semi-synchronous replication, we wait until the binlog-dump
* thread has received the reply on the relevant binlog segment from the
...
...
plugin/semisync/semisync_master_plugin.cc
View file @
7d970f82
...
...
@@ -278,6 +278,7 @@ Binlog_transmit_observer transmit_observer = {
DEF_SHOW_FUNC
(
status
,
SHOW_BOOL
)
DEF_SHOW_FUNC
(
clients
,
SHOW_LONG
)
DEF_SHOW_FUNC
(
wait_sessions
,
SHOW_LONG
)
DEF_SHOW_FUNC
(
trx_wait_time
,
SHOW_LONGLONG
)
DEF_SHOW_FUNC
(
trx_wait_num
,
SHOW_LONGLONG
)
DEF_SHOW_FUNC
(
net_wait_time
,
SHOW_LONGLONG
)
...
...
@@ -301,8 +302,8 @@ static SHOW_VAR semi_sync_master_status_vars[]= {
(
char
*
)
&
rpl_semi_sync_master_no_transactions
,
SHOW_LONG
},
{
"Rpl_semi_sync_master_wait_sessions"
,
(
char
*
)
&
rpl_semi_sync_master_wait_sessions
,
SHOW_
LONG
},
(
char
*
)
&
SHOW_FNAME
(
wait_sessions
)
,
SHOW_
FUNC
},
{
"Rpl_semi_sync_master_no_times"
,
(
char
*
)
&
rpl_semi_sync_master_off_times
,
SHOW_LONG
},
...
...
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