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
87ff4ba7
Commit
87ff4ba7
authored
Aug 26, 2021
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.4 into 10.5
parents
bd3eb528
dc6bc85c
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
90 additions
and
49 deletions
+90
-49
mysql-test/suite/galera/r/galera_split_brain.result
mysql-test/suite/galera/r/galera_split_brain.result
+2
-1
mysql-test/suite/galera/t/galera_split_brain.test
mysql-test/suite/galera/t/galera_split_brain.test
+2
-1
plugin/auth_pam/CMakeLists.txt
plugin/auth_pam/CMakeLists.txt
+5
-9
sql/handler.cc
sql/handler.cc
+1
-1
sql/sql_insert.cc
sql/sql_insert.cc
+2
-2
sql/sql_parse.cc
sql/sql_parse.cc
+2
-2
sql/wsrep_client_service.cc
sql/wsrep_client_service.cc
+3
-3
sql/wsrep_high_priority_service.cc
sql/wsrep_high_priority_service.cc
+21
-2
sql/wsrep_mysqld.cc
sql/wsrep_mysqld.cc
+32
-12
sql/wsrep_mysqld.h
sql/wsrep_mysqld.h
+1
-3
sql/wsrep_thd.cc
sql/wsrep_thd.cc
+13
-2
sql/wsrep_thd.h
sql/wsrep_thd.h
+3
-3
sql/wsrep_var.cc
sql/wsrep_var.cc
+2
-2
storage/maria/test_ma_backup.c
storage/maria/test_ma_backup.c
+1
-6
No files found.
mysql-test/suite/galera/r/galera_split_brain.result
View file @
87ff4ba7
...
...
@@ -7,8 +7,9 @@ connection node_1;
connection node_2;
Killing server ...
connection node_1;
SET SESSION lock_wait_timeout= 3;
CREATE TABLE t1 (f1 INTEGER) ENGINE=InnoDB;
ERROR
40001: Deadlock found when trying to get lock
; try restarting transaction
ERROR
HY000: Lock wait timeout exceeded
; try restarting transaction
connection node_2;
connect node_2a, 127.0.0.1, root, , test, $NODE_MYPORT_2;
disconnect node_2;
...
...
mysql-test/suite/galera/t/galera_split_brain.test
View file @
87ff4ba7
...
...
@@ -22,7 +22,8 @@ call mtr.add_suppression("WSREP: TO isolation failed for: ");
--
source
include
/
kill_galera
.
inc
--
connection
node_1
--
error
ER_LOCK_DEADLOCK
SET
SESSION
lock_wait_timeout
=
3
;
--
error
ER_LOCK_WAIT_TIMEOUT
CREATE
TABLE
t1
(
f1
INTEGER
)
ENGINE
=
InnoDB
;
# Reset the master and restart the slave so that post-test checks can run
...
...
plugin/auth_pam/CMakeLists.txt
View file @
87ff4ba7
...
...
@@ -38,14 +38,10 @@ IF(HAVE_PAM_APPL_H AND HAVE_GETGROUPLIST)
IF
(
TARGET auth_pam
)
MYSQL_ADD_EXECUTABLE
(
auth_pam_tool auth_pam_tool.c DESTINATION
${
INSTALL_PLUGINDIR
}
/auth_pam_tool_dir COMPONENT Server
)
TARGET_LINK_LIBRARIES
(
auth_pam_tool pam
)
INSTALL
(
CODE
"EXECUTE_PROCESS(
COMMAND chmod u=rwx,g=,o= auth_pam_tool_dir
WORKING_DIRECTORY
\$
ENV{DESTDIR}
\$
{CMAKE_INSTALL_PREFIX}/
${
INSTALL_PLUGINDIR
}
/)"
COMPONENT Server
)
INSTALL
(
CODE
"EXECUTE_PROCESS(
COMMAND chmod u=rwxs,g=rx,o=rx auth_pam_tool_dir/auth_pam_tool
WORKING_DIRECTORY
\$
ENV{DESTDIR}
\$
{CMAKE_INSTALL_PREFIX}/
${
INSTALL_PLUGINDIR
}
/)"
COMPONENT Server
)
SET
(
CPACK_RPM_server_USER_FILELIST
${
CPACK_RPM_server_USER_FILELIST
}
"%attr(700, -, -)
${
INSTALL_PLUGINDIRABS
}
/auth_pam_tool_dir"
"%attr(4755, -, -)
${
INSTALL_PLUGINDIRABS
}
/auth_pam_tool_dir/auth_pam_tool"
)
SET
(
CPACK_RPM_server_USER_FILELIST
${
CPACK_RPM_server_USER_FILELIST
}
PARENT_SCOPE
)
ENDIF
()
IF
(
TARGET auth_pam OR TARGET auth_pam_v1
)
ADD_SUBDIRECTORY
(
testing
)
...
...
@@ -55,7 +51,7 @@ IF(HAVE_PAM_APPL_H AND HAVE_GETGROUPLIST)
IF
(
INSTALL_PAMDIR
)
INSTALL
(
TARGETS pam_user_map DESTINATION
${
INSTALL_PAMDIR
}
COMPONENT Server
)
INSTALL
(
FILES mapper/user_map.conf DESTINATION
${
INSTALL_PAMDATADIR
}
COMPONENT Server
)
SET
(
CPACK_RPM_server_USER_FILELIST
${
CPACK_RPM_server_USER_FILELIST
}
"%config(noreplace)
${
INSTALL_PAMDATADIR
}
/*"
PARENT_SCOPE
)
SET
(
CPACK_RPM_server_USER_FILELIST
${
CPACK_RPM_server_USER_FILELIST
}
"%config(noreplace)
${
INSTALL_PAMDATADIR
ABS
}
/*"
PARENT_SCOPE
)
ENDIF
()
ENDIF
()
ENDIF
()
...
...
sql/handler.cc
View file @
87ff4ba7
...
...
@@ -2088,7 +2088,7 @@ int ha_rollback_trans(THD *thd, bool all)
if
(
thd
->
is_error
())
{
WSREP_DEBUG
(
"ha_rollback_trans(%lld, %s) rolled back: %s: %s; is_real %d"
,
thd
->
thread_id
,
all
?
"TRUE"
:
"FALSE"
,
WSREP_QUERY
(
thd
),
thd
->
thread_id
,
all
?
"TRUE"
:
"FALSE"
,
wsrep_thd_query
(
thd
),
thd
->
get_stmt_da
()
->
message
(),
is_real_trans
);
}
(
void
)
wsrep_after_rollback
(
thd
,
all
);
...
...
sql/sql_insert.cc
View file @
87ff4ba7
/*
Copyright (c) 2000, 2016, Oracle and/or its affiliates.
Copyright (c) 2010, 20
19
, MariaDB Corporation
Copyright (c) 2010, 20
21
, MariaDB Corporation
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
...
...
@@ -5009,7 +5009,7 @@ bool select_create::send_eof()
{
WSREP_DEBUG
(
"select_create commit failed, thd: %llu err: %s %s"
,
thd
->
thread_id
,
wsrep_thd_transaction_state_str
(
thd
),
WSREP_QUERY
(
thd
));
wsrep_thd_transaction_state_str
(
thd
),
wsrep_thd_query
(
thd
));
mysql_mutex_unlock
(
&
thd
->
LOCK_thd_data
);
abort_result_set
();
DBUG_RETURN
(
true
);
...
...
sql/sql_parse.cc
View file @
87ff4ba7
...
...
@@ -7949,7 +7949,7 @@ static bool wsrep_mysql_parse(THD *thd, char *rawbuf, uint length,
DBUG_ASSERT
(
!
debug_sync_set_action
(
thd
,
STRING_WITH_LEN
(
act
)));
});
WSREP_DEBUG
(
"wsrep retrying AC query: %lu %s"
,
thd
->
wsrep_retry_counter
,
WSREP_QUERY
(
thd
));
thd
->
wsrep_retry_counter
,
wsrep_thd_query
(
thd
));
wsrep_prepare_for_autocommit_retry
(
thd
,
rawbuf
,
length
,
parser_state
);
if
(
thd
->
lex
->
explain
)
delete_explain_query
(
thd
->
lex
);
...
...
@@ -7963,7 +7963,7 @@ static bool wsrep_mysql_parse(THD *thd, char *rawbuf, uint length,
is_autocommit
,
thd
->
wsrep_retry_counter
,
thd
->
variables
.
wsrep_retry_autocommit
,
WSREP_QUERY
(
thd
));
wsrep_thd_query
(
thd
));
my_error
(
ER_LOCK_DEADLOCK
,
MYF
(
0
));
thd
->
reset_kill_query
();
thd
->
wsrep_retry_counter
=
0
;
// reset
...
...
sql/wsrep_client_service.cc
View file @
87ff4ba7
/* Copyright 2018 Codership Oy <info@codership.com>
/* Copyright 2018
-2021
Codership Oy <info@codership.com>
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
...
...
@@ -108,14 +108,14 @@ int Wsrep_client_service::prepare_data_for_replication()
"affected rows: %llu, "
"changed tables: %d, "
"sql_log_bin: %d"
,
WSREP_QUERY
(
m_thd
),
wsrep_thd_query
(
m_thd
),
m_thd
->
get_stmt_da
()
->
affected_rows
(),
stmt_has_updated_trans_table
(
m_thd
),
m_thd
->
variables
.
sql_log_bin
);
}
else
{
WSREP_DEBUG
(
"empty rbr buffer, query: %s"
,
WSREP_QUERY
(
m_thd
));
WSREP_DEBUG
(
"empty rbr buffer, query: %s"
,
wsrep_thd_query
(
m_thd
));
}
}
DBUG_RETURN
(
0
);
...
...
sql/wsrep_high_priority_service.cc
View file @
87ff4ba7
/* Copyright 2018 Codership Oy <info@codership.com>
/* Copyright 2018
-2021
Codership Oy <info@codership.com>
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
...
...
@@ -403,6 +403,16 @@ int Wsrep_high_priority_service::apply_toi(const wsrep::ws_meta& ws_meta,
WSREP_DEBUG
(
"Wsrep_high_priority_service::apply_toi: %lld"
,
client_state
.
toi_meta
().
seqno
().
get
());
DBUG_EXECUTE_IF
(
"sync.wsrep_apply_toi"
,
{
const
char
act
[]
=
"now "
"SIGNAL sync.wsrep_apply_toi_reached "
"WAIT_FOR signal.wsrep_apply_toi"
;
DBUG_ASSERT
(
!
debug_sync_set_action
(
thd
,
STRING_WITH_LEN
(
act
)));
};);
int
ret
=
apply_events
(
thd
,
m_rli
,
data
,
err
);
wsrep_thd_set_ignored_error
(
thd
,
false
);
trans_commit
(
thd
);
...
...
@@ -447,6 +457,15 @@ int Wsrep_high_priority_service::log_dummy_write_set(const wsrep::ws_handle& ws_
DBUG_PRINT
(
"info"
,
(
"Wsrep_high_priority_service::log_dummy_write_set: seqno=%lld"
,
ws_meta
.
seqno
().
get
()));
DBUG_EXECUTE_IF
(
"sync.wsrep_log_dummy_write_set"
,
{
const
char
act
[]
=
"now "
"SIGNAL sync.wsrep_log_dummy_write_set_reached "
;
DBUG_ASSERT
(
!
debug_sync_set_action
(
m_thd
,
STRING_WITH_LEN
(
act
)));
};);
if
(
ws_meta
.
ordered
())
{
wsrep
::
client_state
&
cs
(
m_thd
->
wsrep_cs
());
...
...
@@ -680,7 +699,7 @@ Wsrep_replayer_service::~Wsrep_replayer_service()
DBUG_ASSERT
(
0
);
WSREP_ERROR
(
"trx_replay failed for: %d, schema: %s, query: %s"
,
m_replay_status
,
orig_thd
->
db
.
str
,
WSREP_QUERY
(
orig_thd
));
orig_thd
->
db
.
str
,
wsrep_thd_query
(
orig_thd
));
unireg_abort
(
1
);
}
}
...
...
sql/wsrep_mysqld.cc
View file @
87ff4ba7
/* Copyright 2008-20
15
Codership Oy <http://www.codership.com>
/* Copyright 2008-20
21
Codership Oy <http://www.codership.com>
Copyright (c) 2020, 2021, MariaDB
This program is free software; you can redistribute it and/or modify
...
...
@@ -2255,12 +2255,29 @@ static int wsrep_TOI_begin(THD *thd, const char *db, const char *table,
wsrep_thd_query
(
thd
));
my_error
(
ER_ERROR_DURING_COMMIT
,
MYF
(
0
),
WSREP_SIZE_EXCEEDED
);
break
;
case
wsrep
:
:
e_deadlock_error
:
WSREP_WARN
(
"TO isolation failed for: %d, schema: %s, sql: %s. "
"Deadlock error."
,
ret
,
(
thd
->
db
.
str
?
thd
->
db
.
str
:
"(null)"
),
wsrep_thd_query
(
thd
));
my_error
(
ER_LOCK_DEADLOCK
,
MYF
(
0
));
break
;
case
wsrep
:
:
e_timeout_error
:
WSREP_WARN
(
"TO isolation failed for: %d, schema: %s, sql: %s. "
"Operation timed out."
,
ret
,
(
thd
->
db
.
str
?
thd
->
db
.
str
:
"(null)"
),
wsrep_thd_query
(
thd
));
my_error
(
ER_LOCK_WAIT_TIMEOUT
,
MYF
(
0
));
break
;
default:
WSREP_WARN
(
"TO isolation failed for: %d, schema: %s, sql: %s. "
"Check wsrep connection state and retry the query."
,
"Check
your
wsrep connection state and retry the query."
,
ret
,
(
thd
->
db
.
str
?
thd
->
db
.
str
:
"(null)"
),
wsrep_thd_query
(
thd
));
if
(
!
thd
->
is_error
())
{
my_error
(
ER_LOCK_DEADLOCK
,
MYF
(
0
),
"WSREP replication failed. Check "
...
...
@@ -2418,13 +2435,6 @@ int wsrep_to_isolation_begin(THD *thd, const char *db_, const char *table_,
thd
->
variables
.
auto_increment_increment
=
1
;
}
/*
TOI operations will ignore provided lock_wait_timeout and restore it
after operation is done.
*/
thd
->
variables
.
saved_lock_wait_timeout
=
thd
->
variables
.
lock_wait_timeout
;
thd
->
variables
.
lock_wait_timeout
=
LONG_TIMEOUT
;
if
(
thd
->
variables
.
wsrep_on
&&
wsrep_thd_is_local
(
thd
))
{
switch
(
wsrep_OSU_method_get
(
thd
))
{
...
...
@@ -2441,8 +2451,19 @@ int wsrep_to_isolation_begin(THD *thd, const char *db_, const char *table_,
ret
=
-
1
;
break
;
}
switch
(
ret
)
{
case
0
:
/* wsrep_TOI_begin should set toi mode */
break
;
case
0
:
/* wsrep_TOI_begin should set toi mode */
if
(
thd
->
variables
.
wsrep_OSU_method
==
WSREP_OSU_TOI
)
{
/*
TOI operations ignore the provided lock_wait_timeout once replicated,
and restore it after operation is done.
*/
thd
->
variables
.
saved_lock_wait_timeout
=
thd
->
variables
.
lock_wait_timeout
;
thd
->
variables
.
lock_wait_timeout
=
LONG_TIMEOUT
;
}
break
;
case
1
:
/* TOI replication skipped, treat as success */
ret
=
0
;
...
...
@@ -2461,10 +2482,9 @@ void wsrep_to_isolation_end(THD *thd)
DBUG_ASSERT
(
wsrep_thd_is_local_toi
(
thd
)
||
wsrep_thd_is_in_rsu
(
thd
));
thd
->
variables
.
lock_wait_timeout
=
thd
->
variables
.
saved_lock_wait_timeout
;
if
(
wsrep_thd_is_local_toi
(
thd
))
{
thd
->
variables
.
lock_wait_timeout
=
thd
->
variables
.
saved_lock_wait_timeout
;
DBUG_ASSERT
(
wsrep_OSU_method_get
(
thd
)
==
WSREP_OSU_TOI
);
wsrep_TOI_end
(
thd
);
}
...
...
sql/wsrep_mysqld.h
View file @
87ff4ba7
/* Copyright 2008-20
17
Codership Oy <http://www.codership.com>
/* Copyright 2008-20
21
Codership Oy <http://www.codership.com>
Copyright (c) 2020, 2021, MariaDB
This program is free software; you can redistribute it and/or modify
...
...
@@ -294,8 +294,6 @@ static inline bool wsrep_cluster_address_exists()
return
wsrep_cluster_address
&&
wsrep_cluster_address
[
0
];
}
#define WSREP_QUERY(thd) (thd->query())
extern
my_bool
wsrep_ready_get
();
extern
void
wsrep_ready_wait
();
...
...
sql/wsrep_thd.cc
View file @
87ff4ba7
...
...
@@ -340,11 +340,20 @@ int wsrep_abort_thd(THD *bf_thd_ptr, THD *victim_thd_ptr, my_bool signal)
DBUG_RETURN
(
1
);
}
bool
wsrep_bf_abort
(
const
THD
*
bf_thd
,
THD
*
victim_thd
)
bool
wsrep_bf_abort
(
THD
*
bf_thd
,
THD
*
victim_thd
)
{
WSREP_LOG_THD
(
bf_thd
,
"BF aborter before"
);
WSREP_LOG_THD
(
victim_thd
,
"victim before"
);
wsrep
::
seqno
bf_seqno
(
bf_thd
->
wsrep_trx
().
ws_meta
().
seqno
());
DBUG_EXECUTE_IF
(
"sync.wsrep_bf_abort"
,
{
const
char
act
[]
=
"now "
"SIGNAL sync.wsrep_bf_abort_reached "
"WAIT_FOR signal.wsrep_bf_abort"
;
DBUG_ASSERT
(
!
debug_sync_set_action
(
bf_thd
,
STRING_WITH_LEN
(
act
)));
};);
if
(
WSREP
(
victim_thd
)
&&
!
victim_thd
->
wsrep_trx
().
active
())
{
...
...
@@ -362,6 +371,8 @@ bool wsrep_bf_abort(const THD* bf_thd, THD* victim_thd)
}
bool
ret
;
wsrep
::
seqno
bf_seqno
(
bf_thd
->
wsrep_trx
().
ws_meta
().
seqno
());
if
(
wsrep_thd_is_toi
(
bf_thd
))
{
ret
=
victim_thd
->
wsrep_cs
().
total_order_bf_abort
(
bf_seqno
);
...
...
sql/wsrep_thd.h
View file @
87ff4ba7
/* Copyright (C) 2013 Codership Oy <info@codership.com>
/* Copyright (C) 2013
-2021
Codership Oy <info@codership.com>
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
...
...
@@ -87,7 +87,7 @@ int wsrep_show_bf_aborts (THD *thd, SHOW_VAR *var, char *buff,
bool
wsrep_create_appliers
(
long
threads
,
bool
mutex_protected
=
false
);
void
wsrep_create_rollbacker
();
bool
wsrep_bf_abort
(
const
THD
*
,
THD
*
);
bool
wsrep_bf_abort
(
THD
*
bf_thd
,
THD
*
victim_thd
);
int
wsrep_abort_thd
(
THD
*
bf_thd_ptr
,
THD
*
victim_thd_ptr
,
my_bool
signal
);
extern
void
wsrep_thd_set_PA_safe
(
void
*
thd_ptr
,
my_bool
safe
);
...
...
@@ -292,7 +292,7 @@ static inline void wsrep_log_thd(const THD *thd,
(
thd
->
get_stmt_da
()
->
is_error
()
?
thd
->
get_stmt_da
()
->
message
()
:
""
)
#ifdef WSREP_THD_LOG_QUERIES
,
thd
->
lex
->
sql_command
,
WSREP_QUERY
(
thd
)
wsrep_thd_query
(
thd
)
#endif
/* WSREP_OBSERVER_LOG_QUERIES */
);
}
...
...
sql/wsrep_var.cc
View file @
87ff4ba7
/* Copyright 2008-20
15
Codership Oy <http://www.codership.com>
/* Copyright 2008-20
21
Codership Oy <http://www.codership.com>
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
...
...
@@ -843,7 +843,7 @@ bool wsrep_desync_check (sys_var *self, THD* thd, set_var* var)
ret
=
Wsrep_server_state
::
instance
().
provider
().
desync
();
if
(
ret
)
{
WSREP_WARN
(
"SET desync failed %d for schema: %s, query: %s"
,
ret
,
thd
->
db
.
str
,
WSREP_QUERY
(
thd
));
thd
->
db
.
str
,
wsrep_thd_query
(
thd
));
my_error
(
ER_CANNOT_USER
,
MYF
(
0
),
"'desync'"
,
thd
->
query
());
return
true
;
}
...
...
storage/maria/test_ma_backup.c
View file @
87ff4ba7
/* Copyright (C) 2018
MariaDB corporation
/* Copyright (C) 2018
, 2021, MariaDB corporation.
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
...
...
@@ -178,7 +178,6 @@ static int create_test_table(const char *table_name, int type_of_table)
int
key_field
=
FIELD_SKIP_PRESPACE
,
extra_field
=
FIELD_SKIP_ENDSPACE
;
int
key_type
=
HA_KEYTYPE_NUM
;
int
create_flag
=
0
;
uint
offset_to_key
;
uint
pack_seg
=
0
,
pack_keys
=
0
;
uint
key_length
;
uchar
record
[
MAX_REC_LENGTH
];
...
...
@@ -303,10 +302,6 @@ static int create_test_table(const char *table_name, int type_of_table)
else
uniques
=
0
;
offset_to_key
=
MY_TEST
(
null_fields
);
if
(
key_field
==
FIELD_BLOB
||
key_field
==
FIELD_VARCHAR
)
offset_to_key
+=
2
;
if
(
!
silent
)
printf
(
"- Creating Aria file
\n
"
);
create_info
.
max_rows
=
0
;
...
...
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