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
3c58cdd9
Commit
3c58cdd9
authored
3 years ago
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.3 into 10.4
parents
f5ff7d09
0635088d
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
51 additions
and
6 deletions
+51
-6
mysql-test/main/partition_debug_sync.result
mysql-test/main/partition_debug_sync.result
+6
-1
mysql-test/main/partition_debug_sync.test
mysql-test/main/partition_debug_sync.test
+17
-2
mysql-test/main/query_cache_debug.test
mysql-test/main/query_cache_debug.test
+11
-0
mysql-test/suite/rpl/t/rpl_dump_request_retry_warning.test
mysql-test/suite/rpl/t/rpl_dump_request_retry_warning.test
+6
-0
storage/innobase/trx/trx0undo.cc
storage/innobase/trx/trx0undo.cc
+11
-3
No files found.
mysql-test/main/partition_debug_sync.result
View file @
3c58cdd9
...
...
@@ -53,9 +53,14 @@ SET DEBUG_SYNC= 'alter_table_before_rename_result_table WAIT_FOR delete_done';
ALTER TABLE t2 REMOVE PARTITIONING;
connection default;
SET DEBUG_SYNC= 'now WAIT_FOR removing_partitions';
SET DEBUG_SYNC= 'rm_table_no_locks_before_delete_table SIGNAL waiting_for_alter';
SET DEBUG_SYNC= 'rm_table_no_locks_before_delete_table SIGNAL waiting_for_alter
WAIT_FOR mtr_continue
';
SET DEBUG_SYNC= 'rm_table_no_locks_before_binlog SIGNAL delete_done';
DROP TABLE IF EXISTS t2;
# Create a new connection thread to orchestrate the ALTER and DROP
# threads' DEBUG_SYNC points to avoid lost signals
connect con2,localhost,root,,;
SET DEBUG_SYNC= 'now SIGNAL mtr_continue';
connection default;
connection con1;
ERROR 42S02: Table 'test.t2' doesn't exist
SET DEBUG_SYNC= 'RESET';
...
...
This diff is collapsed.
Click to expand it.
mysql-test/main/partition_debug_sync.test
View file @
3c58cdd9
...
...
@@ -66,12 +66,27 @@ SET DEBUG_SYNC= 'alter_table_before_rename_result_table WAIT_FOR delete_done';
--
send
ALTER
TABLE
t2
REMOVE
PARTITIONING
connection
default
;
SET
DEBUG_SYNC
=
'now WAIT_FOR removing_partitions'
;
SET
DEBUG_SYNC
=
'rm_table_no_locks_before_delete_table SIGNAL waiting_for_alter'
;
SET
DEBUG_SYNC
=
'rm_table_no_locks_before_delete_table SIGNAL waiting_for_alter WAIT_FOR mtr_continue'
;
SET
DEBUG_SYNC
=
'rm_table_no_locks_before_binlog SIGNAL delete_done'
;
DROP
TABLE
IF
EXISTS
t2
;
--
send
DROP
TABLE
IF
EXISTS
t2
--
echo
# Create a new connection thread to orchestrate the ALTER and DROP
--
echo
# threads' DEBUG_SYNC points to avoid lost signals
connect
(
con2
,
localhost
,
root
,,);
let
$wait_condition
=
select
count
(
*
)
=
0
from
information_schema
.
processlist
where
state
like
"debug sync point: alter_table_before_open_tables"
;
source
include
/
wait_condition
.
inc
;
SET
DEBUG_SYNC
=
'now SIGNAL mtr_continue'
;
# Return execution for DROP TABLE
connection
default
;
--
reap
# Return execution for ALTER TABLE
connection
con1
;
--
error
ER_NO_SUCH_TABLE
--
reap
SET
DEBUG_SYNC
=
'RESET'
;
disconnect
con1
;
--
source
include
/
wait_until_disconnected
.
inc
...
...
This diff is collapsed.
Click to expand it.
mysql-test/main/query_cache_debug.test
View file @
3c58cdd9
...
...
@@ -197,8 +197,17 @@ SET DEBUG_SYNC="now WAIT_FOR parked1_2";
--
echo
**
and
finally
release
the
mutex
.
The
threads
will
continue
to
wait
--
echo
**
until
a
broadcast
signal
reaches
them
causing
both
threads
to
--
echo
**
come
alive
and
check
the
condition
.
# Before sending signals back-to-back, we have to ensure the previous signal
# was received
let
$wait_condition
=
select
count
(
*
)
=
3
from
information_schema
.
processlist
where
state
like
"%debug%"
;
source
include
/
wait_condition
.
inc
;
SET
DEBUG_SYNC
=
"now SIGNAL go2"
;
let
$wait_condition
=
select
count
(
*
)
=
2
from
information_schema
.
processlist
where
state
like
"%debug%"
;
source
include
/
wait_condition
.
inc
;
SET
DEBUG_SYNC
=
"now SIGNAL go3"
;
let
$wait_condition
=
select
count
(
*
)
=
1
from
information_schema
.
processlist
where
state
like
"%debug%"
;
source
include
/
wait_condition
.
inc
;
--
echo
**
--
echo
**
Finally
signal
the
DELETE
statement
on
THD1
one
last
time
.
...
...
@@ -208,6 +217,8 @@ SET DEBUG_SYNC="now SIGNAL go3";
--
echo
**
invalidations
and
a
broadcast
signal
will
be
sent
to
the
thread
--
echo
**
group
holding
result
set
writers
.
SET
DEBUG_SYNC
=
"now SIGNAL go1_2"
;
let
$wait_condition
=
select
count
(
*
)
=
0
from
information_schema
.
processlist
where
state
like
"%debug%"
;
source
include
/
wait_condition
.
inc
;
--
echo
**
--
echo
*************************************************************************
...
...
This diff is collapsed.
Click to expand it.
mysql-test/suite/rpl/t/rpl_dump_request_retry_warning.test
View file @
3c58cdd9
...
...
@@ -43,6 +43,12 @@ START SLAVE;
SET
DEBUG_SYNC
=
'now WAIT_FOR parked'
;
SET
@@
GLOBAL
.
debug_dbug
=
@
saved_dbug
;
SET
DEBUG_SYNC
=
'now SIGNAL continue'
;
# Ensure the last DEBUG_SYNC signal was received by the target thread before
# reset; otherwise, the reset can drop the last signal before it gets
# acknowledged
let
$wait_condition
=
select
count
(
*
)
=
0
from
information_schema
.
processlist
where
state
like
"%debug%"
;
source
include
/
wait_condition
.
inc
;
SET
DEBUG_SYNC
=
'RESET'
;
--
source
include
/
wait_for_slave_io_to_start
.
inc
...
...
This diff is collapsed.
Click to expand it.
storage/innobase/trx/trx0undo.cc
View file @
3c58cdd9
/*****************************************************************************
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2014, 202
1
, MariaDB Corporation.
Copyright (c) 2014, 202
2
, 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 the Free Software
...
...
@@ -638,6 +638,7 @@ trx_undo_header_create(
mach_write_to_2
(
log_hdr
+
TRX_UNDO_NEEDS_PURGE
,
1
);
mach_write_to_8
(
log_hdr
+
TRX_UNDO_TRX_ID
,
trx_id
);
memset
(
log_hdr
+
TRX_UNDO_TRX_NO
,
0
,
8
);
mach_write_to_2
(
log_hdr
+
TRX_UNDO_LOG_START
,
new_free
);
mach_write_to_1
(
log_hdr
+
TRX_UNDO_XID_EXISTS
,
FALSE
);
...
...
@@ -1121,12 +1122,19 @@ trx_undo_mem_create_at_db_start(trx_rseg_t *rseg, ulint id, uint32_t page_no,
sql_print_error
(
"InnoDB: unsupported undo header state %u"
,
state
);
goto
corrupted
;
case
TRX_UNDO_CACHED
:
if
(
UNIV_UNLIKELY
(
type
!=
0
))
{
/* This undo page was not updated by MariaDB
10.3 or later. The TRX_UNDO_TRX_NO field may
contain garbage. */
break
;
}
goto
read_trx_no
;
case
TRX_UNDO_TO_PURGE
:
if
(
UNIV_UNLIKELY
(
type
==
1
))
{
goto
corrupted_type
;
}
/* fall through */
case
TRX_UNDO_CACHED
:
read_trx_no:
trx_id_t
id
=
mach_read_from_8
(
TRX_UNDO_TRX_NO
+
undo_header
);
if
(
id
>>
48
)
{
sql_print_error
(
"InnoDB: corrupted TRX_NO %llx"
,
id
);
...
...
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