SET global TOKUDB_CHECKPOINT_LOCK=ON will not stop the tokudb data file change

Bug #1618315 reported by dennis on 2016-08-30
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Percona Server moved to https://jira.percona.com/projects/PS
Invalid
Undecided
Unassigned

Bug Description

OS: centos6.5
DB: percona 5.6.24

How to reproduce the bug:

Open a new shell "shell1" , and use sysbench to do the modification on the tokudb table, this sysbench
will running through the whole test:

sysbench --mysql-host=127.0.0.1 --mysql-port=3314 --mysql-user=test --mysql-password=test \
--mysql-db=test1 --oltp-tables-count=1 --oltp-table-size=6000000 \
--mysql-table-engine=tokudb --test=tests/db/oltp.lua prepare

open a new shell "shell2" , to check the data file and log file modification of tokudb table in the disk:

cd $datadir
[root@mysql1 data3314]# ls -lh | grep test1
drwx------. 2 mysql mysql 4.0K Aug 30 04:05 test1
rw-rw---. 1 mysql mysql 9.0M Aug 30 04:07 _test1_sbtest1_key_k_1_8c02_1_1c_B_1.tokudb
rw-rw---. 1 mysql mysql 85M Aug 30 04:07 _test1_sbtest1_main_8c02_1_1c_B_0.tokudb
rw-rw---. 1 mysql mysql 64K Aug 30 04:07 test1_sbtest1_status_8bf7_1_1c.tokudb

we can see the log file and data file is changing.

Then open a new shell "shell3" login to the mariadb and acquire the checkpoint lock:

root@localhost:mysql3314.sock 04:07:33 [(none)]>SET TOKUDB_CHECKPOINT_LOCK=ON;
Query OK, 0 rows affected (0.32 sec)
root@localhost:mysql3314.sock 04:07:36 [(none)]>SET global TOKUDB_CHECKPOINT_LOCK=ON;
Query OK, 0 rows affected (0.04 sec)

And during the test, this connection will not quit or broken.

Back to the shell2, we still can see the data file changing!

It seams that, the "TOKUDB_CHECKPOINT_LOCK=ON" fail to stop the data file modification on tokudb.

dennis (gao1738) on 2016-08-30
description: updated
tags: added: tokudb
George Ormond Lorch III (gl-az) wrote :

TokuDB checkpoint lock does not stop data files from changing, it only prevents the checkpoint from occurring. When a dirty node is evicted from memory due to cache pressure, it gets written to disk, The block file map header does not get updated on disk as it does during a checkpoint.

There is one condition where a block file header will get updated even with the checkpointer disabled and that is when an index/dictionary file is closed and evicted from the cache table. This will be addressed in coming versions of Percona Server when the LOCK CHECKPOINT FOR BACKUP is introduced and tokudb_checkpoint_lock removed.

Changed in percona-server:
status: New → Invalid

Percona now uses JIRA for bug reports so this bug report is migrated to: https://jira.percona.com/browse/PS-3541

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers