Commit c8ab6ce3 authored by Zardosht Kasheff's avatar Zardosht Kasheff Committed by Yoni Fogel

[t:4962], remove ydb lock usage from create indexer

git-svn-id: file:///svn/toku/tokudb@44105 c7de825b-a66e-492c-adef-691d508d4ae1
parent 6a11dae1
......@@ -25,6 +25,7 @@
#include <ft/ule.h>
#include <ft/xids.h>
#include <ft/log-internal.h>
#include <ft/checkpoint.h>
///////////////////////////////////////////////////////////////////////////////////
// Engine status
......@@ -179,7 +180,6 @@ toku_indexer_create_indexer(DB_ENV *env,
indexer->close = close_indexer;
indexer->abort = abort_indexer;
toku_ydb_unlock();
//
// create and close a dummy loader to get redirection going for the hot indexer
// This way, if the hot index aborts, but other transactions have references to the
......@@ -197,7 +197,6 @@ toku_indexer_create_indexer(DB_ENV *env,
goto create_exit;
}
}
toku_ydb_lock();
// create and initialize the leafentry cursor
rval = le_cursor_create(&indexer->i->lec, db_struct_i(src_db)->ft_handle, db_txn_struct_i(txn)->tokutxn);
......@@ -207,8 +206,10 @@ toku_indexer_create_indexer(DB_ENV *env,
LSN hot_index_lsn; // not used (yet)
TOKUTXN ttxn = db_txn_struct_i(txn)->tokutxn;
FILENUMS filenums = indexer->i->filenums;
toku_multi_operation_client_lock();
rval = toku_ft_hot_index(NULL, ttxn, filenums, 1, &hot_index_lsn);
toku_multi_operation_client_unlock();
if (rval == 0) {
rval = associate_indexer_with_hot_dbs(indexer, dest_dbs, N);
}
......
......@@ -1505,21 +1505,6 @@ env_cleaner_set_iterations(DB_ENV * env, u_int32_t iterations) {
return r;
}
static int
locked_env_create_indexer(DB_ENV *env,
DB_TXN *txn,
DB_INDEXER **indexerp,
DB *src_db,
int N,
DB *dest_dbs[N],
uint32_t db_flags[N],
uint32_t indexer_flags) {
toku_ydb_lock();
int r = toku_indexer_create_indexer(env, txn, indexerp, src_db, N, dest_dbs, db_flags, indexer_flags);
toku_ydb_unlock();
return r;
}
static int
env_create_loader(DB_ENV *env,
DB_TXN *txn,
......@@ -1534,8 +1519,6 @@ env_create_loader(DB_ENV *env,
return r;
}
static int
env_checkpointing_get_period(DB_ENV * env, u_int32_t *seconds) {
HANDLE_PANICKED_ENV(env);
......@@ -2181,7 +2164,6 @@ toku_env_create(DB_ENV ** envp, u_int32_t flags) {
SENV(dbremove);
SENV(dbrename);
//SENV(set_noticecall);
SENV(create_indexer);
#undef SENV
#define USENV(name) result->name = env_ ## name
// methods with locking done internally
......@@ -2234,10 +2216,11 @@ toku_env_create(DB_ENV ** envp, u_int32_t flags) {
USENV(set_redzone);
USENV(log_flush);
USENV(log_archive);
USENV(create_loader);
#undef USENV
// unlocked methods
result->create_indexer = toku_indexer_create_indexer;
result->txn_checkpoint = toku_env_txn_checkpoint;
result->checkpointing_postpone = env_checkpointing_postpone;
result->checkpointing_resume = env_checkpointing_resume;
......@@ -2248,7 +2231,6 @@ toku_env_create(DB_ENV ** envp, u_int32_t flags) {
result->get_engine_status_text = env_get_engine_status_text;
result->crash = env_crash; // handlerton's call to fractal tree layer on failed assert
result->txn_begin = locked_txn_begin;
result->create_loader = env_create_loader;
MALLOC(result->i);
if (result->i == 0) { r = ENOMEM; goto cleanup; }
......
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