[MDEV-25003] mtflush_service_io - workitem status is always SUCCESS even if pool flush fails Created: 2021-02-26  Updated: 2021-10-25  Resolved: 2021-04-26

Status: Closed
Project: MariaDB Server
Component/s: Storage Engine - InnoDB
Affects Version/s: 10.2
Fix Version/s: N/A

Type: Bug Priority: Minor
Reporter: Yury Chaikou Assignee: Marko Mäkelä
Resolution: Won't Fix Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-13444 assertion mtflush_io != NULL on exit ... Closed
relates to MDEV-13690 Remove unnecessary innodb_use_mtflush... Closed
relates to MDEV-23855 InnoDB log checkpointing causes regre... Closed

 Description   

/storage/innobase/buf/buf0mtflu.cc - mtflush_service_io() function
workitem status is always SUCCESS even if pool flush fails, probably “else” is missing

	case MT_WRK_WRITE:
		ut_a(work_item->wi_status == WRK_ITEM_SET);
		work_item->wi_status = WRK_ITEM_START;
		/* Process work item */
		if (0 == (n_flushed = buf_mtflu_flush_pool_instance(work_item))) {
			work_item->wi_status = WRK_ITEM_FAILED;  <--------
		}
		work_item->wi_status = WRK_ITEM_SUCCESS;     <--------
		ib_wqueue_add(mtflush_io->wr_cq, work_item, work_item->rheap);
		break;



 Comments   
Comment by Marko Mäkelä [ 2021-04-26 ]

The innodb_use_mtflush interface was something that had been copied from Percona XtraDB server. MySQL 5.7 introduced a different implementation of multi-threaded page cleaner that should not have this problem. The XtraDB mechanism was removed from MariaDB Server 10.3 as part of MDEV-13690.

In MDEV-23855, we switched MariaDB Server 10.5.7 back to single-threaded flushing, using asynchronous I/O also for the doublewrite buffer.

Generated at Thu Feb 08 09:34:22 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.