mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 12:01:42 +01:00
[t:2499] Loader temp files go in data dir, not env home dir (unless there is no data dir).
git-svn-id: file:///svn/toku/tokudb@20299 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
11897a5141
commit
f85b67f78a
2 changed files with 17 additions and 11 deletions
12
src/loader.c
12
src/loader.c
|
@ -127,8 +127,7 @@ static int verify_empty(DB *db, DB_TXN *txn)
|
|||
return r;
|
||||
}
|
||||
|
||||
//static const char *loader_temp_prefix = "temp";
|
||||
static const char *loader_temp_prefix = "tokuld"; // 2536
|
||||
static const char *loader_temp_prefix = "tokuld"; // #2536
|
||||
static const char *loader_temp_suffix = "XXXXXX";
|
||||
|
||||
int toku_loader_create_loader(DB_ENV *env,
|
||||
|
@ -159,7 +158,7 @@ int toku_loader_create_loader(DB_ENV *env,
|
|||
loader->i->loader_flags = loader_flags;
|
||||
loader->i->temp_file_template = (char *)toku_malloc(MAX_FILE_SIZE);
|
||||
|
||||
int n = snprintf(loader->i->temp_file_template, MAX_FILE_SIZE, "%s/%s%s", env->i->dir, loader_temp_prefix, loader_temp_suffix);
|
||||
int n = snprintf(loader->i->temp_file_template, MAX_FILE_SIZE, "%s/%s%s", env->i->real_data_dir, loader_temp_prefix, loader_temp_suffix);
|
||||
if ( !(n>0 && n<MAX_FILE_SIZE) ) {
|
||||
rval = -1;
|
||||
goto create_exit;
|
||||
|
@ -393,7 +392,8 @@ int toku_loader_abort(DB_LOADER *loader)
|
|||
int toku_loader_cleanup_temp_files(DB_ENV *env) {
|
||||
int result;
|
||||
struct dirent *de;
|
||||
DIR *d = opendir(env->i->dir);
|
||||
char * dir = env->i->real_data_dir;
|
||||
DIR *d = opendir(dir);
|
||||
if (d==0) {
|
||||
result = errno; goto exit;
|
||||
}
|
||||
|
@ -402,9 +402,9 @@ int toku_loader_cleanup_temp_files(DB_ENV *env) {
|
|||
while ((de = readdir(d))) {
|
||||
int r = memcmp(de->d_name, loader_temp_prefix, strlen(loader_temp_prefix));
|
||||
if (r == 0 && strlen(de->d_name) == strlen(loader_temp_prefix) + strlen(loader_temp_suffix)) {
|
||||
int fnamelen = strlen(env->i->dir) + 1 + strlen(de->d_name) + 1; // One for the slash and one for the trailing NUL.
|
||||
int fnamelen = strlen(dir) + 1 + strlen(de->d_name) + 1; // One for the slash and one for the trailing NUL.
|
||||
char fname[fnamelen];
|
||||
int l = snprintf(fname, fnamelen, "%s/%s", env->i->dir, de->d_name);
|
||||
int l = snprintf(fname, fnamelen, "%s/%s", dir, de->d_name);
|
||||
assert(l+1 == fnamelen);
|
||||
r = unlink(fname);
|
||||
if (r!=0) {
|
||||
|
|
|
@ -72,7 +72,7 @@ enum {MAGIC=311};
|
|||
DBT old_inames[MAX_DBS];
|
||||
DBT new_inames[MAX_DBS];
|
||||
|
||||
static const char *loader_temp_prefix = "tokuld"; // 2536
|
||||
static const char *loader_temp_prefix = "tokuld"; // #2536
|
||||
static int count_temp(char * dirname);
|
||||
static void get_inames(DBT* inames, DB** dbs);
|
||||
static int verify_file(char * dirname, char * filename);
|
||||
|
@ -174,6 +174,10 @@ count_temp(char * dirname) {
|
|||
while ((ent=readdir(dir))) {
|
||||
if (ent->d_type==DT_REG && strncmp(ent->d_name, loader_temp_prefix, 6)==0) {
|
||||
n++;
|
||||
if (verbose >= 3) {
|
||||
printf("Temp files\n");
|
||||
printf(" %s/%s\n", dirname, ent->d_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir(dir);
|
||||
|
@ -210,7 +214,7 @@ get_inames(DBT* inames, DB** dbs) {
|
|||
int r = env->get_iname(env, &dname, &inames[i]);
|
||||
CKERR(r);
|
||||
char * iname_str = (char*) (inames[i].data);
|
||||
if (verbose) printf("dname = %s, iname = %s\n", dname_str, iname_str);
|
||||
if (verbose >= 2) printf("dname = %s, iname = %s\n", dname_str, iname_str);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -462,9 +466,10 @@ static void test_loader(enum test_type t, DB **dbs)
|
|||
}
|
||||
uint32_t loader_flags = USE_PUTS; // set with -p option
|
||||
|
||||
if (verbose) printf("old inames:\n");
|
||||
if (verbose >= 2)
|
||||
printf("old inames:\n");
|
||||
get_inames(old_inames, dbs);
|
||||
|
||||
|
||||
// create and initialize loader
|
||||
r = env->txn_begin(env, NULL, &txn, 0);
|
||||
CKERR(r);
|
||||
|
@ -476,7 +481,8 @@ static void test_loader(enum test_type t, DB **dbs)
|
|||
CKERR(r);
|
||||
|
||||
printf("USE_PUTS = %d\n", USE_PUTS);
|
||||
if (verbose) printf("new inames:\n");
|
||||
if (verbose >= 2)
|
||||
printf("new inames:\n");
|
||||
get_inames(new_inames, dbs);
|
||||
|
||||
// using loader->put, put values into DB
|
||||
|
|
Loading…
Add table
Reference in a new issue