mirror of
https://github.com/twisterarmy/twister-core.git
synced 2025-01-23 21:14:42 +00:00
Remove unused nested BDB transaction support
This commit is contained in:
parent
24b57e3c6a
commit
8b1202c52c
@ -170,9 +170,9 @@ void CDB::Close()
|
|||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return;
|
return;
|
||||||
if (!vTxn.empty())
|
if (activeTxn)
|
||||||
vTxn.front()->abort();
|
activeTxn->abort();
|
||||||
vTxn.clear();
|
activeTxn = NULL;
|
||||||
pdb = NULL;
|
pdb = NULL;
|
||||||
|
|
||||||
// Flush database activity from memory pool to disk log
|
// Flush database activity from memory pool to disk log
|
||||||
|
44
src/db.h
44
src/db.h
@ -51,10 +51,10 @@ public:
|
|||||||
void CheckpointLSN(std::string strFile);
|
void CheckpointLSN(std::string strFile);
|
||||||
void SetDetach(bool fDetachDB_) { fDetachDB = fDetachDB_; }
|
void SetDetach(bool fDetachDB_) { fDetachDB = fDetachDB_; }
|
||||||
|
|
||||||
DbTxn *TxnBegin(DbTxn *baseTxn, int flags=DB_TXN_WRITE_NOSYNC)
|
DbTxn *TxnBegin(int flags=DB_TXN_WRITE_NOSYNC)
|
||||||
{
|
{
|
||||||
DbTxn* ptxn = NULL;
|
DbTxn* ptxn = NULL;
|
||||||
int ret = dbenv.txn_begin(baseTxn, &ptxn, flags);
|
int ret = dbenv.txn_begin(NULL, &ptxn, flags);
|
||||||
if (!ptxn || ret != 0)
|
if (!ptxn || ret != 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
return ptxn;
|
return ptxn;
|
||||||
@ -70,7 +70,7 @@ class CDB
|
|||||||
protected:
|
protected:
|
||||||
Db* pdb;
|
Db* pdb;
|
||||||
std::string strFile;
|
std::string strFile;
|
||||||
std::vector<DbTxn*> vTxn;
|
DbTxn *activeTxn;
|
||||||
bool fReadOnly;
|
bool fReadOnly;
|
||||||
|
|
||||||
explicit CDB(const char* pszFile, const char* pszMode="r+");
|
explicit CDB(const char* pszFile, const char* pszMode="r+");
|
||||||
@ -97,7 +97,7 @@ protected:
|
|||||||
// Read
|
// Read
|
||||||
Dbt datValue;
|
Dbt datValue;
|
||||||
datValue.set_flags(DB_DBT_MALLOC);
|
datValue.set_flags(DB_DBT_MALLOC);
|
||||||
int ret = pdb->get(GetTxn(), &datKey, &datValue, 0);
|
int ret = pdb->get(activeTxn, &datKey, &datValue, 0);
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
if (datValue.get_data() == NULL)
|
if (datValue.get_data() == NULL)
|
||||||
return false;
|
return false;
|
||||||
@ -133,7 +133,7 @@ protected:
|
|||||||
Dbt datValue(&ssValue[0], ssValue.size());
|
Dbt datValue(&ssValue[0], ssValue.size());
|
||||||
|
|
||||||
// Write
|
// Write
|
||||||
int ret = pdb->put(GetTxn(), &datKey, &datValue, (fOverwrite ? 0 : DB_NOOVERWRITE));
|
int ret = pdb->put(activeTxn, &datKey, &datValue, (fOverwrite ? 0 : DB_NOOVERWRITE));
|
||||||
|
|
||||||
// Clear memory in case it was a private key
|
// Clear memory in case it was a private key
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
@ -156,7 +156,7 @@ protected:
|
|||||||
Dbt datKey(&ssKey[0], ssKey.size());
|
Dbt datKey(&ssKey[0], ssKey.size());
|
||||||
|
|
||||||
// Erase
|
// Erase
|
||||||
int ret = pdb->del(GetTxn(), &datKey, 0);
|
int ret = pdb->del(activeTxn, &datKey, 0);
|
||||||
|
|
||||||
// Clear memory
|
// Clear memory
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
@ -176,7 +176,7 @@ protected:
|
|||||||
Dbt datKey(&ssKey[0], ssKey.size());
|
Dbt datKey(&ssKey[0], ssKey.size());
|
||||||
|
|
||||||
// Exists
|
// Exists
|
||||||
int ret = pdb->exists(GetTxn(), &datKey, 0);
|
int ret = pdb->exists(activeTxn, &datKey, 0);
|
||||||
|
|
||||||
// Clear memory
|
// Clear memory
|
||||||
memset(datKey.get_data(), 0, datKey.get_size());
|
memset(datKey.get_data(), 0, datKey.get_size());
|
||||||
@ -233,45 +233,33 @@ protected:
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
DbTxn* GetTxn()
|
|
||||||
{
|
|
||||||
if (!vTxn.empty())
|
|
||||||
return vTxn.back();
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool TxnBegin()
|
bool TxnBegin()
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb || activeTxn)
|
||||||
return false;
|
return false;
|
||||||
DbTxn* ptxn = bitdb.TxnBegin(GetTxn());
|
DbTxn* ptxn = bitdb.TxnBegin();
|
||||||
if (!ptxn)
|
if (!ptxn)
|
||||||
return false;
|
return false;
|
||||||
vTxn.push_back(ptxn);
|
activeTxn = ptxn;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TxnCommit()
|
bool TxnCommit()
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb || !activeTxn)
|
||||||
return false;
|
return false;
|
||||||
if (vTxn.empty())
|
int ret = activeTxn->commit(0);
|
||||||
return false;
|
activeTxn = NULL;
|
||||||
int ret = vTxn.back()->commit(0);
|
|
||||||
vTxn.pop_back();
|
|
||||||
return (ret == 0);
|
return (ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TxnAbort()
|
bool TxnAbort()
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb || !activeTxn)
|
||||||
return false;
|
return false;
|
||||||
if (vTxn.empty())
|
int ret = activeTxn->abort();
|
||||||
return false;
|
activeTxn = NULL;
|
||||||
int ret = vTxn.back()->abort();
|
|
||||||
vTxn.pop_back();
|
|
||||||
return (ret == 0);
|
return (ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user