Skip to content

Commit 82326ff

Browse files
committed
shift lmdb initialization to provider constructor which is called only once
1 parent 00483e4 commit 82326ff

File tree

2 files changed

+12
-32
lines changed

2 files changed

+12
-32
lines changed

src/collection/backend/lmdb.cc

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -501,43 +501,27 @@ void LMDB::resolveRegularExpression(const std::string& var,
501501
}
502502

503503

504-
MDBEnvProvider::MDBEnvProvider() :
505-
m_env(NULL), initialized(false) {
506-
pthread_mutex_init(&m_lock, NULL);
504+
MDBEnvProvider::MDBEnvProvider() : m_env(NULL) {
505+
MDB_txn *txn;
506+
mdb_env_create(&m_env);
507+
mdb_env_open(m_env, "./modsec-shared-collections",
508+
MDB_WRITEMAP | MDB_NOSUBDIR, 0664);
509+
mdb_txn_begin(m_env, NULL, 0, &txn);
510+
mdb_dbi_open(txn, NULL, MDB_CREATE | MDB_DUPSORT, &m_dbi);
511+
mdb_txn_commit(txn);
507512
}
508513

509514
MDB_env* MDBEnvProvider::GetEnv() {
510-
init();
511515
return m_env;
512516
}
513517

514518
MDB_dbi* MDBEnvProvider::GetDBI() {
515-
init();
516519
return &m_dbi;
517520
}
518521

519-
void MDBEnvProvider::init() {
520-
pthread_mutex_lock(&m_lock);
521-
if (!initialized) {
522-
MDB_txn *txn;
523-
initialized = true;
524-
mdb_env_create(&m_env);
525-
mdb_env_open(m_env, "./modsec-shared-collections",
526-
MDB_WRITEMAP | MDB_NOSUBDIR, 0664);
527-
mdb_txn_begin(m_env, NULL, 0, &txn);
528-
mdb_dbi_open(txn, NULL, MDB_CREATE | MDB_DUPSORT, &m_dbi);
529-
mdb_txn_commit(txn);
530-
}
531-
pthread_mutex_unlock(&m_lock);
532-
}
533-
534-
void MDBEnvProvider::close() {
535-
pthread_mutex_lock(&m_lock);
536-
if (initialized) {
537-
mdb_dbi_close(m_env, m_dbi);
538-
mdb_env_close(m_env);
539-
}
540-
pthread_mutex_unlock(&m_lock);
522+
MDBEnvProvider::~MDBEnvProvider() {
523+
mdb_dbi_close(m_env, m_dbi);
524+
mdb_env_close(m_env);
541525
}
542526

543527
#endif

src/collection/backend/lmdb.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,12 @@ class MDBEnvProvider {
8383
}
8484
MDB_env* GetEnv();
8585
MDB_dbi* GetDBI();
86-
86+
~MDBEnvProvider();
8787
private:
8888
MDB_env *m_env;
8989
MDB_dbi m_dbi;
90-
pthread_mutex_t m_lock;
9190

9291
MDBEnvProvider();
93-
bool initialized;
94-
void init();
95-
void close();
9692
};
9793

9894
class LMDB :

0 commit comments

Comments
 (0)