mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 06:44:16 +01:00
Fix the cachetable-race so that it doesn't run in BDB and compiles under windows. Fixes #2699, #2698. close[t:2699] close[t:2698].
git-svn-id: file:///svn/toku/tokudb@20902 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
1ef3183013
commit
fa229ab979
8 changed files with 21 additions and 13 deletions
|
@ -2176,12 +2176,11 @@ toku_cachetable_begin_checkpoint (CACHETABLE ct, TOKULOGGER logger) {
|
|||
|
||||
|
||||
// This is used by the cachetable_race test.
|
||||
extern int get_toku_checkpointing_user_data_status(void) __attribute__((__visibility__("default")));
|
||||
static volatile int toku_checkpointing_user_data_status = 0;
|
||||
static void set_toku_checkpointing_user_data_status (int v) {
|
||||
static void toku_cachetable_set_checkpointing_user_data_status (int v) {
|
||||
toku_checkpointing_user_data_status = v;
|
||||
}
|
||||
int get_toku_checkpointing_user_data_status (void) {
|
||||
int toku_cachetable_get_checkpointing_user_data_status (void) {
|
||||
return toku_checkpointing_user_data_status;
|
||||
}
|
||||
|
||||
|
@ -2223,9 +2222,9 @@ toku_cachetable_end_checkpoint(CACHETABLE ct, TOKULOGGER logger,
|
|||
assert(ct->lsn_of_checkpoint_in_progress.lsn >= cf->most_recent_global_checkpoint_that_finished_early.lsn);
|
||||
cachetable_unlock(ct);
|
||||
assert(cf->checkpoint_state == CS_CALLED_BEGIN_CHECKPOINT);
|
||||
set_toku_checkpointing_user_data_status(1);
|
||||
toku_cachetable_set_checkpointing_user_data_status(1);
|
||||
int r = cf->checkpoint_userdata(cf, cf->fd, cf->userdata);
|
||||
set_toku_checkpointing_user_data_status(0);
|
||||
toku_cachetable_set_checkpointing_user_data_status(0);
|
||||
assert(r==0);
|
||||
cf->checkpoint_state = CS_CALLED_CHECKPOINT;
|
||||
cachetable_lock(ct);
|
||||
|
|
|
@ -336,6 +336,9 @@ char * toku_cachetable_get_fname_in_cwd(CACHETABLE ct, const char * fname_in_env
|
|||
|
||||
int toku_cachetable_local_checkpoint_for_commit(CACHETABLE ct, TOKUTXN txn, uint32_t n, CACHEFILE cachefiles[]);
|
||||
|
||||
// test-only function
|
||||
extern int toku_cachetable_get_checkpointing_user_data_status(void);
|
||||
|
||||
#if defined(__cplusplus) || defined(__cilkplusplus)
|
||||
};
|
||||
#endif
|
||||
|
|
|
@ -74,8 +74,7 @@
|
|||
|
||||
toku_test_db_redirect_dictionary;
|
||||
toku_test_get_latest_lsn;
|
||||
|
||||
get_toku_checkpointing_user_data_status;
|
||||
toku_test_get_checkpointing_user_data_status;
|
||||
|
||||
local: *;
|
||||
};
|
||||
|
|
|
@ -82,6 +82,7 @@ BDB_DONTRUN_TESTS = \
|
|||
backwards_10_each_le_and_msg \
|
||||
bug1381 \
|
||||
bug627 \
|
||||
cachetable-race \
|
||||
checkpoint_1 \
|
||||
checkpoint_callback \
|
||||
checkpoint_stress \
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "toku_atomic.h"
|
||||
#include <db.h>
|
||||
#include <sys/stat.h>
|
||||
#include "ydb.h"
|
||||
#include "ydb-internal.h"
|
||||
|
||||
DB_ENV *env;
|
||||
|
@ -71,11 +72,10 @@ static void run_cachetable_race_test(void)
|
|||
dbs[i] = NULL;
|
||||
|
||||
if (i==2) {
|
||||
extern int get_toku_checkpointing_user_data_status(void);
|
||||
if (verbose) printf("%s:%d c=%d\n", __FILE__, __LINE__, get_toku_checkpointing_user_data_status());
|
||||
while (get_toku_checkpointing_user_data_status()==0)
|
||||
if (verbose) printf("%s:%d c=%d\n", __FILE__, __LINE__, toku_test_get_checkpointing_user_data_status());
|
||||
while (toku_test_get_checkpointing_user_data_status()==0)
|
||||
sched_yield();
|
||||
if (verbose) printf("%s:%d c=%d\n", __FILE__, __LINE__, get_toku_checkpointing_user_data_status());
|
||||
if (verbose) printf("%s:%d c=%d\n", __FILE__, __LINE__, toku_test_get_checkpointing_user_data_status());
|
||||
}
|
||||
}
|
||||
r = env->close(env, 0); CKERR(r);
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
{
|
||||
ignore_race_on_toku_checkpointing_user_data_status
|
||||
Helgrind:Race
|
||||
fun:set_toku_checkpointing_user_data_status.*
|
||||
fun:toku_set_checkpointing_user_data_status.*
|
||||
}
|
||||
{
|
||||
ignore_race_on_toku_checkpointing_user_data_status
|
||||
Helgrind:Race
|
||||
fun:get_toku_checkpointing_user_data_status
|
||||
fun:toku_get_checkpointing_user_data_status
|
||||
}
|
||||
|
|
|
@ -5904,3 +5904,6 @@ toku_test_get_latest_lsn(DB_ENV *env) {
|
|||
return rval.lsn;
|
||||
}
|
||||
|
||||
int toku_test_get_checkpointing_user_data_status (void) {
|
||||
return toku_cachetable_get_checkpointing_user_data_status();
|
||||
}
|
||||
|
|
|
@ -28,6 +28,9 @@ int toku_test_db_redirect_dictionary(DB * db, char * dname_of_new_file, DB_TXN *
|
|||
|
||||
uint64_t toku_test_get_latest_lsn(DB_ENV *env) __attribute__((__visibility__("default")));
|
||||
|
||||
// test-only function
|
||||
extern int toku_test_get_checkpointing_user_data_status(void) __attribute__((__visibility__("default")));
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue