Commit 293bea0b authored by Yoni Fogel's avatar Yoni Fogel

Addresses #1396

Merge tokudb.1396 back into main

git-svn-id: file:///svn/toku/tokudb@9110 c7de825b-a66e-492c-adef-691d508d4ae1
parent 33f0e871
...@@ -102,6 +102,7 @@ typedef enum { ...@@ -102,6 +102,7 @@ typedef enum {
/* TOKUDB specific error codes */ /* TOKUDB specific error codes */
#define TOKUDB_OUT_OF_LOCKS -100000 #define TOKUDB_OUT_OF_LOCKS -100000
#define TOKUDB_SUCCEEDED_EARLY -100001 #define TOKUDB_SUCCEEDED_EARLY -100001
#define TOKUDB_DIRTY_DICTIONARY -100004
/* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/ /* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/
#ifdef _TOKUDB_WRAP_H #ifdef _TOKUDB_WRAP_H
#undef txn_begin #undef txn_begin
......
...@@ -104,6 +104,7 @@ typedef enum { ...@@ -104,6 +104,7 @@ typedef enum {
/* TOKUDB specific error codes */ /* TOKUDB specific error codes */
#define TOKUDB_OUT_OF_LOCKS -100000 #define TOKUDB_OUT_OF_LOCKS -100000
#define TOKUDB_SUCCEEDED_EARLY -100001 #define TOKUDB_SUCCEEDED_EARLY -100001
#define TOKUDB_DIRTY_DICTIONARY -100004
/* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/ /* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/
#ifdef _TOKUDB_WRAP_H #ifdef _TOKUDB_WRAP_H
#undef txn_begin #undef txn_begin
......
...@@ -105,6 +105,7 @@ typedef enum { ...@@ -105,6 +105,7 @@ typedef enum {
/* TOKUDB specific error codes */ /* TOKUDB specific error codes */
#define TOKUDB_OUT_OF_LOCKS -100000 #define TOKUDB_OUT_OF_LOCKS -100000
#define TOKUDB_SUCCEEDED_EARLY -100001 #define TOKUDB_SUCCEEDED_EARLY -100001
#define TOKUDB_DIRTY_DICTIONARY -100004
/* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/ /* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/
#ifdef _TOKUDB_WRAP_H #ifdef _TOKUDB_WRAP_H
#undef txn_begin #undef txn_begin
......
...@@ -105,6 +105,7 @@ typedef enum { ...@@ -105,6 +105,7 @@ typedef enum {
/* TOKUDB specific error codes */ /* TOKUDB specific error codes */
#define TOKUDB_OUT_OF_LOCKS -100000 #define TOKUDB_OUT_OF_LOCKS -100000
#define TOKUDB_SUCCEEDED_EARLY -100001 #define TOKUDB_SUCCEEDED_EARLY -100001
#define TOKUDB_DIRTY_DICTIONARY -100004
/* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/ /* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/
#ifdef _TOKUDB_WRAP_H #ifdef _TOKUDB_WRAP_H
#undef txn_begin #undef txn_begin
......
...@@ -11,9 +11,9 @@ extern "C" { ...@@ -11,9 +11,9 @@ extern "C" {
#define TOKUDB 1 #define TOKUDB 1
#define DB_VERSION_MAJOR 4 #define DB_VERSION_MAJOR 4
#define DB_VERSION_MINOR 6 #define DB_VERSION_MINOR 6
#define DB_VERSION_PATCH 21 #define DB_VERSION_PATCH 19
#ifndef _TOKUDB_WRAP_H #ifndef _TOKUDB_WRAP_H
#define DB_VERSION_STRING "Tokutek: TokuDB 4.6.21" #define DB_VERSION_STRING "Tokutek: TokuDB 4.6.19"
#else #else
#define DB_VERSION_STRING_ydb "Tokutek: TokuDB (wrapped bdb)" #define DB_VERSION_STRING_ydb "Tokutek: TokuDB (wrapped bdb)"
#endif #endif
...@@ -106,6 +106,7 @@ typedef enum { ...@@ -106,6 +106,7 @@ typedef enum {
/* TOKUDB specific error codes */ /* TOKUDB specific error codes */
#define TOKUDB_OUT_OF_LOCKS -100000 #define TOKUDB_OUT_OF_LOCKS -100000
#define TOKUDB_SUCCEEDED_EARLY -100001 #define TOKUDB_SUCCEEDED_EARLY -100001
#define TOKUDB_DIRTY_DICTIONARY -100004
/* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/ /* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/
#ifdef _TOKUDB_WRAP_H #ifdef _TOKUDB_WRAP_H
#undef txn_begin #undef txn_begin
......
...@@ -30,8 +30,9 @@ void print_db_notices (void) { ...@@ -30,8 +30,9 @@ void print_db_notices (void) {
#define dodefine(name) printf("#define %s %d\n", #name, name) #define dodefine(name) printf("#define %s %d\n", #name, name)
enum { enum {
TOKUDB_OUT_OF_LOCKS = -100000, TOKUDB_OUT_OF_LOCKS = -100000,
TOKUDB_SUCCEEDED_EARLY = -100001 TOKUDB_SUCCEEDED_EARLY = -100001,
TOKUDB_DIRTY_DICTIONARY = -100004
}; };
void print_defines (void) { void print_defines (void) {
...@@ -138,6 +139,7 @@ void print_defines (void) { ...@@ -138,6 +139,7 @@ void print_defines (void) {
printf("/* TOKUDB specific error codes */\n"); printf("/* TOKUDB specific error codes */\n");
dodefine(TOKUDB_OUT_OF_LOCKS); dodefine(TOKUDB_OUT_OF_LOCKS);
dodefine(TOKUDB_SUCCEEDED_EARLY); dodefine(TOKUDB_SUCCEEDED_EARLY);
dodefine(TOKUDB_DIRTY_DICTIONARY);
} }
//#define DECL_LIMIT 100 //#define DECL_LIMIT 100
......
...@@ -11,9 +11,9 @@ extern "C" { ...@@ -11,9 +11,9 @@ extern "C" {
#define TOKUDB 1 #define TOKUDB 1
#define DB_VERSION_MAJOR 4 #define DB_VERSION_MAJOR 4
#define DB_VERSION_MINOR 6 #define DB_VERSION_MINOR 6
#define DB_VERSION_PATCH 21 #define DB_VERSION_PATCH 19
#ifndef _TOKUDB_WRAP_H #ifndef _TOKUDB_WRAP_H
#define DB_VERSION_STRING "Tokutek: TokuDB 4.6.21" #define DB_VERSION_STRING "Tokutek: TokuDB 4.6.19"
#else #else
#define DB_VERSION_STRING_ydb "Tokutek: TokuDB (wrapped bdb)" #define DB_VERSION_STRING_ydb "Tokutek: TokuDB (wrapped bdb)"
#endif #endif
...@@ -106,6 +106,7 @@ typedef enum { ...@@ -106,6 +106,7 @@ typedef enum {
/* TOKUDB specific error codes */ /* TOKUDB specific error codes */
#define TOKUDB_OUT_OF_LOCKS -100000 #define TOKUDB_OUT_OF_LOCKS -100000
#define TOKUDB_SUCCEEDED_EARLY -100001 #define TOKUDB_SUCCEEDED_EARLY -100001
#define TOKUDB_DIRTY_DICTIONARY -100004
/* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/ /* in wrap mode, top-level function txn_begin is renamed, but the field isn't renamed, so we have to hack it here.*/
#ifdef _TOKUDB_WRAP_H #ifdef _TOKUDB_WRAP_H
#undef txn_begin #undef txn_begin
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -128,6 +128,7 @@ struct cachefile { ...@@ -128,6 +128,7 @@ struct cachefile {
* every record in the transaction, we'll be ok. Hence we use a 64-bit counter to make sure we don't run out. * every record in the transaction, we'll be ok. Hence we use a 64-bit counter to make sure we don't run out.
*/ */
int fd; /* Bug: If a file is opened read-only, then it is stuck in read-only. If it is opened read-write, then subsequent writers can write to it too. */ int fd; /* Bug: If a file is opened read-only, then it is stuck in read-only. If it is opened read-write, then subsequent writers can write to it too. */
BOOL is_dirty; /* Has this been written to since it was closed? */
CACHETABLE cachetable; CACHETABLE cachetable;
struct fileid fileid; struct fileid fileid;
FILENUM filenum; FILENUM filenum;
...@@ -220,7 +221,14 @@ int toku_cachetable_openfd (CACHEFILE *cfptr, CACHETABLE ct, int fd, const char ...@@ -220,7 +221,14 @@ int toku_cachetable_openfd (CACHEFILE *cfptr, CACHETABLE ct, int fd, const char
} }
} }
{ {
CACHEFILE MALLOC(newcf); BOOL was_dirty = FALSE;
r = toku_graceful_open(fname, &was_dirty);
if (r!=0) {
close(fd);
return r;
}
CACHEFILE MALLOC(newcf);
newcf->cachetable = ct; newcf->cachetable = ct;
newcf->filenum.fileid = next_filenum_to_use.fileid++; newcf->filenum.fileid = next_filenum_to_use.fileid++;
cachefile_init_filenum(newcf, fd, fname, fileid); cachefile_init_filenum(newcf, fd, fname, fileid);
...@@ -231,6 +239,7 @@ int toku_cachetable_openfd (CACHEFILE *cfptr, CACHETABLE ct, int fd, const char ...@@ -231,6 +239,7 @@ int toku_cachetable_openfd (CACHEFILE *cfptr, CACHETABLE ct, int fd, const char
newcf->userdata = 0; newcf->userdata = 0;
newcf->close_userdata = 0; newcf->close_userdata = 0;
newcf->checkpoint_userdata = 0; newcf->checkpoint_userdata = 0;
newcf->is_dirty = was_dirty;
*cfptr = newcf; *cfptr = newcf;
return 0; return 0;
...@@ -314,13 +323,20 @@ int toku_cachefile_close (CACHEFILE *cfp, TOKULOGGER logger, char **error_string ...@@ -314,13 +323,20 @@ int toku_cachefile_close (CACHEFILE *cfp, TOKULOGGER logger, char **error_string
if (cf->refcount==0) { if (cf->refcount==0) {
int r; int r;
if ((r = cachetable_flush_cachefile(ct, cf))) { if ((r = cachetable_flush_cachefile(ct, cf))) {
//This is not a graceful shutdown; do not set file as clean.
cachetable_unlock(ct); cachetable_unlock(ct);
return r; return r;
} }
if (cf->close_userdata && (r = cf->close_userdata(cf, cf->userdata, error_string))) { if (cf->close_userdata && (r = cf->close_userdata(cf, cf->userdata, error_string))) {
//This is not a graceful shutdown; do not set file as clean.
cachetable_unlock(ct); cachetable_unlock(ct);
return r; return r;
} }
//Graceful shutdown. 'clean' the file.
if ((r = toku_graceful_close(cf))) {
cachetable_unlock(ct);
return r;
}
cf->close_userdata = NULL; cf->close_userdata = NULL;
cf->checkpoint_userdata = NULL; cf->checkpoint_userdata = NULL;
cf->userdata = NULL; cf->userdata = NULL;
...@@ -334,8 +350,7 @@ int toku_cachefile_close (CACHEFILE *cfp, TOKULOGGER logger, char **error_string ...@@ -334,8 +350,7 @@ int toku_cachefile_close (CACHEFILE *cfp, TOKULOGGER logger, char **error_string
//BYTESTRING bs = {.len=strlen(cf->fname), .data=cf->fname}; //BYTESTRING bs = {.len=strlen(cf->fname), .data=cf->fname};
//r = toku_log_cfclose(logger, 0, 0, bs, cf->filenum); //r = toku_log_cfclose(logger, 0, 0, bs, cf->filenum);
} }
if (cf->fname) if (cf->fname) toku_free(cf->fname);
toku_free(cf->fname);
toku_free(cf); toku_free(cf);
*cfp=0; *cfp=0;
return r; return r;
...@@ -1039,6 +1054,7 @@ static int cachetable_flush_cachefile(CACHETABLE ct, CACHEFILE cf) { ...@@ -1039,6 +1054,7 @@ static int cachetable_flush_cachefile(CACHETABLE ct, CACHEFILE cf) {
// are dirty. pairs in the READING or WRITING states are already in the // are dirty. pairs in the READING or WRITING states are already in the
// work queue. // work queue.
unsigned i; unsigned i;
for (i=0; i < ct->table_size; i++) { for (i=0; i < ct->table_size; i++) {
PAIR p; PAIR p;
for (p = ct->table[i]; p; p = p->hash_chain) { for (p = ct->table[i]; p; p = p->hash_chain) {
...@@ -1362,3 +1378,239 @@ int toku_cachefile_redirect_nullfd (CACHEFILE cf) { ...@@ -1362,3 +1378,239 @@ int toku_cachefile_redirect_nullfd (CACHEFILE cf) {
return 0; return 0;
} }
static toku_pthread_mutex_t graceful_mutex = TOKU_PTHREAD_MUTEX_INITIALIZER;
static int graceful_is_locked=0;
void toku_graceful_lock_init(void) {
int r = toku_pthread_mutex_init(&graceful_mutex, NULL); assert(r == 0);
}
void toku_graceful_lock_destroy(void) {
int r = toku_pthread_mutex_destroy(&graceful_mutex); assert(r == 0);
}
static inline void
lock_for_graceful (void) {
// Locks the graceful_mutex.
int r = toku_pthread_mutex_lock(&graceful_mutex);
assert(r==0);
graceful_is_locked = 1;
}
static inline void
unlock_for_graceful (void) {
graceful_is_locked = 0;
int r = toku_pthread_mutex_unlock(&graceful_mutex);
assert(r==0);
}
static int
graceful_open_get_append_fd(const char *db_fname, BOOL *is_dirtyp, BOOL *create) {
BOOL clean_exists;
BOOL dirty_exists;
char cleanbuf[strlen(db_fname) + sizeof(".clean")];
char dirtybuf[strlen(db_fname) + sizeof(".dirty")];
sprintf(cleanbuf, "%s.clean", db_fname);
sprintf(dirtybuf, "%s.dirty", db_fname);
struct stat tmpbuf;
clean_exists = stat(cleanbuf, &tmpbuf) == 0;
dirty_exists = stat(dirtybuf, &tmpbuf) == 0;
mode_t mode = S_IRWXU|S_IRWXG|S_IRWXO;
int r = 0;
*create = FALSE;
if (dirty_exists && clean_exists) {
r = unlink(cleanbuf);
clean_exists = FALSE;
}
if (r==0) {
if (!dirty_exists && !clean_exists) {
*create = TRUE;
dirty_exists = TRUE;
}
if (dirty_exists) {
*is_dirtyp = TRUE;
r = open(dirtybuf, O_WRONLY | O_CREAT | O_BINARY | O_APPEND, mode);
}
else {
assert(clean_exists);
*is_dirtyp = FALSE;
r = open(cleanbuf, O_WRONLY | O_CREAT | O_BINARY | O_APPEND, mode);
}
}
return r;
}
static int
graceful_close_get_append_fd(const char *db_fname, BOOL *db_missing) {
BOOL clean_exists;
BOOL dirty_exists;
BOOL db_exists;
char cleanbuf[strlen(db_fname) + sizeof(".clean")];
char dirtybuf[strlen(db_fname) + sizeof(".dirty")];
sprintf(cleanbuf, "%s.clean", db_fname);
sprintf(dirtybuf, "%s.dirty", db_fname);
struct stat tmpbuf;
clean_exists = stat(cleanbuf, &tmpbuf) == 0;
dirty_exists = stat(dirtybuf, &tmpbuf) == 0;
db_exists = stat(db_fname, &tmpbuf) == 0;
mode_t mode = S_IRWXU|S_IRWXG|S_IRWXO;
int r = 0;
if (dirty_exists) {
if (clean_exists) r = unlink(dirtybuf);
else r = rename(dirtybuf, cleanbuf);
}
if (db_exists) r = open(cleanbuf, O_WRONLY | O_CREAT | O_BINARY | O_APPEND, mode);
else if (clean_exists) r = unlink(cleanbuf);
*db_missing = !db_exists;
return r;
}
static int
graceful_dirty_get_append_fd(const char *db_fname) {
BOOL clean_exists;
BOOL dirty_exists;
char cleanbuf[strlen(db_fname) + sizeof(".clean")];
char dirtybuf[strlen(db_fname) + sizeof(".dirty")];
sprintf(cleanbuf, "%s.clean", db_fname);
sprintf(dirtybuf, "%s.dirty", db_fname);
struct stat tmpbuf;
clean_exists = stat(cleanbuf, &tmpbuf) == 0;
dirty_exists = stat(dirtybuf, &tmpbuf) == 0;
mode_t mode = S_IRWXU|S_IRWXG|S_IRWXO;
int r = 0;
if (clean_exists) {
if (dirty_exists) r = unlink(cleanbuf);
else r = rename(cleanbuf, dirtybuf);
}
r = open(dirtybuf, O_WRONLY | O_CREAT | O_BINARY | O_APPEND, mode);
return r;
}
static void
graceful_log(int fd, char *operation, BOOL was_dirty, BOOL is_dirty) {
//Logging. Ignore errors.
static char buf[sizeof(":-> pid= tid= ")
+7 //operation
+5 //was dirty
+5 //is dirty
+5 //process id
+5 //thread id
+26 //ctime string (including \n)
];
assert(graceful_is_locked); //ctime uses static buffer. Lock must be held.
time_t temptime;
time(&temptime);
snprintf(buf, sizeof(buf), "%-7s:%-5s->%-5s pid=%-5d tid=%-5d %s",
operation,
was_dirty ? "dirty" : "clean",
is_dirty ? "dirty" : "clean",
toku_os_getpid(),
toku_os_gettid(),
ctime(&temptime));
write(fd, buf, strlen(buf));
}
int
toku_graceful_open(const char *db_fname, BOOL *is_dirtyp) {
int r;
int r2 = 0;
BOOL is_dirty;
BOOL created;
int fd;
lock_for_graceful();
fd = graceful_open_get_append_fd(db_fname, &is_dirty, &created);
if (fd == -1) r = errno;
else {
graceful_log(fd, created ? "Created" : "Opened", is_dirty, is_dirty);
*is_dirtyp = is_dirty;
if (created || !is_dirty) r = 0;
else r = TOKUDB_DIRTY_DICTIONARY;
r2 = close(fd);
}
unlock_for_graceful();
return r ? r : r2;
}
int
toku_graceful_close(CACHEFILE cf) {
int r = 0;
int r2 = 0;
int fd;
const char *db_fname = cf->fname;
if (db_fname) {
lock_for_graceful();
BOOL db_missing = FALSE;
BOOL was_dirty = cf->is_dirty;
fd = graceful_close_get_append_fd(db_fname, &db_missing);
if (fd == -1) {
if (!db_missing) r = errno;
}
else {
graceful_log(fd, "Closed", was_dirty, FALSE);
r2 = close(fd);
cf->is_dirty = FALSE;
}
unlock_for_graceful();
}
return r ? r : r2;
}
int
toku_graceful_dirty(CACHEFILE cf) {
int r = 0;
int r2 = 0;
int fd;
const char *db_fname = cf->fname;
if (!cf->is_dirty && db_fname) {
lock_for_graceful();
fd = graceful_dirty_get_append_fd(db_fname);
if (fd == -1) r = errno;
else {
graceful_log(fd, "Dirtied", FALSE, TRUE);
r2 = close(fd);
cf->is_dirty = TRUE;
}
unlock_for_graceful();
}
return r ? r : r2;
}
int
toku_graceful_delete(const char *db_fname) {
BOOL clean_exists;
char cleanbuf[strlen(db_fname) + sizeof(".clean")];
BOOL dirty_exists;
char dirtybuf[strlen(db_fname) + sizeof(".dirty")];
sprintf(cleanbuf, "%s.clean", db_fname);
sprintf(dirtybuf, "%s.dirty", db_fname);
struct stat tmpbuf;
lock_for_graceful();
clean_exists = stat(cleanbuf, &tmpbuf) == 0;
dirty_exists = stat(dirtybuf, &tmpbuf) == 0;
int r = 0;
if (clean_exists) {
r = unlink(cleanbuf);
}
if (r==0 && dirty_exists) {
r = unlink(dirtybuf);
}
unlock_for_graceful();
return r;
}
...@@ -209,4 +209,13 @@ void toku_cachetable_verify (CACHETABLE t); ...@@ -209,4 +209,13 @@ void toku_cachetable_verify (CACHETABLE t);
// Not for use in production, but useful for testing. // Not for use in production, but useful for testing.
void print_hash_histogram (void) __attribute__((__visibility__("default"))); void print_hash_histogram (void) __attribute__((__visibility__("default")));
int toku_graceful_open(const char *db_fname, BOOL *is_dirtyp);
int toku_graceful_close(CACHEFILE cf);
int toku_graceful_dirty(CACHEFILE cf);
int toku_graceful_delete(const char *db_fname);
void toku_graceful_lock_init(void);
void toku_graceful_lock_destroy(void);
#endif #endif
...@@ -48,6 +48,8 @@ toku_rollback_fcreate (TXNID UU(xid), ...@@ -48,6 +48,8 @@ toku_rollback_fcreate (TXNID UU(xid),
#endif #endif
int r = unlink(full_fname); int r = unlink(full_fname);
assert(r==0); assert(r==0);
r = toku_graceful_delete(full_fname);
assert(r==0);
toku_free(fname); toku_free(fname);
return 0; return 0;
} }
......
...@@ -143,6 +143,6 @@ clean: ...@@ -143,6 +143,6 @@ clean:
rm -rf log-test7.c.dir_* rm -rf log-test7.c.dir_*
rm -rf *.dir rm -rf *.dir
rm -f cachetable-fd-test.ctest2.data test_oexcl.c.tmp rm -f cachetable-fd-test.ctest2.data test_oexcl.c.tmp
rm -f *.brt *.tdb *.dat *.data *.out rm -f *.brt *brt.clean *brt.dirty *.tdb *.dat *.data *.out
$(BINS): $(BINS):
...@@ -28,7 +28,7 @@ static BRT t; ...@@ -28,7 +28,7 @@ static BRT t;
static void setup (void) { static void setup (void) {
int r; int r;
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_open_brt(fname, 0, 1, &t, nodesize, ct, NULL_TXN, toku_default_compare_fun, (DB*)0); assert(r==0); r = toku_open_brt(fname, 0, 1, &t, nodesize, ct, NULL_TXN, toku_default_compare_fun, (DB*)0); assert(r==0);
} }
......
...@@ -29,7 +29,7 @@ char wrotedata[RECORDS*RECORDLEN]; ...@@ -29,7 +29,7 @@ char wrotedata[RECORDS*RECORDLEN];
static void static void
test (int seed) { test (int seed) {
srandom(seed); srandom(seed);
unlink(FNAME); unlink_file_and_bit(FNAME);
int i; int i;
{ {
int fd = open(FNAME, O_CREAT+O_RDWR+O_BINARY, 0777); int fd = open(FNAME, O_CREAT+O_RDWR+O_BINARY, 0777);
...@@ -69,7 +69,7 @@ test (int seed) { ...@@ -69,7 +69,7 @@ test (int seed) {
{ int r=close_bread_without_closing_fd(br); assert(r==0); } { int r=close_bread_without_closing_fd(br); assert(r==0); }
{ int r=close(fd); assert(r==0); } { int r=close(fd); assert(r==0); }
unlink(FNAME); unlink_file_and_bit(FNAME);
} }
int int
......
...@@ -18,7 +18,7 @@ static void test_multiple_brt_cursor_dbts(int n, DB *db) { ...@@ -18,7 +18,7 @@ static void test_multiple_brt_cursor_dbts(int n, DB *db) {
BRT brt; BRT brt;
BRT_CURSOR cursors[n]; BRT_CURSOR cursors[n];
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
......
...@@ -105,7 +105,7 @@ static void test_brt_cursor_first(int n, DB *db) { ...@@ -105,7 +105,7 @@ static void test_brt_cursor_first(int n, DB *db) {
if (verbose) printf("test_brt_cursor_first:%d %p\n", n, db); if (verbose) printf("test_brt_cursor_first:%d %p\n", n, db);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -146,7 +146,7 @@ static void test_brt_cursor_last(int n, DB *db) { ...@@ -146,7 +146,7 @@ static void test_brt_cursor_last(int n, DB *db) {
if (verbose) printf("test_brt_cursor_last:%d %p\n", n, db); if (verbose) printf("test_brt_cursor_last:%d %p\n", n, db);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -187,7 +187,7 @@ static void test_brt_cursor_first_last(int n, DB *db) { ...@@ -187,7 +187,7 @@ static void test_brt_cursor_first_last(int n, DB *db) {
if (verbose) printf("test_brt_cursor_first_last:%d %p\n", n, db); if (verbose) printf("test_brt_cursor_first_last:%d %p\n", n, db);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -232,7 +232,7 @@ static void test_brt_cursor_rfirst(int n, DB *db) { ...@@ -232,7 +232,7 @@ static void test_brt_cursor_rfirst(int n, DB *db) {
if (verbose) printf("test_brt_cursor_rfirst:%d %p\n", n, db); if (verbose) printf("test_brt_cursor_rfirst:%d %p\n", n, db);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -306,7 +306,7 @@ static void test_brt_cursor_walk(int n, DB *db) { ...@@ -306,7 +306,7 @@ static void test_brt_cursor_walk(int n, DB *db) {
if (verbose) printf("test_brt_cursor_walk:%d %p\n", n, db); if (verbose) printf("test_brt_cursor_walk:%d %p\n", n, db);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -378,7 +378,7 @@ static void test_brt_cursor_rwalk(int n, DB *db) { ...@@ -378,7 +378,7 @@ static void test_brt_cursor_rwalk(int n, DB *db) {
if (verbose) printf("test_brt_cursor_rwalk:%d %p\n", n, db); if (verbose) printf("test_brt_cursor_rwalk:%d %p\n", n, db);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -456,7 +456,7 @@ static void test_brt_cursor_rand(int n, DB *db) { ...@@ -456,7 +456,7 @@ static void test_brt_cursor_rand(int n, DB *db) {
if (verbose) printf("test_brt_cursor_rand:%d %p\n", n, db); if (verbose) printf("test_brt_cursor_rand:%d %p\n", n, db);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -508,7 +508,7 @@ static void test_brt_cursor_split(int n, DB *db) { ...@@ -508,7 +508,7 @@ static void test_brt_cursor_split(int n, DB *db) {
if (verbose) printf("test_brt_cursor_split:%d %p\n", n, db); if (verbose) printf("test_brt_cursor_split:%d %p\n", n, db);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -585,7 +585,7 @@ static void test_multiple_brt_cursors(int n, DB *db) { ...@@ -585,7 +585,7 @@ static void test_multiple_brt_cursors(int n, DB *db) {
BRT brt; BRT brt;
BRT_CURSOR cursors[n]; BRT_CURSOR cursors[n];
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -631,7 +631,7 @@ static void test_multiple_brt_cursor_walk(int n, DB *db) { ...@@ -631,7 +631,7 @@ static void test_multiple_brt_cursor_walk(int n, DB *db) {
const int ncursors = n/cursor_gap; const int ncursors = n/cursor_gap;
BRT_CURSOR cursors[ncursors]; BRT_CURSOR cursors[ncursors];
unlink(fname); unlink_file_and_bit(fname);
int nodesize = 1<<12; int nodesize = 1<<12;
int h = log16(n); int h = log16(n);
...@@ -715,7 +715,7 @@ static void test_brt_cursor_set(int n, int cursor_op, DB *db) { ...@@ -715,7 +715,7 @@ static void test_brt_cursor_set(int n, int cursor_op, DB *db) {
BRT brt; BRT brt;
BRT_CURSOR cursor=0; BRT_CURSOR cursor=0;
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -787,7 +787,7 @@ static void test_brt_cursor_set_range(int n, DB *db) { ...@@ -787,7 +787,7 @@ static void test_brt_cursor_set_range(int n, DB *db) {
BRT brt; BRT brt;
BRT_CURSOR cursor=0; BRT_CURSOR cursor=0;
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
...@@ -853,7 +853,7 @@ static void test_brt_cursor_delete(int n, DB *db) { ...@@ -853,7 +853,7 @@ static void test_brt_cursor_delete(int n, DB *db) {
BRT brt; BRT brt;
BRT_CURSOR cursor=0; BRT_CURSOR cursor=0;
unlink(fname); unlink_file_and_bit(fname);
error = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); error = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(error == 0); assert(error == 0);
...@@ -914,7 +914,7 @@ static void test_brt_cursor_get_both(int n, DB *db) { ...@@ -914,7 +914,7 @@ static void test_brt_cursor_get_both(int n, DB *db) {
BRT brt; BRT brt;
BRT_CURSOR cursor=0; BRT_CURSOR cursor=0;
unlink(fname); unlink_file_and_bit(fname);
error = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); error = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(error == 0); assert(error == 0);
......
...@@ -15,7 +15,7 @@ static void test_named_db (void) { ...@@ -15,7 +15,7 @@ static void test_named_db (void) {
DBT k,v; DBT k,v;
if (verbose) printf("test_named_db\n"); if (verbose) printf("test_named_db\n");
unlink(n0); unlink_file_and_bit(n0);
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_open_brt(n0, "db1", 1, &t0, 1<<12, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0); r = toku_open_brt(n0, "db1", 1, &t0, 1<<12, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0);
......
...@@ -16,7 +16,7 @@ static void test_dump_empty_db (void) { ...@@ -16,7 +16,7 @@ static void test_dump_empty_db (void) {
toku_memory_check=1; toku_memory_check=1;
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 1024, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 1024, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
if (verbose) toku_dump_brt(stdout, t); if (verbose) toku_dump_brt(stdout, t);
...@@ -33,8 +33,8 @@ static void test_multiple_files_of_size (int size) { ...@@ -33,8 +33,8 @@ static void test_multiple_files_of_size (int size) {
BRT t0,t1; BRT t0,t1;
int r,i; int r,i;
if (verbose) printf("test_multiple_files_of_size(%d)\n", size); if (verbose) printf("test_multiple_files_of_size(%d)\n", size);
unlink(n0); unlink_file_and_bit(n0);
unlink(n1); unlink_file_and_bit(n1);
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_open_brt(n0, 0, 1, &t0, size, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0); r = toku_open_brt(n0, 0, 1, &t0, size, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0);
...@@ -101,8 +101,8 @@ static void test_multiple_dbs (void) { ...@@ -101,8 +101,8 @@ static void test_multiple_dbs (void) {
int r; int r;
DBT k,v; DBT k,v;
if (verbose) printf("test_multiple_dbs: "); if (verbose) printf("test_multiple_dbs: ");
unlink(n0); unlink_file_and_bit(n0);
unlink(n1); unlink_file_and_bit(n1);
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_open_brt(n0, "db1", 1, &t0, 1<<12, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0); r = toku_open_brt(n0, "db1", 1, &t0, 1<<12, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0);
...@@ -156,7 +156,7 @@ static void test_multiple_dbs_many (void) { ...@@ -156,7 +156,7 @@ static void test_multiple_dbs_many (void) {
BRT trees[MANYN]; BRT trees[MANYN];
if (verbose) printf("test_multiple_dbs_many:\n"); if (verbose) printf("test_multiple_dbs_many:\n");
toku_memory_check_all_free(); toku_memory_check_all_free();
unlink(name); unlink_file_and_bit(name);
r = toku_brt_create_cachetable(&ct, (MANYN+4), ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, (MANYN+4), ZERO_LSN, NULL_LOGGER); assert(r==0);
for (i=0; i<MANYN; i++) { for (i=0; i<MANYN; i++) {
char dbname[20]; char dbname[20];
...@@ -186,7 +186,7 @@ static void test_multiple_brts_one_db_one_file (void) { ...@@ -186,7 +186,7 @@ static void test_multiple_brts_one_db_one_file (void) {
BRT trees[MANYN]; BRT trees[MANYN];
if (verbose) printf("test_multiple_brts_one_db_one_file:"); if (verbose) printf("test_multiple_brts_one_db_one_file:");
toku_memory_check_all_free(); toku_memory_check_all_free();
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 32, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 32, ZERO_LSN, NULL_LOGGER); assert(r==0);
for (i=0; i<MANYN; i++) { for (i=0; i<MANYN; i++) {
r = toku_open_brt(fname, 0, (i==0), &trees[i], 1<<12, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, (i==0), &trees[i], 1<<12, ct, null_txn, toku_default_compare_fun, null_db);
...@@ -227,7 +227,7 @@ static void test_read_what_was_written (void) { ...@@ -227,7 +227,7 @@ static void test_read_what_was_written (void) {
if (verbose) printf("test_read_what_was_written(): "); fflush(stdout); if (verbose) printf("test_read_what_was_written(): "); fflush(stdout);
unlink(fname); unlink_file_and_bit(fname);
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
...@@ -370,7 +370,7 @@ static void test_cursor_last_empty(void) { ...@@ -370,7 +370,7 @@ static void test_cursor_last_empty(void) {
int r; int r;
DBT kbt, vbt; DBT kbt, vbt;
if (verbose) printf("%s", __FUNCTION__); if (verbose) printf("%s", __FUNCTION__);
unlink(fname); unlink_file_and_bit(fname);
toku_memory_check_all_free(); toku_memory_check_all_free();
//printf("%s:%d %d alloced\n", __FILE__, __LINE__, toku_get_n_items_malloced()); toku_print_malloced_items(); //printf("%s:%d %d alloced\n", __FILE__, __LINE__, toku_get_n_items_malloced()); toku_print_malloced_items();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
...@@ -402,7 +402,7 @@ static void test_cursor_next (void) { ...@@ -402,7 +402,7 @@ static void test_cursor_next (void) {
int r; int r;
DBT kbt, vbt; DBT kbt, vbt;
unlink(fname); unlink_file_and_bit(fname);
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
//printf("%s:%d %d alloced\n", __FILE__, __LINE__, toku_get_n_items_malloced()); toku_print_malloced_items(); //printf("%s:%d %d alloced\n", __FILE__, __LINE__, toku_get_n_items_malloced()); toku_print_malloced_items();
...@@ -470,7 +470,7 @@ static void test_wrongendian_compare (int wrong_p, unsigned int N) { ...@@ -470,7 +470,7 @@ static void test_wrongendian_compare (int wrong_p, unsigned int N) {
DBT kbt, vbt; DBT kbt, vbt;
unsigned int i; unsigned int i;
unlink(fname); unlink_file_and_bit(fname);
toku_memory_check_all_free(); toku_memory_check_all_free();
{ {
...@@ -579,7 +579,7 @@ static void test_large_kv(int bsize, int ksize, int vsize) { ...@@ -579,7 +579,7 @@ static void test_large_kv(int bsize, int ksize, int vsize) {
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, bsize, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, bsize, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
...@@ -625,7 +625,7 @@ static void test_brt_delete_empty() { ...@@ -625,7 +625,7 @@ static void test_brt_delete_empty() {
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
...@@ -653,7 +653,7 @@ static void test_brt_delete_present(int n) { ...@@ -653,7 +653,7 @@ static void test_brt_delete_present(int n) {
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
...@@ -714,7 +714,7 @@ static void test_brt_delete_not_present(int n) { ...@@ -714,7 +714,7 @@ static void test_brt_delete_not_present(int n) {
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
...@@ -760,7 +760,7 @@ static void test_brt_delete_cursor_first(int n) { ...@@ -760,7 +760,7 @@ static void test_brt_delete_cursor_first(int n) {
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
...@@ -851,7 +851,7 @@ static void test_insert_delete_lookup(int n) { ...@@ -851,7 +851,7 @@ static void test_insert_delete_lookup(int n) {
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 4096, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
...@@ -897,7 +897,7 @@ static void test_brt_delete_both(int n) { ...@@ -897,7 +897,7 @@ static void test_brt_delete_both(int n) {
int i; int i;
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create(&t); assert(r == 0); r = toku_brt_create(&t); assert(r == 0);
r = toku_brt_set_flags(t, TOKU_DB_DUP + TOKU_DB_DUPSORT); assert(r == 0); r = toku_brt_set_flags(t, TOKU_DB_DUP + TOKU_DB_DUPSORT); assert(r == 0);
r = toku_brt_set_nodesize(t, 4096); assert(r == 0); r = toku_brt_set_nodesize(t, 4096); assert(r == 0);
...@@ -1002,7 +1002,7 @@ static void test_new_brt_cursor_first(int n, int dup_mode) { ...@@ -1002,7 +1002,7 @@ static void test_new_brt_cursor_first(int n, int dup_mode) {
int i; int i;
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create(&t); assert(r == 0); r = toku_brt_create(&t); assert(r == 0);
r = toku_brt_set_flags(t, dup_mode); assert(r == 0); r = toku_brt_set_flags(t, dup_mode); assert(r == 0);
r = toku_brt_set_nodesize(t, 4096); assert(r == 0); r = toku_brt_set_nodesize(t, 4096); assert(r == 0);
...@@ -1056,7 +1056,7 @@ static void test_new_brt_cursor_last(int n, int dup_mode) { ...@@ -1056,7 +1056,7 @@ static void test_new_brt_cursor_last(int n, int dup_mode) {
int i; int i;
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create(&t); assert(r == 0); r = toku_brt_create(&t); assert(r == 0);
r = toku_brt_set_flags(t, dup_mode); assert(r == 0); r = toku_brt_set_flags(t, dup_mode); assert(r == 0);
r = toku_brt_set_nodesize(t, 4096); assert(r == 0); r = toku_brt_set_nodesize(t, 4096); assert(r == 0);
...@@ -1111,7 +1111,7 @@ static void test_new_brt_cursor_next(int n, int dup_mode) { ...@@ -1111,7 +1111,7 @@ static void test_new_brt_cursor_next(int n, int dup_mode) {
int i; int i;
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create(&t); assert(r == 0); r = toku_brt_create(&t); assert(r == 0);
r = toku_brt_set_flags(t, dup_mode); assert(r == 0); r = toku_brt_set_flags(t, dup_mode); assert(r == 0);
r = toku_brt_set_nodesize(t, 4096); assert(r == 0); r = toku_brt_set_nodesize(t, 4096); assert(r == 0);
...@@ -1163,7 +1163,7 @@ static void test_new_brt_cursor_prev(int n, int dup_mode) { ...@@ -1163,7 +1163,7 @@ static void test_new_brt_cursor_prev(int n, int dup_mode) {
int i; int i;
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create(&t); assert(r == 0); r = toku_brt_create(&t); assert(r == 0);
r = toku_brt_set_flags(t, dup_mode); assert(r == 0); r = toku_brt_set_flags(t, dup_mode); assert(r == 0);
r = toku_brt_set_nodesize(t, 4096); assert(r == 0); r = toku_brt_set_nodesize(t, 4096); assert(r == 0);
...@@ -1215,7 +1215,7 @@ static void test_new_brt_cursor_current(int n, int dup_mode) { ...@@ -1215,7 +1215,7 @@ static void test_new_brt_cursor_current(int n, int dup_mode) {
int i; int i;
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create(&t); assert(r == 0); r = toku_brt_create(&t); assert(r == 0);
r = toku_brt_set_flags(t, dup_mode); assert(r == 0); r = toku_brt_set_flags(t, dup_mode); assert(r == 0);
r = toku_brt_set_nodesize(t, 4096); assert(r == 0); r = toku_brt_set_nodesize(t, 4096); assert(r == 0);
...@@ -1295,7 +1295,7 @@ static void test_new_brt_cursor_set_range(int n, int dup_mode) { ...@@ -1295,7 +1295,7 @@ static void test_new_brt_cursor_set_range(int n, int dup_mode) {
BRT_CURSOR cursor=0; BRT_CURSOR cursor=0;
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create(&brt); assert(r == 0); r = toku_brt_create(&brt); assert(r == 0);
r = toku_brt_set_flags(brt, dup_mode); assert(r == 0); r = toku_brt_set_flags(brt, dup_mode); assert(r == 0);
r = toku_brt_set_nodesize(brt, 4096); assert(r == 0); r = toku_brt_set_nodesize(brt, 4096); assert(r == 0);
...@@ -1352,7 +1352,7 @@ static void test_new_brt_cursor_set(int n, int cursor_op, DB *db) { ...@@ -1352,7 +1352,7 @@ static void test_new_brt_cursor_set(int n, int cursor_op, DB *db) {
BRT brt; BRT brt;
BRT_CURSOR cursor=0; BRT_CURSOR cursor=0;
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
......
...@@ -18,7 +18,7 @@ static void test0 (void) { ...@@ -18,7 +18,7 @@ static void test0 (void) {
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
if (verbose) printf("%s:%d test0\n", __FILE__, __LINE__); if (verbose) printf("%s:%d test0\n", __FILE__, __LINE__);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 1024, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 1024, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
//printf("%s:%d test0\n", __FILE__, __LINE__); //printf("%s:%d test0\n", __FILE__, __LINE__);
......
...@@ -17,7 +17,7 @@ static void test1 (void) { ...@@ -17,7 +17,7 @@ static void test1 (void) {
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 1024, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 1024, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
toku_brt_insert(t, toku_fill_dbt(&k, "hello", 6), toku_fill_dbt(&v, "there", 6), null_txn); toku_brt_insert(t, toku_fill_dbt(&k, "hello", 6), toku_fill_dbt(&v, "there", 6), null_txn);
......
...@@ -17,7 +17,7 @@ static void test2 (int memcheck, int limit) { ...@@ -17,7 +17,7 @@ static void test2 (int memcheck, int limit) {
if (verbose) printf("%s:%d checking\n", __FILE__, __LINE__); if (verbose) printf("%s:%d checking\n", __FILE__, __LINE__);
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, 1024, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, 1024, ct, null_txn, toku_default_compare_fun, null_db);
if (verbose) printf("%s:%d did setup\n", __FILE__, __LINE__); if (verbose) printf("%s:%d did setup\n", __FILE__, __LINE__);
assert(r==0); assert(r==0);
......
...@@ -19,7 +19,7 @@ static void test3 (int nodesize, int count, int memcheck) { ...@@ -19,7 +19,7 @@ static void test3 (int nodesize, int count, int memcheck) {
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
gettimeofday(&t0, 0); gettimeofday(&t0, 0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, nodesize, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, nodesize, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
for (i=0; i<count; i++) { for (i=0; i<count; i++) {
......
...@@ -16,7 +16,7 @@ static void test4 (int nodesize, int count, int memcheck) { ...@@ -16,7 +16,7 @@ static void test4 (int nodesize, int count, int memcheck) {
int i; int i;
CACHETABLE ct; CACHETABLE ct;
gettimeofday(&t0, 0); gettimeofday(&t0, 0);
unlink(fname); unlink_file_and_bit(fname);
toku_memory_check=memcheck; toku_memory_check=memcheck;
toku_memory_check_all_free(); toku_memory_check_all_free();
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
......
...@@ -18,7 +18,7 @@ static void test5 (void) { ...@@ -18,7 +18,7 @@ static void test5 (void) {
toku_memory_check_all_free(); toku_memory_check_all_free();
MALLOC_N(limit,values); MALLOC_N(limit,values);
for (i=0; i<limit; i++) values[i]=-1; for (i=0; i<limit; i++) values[i]=-1;
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_open_brt(fname, 0, 1, &t, 1<<12, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0); r = toku_open_brt(fname, 0, 1, &t, 1<<12, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0);
for (i=0; i<limit/2; i++) { for (i=0; i<limit/2; i++) {
......
...@@ -37,7 +37,7 @@ static void cachetable_checkpoint_test(int n, enum cachetable_dirty dirty) { ...@@ -37,7 +37,7 @@ static void cachetable_checkpoint_test(int n, enum cachetable_dirty dirty) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
......
...@@ -34,7 +34,7 @@ cachetable_count_pinned_test (int n) { ...@@ -34,7 +34,7 @@ cachetable_count_pinned_test (int n) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
......
...@@ -34,7 +34,7 @@ cachetable_debug_test (int n) { ...@@ -34,7 +34,7 @@ cachetable_debug_test (int n) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
......
...@@ -9,7 +9,7 @@ cachetable_fd_test (void) { ...@@ -9,7 +9,7 @@ cachetable_fd_test (void) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE cf; CACHEFILE cf;
r = toku_cachetable_openf(&cf, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&cf, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
...@@ -17,7 +17,7 @@ cachetable_fd_test (void) { ...@@ -17,7 +17,7 @@ cachetable_fd_test (void) {
// test set to good fd succeeds // test set to good fd succeeds
char fname2[] = __FILE__ "test2.data"; char fname2[] = __FILE__ "test2.data";
unlink(fname2); unlink_file_and_bit(fname2);
int fd2 = open(fname2, O_RDWR | O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(fd2 >= 0 && fd1 != fd2); int fd2 = open(fname2, O_RDWR | O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(fd2 >= 0 && fd1 != fd2);
r = toku_cachefile_set_fd(cf, fd2, fname2); assert(r == 0); r = toku_cachefile_set_fd(cf, fd2, fname2); assert(r == 0);
assert(toku_cachefile_fd(cf) == fd2); assert(toku_cachefile_fd(cf) == fd2);
......
...@@ -34,12 +34,12 @@ test_cachetable_flush (int n) { ...@@ -34,12 +34,12 @@ test_cachetable_flush (int n) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
char fname2[] = __FILE__ "test2.dat"; char fname2[] = __FILE__ "test2.dat";
unlink(fname2); unlink_file_and_bit(fname2);
CACHEFILE f2; CACHEFILE f2;
r = toku_cachetable_openf(&f2, ct, fname2, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&f2, ct, fname2, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
......
...@@ -43,7 +43,7 @@ cachetable_getandpin_test (int n) { ...@@ -43,7 +43,7 @@ cachetable_getandpin_test (int n) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test_getandpin.dat"; char fname1[] = __FILE__ "test_getandpin.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
......
...@@ -34,7 +34,7 @@ cachetable_put_test (int n) { ...@@ -34,7 +34,7 @@ cachetable_put_test (int n) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
......
...@@ -82,7 +82,7 @@ static void test_rename (void) { ...@@ -82,7 +82,7 @@ static void test_rename (void) {
test_mutex_init(); test_mutex_init();
const char fname[] = __FILE__ "rename.dat"; const char fname[] = __FILE__ "rename.dat";
r=toku_create_cachetable(&t, KEYLIMIT, ZERO_LSN, NULL_LOGGER); assert(r==0); r=toku_create_cachetable(&t, KEYLIMIT, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
assert(r==0); assert(r==0);
for (i=0; i<TRIALLIMIT; i++) { for (i=0; i<TRIALLIMIT; i++) {
......
...@@ -167,7 +167,7 @@ static void test0 (void) { ...@@ -167,7 +167,7 @@ static void test0 (void) {
r=toku_create_cachetable(&t, 5, ZERO_LSN, NULL_LOGGER); r=toku_create_cachetable(&t, 5, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
assert(r==0); assert(r==0);
...@@ -321,7 +321,7 @@ static void test_nested_pin (void) { ...@@ -321,7 +321,7 @@ static void test_nested_pin (void) {
char fname[] = __FILE__ "test_ct.dat"; char fname[] = __FILE__ "test_ct.dat";
r = toku_create_cachetable(&t, 1, ZERO_LSN, NULL_LOGGER); r = toku_create_cachetable(&t, 1, ZERO_LSN, NULL_LOGGER);
assert(r==0); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
assert(r==0); assert(r==0);
expect_f = f; expect_f = f;
...@@ -391,8 +391,8 @@ static void test_multi_filehandles (void) { ...@@ -391,8 +391,8 @@ static void test_multi_filehandles (void) {
char fname3[]= __FILE__ "test3_ct.dat"; char fname3[]= __FILE__ "test3_ct.dat";
int r; int r;
void *v; void *v;
unlink(fname1); unlink_file_and_bit(fname1);
unlink(fname2); unlink_file_and_bit(fname2);
r = toku_create_cachetable(&t, 4, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_create_cachetable(&t, 4, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_cachetable_openf(&f1, t, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r==0); r = toku_cachetable_openf(&f1, t, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r==0);
...@@ -462,7 +462,7 @@ static void test_dirty() { ...@@ -462,7 +462,7 @@ static void test_dirty() {
assert(r == 0); assert(r == 0);
char *fname = __FILE__ "test.dat"; char *fname = __FILE__ "test.dat";
unlink(fname); unlink_file_and_bit(fname);
r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
assert(r == 0); assert(r == 0);
...@@ -586,7 +586,7 @@ static void test_size_resize() { ...@@ -586,7 +586,7 @@ static void test_size_resize() {
assert(r == 0); assert(r == 0);
char *fname = __FILE__ "test.dat"; char *fname = __FILE__ "test.dat";
unlink(fname); unlink_file_and_bit(fname);
r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
assert(r == 0); assert(r == 0);
...@@ -641,7 +641,7 @@ static void test_size_flush() { ...@@ -641,7 +641,7 @@ static void test_size_flush() {
assert(r == 0); assert(r == 0);
char *fname = __FILE__ "test.dat"; char *fname = __FILE__ "test.dat";
unlink(fname); unlink_file_and_bit(fname);
r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); r = toku_cachetable_openf(&f, t, fname, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO);
assert(r == 0); assert(r == 0);
......
...@@ -150,7 +150,7 @@ static void test_chaining (void) { ...@@ -150,7 +150,7 @@ static void test_chaining (void) {
for (i=0; i<N_FILES; i++) { for (i=0; i<N_FILES; i++) {
r = snprintf(fname[i], FILENAME_LEN, __FILE__ ".%ld.dat", i); r = snprintf(fname[i], FILENAME_LEN, __FILE__ ".%ld.dat", i);
assert(r>0 && r<FILENAME_LEN); assert(r>0 && r<FILENAME_LEN);
unlink(fname[i]); unlink_file_and_bit(fname[i]);
r = toku_cachetable_openf(&f[i], ct, fname[i], O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r==0); r = toku_cachetable_openf(&f[i], ct, fname[i], O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r==0);
} }
for (i=0; i<N_PRESENT_LIMIT; i++) { for (i=0; i<N_PRESENT_LIMIT; i++) {
......
...@@ -38,7 +38,7 @@ cachetable_unpin_and_remove_test (int n) { ...@@ -38,7 +38,7 @@ cachetable_unpin_and_remove_test (int n) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, table_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, table_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, 0777); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, 0777); assert(r == 0);
...@@ -101,7 +101,7 @@ cachetable_put_evict_remove_test (int n) { ...@@ -101,7 +101,7 @@ cachetable_put_evict_remove_test (int n) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, table_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, table_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, 0777); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, 0777); assert(r == 0);
......
...@@ -34,7 +34,7 @@ cachetable_unpin_test (int n) { ...@@ -34,7 +34,7 @@ cachetable_unpin_test (int n) {
CACHETABLE ct; CACHETABLE ct;
r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0); r = toku_create_cachetable(&ct, test_limit, ZERO_LSN, NULL_LOGGER); assert(r == 0);
char fname1[] = __FILE__ "test1.dat"; char fname1[] = __FILE__ "test1.dat";
unlink(fname1); unlink_file_and_bit(fname1);
CACHEFILE f1; CACHEFILE f1;
r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0); r = toku_cachetable_openf(&f1, ct, fname1, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO); assert(r == 0);
......
...@@ -18,7 +18,7 @@ static DB * const null_db = 0; ...@@ -18,7 +18,7 @@ static DB * const null_db = 0;
static void test_delete_all (void) { static void test_delete_all (void) {
char fname[]= __FILE__ ".brt"; char fname[]= __FILE__ ".brt";
u_int32_t limit =200; u_int32_t limit =200;
unlink(fname); unlink_file_and_bit(fname);
CACHETABLE ct; CACHETABLE ct;
int r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); int r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
BRT t; BRT t;
......
...@@ -13,7 +13,7 @@ static void test_flat (void) { ...@@ -13,7 +13,7 @@ static void test_flat (void) {
char fname[]= __FILE__ ".brt"; char fname[]= __FILE__ ".brt";
u_int64_t limit=100; u_int64_t limit=100;
u_int64_t ilimit=100; u_int64_t ilimit=100;
unlink(fname); unlink_file_and_bit(fname);
CACHETABLE ct; CACHETABLE ct;
// set the cachetable to size 1 so that things won't fit. // set the cachetable to size 1 so that things won't fit.
int r = toku_brt_create_cachetable(&ct, 1, ZERO_LSN, NULL_LOGGER); assert(r==0); int r = toku_brt_create_cachetable(&ct, 1, ZERO_LSN, NULL_LOGGER); assert(r==0);
......
...@@ -13,7 +13,7 @@ static void test_flat (void) { ...@@ -13,7 +13,7 @@ static void test_flat (void) {
char fname[]= __FILE__ ".brt"; char fname[]= __FILE__ ".brt";
u_int64_t limit=100; u_int64_t limit=100;
u_int64_t ilimit=100; u_int64_t ilimit=100;
unlink(fname); unlink_file_and_bit(fname);
CACHETABLE ct; CACHETABLE ct;
int r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); int r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
BRT t; BRT t;
......
...@@ -13,7 +13,7 @@ static void test_flat (void) { ...@@ -13,7 +13,7 @@ static void test_flat (void) {
char fname[]= __FILE__ ".brt"; char fname[]= __FILE__ ".brt";
const u_int64_t limit=10000; const u_int64_t limit=10000;
u_int64_t permute[limit]; u_int64_t permute[limit];
unlink(fname); unlink_file_and_bit(fname);
CACHETABLE ct; CACHETABLE ct;
// set the cachetable to size 1 so that things won't fit. // set the cachetable to size 1 so that things won't fit.
int r = toku_brt_create_cachetable(&ct, 1, ZERO_LSN, NULL_LOGGER); assert(r==0); int r = toku_brt_create_cachetable(&ct, 1, ZERO_LSN, NULL_LOGGER); assert(r==0);
......
...@@ -12,7 +12,7 @@ static DB * const null_db = 0; ...@@ -12,7 +12,7 @@ static DB * const null_db = 0;
static void test_flat (void) { static void test_flat (void) {
char fname[]= __FILE__ ".brt"; char fname[]= __FILE__ ".brt";
u_int64_t limit=30000; u_int64_t limit=30000;
unlink(fname); unlink_file_and_bit(fname);
CACHETABLE ct; CACHETABLE ct;
int r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); int r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
BRT t; BRT t;
......
...@@ -19,7 +19,7 @@ test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute ...@@ -19,7 +19,7 @@ test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute
DB *db = &a_db; DB *db = &a_db;
DBT key,val; DBT key,val;
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_open_brt(fname, 0, 1, &brt, 1<<12, ct, null_txn, test_brt_cursor_keycompare, db); assert(r==0); r = toku_open_brt(fname, 0, 1, &brt, 1<<12, ct, null_txn, test_brt_cursor_keycompare, db); assert(r==0);
......
...@@ -19,7 +19,7 @@ doit (void) { ...@@ -19,7 +19,7 @@ doit (void) {
DBT k,v; DBT k,v;
if (verbose) printf("%s\n", __FUNCTION__); if (verbose) printf("%s\n", __FUNCTION__);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create(&t); assert(r==0); r = toku_brt_create(&t); assert(r==0);
r = toku_brt_open(t, fname, fname, 0, 1, 1, ct, null_txn, (DB*)0); assert(r==0); r = toku_brt_open(t, fname, fname, 0, 1, 1, ct, null_txn, (DB*)0); assert(r==0);
......
...@@ -17,7 +17,7 @@ test_overflow (void) { ...@@ -17,7 +17,7 @@ test_overflow (void) {
CACHETABLE ct; CACHETABLE ct;
u_int32_t nodesize = 1<<20; u_int32_t nodesize = 1<<20;
int r; int r;
unlink(fname); unlink_file_and_bit(fname);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_open_brt(fname, 0, 1, &t, nodesize, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0); r = toku_open_brt(fname, 0, 1, &t, nodesize, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0);
......
...@@ -27,7 +27,7 @@ doit (void) { ...@@ -27,7 +27,7 @@ doit (void) {
snprintf(fname, fnamelen, "%s.brt", __FILE__); snprintf(fname, fnamelen, "%s.brt", __FILE__);
r = toku_brt_create_cachetable(&ct, 16*1024, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 16*1024, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, NODESIZE, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, NODESIZE, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
toku_free(fname); toku_free(fname);
......
...@@ -13,7 +13,7 @@ test_main (int argc __attribute__((__unused__)), char *argv[] __attribute__((__u ...@@ -13,7 +13,7 @@ test_main (int argc __attribute__((__unused__)), char *argv[] __attribute__((__u
BRT t; BRT t;
CACHETABLE ct; CACHETABLE ct;
FILE *f = fopen("test-dump-brt.out", "w"); FILE *f = fopen("test-dump-brt.out", "w");
unlink(n); unlink_file_and_bit(n);
assert(f); assert(f);
r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 0, ZERO_LSN, NULL_LOGGER); assert(r==0);
r = toku_open_brt(n, 0, 1, &t, 1<<12, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0); r = toku_open_brt(n, 0, 1, &t, 1<<12, ct, null_txn, toku_default_compare_fun, null_db); assert(r==0);
......
...@@ -56,7 +56,7 @@ doit (int ksize __attribute__((__unused__))) { ...@@ -56,7 +56,7 @@ doit (int ksize __attribute__((__unused__))) {
snprintf(fname, fnamelen, "%s.brt", __FILE__); snprintf(fname, fnamelen, "%s.brt", __FILE__);
r = toku_brt_create_cachetable(&ct, 16*1024, ZERO_LSN, NULL_LOGGER); assert(r==0); r = toku_brt_create_cachetable(&ct, 16*1024, ZERO_LSN, NULL_LOGGER); assert(r==0);
unlink(fname); unlink_file_and_bit(fname);
r = toku_open_brt(fname, 0, 1, &t, NODESIZE, ct, null_txn, toku_default_compare_fun, null_db); r = toku_open_brt(fname, 0, 1, &t, NODESIZE, ct, null_txn, toku_default_compare_fun, null_db);
assert(r==0); assert(r==0);
toku_free(fname); toku_free(fname);
......
...@@ -7,6 +7,17 @@ ...@@ -7,6 +7,17 @@
int verbose=0; int verbose=0;
void
unlink_file_and_bit(const char *name) {
char dirty[strlen(name) + sizeof(".dirty")];
char clean[strlen(name) + sizeof(".clean")];
sprintf(dirty, "%s.dirty", name);
sprintf(clean, "%s.clean", name);
unlink(name);
unlink(dirty);
unlink(clean);
}
static inline void static inline void
default_parse_args (int argc, const char *argv[]) { default_parse_args (int argc, const char *argv[]) {
const char *progname=argv[0]; const char *progname=argv[0];
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
static void static void
test (u_int64_t fsize) { test (u_int64_t fsize) {
unlink(FNAME); unlink_file_and_bit(FNAME);
// Create a file of size fsize. Fill it with 8-byte values which are integers, in order) // Create a file of size fsize. Fill it with 8-byte values which are integers, in order)
assert(fsize%(N_BIGINTS*sizeof(u_int64_t)) == 0); // Make sure the fsize is a multiple of the buffer size. assert(fsize%(N_BIGINTS*sizeof(u_int64_t)) == 0); // Make sure the fsize is a multiple of the buffer size.
u_int64_t i = 0; u_int64_t i = 0;
...@@ -95,7 +95,7 @@ assert(sizeof(buf) == N_BIGINTS * BIGINT_SIZE); ...@@ -95,7 +95,7 @@ assert(sizeof(buf) == N_BIGINTS * BIGINT_SIZE);
} }
//printf("Did %" PRIu64 "\n", fsize); //printf("Did %" PRIu64 "\n", fsize);
//system("ls -l " FNAME); //system("ls -l " FNAME);
unlink(FNAME); unlink_file_and_bit(FNAME);
} }
int int
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
int int
test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute__((__unused__))) test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute__((__unused__)))
{ {
unlink(FNAME); unlink_file_and_bit(FNAME);
int fd; int fd;
{ {
...@@ -45,6 +45,6 @@ test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute_ ...@@ -45,6 +45,6 @@ test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute_
assert(file_size==file_size2); assert(file_size==file_size2);
close(fd); close(fd);
unlink(FNAME); unlink_file_and_bit(FNAME);
return 0; return 0;
} }
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
int int
test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute__((__unused__))) { test_main (int argc __attribute__((__unused__)), const char *argv[] __attribute__((__unused__))) {
unlink(fname); unlink_file_and_bit(fname);
int fd0 = open (fname, O_RDWR|O_CREAT|O_EXCL, S_IRWXU|S_IRWXG|S_IRWXO); int fd0 = open (fname, O_RDWR|O_CREAT|O_EXCL, S_IRWXU|S_IRWXG|S_IRWXO);
assert(fd0>=0); assert(fd0>=0);
int fd1 = open (fname, O_RDWR|O_CREAT|O_EXCL, S_IRWXU|S_IRWXG|S_IRWXO); int fd1 = open (fname, O_RDWR|O_CREAT|O_EXCL, S_IRWXU|S_IRWXG|S_IRWXO);
......
...@@ -21,6 +21,7 @@ test_db_open_aborts (void) { ...@@ -21,6 +21,7 @@ test_db_open_aborts (void) {
DB *db; DB *db;
int r; int r;
struct stat buf;
system("rm -rf " ENVDIR); system("rm -rf " ENVDIR);
r=toku_os_mkdir(ENVDIR, S_IRWXU+S_IRWXG+S_IRWXO); assert(r==0); r=toku_os_mkdir(ENVDIR, S_IRWXU+S_IRWXG+S_IRWXO); assert(r==0);
r=db_env_create(&env, 0); assert(r==0); r=db_env_create(&env, 0); assert(r==0);
...@@ -58,13 +59,24 @@ test_db_open_aborts (void) { ...@@ -58,13 +59,24 @@ test_db_open_aborts (void) {
r=tid->abort(tid); assert(r==0); r=tid->abort(tid); assert(r==0);
} }
{ {
struct stat buf;
r=stat(ENVDIR "/foo.db", &buf); r=stat(ENVDIR "/foo.db", &buf);
assert(r!=0); assert(r!=0);
assert(errno==ENOENT); assert(errno==ENOENT);
r=stat(ENVDIR "/foo.db.clean", &buf);
assert(r!=0);
assert(errno==ENOENT);
r=stat(ENVDIR "/foo.db.dirty", &buf);
assert(r!=0);
assert(errno==ENOENT);
} }
r=db->close(db, 0); assert(r==0); r=db->close(db, 0); assert(r==0);
r=stat(ENVDIR "/foo.db.clean", &buf);
assert(r!=0);
assert(errno==ENOENT);
r=stat(ENVDIR "/foo.db.dirty", &buf);
assert(r!=0);
assert(errno==ENOENT);
r=env->close(env, 0); assert(r==0); r=env->close(env, 0); assert(r==0);
} }
......
...@@ -3204,6 +3204,7 @@ static int toku_db_remove(DB * db, const char *fname, const char *dbname, u_int3 ...@@ -3204,6 +3204,7 @@ static int toku_db_remove(DB * db, const char *fname, const char *dbname, u_int3
need_close = FALSE; need_close = FALSE;
if (r!=0) { goto cleanup; } if (r!=0) { goto cleanup; }
if (unlink(full_name) != 0) { r = errno; goto cleanup; } if (unlink(full_name) != 0) { r = errno; goto cleanup; }
if (toku_graceful_delete(full_name) !=0) { r = errno; goto cleanup; }
} else { } else {
r = toku_db_close(db, 0); r = toku_db_close(db, 0);
need_close = FALSE; need_close = FALSE;
......
...@@ -283,7 +283,7 @@ TAGS: $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch] ...@@ -283,7 +283,7 @@ TAGS: $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch]
etags $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch] etags $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch]
cscope.files: $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch] cscope.files: $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch]
(echo $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch] | tr " " "\n") > $@ # Very long command line quieted. (echo $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch] | tr " " "\n") > $@
cscope.out: cscope.files $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch] cscope.out: cscope.files $(TOKUROOT)*/*.[ch] $(TOKUROOT)*/*/*.[ch] $(TOKUROOT)*/*/*/*.[ch]
$(CSCOPE) -qb $(CSCOPE) -qb
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment