[Commits] 2922a9c: MDEV-9148: Assertion `thd->stmt_arena != thd->progress.arena' failed in thd_progress_init

Jan Lindström jan.lindstrom at mariadb.com
Thu Dec 10 16:42:58 EET 2015


revision-id: 2922a9c47f487a000b97690111444a989e2d45ef (mariadb-10.0.22-37-g2922a9c)
parent(s): d289ba808d064446cfd1c29afde8a259ca847e8a
committer: Jan Lindström
timestamp: 2015-12-10 16:41:46 +0200
message:

MDEV-9148: Assertion `thd->stmt_arena != thd->progress.arena' failed in thd_progress_init

Called thd_progress_init() from several threads used for FT-index
creation. For FT-indexes, need better way to report progress,
remove current one for them.

---
 storage/innobase/row/row0merge.cc | 16 ++++++++++++----
 storage/xtradb/row/row0merge.cc   | 16 ++++++++++++----
 2 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/storage/innobase/row/row0merge.cc b/storage/innobase/row/row0merge.cc
index 75aa423..20dbcff 100644
--- a/storage/innobase/row/row0merge.cc
+++ b/storage/innobase/row/row0merge.cc
@@ -2328,7 +2328,10 @@ row_merge_sort(
 	of file marker).  Thus, it must be at least one block. */
 	ut_ad(file->offset > 0);
 
-	thd_progress_init(trx->mysql_thd, num_runs);
+	/* Progress report only for "normal" indexes. */
+	if (!(dup->index->type & DICT_FTS)) {
+		thd_progress_init(trx->mysql_thd, num_runs);
+	}
 
 	/* Merge the runs until we have one big run */
 	do {
@@ -2338,8 +2341,11 @@ row_merge_sort(
 				  &num_runs, run_offset);
 
 		/* Report progress of merge sort to MySQL for
-		show processlist progress field */
-		thd_progress_report(trx->mysql_thd, cur_run, num_runs);
+		show processlist progress field only for
+		"normal" indexes. */
+		if (!(dup->index->type & DICT_FTS)) {
+			thd_progress_report(trx->mysql_thd, cur_run, num_runs);
+		}
 
 		if (error != DB_SUCCESS) {
 			break;
@@ -2350,7 +2356,9 @@ row_merge_sort(
 
 	mem_free(run_offset);
 
-	thd_progress_end(trx->mysql_thd);
+	if (!(dup->index->type & DICT_FTS)) {
+		thd_progress_end(trx->mysql_thd);
+	}
 
 	DBUG_RETURN(error);
 }
diff --git a/storage/xtradb/row/row0merge.cc b/storage/xtradb/row/row0merge.cc
index 3447d15..d9790f5 100644
--- a/storage/xtradb/row/row0merge.cc
+++ b/storage/xtradb/row/row0merge.cc
@@ -2336,7 +2336,10 @@ row_merge_sort(
 	of file marker).  Thus, it must be at least one block. */
 	ut_ad(file->offset > 0);
 
-	thd_progress_init(trx->mysql_thd, num_runs);
+	/* Progress report only for "normal" indexes. */
+	if (!(dup->index->type & DICT_FTS)) {
+		thd_progress_init(trx->mysql_thd, num_runs);
+	}
 
 	/* Merge the runs until we have one big run */
 	do {
@@ -2346,8 +2349,11 @@ row_merge_sort(
 				  &num_runs, run_offset);
 
 		/* Report progress of merge sort to MySQL for
-		show processlist progress field */
-		thd_progress_report(trx->mysql_thd, cur_run, num_runs);
+		show processlist progress field only for
+		"normal" indexes. */
+		if (!(dup->index->type & DICT_FTS)) {
+			thd_progress_report(trx->mysql_thd, cur_run, num_runs);
+		}
 
 		if (error != DB_SUCCESS) {
 			break;
@@ -2358,7 +2364,9 @@ row_merge_sort(
 
 	mem_free(run_offset);
 
-	thd_progress_end(trx->mysql_thd);
+	if (!(dup->index->type & DICT_FTS)) {
+		thd_progress_end(trx->mysql_thd);
+	}
 
 	DBUG_RETURN(error);
 }


More information about the commits mailing list