diff options
Diffstat (limited to 'storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc')
-rw-r--r-- | storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc b/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc index 696aa77fe9c..d4c8c85cfba 100644 --- a/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc +++ b/storage/tokudb/ft-index/ft/tests/cachetable-flush-during-cleaner.cc @@ -50,6 +50,7 @@ UNIVERSITY PATENT NOTICE: PATENT MARKING NOTICE: This software is covered by US Patent No. 8,185,551. + This software is covered by US Patent No. 8,489,638. PATENT RIGHTS GRANT: @@ -91,6 +92,8 @@ PATENT RIGHTS GRANT: CACHEFILE f1; +bool should_close; + static int cleaner_callback( void* UU(ftnode_pv), @@ -99,13 +102,18 @@ cleaner_callback( void* UU(extraargs) ) { - int r = toku_test_cachetable_unpin(f1,blocknum, fullhash,CACHETABLE_CLEAN,make_pair_attr(8)); + should_close = true; + sleep(2); + PAIR_ATTR attr = make_pair_attr(8); + attr.cache_pressure_size = 8; + int r = toku_test_cachetable_unpin(f1, blocknum, fullhash, CACHETABLE_CLEAN, attr); assert(r==0); return 0; } static void cachetable_test (void) { + should_close = false; const int test_limit = 400; int r; CACHETABLE ct; @@ -117,20 +125,22 @@ cachetable_test (void) { r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); void* v1; - //void* v2; long s1; - //long s2; - for (int j = 0; j < 50000; j++) { - for (int i = 0; i < 10; i++) { - CACHETABLE_WRITE_CALLBACK wc = def_write_callback(NULL); - wc.cleaner_callback = cleaner_callback; - r = toku_cachetable_get_and_pin(f1, make_blocknum(i), i, &v1, &s1, wc, def_fetch, def_pf_req_callback, def_pf_callback, true, NULL); - r = toku_test_cachetable_unpin(f1, make_blocknum(i), i, CACHETABLE_DIRTY, make_pair_attr(8)); - } - toku_cachefile_flush(f1); + for (int i = 0; i < 10; i++) { + CACHETABLE_WRITE_CALLBACK wc = def_write_callback(NULL); + wc.cleaner_callback = cleaner_callback; + r = toku_cachetable_get_and_pin(f1, make_blocknum(i), i, &v1, &s1, wc, def_fetch, def_pf_req_callback, def_pf_callback, true, NULL); + PAIR_ATTR attr = make_pair_attr(8); + attr.cache_pressure_size = 8; + r = toku_test_cachetable_unpin(f1, make_blocknum(i), i, CACHETABLE_DIRTY, attr); + } + while (!should_close) { + usleep(1024); } - toku_cachetable_verify(ct); toku_cachefile_close(&f1, false, ZERO_LSN); + + + toku_cachetable_verify(ct); toku_cachetable_close(&ct); |