diff options
-rw-r--r-- | src/third_party/wiredtiger/import.data | 2 | ||||
-rw-r--r-- | src/third_party/wiredtiger/test/format/bulk.c | 36 |
2 files changed, 23 insertions, 15 deletions
diff --git a/src/third_party/wiredtiger/import.data b/src/third_party/wiredtiger/import.data index 77b5124d330..001d6130100 100644 --- a/src/third_party/wiredtiger/import.data +++ b/src/third_party/wiredtiger/import.data @@ -2,5 +2,5 @@ "vendor": "wiredtiger", "github": "wiredtiger/wiredtiger.git", "branch": "mongodb-6.2", - "commit": "2cb2316c04ed3eb46a983338c3db2dc690e26f32" + "commit": "9a35c70af8a4e8c67b850d7982a77d5260fb5f08" } diff --git a/src/third_party/wiredtiger/test/format/bulk.c b/src/third_party/wiredtiger/test/format/bulk.c index 5969324a8de..a88d3b3a9c4 100644 --- a/src/third_party/wiredtiger/test/format/bulk.c +++ b/src/third_party/wiredtiger/test/format/bulk.c @@ -86,7 +86,7 @@ table_load(TABLE *base, TABLE *table) uint32_t committed_keyno, keyno, rows_current, v; uint8_t bitv; char config[100], track_buf[128]; - bool is_bulk; + bool is_bulk, report_progress; conn = g.wts_conn; @@ -123,7 +123,7 @@ table_load(TABLE *base, TABLE *table) if (base == NULL) val_gen(table, NULL, &value, &bitv, keyno); else { - testutil_assert(read_op(base_cursor, NEXT, NULL) == 0); + testutil_check(read_op(base_cursor, NEXT, NULL)); testutil_check(base_cursor->get_value(base_cursor, &value)); val_to_flcs(table, &value, &bitv); } @@ -161,8 +161,12 @@ table_load(TABLE *base, TABLE *table) * row counter and continue. */ if ((ret = cursor->insert(cursor)) != 0) { - testutil_assertfmt( - ret == WT_CACHE_FULL || ret == WT_ROLLBACK, "WT_CURSOR.insert failed: %d", ret); + /* + * We cannot fail when loading mirrored table. Otherwise, we will encounter data + * mismatch in the future. + */ + testutil_assertfmt(base == NULL && (ret == WT_CACHE_FULL || ret == WT_ROLLBACK), + "WT_CURSOR.insert failed: %d", ret); if (g.transaction_timestamps_config) { bulk_rollback_transaction(session); @@ -187,19 +191,23 @@ table_load(TABLE *base, TABLE *table) } /* - * When first starting up, restart the enclosing transaction every 10 operations so we never - * end up with an empty object. After 5K records, restart the transaction every 5K records - * so we don't overflow the cache. + * When first starting up, report the progress for every 10 keys in the first 5K keys. After + * 5K records, report every 5K keys. */ - if ((keyno < 5000 && keyno % 10 == 0) || keyno % 5000 == 0) { - /* Report on progress. */ + report_progress = (keyno < 5000 && keyno % 10 == 0) || keyno % 5000 == 0; + /* Report on progress. */ + if (report_progress) track(track_buf, keyno); - if (g.transaction_timestamps_config) { - bulk_commit_transaction(session); - committed_keyno = keyno; - bulk_begin_transaction(session); - } + /* + * If we are loading a mirrored table, commit after each operation to ensure that we are not + * generating excessive cache pressure and we can successfully load the same content as the + * base table. Otherwise, commit if we report progress. + */ + if (g.transaction_timestamps_config && (report_progress || base != NULL)) { + bulk_commit_transaction(session); + committed_keyno = keyno; + bulk_begin_transaction(session); } } |