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
337fdb80
Commit
337fdb80
authored
Oct 06, 2013
by
Seppo Jaakola
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merged revisions 3409..3411 from mariadb-galera-5.5
parent
089f10fe
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1251 additions
and
9 deletions
+1251
-9
.bzrignore
.bzrignore
+3
-0
cmake/install_macros.cmake
cmake/install_macros.cmake
+24
-0
cmake/os/FreeBSD.cmake
cmake/os/FreeBSD.cmake
+6
-0
scripts/mysqld_safe.sh
scripts/mysqld_safe.sh
+3
-2
scripts/wsrep_sst_rsync.sh.moved
scripts/wsrep_sst_rsync.sh.moved
+261
-0
scripts/wsrep_sst_xtrabackup.sh.moved
scripts/wsrep_sst_xtrabackup.sh.moved
+481
-0
sql/sql_parse.cc
sql/sql_parse.cc
+5
-7
sql/wsrep_utils.cc.moved
sql/wsrep_utils.cc.moved
+468
-0
No files found.
.bzrignore
View file @
337fdb80
...
...
@@ -72,6 +72,9 @@ RelWithDebInfo
.vimrc
ac_available_languages_fragment
BitKeeper/
build_debug
build_install
build_release
client/*.ds?
client/completion_hash.cpp
client/decimal.c
...
...
cmake/install_macros.cmake
View file @
337fdb80
...
...
@@ -13,8 +13,30 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
if
(
APPLE
)
LIST
(
APPEND CMAKE_CXX_LINK_EXECUTABLE
"dsymutil <TARGET>"
)
LIST
(
APPEND CMAKE_C_LINK_EXECUTABLE
"dsymutil <TARGET>"
)
LIST
(
APPEND CMAKE_CXX_CREATE_SHARED_LIBRARY
"dsymutil <TARGET>"
)
LIST
(
APPEND CMAKE_C_CREATE_SHARED_LIBRARY
"dsymutil <TARGET>"
)
LIST
(
APPEND CMAKE_CXX_CREATE_SHARED_MODULE
"dsymutil <TARGET>"
)
LIST
(
APPEND CMAKE_C_CREATE_SHARED_MODULE
"dsymutil <TARGET>"
)
ENDIF
()
GET_FILENAME_COMPONENT
(
MYSQL_CMAKE_SCRIPT_DIR
${
CMAKE_CURRENT_LIST_FILE
}
PATH
)
INCLUDE
(
${
MYSQL_CMAKE_SCRIPT_DIR
}
/cmake_parse_arguments.cmake
)
MACRO
(
INSTALL_DSYM_DIRECTORIES targets
)
IF
(
APPLE
)
FOREACH
(
target
${
targets
}
)
GET_TARGET_PROPERTY
(
location
${
target
}
LOCATION
)
GET_TARGET_PROPERTY
(
type
${
target
}
TYPE
)
# It's a dirty hack, but cmake too stupid and mysql cmake files too buggy */
STRING
(
REPLACE
"liblibmysql.dylib"
"libmysqlclient.
${
SHARED_LIB_MAJOR_VERSION
}
.dylib"
location
${
location
}
)
IF
(
type MATCHES
"EXECUTABLE"
OR type MATCHES
"MODULE"
OR type MATCHES
"SHARED_LIBRARY"
)
INSTALL
(
DIRECTORY
"
${
location
}
.dSYM"
DESTINATION
${
INSTALL_LOCATION
}
COMPONENT Debuginfo
)
ENDIF
()
ENDFOREACH
()
ENDIF
()
ENDMACRO
()
FUNCTION
(
INSTALL_DEBUG_SYMBOLS
)
IF
(
MSVC
)
...
...
@@ -31,6 +53,7 @@ FUNCTION (INSTALL_DEBUG_SYMBOLS)
MESSAGE
(
FATAL_ERROR
"No INSTALL_LOCATION passed to INSTALL_DEBUG_SYMBOLS"
)
ENDIF
()
SET
(
targets
${
ARG_DEFAULT_ARGS
}
)
FOREACH
(
target
${
targets
}
)
GET_TARGET_PROPERTY
(
type
${
target
}
TYPE
)
GET_TARGET_PROPERTY
(
location
${
target
}
LOCATION
)
...
...
@@ -252,6 +275,7 @@ FUNCTION(MYSQL_INSTALL_TARGETS)
INSTALL
(
TARGETS
${
TARGETS
}
DESTINATION
${
ARG_DESTINATION
}
${
COMP
}
)
INSTALL_DEBUG_SYMBOLS
(
${
TARGETS
}
${
COMP
}
INSTALL_LOCATION
${
ARG_DESTINATION
}
)
INSTALL_DSYM_DIRECTORIES
(
"
${
TARGETS
}
"
)
ENDFUNCTION
()
...
...
cmake/os/FreeBSD.cmake
View file @
337fdb80
...
...
@@ -32,3 +32,9 @@ IF(EXECINFO)
SET
(
LIBEXECINFO
${
EXECINFO
}
)
ENDIF
()
<<<<<<< TREE
=======
SET
(
HAVE_SYS_TIMEB_H CACHE INTERNAL
""
)
>>>>>>> MERGE-SOURCE
scripts/mysqld_safe.sh
View file @
337fdb80
...
...
@@ -239,7 +239,8 @@ wsrep_recover_position() {
if
[
-z
"
$rp
"
]
;
then
local
skipped
=
"
$(
grep
WSREP
$wr_logfile
|
grep
'skipping position recovery'
)
"
if
[
-z
"
$skipped
"
]
;
then
log_error
"WSREP: Failed to recover position: "
`
cat
$wr_logfile
`
;
log_error
"WSREP: Failed to recover position:
'
`
cat
$wr_logfile
`
'"
ret
=
1
else
log_notice
"WSREP: Position recovery skipped"
...
...
@@ -251,7 +252,7 @@ wsrep_recover_position() {
wsrep_start_position_opt
=
"--wsrep_start_position=
$start_pos
"
fi
rm
$wr_logfile
[
$ret
-eq
0
]
&&
rm
$wr_logfile
return
$ret
}
...
...
scripts/wsrep_sst_rsync.sh.moved
0 → 100755
View file @
337fdb80
#!/bin/bash -ue
# Copyright (C) 2010 Codership Oy
#
# 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; see the file COPYING. If not, write to the
# Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston
# MA 02110-1301 USA.
# This is a reference script for rsync-based state snapshot tansfer
RSYNC_PID
=
RSYNC_CONF
=
OS
=
$(
uname
)
[
"
$OS
"
==
"Darwin"
]
&&
export
-n
LD_LIBRARY_PATH
.
$(
dirname
$0
)
/wsrep_sst_common
cleanup_joiner
()
{
wsrep_log_info
"Joiner cleanup."
local
PID
=
$(
cat
"
$RSYNC_PID
"
2>/dev/null
||
echo
0
)
[
"0"
!=
"
$PID
"
]
&&
kill
$PID
&&
sleep
0.5
&&
kill
-9
$PID
>
/dev/null 2>&1
\
||
:
rm
-rf
"
$RSYNC_CONF
"
rm
-rf
"
$MAGIC_FILE
"
rm
-rf
"
$RSYNC_PID
"
wsrep_log_info
"Joiner cleanup done."
if
[
"
${
WSREP_SST_OPT_ROLE
}
"
=
"joiner"
]
;
then
wsrep_cleanup_progress_file
fi
}
check_pid
()
{
local
pid_file
=
$1
[
-r
"
$pid_file
"
]
&&
ps
-p
$(
cat
$pid_file
)
>
/dev/null 2>&1
}
check_pid_and_port
()
{
local
pid_file
=
$1
local
rsync_pid
=
$(
cat
$pid_file
)
local
rsync_port
=
$2
if
[
"
$OS
"
==
"Darwin"
-o
"
$OS
"
==
"FreeBSD"
]
;
then
# no netstat --program(-p) option in Darwin and FreeBSD
check_pid
$pid_file
&&
\
lsof
-i
-Pn
2>/dev/null |
\
grep
"(LISTEN)"
|
grep
":
$rsync_port
"
|
grep
-w
'^rsync[[:space:]]\+'
"
$rsync_pid
"
>
/dev/null
else
check_pid
$pid_file
&&
\
netstat
-lnpt
2>/dev/null |
\
grep
LISTEN |
grep
\:
$rsync_port
|
grep
$rsync_pid
/rsync
>
/dev/null
fi
}
MAGIC_FILE
=
"
$WSREP_SST_OPT_DATA
/rsync_sst_complete"
rm
-rf
"
$MAGIC_FILE
"
# Old filter - include everything except selected
# FILTER=(--exclude '*.err' --exclude '*.pid' --exclude '*.sock' \
# --exclude '*.conf' --exclude core --exclude 'galera.*' \
# --exclude grastate.txt --exclude '*.pem' \
# --exclude '*.[0-9][0-9][0-9][0-9][0-9][0-9]' --exclude '*.index')
# New filter - exclude everything except dirs (schemas) and innodb files
FILTER
=(
-f
'- lost+found'
-f
'+ /ib_lru_dump'
-f
'+ /ibdata*'
-f
'+ /ib_logfile*'
-f
'+ */'
-f
'-! */*'
)
# Old versions of rsync have a bug transferring filter rules to daemon, so specify filter rules directly to daemon
FILTER_DAEMON
=
"- lost+found + /ib_lru_dump + /ibdata* + ib_logfile* + */ -! */*"
if
[
"
$WSREP_SST_OPT_ROLE
"
=
"donor"
]
then
if
[
$WSREP_SST_OPT_BYPASS
-eq
0
]
then
FLUSHED
=
"
$WSREP_SST_OPT_DATA
/tables_flushed"
rm
-rf
"
$FLUSHED
"
# Use deltaxfer only for WAN
inv
=
$(
basename
$0
)
[
"
$inv
"
=
"wsrep_sst_rsync_wan"
]
&&
WHOLE_FILE_OPT
=
""
\
||
WHOLE_FILE_OPT
=
"--whole-file"
echo
"flush tables"
# wait for tables flushed and state ID written to the file
while
[
!
-r
"
$FLUSHED
"
]
&&
!
grep
-q
':'
"
$FLUSHED
"
>
/dev/null 2>&1
do
sleep
0.2
done
STATE
=
"
$(
cat
$FLUSHED
)
"
rm
-rf
"
$FLUSHED
"
sync
# first, the normal directories, so that we can detect incompatible protocol
RC
=
0
rsync
--archive
--no-times
--ignore-times
--inplace
--delete
--quiet
\
--no-recursive
--dirs
\
$WHOLE_FILE_OPT
"
${
FILTER
[@]
}
"
"
$WSREP_SST_OPT_DATA
/"
\
rsync://
$WSREP_SST_OPT_ADDR
-with_filter
||
RC
=
$?
[
$RC
-ne
0
]
&&
wsrep_log_error
"rsync returned code
$RC
:"
case
$RC
in
0
)
RC
=
0
# Success
;;
12
)
RC
=
71
# EPROTO
wsrep_log_error
\
"rsync server on the other end has incompatible protocol. "
\
"Make sure you have the same version of rsync on all nodes."
;;
22
)
RC
=
12
# ENOMEM
;;
*
)
RC
=
255
# unknown error
;;
esac
[
$RC
-ne
0
]
&&
exit
$RC
# then, we parallelize the transfer of database directories, use . so that pathconcatenation works
pushd
"
$WSREP_SST_OPT_DATA
"
1>/dev/null
count
=
1
[
"
$OS
"
==
"Linux"
]
&&
count
=
$(
grep
-c
processor /proc/cpuinfo
)
[
"
$OS
"
==
"Darwin"
-o
"
$OS
"
==
"FreeBSD"
]
&&
count
=
$(
sysctl
-n
hw.ncpu
)
find
.
-maxdepth
1
-mindepth
1
-type
d
-print0
| xargs
-I
{}
-0
-P
$count
\
rsync
--archive
--no-times
--ignore-times
--inplace
--delete
--quiet
\
$WHOLE_FILE_OPT
"
$WSREP_SST_OPT_DATA
"
/
{}
/
\
rsync://
$WSREP_SST_OPT_ADDR
/
{}
||
RC
=
$?
popd
1>/dev/null
[
$RC
-ne
0
]
&&
wsrep_log_error
"find/rsync returned code
$RC
:"
case
$RC
in
0
)
RC
=
0
# Success
;;
*
)
RC
=
255
# unknown error
;;
esac
[
$RC
-ne
0
]
&&
exit
$RC
else
# BYPASS
wsrep_log_info
"Bypassing state dump."
STATE
=
"
$WSREP_SST_OPT_GTID
"
fi
echo
"continue"
# now server can resume updating data
echo
"
$STATE
"
>
"
$MAGIC_FILE
"
rsync
--archive
--quiet
--checksum
"
$MAGIC_FILE
"
rsync://
$WSREP_SST_OPT_ADDR
echo
"done
$STATE
"
elif
[
"
$WSREP_SST_OPT_ROLE
"
=
"joiner"
]
then
touch
$SST_PROGRESS_FILE
MYSQLD_PID
=
$WSREP_SST_OPT_PARENT
MODULE
=
"rsync_sst"
RSYNC_PID
=
"
$WSREP_SST_OPT_DATA
/
$MODULE
.pid"
if
check_pid
$RSYNC_PID
then
wsrep_log_error
"rsync daemon already running."
exit
114
# EALREADY
fi
rm
-rf
"
$RSYNC_PID
"
ADDR
=
$WSREP_SST_OPT_ADDR
RSYNC_PORT
=
$(
echo
$ADDR
|
awk
-F
':'
'{ print $2 }'
)
if
[
-z
"
$RSYNC_PORT
"
]
then
RSYNC_PORT
=
4444
ADDR
=
"
$(
echo
$ADDR
|
awk
-F
':'
'{ print $1 }'
)
:
$RSYNC_PORT
"
fi
trap
"exit 32"
HUP PIPE
trap
"exit 3"
INT TERM ABRT
trap
cleanup_joiner EXIT
MYUID
=
$(
id
-u
)
MYGID
=
$(
id
-g
)
RSYNC_CONF
=
"
$WSREP_SST_OPT_DATA
/
$MODULE
.conf"
cat
<<
EOF
> "
$RSYNC_CONF
"
pid file =
$RSYNC_PID
use chroot = no
[
$MODULE
-with_filter]
path =
$WSREP_SST_OPT_DATA
read only = no
timeout = 300
uid =
$MYUID
gid =
$MYGID
filter =
$FILTER_DAEMON
[
$MODULE
]
path =
$WSREP_SST_OPT_DATA
read only = no
timeout = 300
uid =
$MYUID
gid =
$MYGID
EOF
# rm -rf "$DATA"/ib_logfile* # we don't want old logs around
# listen at all interfaces (for firewalled setups)
rsync
--daemon
--port
$RSYNC_PORT
--config
"
$RSYNC_CONF
"
until
check_pid_and_port
$RSYNC_PID
$RSYNC_PORT
do
sleep
0.2
done
echo
"ready
$ADDR
/
$MODULE
"
# wait for SST to complete by monitoring magic file
while
[
!
-r
"
$MAGIC_FILE
"
]
&&
check_pid
"
$RSYNC_PID
"
&&
\
ps
-p
$MYSQLD_PID
>
/dev/null
do
sleep
1
done
if
!
ps
-p
$MYSQLD_PID
>
/dev/null
then
wsrep_log_error
\
"Parent mysqld process (PID:
$MYSQLD_PID
) terminated unexpectedly."
exit
32
fi
if
[
-r
"
$MAGIC_FILE
"
]
then
cat
"
$MAGIC_FILE
"
# output UUID:seqno
else
# this message should cause joiner to abort
echo
"rsync process ended without creating '
$MAGIC_FILE
'"
fi
wsrep_cleanup_progress_file
# cleanup_joiner
else
wsrep_log_error
"Unrecognized role: '
$WSREP_SST_OPT_ROLE
'"
exit
22
# EINVAL
fi
exit
0
scripts/wsrep_sst_xtrabackup.sh.moved
0 → 100644
View file @
337fdb80
This diff is collapsed.
Click to expand it.
sql/sql_parse.cc
View file @
337fdb80
...
...
@@ -9019,13 +9019,11 @@ void wsrep_replication_process(THD *thd)
break
;
}
if
(
thd
->
killed
!=
KILL_CONNECTION
)
{
mysql_mutex_lock
(
&
LOCK_thread_count
);
wsrep_close_applier
(
thd
);
mysql_cond_broadcast
(
&
COND_thread_count
);
mysql_mutex_unlock
(
&
LOCK_thread_count
);
}
mysql_mutex_lock
(
&
LOCK_thread_count
);
wsrep_close_applier
(
thd
);
mysql_cond_broadcast
(
&
COND_thread_count
);
mysql_mutex_unlock
(
&
LOCK_thread_count
);
wsrep_return_from_bf_mode
(
thd
,
&
shadow
);
DBUG_VOID_RETURN
;
}
...
...
sql/wsrep_utils.cc.moved
0 → 100644
View file @
337fdb80
This diff is collapsed.
Click to expand it.
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