mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 14:54:20 +01:00
refs #5500 close userdata and checkpoint userdata do not fail, so cachefile close and ft evict from memory do not fail
git-svn-id: file:///svn/toku/tokudb@48237 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
c9e96a8735
commit
1b8c8ac4b2
74 changed files with 85 additions and 100 deletions
|
@ -440,9 +440,7 @@ static void remove_cf_from_cachefiles_list (CACHEFILE cf) {
|
|||
ct->cf_list.write_unlock();
|
||||
}
|
||||
|
||||
// TODO: (Zardosht) review locking of this function carefully in code review
|
||||
int
|
||||
toku_cachefile_close(CACHEFILE *cfp, bool oplsn_valid, LSN oplsn) {
|
||||
void toku_cachefile_close(CACHEFILE *cfp, bool oplsn_valid, LSN oplsn) {
|
||||
CACHEFILE cf = *cfp;
|
||||
CACHETABLE ct = cf->cachetable;
|
||||
|
||||
|
@ -480,9 +478,6 @@ toku_cachefile_close(CACHEFILE *cfp, bool oplsn_valid, LSN oplsn) {
|
|||
}
|
||||
toku_free(cf->fname_in_env);
|
||||
toku_free(cf);
|
||||
|
||||
// TODO: can't fail
|
||||
return 0;
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
@ -452,8 +452,7 @@ int toku_cachefile_count_pinned (CACHEFILE, int /*printthem*/ );
|
|||
// close function does not return until all of the objects are evicted. The cachefile
|
||||
// object is freed.
|
||||
// If oplsn_valid is true then use oplsn as the LSN of the close instead of asking the logger. oplsn_valid being true is only allowed during recovery, and requires that you are removing the last reference (otherwise the lsn wouldn't make it in.)
|
||||
// Returns: 0 if success, otherwise returns an error number.
|
||||
int toku_cachefile_close (CACHEFILE*, bool oplsn_valid, LSN oplsn);
|
||||
void toku_cachefile_close (CACHEFILE*, bool oplsn_valid, LSN oplsn);
|
||||
|
||||
// Flush the cachefile.
|
||||
// Effect: Flush everything owned by the cachefile from the cachetable. All dirty
|
||||
|
|
|
@ -3201,9 +3201,8 @@ exit:
|
|||
bool needed = toku_ft_needed_unlocked(ft);
|
||||
toku_ft_release_reflock(ft);
|
||||
if (!needed) {
|
||||
//Close immediately.
|
||||
r = toku_ft_evict_from_memory(ft, false, ZERO_LSN);
|
||||
lazy_assert_zero(r);
|
||||
// close immediately.
|
||||
toku_ft_evict_from_memory(ft, false, ZERO_LSN);
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
9
ft/ft.cc
9
ft/ft.cc
|
@ -467,11 +467,9 @@ toku_ft_has_one_reference_unlocked(FT ft) {
|
|||
|
||||
// evict a ft from memory by closing its cachefile. any future work
|
||||
// will have to read in the ft in a new cachefile and new FT object.
|
||||
int toku_ft_evict_from_memory(FT ft, bool oplsn_valid, LSN oplsn) {
|
||||
int r = 0;
|
||||
void toku_ft_evict_from_memory(FT ft, bool oplsn_valid, LSN oplsn) {
|
||||
assert(ft->cf);
|
||||
r = toku_cachefile_close(&ft->cf, oplsn_valid, oplsn);
|
||||
return r;
|
||||
toku_cachefile_close(&ft->cf, oplsn_valid, oplsn);
|
||||
}
|
||||
|
||||
// Verifies there exists exactly one ft handle and returns it.
|
||||
|
@ -876,8 +874,7 @@ toku_ft_remove_reference(FT ft, bool oplsn_valid, LSN oplsn, remove_ft_ref_callb
|
|||
}
|
||||
if (!needed) {
|
||||
// close header
|
||||
int r = toku_ft_evict_from_memory(ft, oplsn_valid, oplsn);
|
||||
assert_zero(r);
|
||||
toku_ft_evict_from_memory(ft, oplsn_valid, oplsn);
|
||||
}
|
||||
|
||||
toku_ft_open_close_unlock();
|
||||
|
|
2
ft/ft.h
2
ft/ft.h
|
@ -39,7 +39,7 @@ bool toku_ft_has_one_reference_unlocked(FT ft);
|
|||
|
||||
// evict a ft from memory by closing its cachefile. any future work
|
||||
// will have to read in the ft in a new cachefile and new FT object.
|
||||
int toku_ft_evict_from_memory(FT ft, bool oplsn_valid, LSN oplsn) __attribute__ ((warn_unused_result));
|
||||
void toku_ft_evict_from_memory(FT ft, bool oplsn_valid, LSN oplsn);
|
||||
|
||||
FT_HANDLE toku_ft_get_only_existing_ft_handle(FT h);
|
||||
|
||||
|
|
|
@ -88,7 +88,7 @@ run_test (void) {
|
|||
);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ cachetable_test (void) {
|
|||
assert_zero(r);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ cachetable_test (void) {
|
|||
r = toku_test_cachetable_unpin(f1, make_blocknum(1), toku_cachetable_hash(f1, make_blocknum(1)), CACHETABLE_CLEAN, make_pair_attr(2));
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -118,8 +118,7 @@ cachetable_test (void) {
|
|||
|
||||
usleep(2*1024*1024);
|
||||
check_flush = true;
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
assert(dirty_flush_called);
|
||||
check_flush = false;
|
||||
|
||||
|
@ -129,7 +128,7 @@ cachetable_test (void) {
|
|||
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f2, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f2, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ cachetable_test (void) {
|
|||
//r = toku_test_cachetable_unpin(f1, make_blocknum(1), 1, CACHETABLE_CLEAN, 8);
|
||||
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -153,7 +153,7 @@ static void checkpoint_pending(void) {
|
|||
assert(r == 0);
|
||||
assert(n_flush == 0 && n_write_me == 0 && n_keep_me == 0);
|
||||
|
||||
r = toku_cachefile_close(&cf, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&cf, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ cachetable_test (void) {
|
|||
check_me = false;
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@ cachetable_test (void) {
|
|||
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ static void cachetable_checkpoint_test(int n, enum cachetable_dirty dirty) {
|
|||
assert(r == 0);
|
||||
assert(n_flush == 0 && n_write_me == 0 && n_keep_me == 0);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0 );
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ cachetable_test (void) {
|
|||
assert(r==0);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ cachetable_test (void) {
|
|||
assert(r==0);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ run_test (void) {
|
|||
assert(STATUS_VALUE(CT_SIZE_CACHEPRESSURE) == (uint64_t) expect.cache_pressure_size);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ cachetable_test (void) {
|
|||
assert(r==0);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ run_test (void) {
|
|||
}
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ run_test (void) {
|
|||
usleep(4000000);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ run_test (void) {
|
|||
assert(my_cleaner_callback_called);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0 );
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ cachetable_test (void) {
|
|||
}
|
||||
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0 );
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ cachetable_test (void) {
|
|||
usleep(1*1024*1024);
|
||||
|
||||
check_flush = false;
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0 );
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -152,7 +152,7 @@ cachetable_test (void) {
|
|||
assert(expected_bytes_to_free == 0);
|
||||
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -180,7 +180,7 @@ cachetable_test (void) {
|
|||
assert(expected_bytes_to_free == 3);
|
||||
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ cachetable_test (void) {
|
|||
r = toku_test_cachetable_unpin(f1, make_blocknum(5), 5, CACHETABLE_CLEAN, make_pair_attr(4));
|
||||
|
||||
check_flush = false;
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0 );
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ cachetable_test (void) {
|
|||
assert(clone_flush_started && clone_flush_completed);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ cachetable_test (void) {
|
|||
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ cachetable_test (void) {
|
|||
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -81,7 +81,7 @@ cachetable_test (enum cachetable_dirty dirty, bool cloneable) {
|
|||
);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ cachetable_test (void) {
|
|||
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@ cachetable_count_pinned_test (int n) {
|
|||
assert(toku_cachefile_count_pinned(f1, 1) == 0);
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ cachetable_debug_test (int n) {
|
|||
}
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ static void cachetable_eviction_full_test (void) {
|
|||
|
||||
// close with the eviction in progress. the close should block until
|
||||
// all of the reads and writes are complete.
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ static void cachetable_eviction_full_test (void) {
|
|||
|
||||
// close with the eviction in progress. the close should block until
|
||||
// all of the reads and writes are complete.
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ static void cachetable_predef_fetch_maybegetandpin_test (void) {
|
|||
assert(r == 0);
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -148,7 +148,7 @@ static void cachetable_prefetch_maybegetandpin_test (void) {
|
|||
assert(r == 0);
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ cachetable_fd_test (void) {
|
|||
r = toku_cachefile_of_filenum(ct, fn, &newcf);
|
||||
assert(r == ENOENT);
|
||||
|
||||
r = toku_cachefile_close(&cf, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&cf, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ cachetable_test (enum pin_evictor_test_type test_type, bool nonblocking) {
|
|||
}
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ cachetable_test (void) {
|
|||
toku_cachefile_flush(f1);
|
||||
}
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -72,8 +72,8 @@ test_cachetable_def_flush (int n) {
|
|||
assert(r == 0);
|
||||
}
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
r = toku_cachefile_close(&f2, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachefile_close(&f2, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ cachetable_getandpin_test (int n) {
|
|||
}
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ run_test (void) {
|
|||
r = toku_cachetable_get_and_pin(f1, make_blocknum(1), 1, &v1, &s1, wc, def_fetch, def_pf_req_callback, def_pf_callback, true, NULL);
|
||||
foo = false;
|
||||
cachefile_kibbutz_enq(f1, kibbutz_work, f1);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
assert(foo);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ cachetable_test (void) {
|
|||
r = toku_test_cachetable_unpin(f1, make_blocknum(1), 1, CACHETABLE_CLEAN, make_pair_attr(8));
|
||||
|
||||
// close and reopen cachefile so we can do some simple prefetch tests
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
|
||||
//
|
||||
// verify that a prefetch of the node will succeed
|
||||
|
@ -176,7 +176,7 @@ cachetable_test (void) {
|
|||
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -381,7 +381,7 @@ cachetable_test (void) {
|
|||
}
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
sum_vals();
|
||||
|
|
|
@ -67,7 +67,7 @@ run_test (void) {
|
|||
assert(r==0);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -146,7 +146,7 @@ static void cachetable_prefetch_checkpoint_test(int n, enum cachetable_dirty dir
|
|||
assert(r == 0);
|
||||
assert(n_flush == 0 && n_write_me == 0 && n_keep_me == 0);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ static void cachetable_prefetch_close_leak_test (void) {
|
|||
|
||||
// close with the prefetch in progress. the close should block until
|
||||
// all of the reads and writes are complete.
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ static void cachetable_prefetch_full_test (bool partial_fetch) {
|
|||
|
||||
// close with the prefetch in progress. the close should block until
|
||||
// all of the reads and writes are complete.
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -103,7 +103,7 @@ static void cachetable_prefetch_flowcontrol_test (int cachetable_size_limit) {
|
|||
}
|
||||
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
if (verbose) printf("%s:%d 0x%x 0x%x\n", __FUNCTION__, __LINE__,
|
||||
evicted_keys, (1 << (2*cachetable_size_limit))-1);
|
||||
toku_cachetable_close(&ct);
|
||||
|
|
|
@ -137,7 +137,7 @@ static void cachetable_prefetch_maybegetandpin_test (bool do_partial_fetch) {
|
|||
assert(r == 0);
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ static void cachetable_prefetch_maybegetandpin_test (void) {
|
|||
assert(r == 0);
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ static void cachetable_prefetch_maybegetandpin_test (void) {
|
|||
assert(r == 0);
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -515,7 +515,7 @@ cachetable_test (void) {
|
|||
}
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
sum_vals();
|
||||
|
|
|
@ -44,7 +44,7 @@ cachetable_put_test (int n) {
|
|||
assert(toku_cachefile_count_pinned(f1, 1) == 0);
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ static void readit (void) {
|
|||
r=toku_cachetable_get_and_pin(f, key, fullhash, &block, ¤t_size, wc, f_fetch, def_pf_req_callback, def_pf_callback, true, 0); assert(r==0);
|
||||
r=toku_test_cachetable_unpin(f, key, fullhash, CACHETABLE_CLEAN, make_pair_attr(BLOCKSIZE)); assert(r==0);
|
||||
}
|
||||
r = toku_cachefile_close(&f, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f, false, ZERO_LSN);
|
||||
toku_cachetable_close(&t);
|
||||
gettimeofday(&end, 0);
|
||||
toku_os_get_process_times(&end_usertime, &end_systime);
|
||||
|
|
|
@ -140,7 +140,7 @@ test_clean (enum cachetable_dirty dirty, bool cloneable) {
|
|||
check_flush = false;
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -89,7 +89,7 @@ test_clean (enum cachetable_dirty dirty, bool cloneable) {
|
|||
flush_called = false;
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0 );
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
if (flush_expected) assert(flush_called);
|
||||
}
|
||||
|
|
|
@ -66,7 +66,7 @@ cachetable_test (void) {
|
|||
);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -81,8 +81,7 @@ run_test (pair_lock_type lock_type) {
|
|||
}
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ cachetable_test (bool write_first, bool write_second, bool start_checkpoint) {
|
|||
}
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -109,8 +109,7 @@ run_test (void) {
|
|||
run_case_that_should_fail(f1, PL_WRITE_EXPENSIVE, PL_WRITE_EXPENSIVE);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -120,8 +120,7 @@ run_test (void) {
|
|||
);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ run_test (void) {
|
|||
);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -162,7 +162,7 @@ cachetable_test (bool write_first, bool write_second, bool start_checkpoint) {
|
|||
}
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ run_test (void) {
|
|||
assert_zero(r);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -122,7 +122,7 @@ run_test (void) {
|
|||
assert_zero(r);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ cachetable_test (void) {
|
|||
r = toku_test_cachetable_unpin_and_remove(f1, make_blocknum(1), remove_key_expect_no_checkpoint, NULL);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ cachetable_test (void) {
|
|||
r = toku_cachetable_get_and_pin(f1, make_blocknum(1), 1, &v1, &s1, wc, def_fetch, def_pf_req_callback, def_pf_callback, true, NULL);
|
||||
r = toku_test_cachetable_unpin(f1, make_blocknum(1), 1, CACHETABLE_DIRTY, make_pair_attr(8));
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -114,7 +114,7 @@ static void test_nested_pin (void) {
|
|||
toku_cachetable_put(f, make_blocknum(2), f2hash, &i1, make_pair_attr(test_object_size), wc, put_callback_nop);
|
||||
r = toku_test_cachetable_unpin(f, make_blocknum(2), f2hash, CACHETABLE_CLEAN, make_pair_attr(test_object_size));
|
||||
assert(r==0);
|
||||
r = toku_cachefile_close(&f, false, ZERO_LSN); assert(r==0);
|
||||
toku_cachefile_close(&f, false, ZERO_LSN);
|
||||
toku_cachetable_close(&t);
|
||||
}
|
||||
|
||||
|
@ -193,10 +193,10 @@ static void test_multi_filehandles (void) {
|
|||
// we support only one close for a file handle
|
||||
r = toku_test_cachetable_unpin(f1, make_blocknum(1), toku_cachetable_hash(f1, make_blocknum(1)), CACHETABLE_CLEAN, make_pair_attr(0)); assert(r==0);
|
||||
r = toku_test_cachetable_unpin(f2, make_blocknum(2), toku_cachetable_hash(f2, make_blocknum(2)), CACHETABLE_CLEAN, make_pair_attr(0)); assert(r==0);
|
||||
r = toku_cachefile_close(&f2, false, ZERO_LSN); assert(r==0);
|
||||
toku_cachefile_close(&f2, false, ZERO_LSN);
|
||||
|
||||
r = toku_test_cachetable_unpin(f3, make_blocknum(2), toku_cachetable_hash(f3, make_blocknum(2)), CACHETABLE_CLEAN, make_pair_attr(0)); assert(r==0);
|
||||
r = toku_cachefile_close(&f3, false, ZERO_LSN); assert(r==0);
|
||||
toku_cachefile_close(&f3, false, ZERO_LSN);
|
||||
|
||||
toku_cachetable_close(&t);
|
||||
}
|
||||
|
@ -474,8 +474,7 @@ static void test_size_flush(void) {
|
|||
assert(r == 0);
|
||||
}
|
||||
|
||||
r = toku_cachefile_close(&f, false, ZERO_LSN);
|
||||
assert(r == 0);
|
||||
toku_cachefile_close(&f, false, ZERO_LSN);
|
||||
toku_cachetable_close(&t);
|
||||
}
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ cachetable_unpin_and_remove_test (int n) {
|
|||
toku_cachetable_get_state(ct, &nentries, NULL, NULL, NULL);
|
||||
assert(nentries == 0);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ cachetable_put_evict_remove_test (int n) {
|
|||
r = toku_test_cachetable_unpin_and_remove(f1, make_blocknum(0), NULL, NULL);
|
||||
assert(r == 0);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ run_test (void) {
|
|||
assert(r==0);
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ cachetable_unpin_test (int n) {
|
|||
assert(toku_cachefile_count_pinned(f1, 1) == 0);
|
||||
toku_cachetable_verify(ct);
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
@ -112,7 +112,7 @@ unpin_and_evictor_test(enum unpin_evictor_test_type test_type) {
|
|||
}
|
||||
|
||||
toku_cachetable_verify(ct);
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ cachetable_test (void) {
|
|||
r = toku_test_cachetable_unpin(f1, make_blocknum(i), i, CACHETABLE_DIRTY, make_pair_attr(4));
|
||||
}
|
||||
|
||||
r = toku_cachefile_close(&f1, false, ZERO_LSN); assert(r == 0);
|
||||
toku_cachefile_close(&f1, false, ZERO_LSN);
|
||||
toku_cachetable_close(&ct);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue