diff options
Diffstat (limited to 'storage/tokudb/ft-index/ft/tests/test-dirty-flushes-on-cleaner.cc')
-rw-r--r-- | storage/tokudb/ft-index/ft/tests/test-dirty-flushes-on-cleaner.cc | 90 |
1 files changed, 47 insertions, 43 deletions
diff --git a/storage/tokudb/ft-index/ft/tests/test-dirty-flushes-on-cleaner.cc b/storage/tokudb/ft-index/ft/tests/test-dirty-flushes-on-cleaner.cc index b62b9e063a1..39b835e278f 100644 --- a/storage/tokudb/ft-index/ft/tests/test-dirty-flushes-on-cleaner.cc +++ b/storage/tokudb/ft-index/ft/tests/test-dirty-flushes-on-cleaner.cc @@ -103,7 +103,7 @@ static DB * const null_db = 0; enum { NODESIZE = 1024, KSIZE=NODESIZE-100, TOKU_PSIZE=20 }; CACHETABLE ct; -FT_HANDLE brt; +FT_HANDLE ft; const char *fname = TOKU_TEST_FILENAME; static int update_func( @@ -134,11 +134,11 @@ doit (void) { toku_cachetable_create(&ct, 500*1024*1024, ZERO_LSN, NULL_LOGGER); unlink(fname); - r = toku_open_ft_handle(fname, 1, &brt, NODESIZE, NODESIZE/2, TOKU_DEFAULT_COMPRESSION_METHOD, ct, null_txn, toku_builtin_compare_fun); + r = toku_open_ft_handle(fname, 1, &ft, NODESIZE, NODESIZE/2, TOKU_DEFAULT_COMPRESSION_METHOD, ct, null_txn, toku_builtin_compare_fun); assert(r==0); - brt->ft->update_fun = update_func; - brt->ft->update_fun = update_func; + ft->ft->update_fun = update_func; + ft->ft->update_fun = update_func; toku_testsetup_initialize(); // must precede any other toku_testsetup calls @@ -146,16 +146,16 @@ doit (void) { pivots[0] = toku_strdup("kkkkk"); int pivot_len = 6; - r = toku_testsetup_leaf(brt, &node_leaf, 2, pivots, &pivot_len); + r = toku_testsetup_leaf(ft, &node_leaf, 2, pivots, &pivot_len); assert(r==0); - r = toku_testsetup_nonleaf(brt, 1, &node_internal, 1, &node_leaf, 0, 0); + r = toku_testsetup_nonleaf(ft, 1, &node_internal, 1, &node_leaf, 0, 0); assert(r==0); - r = toku_testsetup_nonleaf(brt, 2, &node_root, 1, &node_internal, 0, 0); + r = toku_testsetup_nonleaf(ft, 2, &node_root, 1, &node_internal, 0, 0); assert(r==0); - r = toku_testsetup_root(brt, node_root); + r = toku_testsetup_root(ft, node_root); assert(r==0); // @@ -165,7 +165,7 @@ doit (void) { // now we insert a row into each leaf node r = toku_testsetup_insert_to_leaf ( - brt, + ft, node_leaf, "a", // key 2, // keylen @@ -174,7 +174,7 @@ doit (void) { ); assert(r==0); r = toku_testsetup_insert_to_leaf ( - brt, + ft, node_leaf, "z", // key 2, // keylen @@ -187,7 +187,7 @@ doit (void) { // now we insert filler data so that the rebalance // keeps it at two nodes r = toku_testsetup_insert_to_leaf ( - brt, + ft, node_leaf, "b", // key 2, // keylen @@ -196,7 +196,7 @@ doit (void) { ); assert(r==0); r = toku_testsetup_insert_to_leaf ( - brt, + ft, node_leaf, "y", // key 2, // keylen @@ -211,7 +211,7 @@ doit (void) { // for (int i = 0; i < 100000; i++) { r = toku_testsetup_insert_to_nonleaf ( - brt, + ft, node_internal, FT_DELETE_ANY, "jj", // this key does not exist, so its message application should be a no-op @@ -226,7 +226,7 @@ doit (void) { // now insert a broadcast message into the root // r = toku_testsetup_insert_to_nonleaf ( - brt, + ft, node_root, FT_UPDATE_BROADCAST_ALL, NULL, @@ -239,27 +239,28 @@ doit (void) { // now lock and release the leaf node to make sure it is what we expect it to be. FTNODE node = NULL; struct ftnode_fetch_extra bfe; - fill_bfe_for_min_read(&bfe, brt->ft); - toku_pin_ftnode_off_client_thread( - brt->ft, + fill_bfe_for_min_read(&bfe, ft->ft); + toku_pin_ftnode_with_dep_nodes( + ft->ft, node_leaf, - toku_cachetable_hash(brt->ft->cf, node_leaf), + toku_cachetable_hash(ft->ft->cf, node_leaf), &bfe, PL_WRITE_EXPENSIVE, 0, NULL, - &node + &node, + true ); assert(node->dirty); assert(node->n_children == 2); assert(BP_STATE(node,0) == PT_AVAIL); assert(BP_STATE(node,1) == PT_AVAIL); - toku_unpin_ftnode_off_client_thread(brt->ft, node); + toku_unpin_ftnode(ft->ft, node); // now do a lookup on one of the keys, this should bring a leaf node up to date DBT k; struct check_pair pair = {2, "a", 0, NULL, 0}; - r = toku_ft_lookup(brt, toku_fill_dbt(&k, "a", 2), lookup_checkf, &pair); + r = toku_ft_lookup(ft, toku_fill_dbt(&k, "a", 2), lookup_checkf, &pair); assert(r==0); // @@ -268,36 +269,38 @@ doit (void) { // node is in memory and another is // on disk // - fill_bfe_for_min_read(&bfe, brt->ft); - toku_pin_ftnode_off_client_thread( - brt->ft, + fill_bfe_for_min_read(&bfe, ft->ft); + toku_pin_ftnode_with_dep_nodes( + ft->ft, node_leaf, - toku_cachetable_hash(brt->ft->cf, node_leaf), + toku_cachetable_hash(ft->ft->cf, node_leaf), &bfe, PL_WRITE_EXPENSIVE, 0, NULL, - &node + &node, + true ); assert(node->dirty); assert(node->n_children == 2); assert(BP_STATE(node,0) == PT_AVAIL); assert(BP_STATE(node,1) == PT_AVAIL); - toku_unpin_ftnode_off_client_thread(brt->ft, node); + toku_unpin_ftnode(ft->ft, node); // // now let us induce a clean on the internal node // - fill_bfe_for_min_read(&bfe, brt->ft); - toku_pin_ftnode_off_client_thread( - brt->ft, + fill_bfe_for_min_read(&bfe, ft->ft); + toku_pin_ftnode_with_dep_nodes( + ft->ft, node_internal, - toku_cachetable_hash(brt->ft->cf, node_internal), + toku_cachetable_hash(ft->ft->cf, node_internal), &bfe, PL_WRITE_EXPENSIVE, 0, NULL, - &node + &node, + true ); assert(node->dirty); @@ -307,25 +310,26 @@ doit (void) { r = toku_ftnode_cleaner_callback( node, node_internal, - toku_cachetable_hash(brt->ft->cf, node_internal), - brt->ft + toku_cachetable_hash(ft->ft->cf, node_internal), + ft->ft ); // verify that node_internal's buffer is empty - fill_bfe_for_min_read(&bfe, brt->ft); - toku_pin_ftnode_off_client_thread( - brt->ft, + fill_bfe_for_min_read(&bfe, ft->ft); + toku_pin_ftnode_with_dep_nodes( + ft->ft, node_internal, - toku_cachetable_hash(brt->ft->cf, node_internal), + toku_cachetable_hash(ft->ft->cf, node_internal), &bfe, PL_WRITE_EXPENSIVE, 0, NULL, - &node + &node, + true ); // check that buffers are empty assert(toku_bnc_nbytesinbuf(BNC(node, 0)) == 0); - toku_unpin_ftnode_off_client_thread(brt->ft, node); + toku_unpin_ftnode(ft->ft, node); // // now run a checkpoint to get everything clean, @@ -337,14 +341,14 @@ doit (void) { // check that lookups on the two keys is still good struct check_pair pair1 = {2, "a", 0, NULL, 0}; - r = toku_ft_lookup(brt, toku_fill_dbt(&k, "a", 2), lookup_checkf, &pair1); + r = toku_ft_lookup(ft, toku_fill_dbt(&k, "a", 2), lookup_checkf, &pair1); assert(r==0); struct check_pair pair2 = {2, "z", 0, NULL, 0}; - r = toku_ft_lookup(brt, toku_fill_dbt(&k, "z", 2), lookup_checkf, &pair2); + r = toku_ft_lookup(ft, toku_fill_dbt(&k, "z", 2), lookup_checkf, &pair2); assert(r==0); - r = toku_close_ft_handle_nolsn(brt, 0); assert(r==0); + r = toku_close_ft_handle_nolsn(ft, 0); assert(r==0); toku_cachetable_close(&ct); toku_free(pivots[0]); |