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
42d3a7b6
Commit
42d3a7b6
authored
Jun 14, 2022
by
Marko Mäkelä
Browse files
Options
Browse Files
Download
Plain Diff
Merge 10.6 into 10.7
parents
ddf511c4
6c82ab4f
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
4 additions
and
135 deletions
+4
-135
mysql-test/suite/innodb_fts/r/sync_block.result
mysql-test/suite/innodb_fts/r/sync_block.result
+0
-54
mysql-test/suite/innodb_fts/t/sync_block.test
mysql-test/suite/innodb_fts/t/sync_block.test
+0
-78
storage/innobase/include/mtr0mtr.h
storage/innobase/include/mtr0mtr.h
+1
-1
storage/innobase/include/mtr0mtr.inl
storage/innobase/include/mtr0mtr.inl
+1
-1
storage/innobase/trx/trx0purge.cc
storage/innobase/trx/trx0purge.cc
+2
-1
No files found.
mysql-test/suite/innodb_fts/r/sync_block.result
deleted
100644 → 0
View file @
ddf511c4
SET @old_log_output = @@global.log_output;
SET @old_slow_query_log = @@global.slow_query_log;
SET @old_general_log = @@global.general_log;
SET @old_long_query_time = @@global.long_query_time;
SET @old_debug = @@global.debug_dbug;
SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 1;
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 1;
connect con1,localhost,root,,;
connect con2,localhost,root,,;
connection default;
# Case 1: Sync blocks DML(insert) on the same table.
CREATE TABLE t1 (
FTS_DOC_ID BIGINT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
FULLTEXT(title)
) ENGINE = InnoDB;
connection con1;
SET GLOBAL debug_dbug='+d,fts_instrument_sync_debug,fts_instrument_sync_sleep';
SET DEBUG_SYNC= 'fts_sync_begin SIGNAL begin WAIT_FOR continue';
INSERT INTO t1(title) VALUES('mysql database');
connection con2;
SET DEBUG_SYNC= 'now WAIT_FOR begin';
SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database');
connection default;
SET DEBUG_SYNC= 'now SIGNAL continue';
connection con1;
/* connection con1 */ INSERT INTO t1(title) VALUES('mysql database');
connection con2;
/* conneciton con2 */ SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database');
FTS_DOC_ID title
1 mysql database
connection default;
# make con1 & con2 show up in mysql.slow_log
SELECT SLEEP(2);
SLEEP(2)
0
# slow log results should only contain INSERT INTO t1.
SELECT sql_text FROM mysql.slow_log WHERE query_time >= '00:00:02';
sql_text
INSERT INTO t1(title) VALUES('mysql database')
SELECT * FROM t1 WHERE MATCH(title) AGAINST('mysql database')
SET GLOBAL debug_dbug = @old_debug;
TRUNCATE TABLE mysql.slow_log;
DROP TABLE t1;
SET DEBUG_SYNC=RESET;
disconnect con1;
disconnect con2;
# Restore slow log settings.
SET GLOBAL log_output = @old_log_output;
SET GLOBAL general_log = @old_general_log;
SET GLOBAL slow_query_log = @old_slow_query_log;
SET GLOBAL long_query_time = @old_long_query_time;
mysql-test/suite/innodb_fts/t/sync_block.test
deleted
100644 → 0
View file @
ddf511c4
#
# BUG#22516559 MYSQL INSTANCE STALLS WHEN SYNCING FTS INDEX
#
--
source
include
/
have_innodb
.
inc
--
source
include
/
have_debug
.
inc
--
source
include
/
have_debug_sync
.
inc
--
source
include
/
have_log_bin
.
inc
--
source
include
/
count_sessions
.
inc
SET
@
old_log_output
=
@@
global
.
log_output
;
SET
@
old_slow_query_log
=
@@
global
.
slow_query_log
;
SET
@
old_general_log
=
@@
global
.
general_log
;
SET
@
old_long_query_time
=
@@
global
.
long_query_time
;
SET
@
old_debug
=
@@
global
.
debug_dbug
;
SET
GLOBAL
log_output
=
'TABLE'
;
SET
GLOBAL
general_log
=
1
;
SET
GLOBAL
slow_query_log
=
1
;
SET
GLOBAL
long_query_time
=
1
;
connect
(
con1
,
localhost
,
root
,,);
connect
(
con2
,
localhost
,
root
,,);
connection
default
;
--
echo
# Case 1: Sync blocks DML(insert) on the same table.
CREATE
TABLE
t1
(
FTS_DOC_ID
BIGINT
UNSIGNED
AUTO_INCREMENT
NOT
NULL
PRIMARY
KEY
,
title
VARCHAR
(
200
),
FULLTEXT
(
title
)
)
ENGINE
=
InnoDB
;
connection
con1
;
SET
GLOBAL
debug_dbug
=
'+d,fts_instrument_sync_debug,fts_instrument_sync_sleep'
;
SET
DEBUG_SYNC
=
'fts_sync_begin SIGNAL begin WAIT_FOR continue'
;
send
INSERT
INTO
t1
(
title
)
VALUES
(
'mysql database'
);
connection
con2
;
SET
DEBUG_SYNC
=
'now WAIT_FOR begin'
;
send
SELECT
*
FROM
t1
WHERE
MATCH
(
title
)
AGAINST
(
'mysql database'
);
connection
default
;
SET
DEBUG_SYNC
=
'now SIGNAL continue'
;
connection
con1
;
--
echo
/* connection con1 */
INSERT
INTO
t1
(
title
)
VALUES
(
'mysql database'
);
--
reap
connection
con2
;
--
echo
/* conneciton con2 */
SELECT
*
FROM
t1
WHERE
MATCH
(
title
)
AGAINST
(
'mysql database'
);
--
reap
connection
default
;
--
echo
# make con1 & con2 show up in mysql.slow_log
SELECT
SLEEP
(
2
);
--
echo
# slow log results should only contain INSERT INTO t1.
SELECT
sql_text
FROM
mysql
.
slow_log
WHERE
query_time
>=
'00:00:02'
;
SET
GLOBAL
debug_dbug
=
@
old_debug
;
TRUNCATE
TABLE
mysql
.
slow_log
;
DROP
TABLE
t1
;
SET
DEBUG_SYNC
=
RESET
;
disconnect
con1
;
disconnect
con2
;
--
source
include
/
wait_until_count_sessions
.
inc
--
echo
# Restore slow log settings.
SET
GLOBAL
log_output
=
@
old_log_output
;
SET
GLOBAL
general_log
=
@
old_general_log
;
SET
GLOBAL
slow_query_log
=
@
old_slow_query_log
;
SET
GLOBAL
long_query_time
=
@
old_long_query_time
;
storage/innobase/include/mtr0mtr.h
View file @
42d3a7b6
...
...
@@ -290,9 +290,9 @@ struct mtr_t {
@param[in] type object type: MTR_MEMO_PAGE_X_FIX, ... */
void
release_page
(
const
void
*
ptr
,
mtr_memo_type_t
type
);
private:
/** Note that the mini-transaction will modify data. */
void
flag_modified
()
{
m_modifications
=
true
;
}
private:
/** Mark the given latched page as modified.
@param block page that will be modified */
void
modify
(
const
buf_block_t
&
block
);
...
...
storage/innobase/include/mtr0mtr.inl
View file @
42d3a7b6
...
...
@@ -46,7 +46,7 @@ mtr_t::memo_push(void* object, mtr_memo_type_t type)
ut_ad(object != NULL);
ut_ad(type >= MTR_MEMO_PAGE_S_FIX);
ut_ad(type <= MTR_MEMO_SPACE_S_LOCK);
ut_ad(ut_is_2pow(type));
ut_ad(
type == MTR_MEMO_PAGE_X_MODIFY ||
ut_is_2pow(type));
/* If this mtr has x-fixed a clean page then we set
the made_dirty flag. This tells us if we need to
...
...
storage/innobase/trx/trx0purge.cc
View file @
42d3a7b6
...
...
@@ -402,8 +402,9 @@ static dberr_t trx_purge_free_segment(trx_rseg_t *rseg, fil_addr_t hdr_addr)
block
->
fix
();
mtr
.
commit
();
mtr
.
start
();
mtr
.
flag_modified
();
mtr
.
memo_push
(
rseg_hdr
,
MTR_MEMO_PAGE_X_FIX
);
mtr
.
memo_push
(
block
,
MTR_MEMO_PAGE_X_
FIX
);
mtr
.
memo_push
(
block
,
MTR_MEMO_PAGE_X_
MODIFY
);
rseg
->
latch
.
wr_lock
(
SRW_LOCK_CALL
);
rseg_hdr
->
page
.
lock
.
x_lock
();
block
->
page
.
lock
.
x_lock
();
...
...
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