mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 11:57:38 +02:00
commit 394d0712d3d46a87a8063e14e998e9c22336e3a6
Author: Anca Agape <anca@fb.com>
Date: Thu Jul 27 15:43:07 2017 -0700
Fix rpl.rpl_4threads_deadlock test broken by D5005670
Summary:
In D5005670 in fill_fields_processlist() function we introduced a point
where we were trying to take the LOCK_thd_data before the
synchronization point used by test
processlist_after_LOCK_thd_count_before_LOCK_thd_data. This was
happening in get_attached_srv_session() function called. Replaced this
with get_attached_srv_session_safe() and moved it after lock is aquired.
Reviewed By: tianx
Differential Revision: D5505992
fbshipit-source-id: bc53924
155 lines
4.1 KiB
Text
155 lines
4.1 KiB
Text
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1 (
|
|
id INT,
|
|
val1 INT,
|
|
val2 INT,
|
|
PRIMARY KEY (id)
|
|
) ENGINE=rocksdb;
|
|
INSERT INTO t1 VALUES(1,1,1),(2,1,2);
|
|
SELECT * FROM t1;
|
|
id val1 val2
|
|
1 1 1
|
|
2 1 2
|
|
UPDATE t1 SET val1=2 WHERE id=2;
|
|
SELECT * FROM t1;
|
|
id val1 val2
|
|
1 1 1
|
|
2 2 2
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
|
Type Name Status
|
|
SNAPSHOTS rocksdb
|
|
============================================================
|
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
============================================================
|
|
---------
|
|
SNAPSHOTS
|
|
---------
|
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
|
-----------------------------------------
|
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
=========================================
|
|
|
|
SET AUTOCOMMIT=0;
|
|
START TRANSACTION;
|
|
INSERT INTO t1 VALUES(20,1,1),(30,30,30);
|
|
SELECT * FROM t1;
|
|
id val1 val2
|
|
1 1 1
|
|
2 2 2
|
|
20 1 1
|
|
30 30 30
|
|
UPDATE t1 SET val1=20, val2=20 WHERE id=20;
|
|
SELECT * FROM t1;
|
|
id val1 val2
|
|
1 1 1
|
|
2 2 2
|
|
20 20 20
|
|
30 30 30
|
|
DELETE FROM t1 WHERE id=30;
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
|
Type Name Status
|
|
SNAPSHOTS rocksdb
|
|
============================================================
|
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
============================================================
|
|
---------
|
|
SNAPSHOTS
|
|
---------
|
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
|
---SNAPSHOT, ACTIVE NUM sec
|
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
|
lock count 8, write count 4
|
|
insert count 2, update count 1, delete count 1
|
|
-----------------------------------------
|
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
=========================================
|
|
|
|
ROLLBACK;
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
|
Type Name Status
|
|
SNAPSHOTS rocksdb
|
|
============================================================
|
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
============================================================
|
|
---------
|
|
SNAPSHOTS
|
|
---------
|
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
|
-----------------------------------------
|
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
=========================================
|
|
|
|
START TRANSACTION;
|
|
INSERT INTO t1 VALUES(40,40,40);
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
|
Type Name Status
|
|
SNAPSHOTS rocksdb
|
|
============================================================
|
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
============================================================
|
|
---------
|
|
SNAPSHOTS
|
|
---------
|
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
|
---SNAPSHOT, ACTIVE NUM sec
|
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
|
lock count 2, write count 1
|
|
insert count 1, update count 0, delete count 0
|
|
-----------------------------------------
|
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
=========================================
|
|
|
|
COMMIT;
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
|
Type Name Status
|
|
SNAPSHOTS rocksdb
|
|
============================================================
|
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
============================================================
|
|
---------
|
|
SNAPSHOTS
|
|
---------
|
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
|
-----------------------------------------
|
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
=========================================
|
|
|
|
SET AUTOCOMMIT=1;
|
|
DROP TABLE t1;
|
|
DROP TABLE IF EXISTS t2;
|
|
CREATE TABLE t2 (
|
|
id1 INT,
|
|
id2 INT,
|
|
value INT,
|
|
PRIMARY KEY (id1),
|
|
KEY (id2)
|
|
) ENGINE=rocksdb;
|
|
SET AUTOCOMMIT=0;
|
|
START TRANSACTION;
|
|
INSERT INTO t2 VALUES(1,2,0),(10,20,30);
|
|
UPDATE t2 SET value=3 WHERE id2=2;
|
|
DELETE FROM t2 WHERE id1=10;
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS;
|
|
Type Name Status
|
|
SNAPSHOTS rocksdb
|
|
============================================================
|
|
TIMESTAMP ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
============================================================
|
|
---------
|
|
SNAPSHOTS
|
|
---------
|
|
LIST OF SNAPSHOTS FOR EACH SESSION:
|
|
---SNAPSHOT, ACTIVE NUM sec
|
|
MySQL thread id TID, OS thread handle PTR, query id QID localhost root ACTION
|
|
SHOW ENGINE rocksdb TRANSACTION STATUS
|
|
lock count 9, write count 7
|
|
insert count 2, update count 1, delete count 1
|
|
-----------------------------------------
|
|
END OF ROCKSDB TRANSACTION MONITOR OUTPUT
|
|
=========================================
|
|
|
|
ROLLBACK;
|
|
SET AUTOCOMMIT=1;
|
|
DROP TABLE t2;
|