mirror of
https://github.com/MariaDB/server.git
synced 2025-02-02 03:51:50 +01:00
[t:4962], remove ydb lock usage from create indexer
git-svn-id: file:///svn/toku/tokudb@44105 c7de825b-a66e-492c-adef-691d508d4ae1
This commit is contained in:
parent
b484b9bd5e
commit
205f8c4cce
2 changed files with 6 additions and 23 deletions
|
@ -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);
|
||||
}
|
||||
|
|
22
src/ydb.c
22
src/ydb.c
|
@ -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; }
|
||||
|
|
Loading…
Add table
Reference in a new issue