]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw/dbstore: Use CEPH RGW logging in ceph context
authorSoumya Koduri <skoduri@redhat.com>
Fri, 2 Jul 2021 19:06:16 +0000 (00:36 +0530)
committerSoumya Koduri <skoduri@redhat.com>
Wed, 28 Jul 2021 06:45:07 +0000 (12:15 +0530)
When running dbstore as RGW backend, use the logging mechanism
and config values provided by default by RGW.
For other tests, set logfile and loglevel to the input values provided.

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
14 files changed:
CMakeLists.txt
src/rgw/CMakeLists.txt
src/rgw/rgw_sal.cc
src/rgw/rgw_sal_dbstore.cc
src/rgw/store/dbstore/README.md
src/rgw/store/dbstore/common/dbstore.cc
src/rgw/store/dbstore/common/dbstore.h
src/rgw/store/dbstore/common/dbstore_log.h
src/rgw/store/dbstore/dbstore_main.cc
src/rgw/store/dbstore/dbstore_mgr.cc
src/rgw/store/dbstore/dbstore_mgr.h
src/rgw/store/dbstore/sqlite/sqliteDB.cc
src/rgw/store/dbstore/sqlite/sqliteDB.h
src/rgw/store/dbstore/tests/dbstore_tests.cc

index 35ec581876054678aad0af2b901d86f6d3c5508a..75b54b1418002ac19ef31a673473879e84930685 100644 (file)
@@ -403,7 +403,7 @@ option(WITH_RADOSGW_BEAST_OPENSSL "Rados Gateway's Beast frontend uses OpenSSL"
 option(WITH_RADOSGW_AMQP_ENDPOINT "Rados Gateway's pubsub support for AMQP push endpoint" ON)
 option(WITH_RADOSGW_KAFKA_ENDPOINT "Rados Gateway's pubsub support for Kafka push endpoint" ON)
 option(WITH_RADOSGW_LUA_PACKAGES "Rados Gateway's support for dynamically adding lua packagess" ON)
-option(WITH_RADOSGW_DBSTORE "DBStore backend for Rados Gateway" ON)
+option(WITH_RADOSGW_DBSTORE "DBStore backend for Rados Gateway" OFF)
 
 if(WITH_RADOSGW)
   find_package(EXPAT REQUIRED)
index 62e95bcba109596050bc9bf8bf91a409d7163081..de7859e904a28878d652ed5c6a94bd685a437e43 100644 (file)
@@ -126,7 +126,6 @@ set(librgw_common_srcs
   rgw_role.cc
   rgw_sal.cc
   rgw_sal_rados.cc
-  rgw_sal_dbstore.cc
   rgw_string.cc
   rgw_tag.cc
   rgw_tag_s3.cc
@@ -165,6 +164,10 @@ endif()
 if(WITH_RADOSGW_KAFKA_ENDPOINT)
   list(APPEND librgw_common_srcs rgw_kafka.cc)
 endif()
+if(WITH_RADOSGW_DBSTORE)
+  add_subdirectory(store/dbstore)
+  list(APPEND librgw_common_srcs rgw_sal_dbstore.cc)
+endif()
 
 add_library(rgw_common STATIC ${librgw_common_srcs})
 target_link_libraries(rgw_common
@@ -229,10 +232,6 @@ if(WITH_JAEGER)
   add_dependencies(rgw_common jaegertracing::libjaegertracing)
 endif()
 
-if(WITH_RADOSGW_DBSTORE)
-  add_subdirectory(store/dbstore)
-endif()
-
 set(rgw_a_srcs
   rgw_auth_keystone.cc
   rgw_client_io.cc
index d05a4a1b8261ff527dda6a3cdc49c0fe1cc9d0c8..5559ae9dc21e26e7c2f9439e86502eab35452a13 100644 (file)
 #include "rgw_sal.h"
 #include "rgw_sal_rados.h"
 #include "rgw_d3n_datacache.h"
+
+#ifdef WITH_RADOSGW_DBSTORE
 #include "rgw_sal_dbstore.h"
+#endif
 
 #define dout_subsys ceph_subsys_rgw
 
 extern "C" {
 extern rgw::sal::Store* newStore(void);
-extern rgw::sal::Store* newRGWDBStore(void);
+#ifdef WITH_RADOSGW_DBSTORE
+extern rgw::sal::Store* newRGWDBStore(CephContext *cct);
+#endif
 }
 
 rgw::sal::Store* StoreManager::init_storage_provider(const DoutPrefixProvider* dpp, CephContext* cct, const std::string svc, bool use_gc_thread, bool use_lc_thread, bool quota_threads, bool run_sync_thread, bool run_reshard_thread, bool use_cache, bool use_gc)
@@ -72,12 +77,14 @@ rgw::sal::Store* StoreManager::init_storage_provider(const DoutPrefixProvider* d
   }
 
   if (svc.compare("dbstore") == 0) {
-    store = newRGWDBStore();
+#ifdef WITH_RADOSGW_DBSTORE
+    store = newRGWDBStore(cct);
 
     /* Initialize the dbstore with cct & dpp */
     DBStore *db = static_cast<rgw::sal::RGWDBStore *>(store)->getDBStore();
     db->set_context(cct);
     return store;
+#endif
   }
 
   return nullptr;
@@ -105,7 +112,11 @@ rgw::sal::Store* StoreManager::init_raw_storage_provider(const DoutPrefixProvide
   }
 
   if (svc.compare("dbstore") == 0) {
-    store = newRGWDBStore();
+#ifdef WITH_RADOSGW_DBSTORE
+    store = newRGWDBStore(cct);
+#else
+    store = nullptr;
+#endif
   }
   return store;
 }
index 1fa3231b28120010f8173036cfdeca85d38c01d9..3d5ad098aac4adf33c8b2bb40841be1b9530fa92 100644 (file)
@@ -843,11 +843,11 @@ namespace rgw::sal {
 
 extern "C" {
 
-  void *newRGWDBStore(void)
+  void *newRGWDBStore(CephContext *cct)
   {
     rgw::sal::RGWDBStore *store = new rgw::sal::RGWDBStore();
     if (store) {
-      DBStoreManager *dbsm = new DBStoreManager();
+      DBStoreManager *dbsm = new DBStoreManager(cct);
 
       if (!dbsm ) {
         delete store; store = nullptr;
index b84ec727d7a28b22d4435dd566c1e6764187f5e5..15e214d036596fb495cc48fcd51d72e980e015b5 100644 (file)
@@ -5,6 +5,9 @@ DBStore for Rados Gateway (RGW)
 fmt(-devel) and gtest(-devel) packages need to be installed
 
 ## Build
+Add below options to cmake - 
+-DWITH_RADOSGW_DBSTORE=ON -DWITH_RADOSGW_LUA_PACKAGES=OFF
+
 cd build
 
 ninja src/rgw/store/dbstore/install
@@ -13,25 +16,18 @@ ninja src/rgw/store/dbstore/install
 To execute Gtest cases, from build directory
 
 ./bin/dbstore-tests
+(default logfile: rgw_dbstore_tests.log, loglevel: 20)
 
 ## Execute Sample test file
 
 ./bin/dbstore-bin
+(default logfile: rgw_dbstore_bin.log, loglevel: 20)
 
 ## Logging
-Different loglevels are supported 
-
-ERROR - 0
-
-EVENT - 1
-
-DEBUG - 2
-
-FULLDEBUG - 3
-
-By default log level is set to EVENT and logs are stored in dbstore.log
-
 [To provide custom log file and change log level]
 
+./dbstore-tests log_file log_level
 ./dbstore-bin log_file log_level
 
+When run as RADOSGW process, logfile and loglevel are set to the
+ones provided to the radosgw cmd args.
index 6d55617edfed6affcf6b1117bab8e26a4916b3f7..0587c6fdbb2d28d7476e893368739704349090ed 100644 (file)
@@ -11,49 +11,35 @@ map<string, class ObjectOp*> DBStore::getObjectMap() {
   return DBStore::objectmap;
 }
 
-/* Custom Logging initialization */
-ofstream fileout;
-ostream *dbout;
-int LogLevel = L_FULLDEBUG;
-string LogFile = "dbstore.log";
+int DBStore::Initialize(string logfile, int loglevel)
+{
+  int ret = -1;
 
-static void LogInit(string logfile, int loglevel) {
-  if (loglevel >= L_ERR && loglevel <= L_FULLDEBUG)
-    LogLevel = loglevel;
+  if (!cct) {
+    cout << "Failed to Initialize. No ceph Context \n";
+    return -1;
+  }
 
+  if (loglevel > 0) {
+    cct->_conf->subsys.set_log_level(dout_subsys, loglevel);
+  }
   if (!logfile.empty()) {
-    LogFile = logfile;
+    cct->_log->set_log_file(logfile);
+    cct->_log->reopen_log_file();
   }
 
-  fileout.open(LogFile);
-  dbout = &fileout;
-
-  return;
-}
-
-static void LogDestroy() {
-  if(dbout && (dbout != &cout))
-    fileout.close();
-  return;
-}
-
-int DBStore::Initialize(string logfile, int loglevel)
-{
-  int ret = -1;
-
-  LogInit(logfile, loglevel);
 
   db = openDB();
 
   if (!db) {
-    dbout(L_ERR)<<"Failed to open database \n";
+    dbout(cct, 0) <<"Failed to open database " << dbendl;
     return ret;
   }
 
   ret = LockInit();
 
   if (ret) {
-    dbout(L_ERR)<<"Error: mutex is NULL \n";
+    dbout(cct, 0) <<"Error: mutex is NULL " << dbendl;
     closeDB();
     db = NULL;
     return ret;
@@ -62,15 +48,15 @@ int DBStore::Initialize(string logfile, int loglevel)
   ret = InitializeDBOps();
 
   if (ret) {
-    dbout(L_ERR)<<"InitializeDBOps failed \n";
+    dbout(cct, 0) <<"InitializeDBOps failed " << dbendl;
     LockDestroy();
     closeDB();
     db = NULL;
     return ret;
   }
 
-  dbout(L_FULLDEBUG)<< "DBStore successfully initialized - name:" \
-    << db_name << "\n";
+  dbout(cct, 0) << "DBStore successfully initialized - name:" \
+    << db_name << "" << dbendl;
 
   return ret;
 }
@@ -86,10 +72,8 @@ int DBStore::Destroy()
 
   FreeDBOps();
 
-  dbout(L_FULLDEBUG)<<"DBStore successfully destroyed - name:" \
-    <<db_name<<"\n";
-
-  LogDestroy();
+  dbout(cct, 20)<<"DBStore successfully destroyed - name:" \
+    <<db_name << dbendl;
 
   return 0;
 }
@@ -100,7 +84,7 @@ int DBStore::LockInit() {
   ret = pthread_mutex_init(&mutex, NULL);
 
   if (ret)
-    dbout(L_ERR)<<"pthread_mutex_init failed \n";
+    dbout(cct, 0)<<"pthread_mutex_init failed " << dbendl;
 
   return ret;
 }
@@ -111,7 +95,7 @@ int DBStore::LockDestroy() {
   ret = pthread_mutex_destroy(&mutex);
 
   if (ret)
-    dbout(L_ERR)<<"pthread_mutex_destroy failed \n";
+    dbout(cct, 0)<<"pthread_mutex_destroy failed " << dbendl;
 
   return ret;
 }
@@ -122,7 +106,7 @@ int DBStore::Lock() {
   ret = pthread_mutex_lock(&mutex);
 
   if (ret)
-    dbout(L_ERR)<<"pthread_mutex_lock failed \n";
+    dbout(cct, 0)<<"pthread_mutex_lock failed " << dbendl;
 
   return ret;
 }
@@ -133,7 +117,7 @@ int DBStore::Unlock() {
   ret = pthread_mutex_unlock(&mutex);
 
   if (ret)
-    dbout(L_ERR)<<"pthread_mutex_unlock failed \n";
+    dbout(cct, 0)<<"pthread_mutex_unlock failed " << dbendl;
 
   return ret;
 }
@@ -164,8 +148,8 @@ DBOp * DBStore::getDBOp(string Op, struct DBOpParams *params)
   iter = DBStore::objectmap.find(params->op.bucket.info.bucket.name);
 
   if (iter == DBStore::objectmap.end()) {
-    dbout(L_EVENT)<<"No objectmap found for bucket: " \
-      <<params->op.bucket.info.bucket.name<<"\n";
+    dbout(cct, 30)<<"No objectmap found for bucket: " \
+      <<params->op.bucket.info.bucket.name << dbendl;
     /* not found */
     return NULL;
   }
@@ -200,8 +184,8 @@ int DBStore::objectmapInsert(string bucket, void *ptr)
     // return success or replace it or
     // return error ?
     // return success for now
-    dbout(L_DEBUG)<<"Objectmap entry already exists for bucket("\
-      <<bucket<<"). Not inserted \n";
+    dbout(cct, 20)<<"Objectmap entry already exists for bucket("\
+      <<bucket<<"). Not inserted " << dbendl;
     return 0;
   }
 
@@ -224,8 +208,8 @@ int DBStore::objectmapDelete(string bucket)
     // entry doesn't exist
     // return success or return error ?
     // return success for now
-    dbout(L_DEBUG)<<"Objectmap entry for bucket("<<bucket<<") "
-      <<"doesnt exist to delete \n";
+    dbout(cct, 20)<<"Objectmap entry for bucket("<<bucket<<") "
+      <<"doesnt exist to delete " << dbendl;
     return 0;
   }
 
@@ -244,6 +228,8 @@ int DBStore::InitializeParams(string Op, DBOpParams *params)
   if (!params)
     goto out;
 
+  params->cct = cct;
+
   //reset params here
   params->user_table = user_table;
   params->bucket_table = bucket_table;
@@ -261,7 +247,7 @@ int DBStore::ProcessOp(string Op, struct DBOpParams *params) {
   db_op = getDBOp(Op, params);
 
   if (!db_op) {
-    dbout(L_ERR)<<"No db_op found for Op("<<Op<<")\n";
+    dbout(cct, 0)<<"No db_op found for Op("<<Op<<")" << dbendl;
     Unlock();
     return ret;
   }
@@ -269,11 +255,11 @@ int DBStore::ProcessOp(string Op, struct DBOpParams *params) {
 
   Unlock();
   if (ret) {
-    dbout(L_ERR)<<"In Process op Execute failed for fop(" \
-      <<Op.c_str()<<") \n";
+    dbout(cct, 0)<<"In Process op Execute failed for fop(" \
+      <<Op.c_str()<<") " << dbendl;
   } else {
-    dbout(L_FULLDEBUG)<<"Successfully processed fop(" \
-      <<Op.c_str()<<") \n";
+    dbout(cct, 20)<<"Successfully processed fop(" \
+      <<Op.c_str()<<") " << dbendl;
   }
 
   return ret;
@@ -308,7 +294,7 @@ int DBStore::get_user(const std::string& query_str, const std::string& query_str
   } else if (query_str == "user_id") {
     params.op.user.uinfo.user_id = uinfo.user_id;
   } else {
-    dbout(L_ERR)<<"In GetUser Invalid query string :" <<query_str.c_str()<<") \n";
+    dbout(cct, 0)<<"In GetUser Invalid query string :" <<query_str.c_str()<<") " << dbendl;
     return -1;
   }
 
@@ -356,7 +342,7 @@ int DBStore::store_user(RGWUserInfo& uinfo, bool exclusive, map<string, bufferli
     if (pobjv && (pobjv->read_version.ver != obj_ver.ver)) {
       /* Object version mismatch.. return ECANCELED */
       ret = -ECANCELED;
-      dbout(L_ERR)<<"User Read version mismatch err:(" <<ret<<") \n";
+      dbout(cct, 0)<<"User Read version mismatch err:(" <<ret<<") " << dbendl;
       return ret;
     }
 
@@ -380,7 +366,7 @@ int DBStore::store_user(RGWUserInfo& uinfo, bool exclusive, map<string, bufferli
   ret = ProcessOp("InsertUser", &params);
 
   if (ret) {
-    dbout(L_ERR)<<"store_user failed with err:(" <<ret<<") \n";
+    dbout(cct, 0)<<"store_user failed with err:(" <<ret<<") " << dbendl;
     goto out;
   }
 
@@ -411,7 +397,7 @@ int DBStore::remove_user(RGWUserInfo& uinfo, RGWObjVersionTracker *pobjv)
     if (pobjv && (pobjv->read_version.ver != objv_tracker.read_version.ver)) {
       /* Object version mismatch.. return ECANCELED */
       ret = -ECANCELED;
-      dbout(L_ERR)<<"User Read version mismatch err:(" <<ret<<") \n";
+      dbout(cct, 0)<<"User Read version mismatch err:(" <<ret<<") " << dbendl;
       return ret;
     }
   }
@@ -421,7 +407,7 @@ int DBStore::remove_user(RGWUserInfo& uinfo, RGWObjVersionTracker *pobjv)
   ret = ProcessOp("RemoveUser", &params);
 
   if (ret) {
-    dbout(L_ERR)<<"remove_user failed with err:(" <<ret<<") \n";
+    dbout(cct, 0)<<"remove_user failed with err:(" <<ret<<") " << dbendl;
     goto out;
   }
 
@@ -449,14 +435,14 @@ int DBStore::get_bucket_info(const std::string& query_str,
   if (query_str == "name") {
     params.op.bucket.info.bucket.name = info.bucket.name;
   } else {
-    dbout(L_ERR)<<"In GetBucket Invalid query string :" <<query_str.c_str()<<") \n";
+    dbout(cct, 0)<<"In GetBucket Invalid query string :" <<query_str.c_str()<<") " << dbendl;
     return -1;
   }
 
   ret = ProcessOp("GetBucket", &params);
 
   if (ret) {
-    dbout(L_ERR)<<"In GetBucket failed err:(" <<ret<<") \n";
+    dbout(cct, 0)<<"In GetBucket failed err:(" <<ret<<") " << dbendl;
     goto out;
   }
 
@@ -561,7 +547,7 @@ int DBStore::create_bucket(const RGWUserInfo& owner, rgw_bucket& bucket,
   ret = ProcessOp("InsertBucket", &params);
 
   if (ret) {
-    dbout(L_ERR)<<"create_bucket failed with err:(" <<ret<<") \n";
+    dbout(cct, 0)<<"create_bucket failed with err:(" <<ret<<") " << dbendl;
     goto out;
   }
 
@@ -580,7 +566,7 @@ int DBStore::remove_bucket(const RGWBucketInfo info) {
   ret = ProcessOp("RemoveBucket", &params);
 
   if (ret) {
-    dbout(L_ERR)<<"In RemoveBucket failed err:(" <<ret<<") \n";
+    dbout(cct, 0)<<"In RemoveBucket failed err:(" <<ret<<") " << dbendl;
     goto out;
   }
 
@@ -609,7 +595,7 @@ int DBStore::list_buckets(const rgw_user& user,
   ret = ProcessOp("ListUserBuckets", &params);
 
   if (ret) {
-    dbout(L_ERR)<<"In ListUserBuckets failed err:(" <<ret<<") \n";
+    dbout(cct, 0)<<"In ListUserBuckets failed err:(" <<ret<<") " << dbendl;
     goto out;
   }
 
@@ -626,15 +612,6 @@ int DBStore::list_buckets(const rgw_user& user,
       break;
     }
     buckets->add(std::move(entry));
-    /*  cout << "entry.bucket.marker: " << entry.bucket.marker << " min_marker: " << marker;
-
-        if (entry.bucket.marker < marker) {
-        cout << " lesser" << "\n";
-        } else if (entry.bucket.marker > marker) {
-        cout << " greater" << "\n";
-        } else {
-        cout << " equal" << "\n";
-        } */
   }
 out:
   return ret;
@@ -660,7 +637,7 @@ int DBStore::update_bucket(const std::string& query_str,
       &bucket_version);
 
   if (ret) {
-    dbout(L_ERR)<<"Failed to read bucket info err:(" <<ret<<") \n";
+    dbout(cct, 0)<<"Failed to read bucket info err:(" <<ret<<") " << dbendl;
     goto out;
   }
 
@@ -674,7 +651,7 @@ int DBStore::update_bucket(const std::string& query_str,
   /* Verify if the objv read_ver matches current bucket version */
   if (pobjv) {
     if (pobjv->read_version.ver != bucket_version.ver) {
-      dbout(L_ERR)<<"Read version mismatch err:(" <<ret<<") \n";
+      dbout(cct, 0)<<"Read version mismatch err:(" <<ret<<") " << dbendl;
       ret = -ECANCELED;
       goto out;
     }
@@ -714,14 +691,14 @@ int DBStore::update_bucket(const std::string& query_str,
     params.op.bucket.info = info;
   } else {
     ret = -1;
-    dbout(L_ERR)<<"In UpdateBucket Invalid query_str : " << query_str <<" \n";
+    dbout(cct, 0)<<"In UpdateBucket Invalid query_str : " << query_str << dbendl;
     goto out;
   }
 
   ret = ProcessOp("UpdateBucket", &params);
 
   if (ret) {
-    dbout(L_ERR)<<"In UpdateBucket failed err:(" <<ret<<") \n";
+    dbout(cct, 0)<<"In UpdateBucket failed err:(" <<ret<<") " << dbendl;
     goto out;
   }
 
index bb7879183999d8f174a36d32c177f484702547d6..a670e9edd8c74824be62c1715b91fc90d4543586 100644 (file)
@@ -18,7 +18,9 @@
 #include "dbstore_log.h"
 #include "rgw/rgw_sal.h"
 #include "rgw/rgw_bucket.h"
-//#include "rgw/rgw_common.h"
+#include "global/global_context.h"
+#include "global/global_init.h"
+#include "common/ceph_context.h"
 
 using namespace std;
 
@@ -57,6 +59,8 @@ struct DBOpInfo {
 };
 
 struct DBOpParams {
+  CephContext *cct;
+
   /* Tables */
   string user_table;
   string bucket_table;
@@ -366,7 +370,7 @@ class DBOp {
         return fmt::format(CreateQuotaTableQ.c_str(),
             params->quota_table.c_str());
 
-      dbout(L_ERR)<<"Incorrect table type("<<type<<") specified \n";
+      dbout(params->cct, 0) << "Incorrect table type("<<type<<") specified" << dbendl;
 
       return NULL;
     }
@@ -763,17 +767,19 @@ class DBStore {
     uint64_t max_bucket_id = 0;
 
   public:      
-    DBStore(string db_name) : db_name(db_name),
+    DBStore(string db_name, CephContext *_cct) : db_name(db_name),
     user_table(db_name+".user.table"),
     bucket_table(db_name+".bucket.table"),
-    quota_table(db_name+".quota.table")
+    quota_table(db_name+".quota.table"),
+    cct(_cct)
   {}
     /* DBStore() {}*/
 
-    DBStore() : db_name("default_db"),
+    DBStore(CephContext *_cct) : db_name("default_db"),
     user_table("user.table"),
     bucket_table("bucket.table"),
-    quota_table("quota.table")
+    quota_table("quota.table"),
+    cct(_cct)
   {}
     virtual    ~DBStore() {}
 
index daff539c296a9ef8feba337d20a2990c0e954f5b..fec41f0c02a15cad96ce241e2104cc06444ea436 100644 (file)
 #include <stdio.h>
 #include <iostream>
 #include <fstream>
+#include "common/dout.h" 
 
 using namespace std;
 
-#define L_ERR   0
-#define L_EVENT 1  // Default LogLevel
-#define L_DEBUG 2
-#define L_FULLDEBUG 3
+#define dout_subsys ceph_subsys_rgw
+#undef dout_prefix
+#define dout_prefix *_dout << "rgw dbstore: "
 
-extern int LogLevel;
-extern string LogFile;
-extern ofstream fileout;
-extern ostream *dbout;
+#define dbout_prefix(cct, v) dout_impl(cct, dout_subsys, v) dout_prefix
+#define dbendl_impl  dendl      
 
-#define dbout_prefix *dbout<<__PRETTY_FUNCTION__<<":-"
-
-#define dbout(n) if (n <= LogLevel) dbout_prefix
+#define dbout(cct, v) dbout_prefix(cct, v)
+#define dbendl dbendl_impl
 
 #endif
index ad9801bfc5fb25567c5f793660c1a5653aff83ca..c2f09f16dd992351b93500282447ea1538da69dc 100644 (file)
@@ -13,8 +13,6 @@ struct thr_args {
   int thr_id;
 };
 
-int loglevel = L_FULLDEBUG;
-
 void* process(void *arg)
 {
   struct thr_args *t_args = (struct thr_args*)arg;
@@ -23,7 +21,7 @@ void* process(void *arg)
   int thr_id = t_args->thr_id;
   int ret = -1;
 
-  dbout(L_EVENT)<<"Entered thread:"<<thr_id<<"\n";
+  cout<<"Entered thread:"<<thr_id<<"\n";
 
   string user1 = "User1";
   string bucketa = "rgw";
@@ -113,7 +111,7 @@ void* process(void *arg)
 
   db->ListAllUsers(&params);
   db->ListAllBuckets(&params);
-  dbout(L_EVENT)<<"Exiting thread:"<<thr_id<<"\n";
+  cout<<"Exiting thread:"<<thr_id<<"\n";
 
   return 0;
 }
@@ -121,9 +119,10 @@ void* process(void *arg)
 int main(int argc, char *argv[])
 {
   string tenant = "Redhat";
-  string logfile;
+  string logfile = "rgw_dbstore_bin.log";
+  int loglevel = 20;
 
-  class DBStoreManager dbsm;
+  class DBStoreManager *dbsm;
   class DBStore *dbs;
   int rc = 0, tnum = 0;
   void *res;
@@ -133,23 +132,25 @@ int main(int argc, char *argv[])
   pthread_t threads[num_thr];
   struct thr_args t_args[num_thr];
 
+
   cout << "loglevel  " << loglevel << "\n";
-  // format: ./dbstore logfile loglevel
+  // format: ./dbstore-bin logfile loglevel
   if (argc == 3) {
-    logfile = argv[1];
-    loglevel = (atoi)(argv[2]);
-    cout << "loglevel set to " << loglevel << "\n";
+       logfile = argv[1];
+       loglevel = (atoi)(argv[2]);
+       cout << "loglevel set to " << loglevel << "\n";
   }
 
-  dbs = dbsm.getDBStore(tenant, true);
+  dbsm = new DBStoreManager(logfile, loglevel);
+  dbs = dbsm->getDBStore(tenant, true);
 
-  dbout(L_EVENT)<<"No. of threads being created = "<<num_thr<<"\n";
+  cout<<"No. of threads being created = "<<num_thr<<"\n";
 
   /* Initialize thread creation attributes */
   rc = pthread_attr_init(&attr);
 
   if (rc != 0) {
-    dbout(L_ERR)<<" error in pthread_attr_init \n";
+    cout<<" error in pthread_attr_init \n";
     goto out;
   }
 
@@ -159,11 +160,11 @@ int main(int argc, char *argv[])
     rc = pthread_create((pthread_t*)&threads[tnum], &attr, &process,
         &t_args[tnum]);
     if (rc != 0) {
-      dbout(L_ERR)<<" error in pthread_create \n";
+      cout<<" error in pthread_create \n";
       goto out;
     }
 
-    dbout(L_FULLDEBUG)<<"Created thread (thread-id:"<<tnum<<")\n";
+    cout<<"Created thread (thread-id:"<<tnum<<")\n";
   }
 
   /* Destroy the thread attributes object, since it is no
@@ -171,7 +172,7 @@ int main(int argc, char *argv[])
 
   rc = pthread_attr_destroy(&attr);
   if (rc != 0) {
-    dbout(loglevel)<<"error in pthread_attr_destroy \n";
+    cout<<"error in pthread_attr_destroy \n";
   }
 
   /* Now join with each thread, and display its returned value */
@@ -179,14 +180,14 @@ int main(int argc, char *argv[])
   for (tnum = 0; tnum < num_thr; tnum++) {
     rc = pthread_join(threads[tnum], &res);
     if (rc != 0) {
-      dbout(L_ERR)<<"error in pthread_join \n";
+      cout<<"error in pthread_join \n";
     } else {
-      dbout(L_EVENT)<<"Joined with thread "<<tnum<<"\n";
+      cout<<"Joined with thread "<<tnum<<"\n";
     }
   }
 
 out:
-  dbsm.destroyAllHandles();
+  dbsm->destroyAllHandles();
 
   return 0;
 }
index 26c4240817213a118c4cfb17327e65318202f94a..9a96c5c3faa5a499c935b4485fbc91eab2ea1bfd 100644 (file)
@@ -2,9 +2,6 @@
 // vim: ts=8 sw=2 smarttab
 
 #include "dbstore_mgr.h"
-#include "common/dbstore.h"
-#include "sqlite/sqliteDB.h"
-
 
 /* Given a tenant, find and return the DBStore handle.
  * If not found and 'create' set to true, create one
@@ -43,9 +40,9 @@ DBStore* DBStoreManager::createDBStore(string tenant) {
 
   /* Create the handle */
 #ifdef SQLITE_ENABLED
-  dbs = new SQLiteDB(tenant);
+  dbs = new SQLiteDB(tenant, cct);
 #else
-  dbs = new DBStore(tenant);
+  dbs = new DBStore(tenant, cct);
 #endif
 
   /* API is DBStore::Initialize(string logfile, int loglevel);
index 780de2dd5851be455be4d13b1b79bbe2ed523b2b..307efd8ba9e128069bfeee2f4f229d2eccafbb62 100644 (file)
@@ -9,6 +9,9 @@
 #include <string>
 #include <stdio.h>
 #include <iostream>
+#include "common/ceph_context.h"
+#include "common/dbstore.h"
+#include "sqlite/sqliteDB.h"
 
 using namespace std;
 
@@ -22,11 +25,21 @@ class DBStoreManager {
 private:
   map<string, DBStore*> DBStoreHandles;
   DBStore *default_dbstore = NULL;
+  CephContext *cct;
 
 public:
-  DBStoreManager(): DBStoreHandles() {
+  DBStoreManager(CephContext *_cct): DBStoreHandles() {
+    cct = _cct;
        default_dbstore = createDBStore(default_tenant);
   };
+  DBStoreManager(string logfile, int loglevel): DBStoreHandles() {
+    vector<const char*> args;
+    cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+                        CODE_ENVIRONMENT_UTILITY, 1)->get();
+    cct->_log->set_log_file(logfile);
+    cct->_log->reopen_log_file();
+    cct->_conf->subsys.set_log_level(dout_subsys, loglevel);
+  };
   ~DBStoreManager() { destroyAllHandles(); };
 
   /* XXX: TBD based on testing
index f3daf12972a44fb62c700b720898208d80d9bf42..136aa17f78f4fc2be9aa984c589665b535849305 100644 (file)
 
 #include "sqliteDB.h"
 
-#define SQL_PREPARE(params, sdb, stmt, ret, Op)        \
+#define SQL_PREPARE(cct, params, sdb, stmt, ret, Op)   \
   do {                                                 \
     string schema;                                     \
     schema = Schema(params);                   \
     sqlite3_prepare_v2 (*sdb, schema.c_str(),  \
         -1, &stmt , NULL);             \
     if (!stmt) {                                       \
-      cout<<"failed to prepare statement " \
+      dbout(cct, 0) <<"failed to prepare statement " \
       <<"for Op("<<Op<<"); Errmsg -"\
-      <<sqlite3_errmsg(*sdb)<<"\n";\
+      <<sqlite3_errmsg(*sdb)<< dbendl;\
       ret = -1;                                \
       goto out;                                \
     }                                          \
-    dbout(L_DEBUG)<<"Successfully Prepared stmt for Op("<<Op   \
-    <<") schema("<<schema<<") stmt("<<stmt<<")\n";     \
+    dbout(cct, 20)<<"Successfully Prepared stmt for Op("<<Op   \
+    <<") schema("<<schema<<") stmt("<<stmt<<")"<< dbendl;      \
     ret = 0;                                   \
   } while(0);
 
-#define SQL_BIND_INDEX(stmt, index, str, sdb)  \
+#define SQL_BIND_INDEX(cct, stmt, index, str, sdb)     \
   do {                                         \
     index = sqlite3_bind_parameter_index(stmt, str);     \
     \
     if (index <=0)  {                               \
-      cout<<"failed to fetch bind parameter"\
+      dbout(cct, 0) <<"failed to fetch bind parameter"\
       " index for str("<<str<<") in "   \
       <<"stmt("<<stmt<<"); Errmsg -"    \
-      <<sqlite3_errmsg(*sdb)<<"\n";         \
+      <<sqlite3_errmsg(*sdb)<< dbendl;              \
       rc = -1;                              \
       goto out;                                     \
     }                                               \
-    dbout(L_FULLDEBUG)<<"Bind parameter index for str("  \
+    dbout(cct, 20)<<"Bind parameter index for str("  \
     <<str<<") in stmt("<<stmt<<") is "  \
-    <<index<<"\n";                          \
+    <<index<< dbendl;                       \
   }while(0);
 
-#define SQL_BIND_TEXT(stmt, index, str, sdb)                   \
+#define SQL_BIND_TEXT(cct, stmt, index, str, sdb)                      \
   do {                                                         \
     rc = sqlite3_bind_text(stmt, index, str, -1, SQLITE_TRANSIENT);    \
     \
     if (rc != SQLITE_OK) {                                             \
-      dbout(L_ERR)<<"sqlite bind text failed for index("       \
+      dbout(cct, 0)<<"sqlite bind text failed for index("      \
       <<index<<"), str("<<str<<") in stmt("    \
       <<stmt<<"); Errmsg - "<<sqlite3_errmsg(*sdb) \
-      <<"\n";                          \
+      << dbendl;                               \
       rc = -1;                                 \
       goto out;                                        \
     }                                                  \
   }while(0);
 
-#define SQL_BIND_INT(stmt, index, num, sdb)                    \
+#define SQL_BIND_INT(cct, stmt, index, num, sdb)                       \
   do {                                                         \
     rc = sqlite3_bind_int(stmt, index, num);           \
     \
     if (rc != SQLITE_OK) {                                     \
-      dbout(L_ERR)<<"sqlite bind int failed for index("        \
+      dbout(cct, 0)<<"sqlite bind int failed for index("       \
       <<index<<"), num("<<num<<") in stmt("    \
       <<stmt<<"); Errmsg - "<<sqlite3_errmsg(*sdb) \
-      <<"\n";                          \
+      << dbendl;                               \
       rc = -1;                                 \
       goto out;                                        \
     }                                                  \
   }while(0);
 
-#define SQL_BIND_BLOB(stmt, index, blob, size, sdb)            \
+#define SQL_BIND_BLOB(cct, stmt, index, blob, size, sdb)               \
   do {                                                         \
     rc = sqlite3_bind_blob(stmt, index, blob, size, SQLITE_TRANSIENT);  \
     \
     if (rc != SQLITE_OK) {                                     \
-      dbout(L_ERR)<<"sqlite bind blob failed for index("       \
+      dbout(cct, 0)<<"sqlite bind blob failed for index("      \
       <<index<<"), blob("<<blob<<") in stmt("          \
       <<stmt<<"); Errmsg - "<<sqlite3_errmsg(*sdb) \
-      <<"\n";                          \
+      << dbendl;                               \
       rc = -1;                                 \
       goto out;                                        \
     }                                                  \
   }while(0);
 
-#define SQL_ENCODE_BLOB_PARAM(stmt, index, param, sdb)         \
+#define SQL_ENCODE_BLOB_PARAM(cct, stmt, index, param, sdb)            \
   do {                                                         \
     bufferlist b;                                              \
     encode(param, b);                                  \
-    SQL_BIND_BLOB(stmt, index, b.c_str(), b.length(), sdb); \
+    SQL_BIND_BLOB(cct, stmt, index, b.c_str(), b.length(), sdb); \
   }while(0);
 
-#define SQL_READ_BLOB(stmt, index, void_ptr, len)              \
+#define SQL_READ_BLOB(cct, stmt, index, void_ptr, len)         \
   do {                                                         \
     void_ptr = NULL;                                   \
     void_ptr = (void *)sqlite3_column_blob(stmt, index);       \
     len = sqlite3_column_bytes(stmt, index);           \
     \
     if (!void_ptr || len == 0) {                               \
-      dbout(L_FULLDEBUG)<<"Null value for blob index("  \
-      <<index<<") in stmt("<<stmt<<") \n";   \
+      dbout(cct, 20)<<"Null value for blob index("  \
+      <<index<<") in stmt("<<stmt<<") "<< dbendl;   \
     }                                                  \
   }while(0);
 
-#define SQL_DECODE_BLOB_PARAM(stmt, index, param, sdb)         \
+#define SQL_DECODE_BLOB_PARAM(cct, stmt, index, param, sdb)            \
   do {                                                         \
     bufferlist b;                                              \
     void *blob;                                                \
     int blob_len = 0;                                  \
     \
-    SQL_READ_BLOB(stmt, index, blob, blob_len);                \
+    SQL_READ_BLOB(cct, stmt, index, blob, blob_len);           \
     \
     b.append(reinterpret_cast<char *>(blob), blob_len);        \
     \
     }                                  \
     \
     if (!stmt) {                               \
-      cout<<"No prepared statement \n";        \
+      dbout(cct, 0) <<"No prepared statement "<< dbendl;       \
       goto out;                        \
     }                                  \
     \
     ret = Bind(params);                        \
     if (ret) {                         \
-      cout<<"Bind parameters failed for stmt(" <<stmt<<") \n";         \
+      dbout(cct, 0) <<"Bind parameters failed for stmt(" <<stmt<<") "<< dbendl;                \
       goto out;                        \
     }                                  \
     \
     Reset(stmt);                               \
     \
     if (ret) {                         \
-      cout<<"Execution failed for stmt(" <<stmt<<")\n";                \
+      dbout(cct, 0) <<"Execution failed for stmt(" <<stmt<<")"<< dbendl;               \
       goto out;                        \
     }                                  \
   }while(0);
@@ -144,7 +144,7 @@ static int list_callback(void *None, int argc, char **argv, char **aname)
   int i;
   for(i=0; i<argc; i++) {
     string arg = argv[i] ? argv[i] : "NULL";
-    cout<<aname[i]<<" = "<<arg<<"\n";
+   // cout<<aname[i]<<" = "<<arg<<"\n";
   }
   return 0;
 }
@@ -212,11 +212,11 @@ enum GetBucket {
   Bucket_User_NS
 };
 
-static int list_user(DBOpInfo &op, sqlite3_stmt *stmt) {
+static int list_user(CephContext *cct, DBOpInfo &op, sqlite3_stmt *stmt) {
   if (!stmt)
     return -1;
 
-  cout<<sqlite3_column_text(stmt, 0)<<"\n";
+  //cout<<sqlite3_column_text(stmt, 0) << dbendl;
   /* Ensure the column names match with the user table defined in dbstore.h                     
      UserID TEXT ,             \ - 0
      Tenant TEXT ,             \ - 1
@@ -251,15 +251,15 @@ static int list_user(DBOpInfo &op, sqlite3_stmt *stmt) {
   op.user.uinfo.display_name = (const char*)sqlite3_column_text(stmt, DisplayName); // user_name
   op.user.uinfo.user_email = (const char*)sqlite3_column_text(stmt, UserEmail);
 
-  SQL_DECODE_BLOB_PARAM(stmt, AccessKeys, op.user.uinfo.access_keys, sdb);
-  SQL_DECODE_BLOB_PARAM(stmt, SwiftKeys, op.user.uinfo.swift_keys, sdb);
-  SQL_DECODE_BLOB_PARAM(stmt, SubUsers, op.user.uinfo.subusers, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, AccessKeys, op.user.uinfo.access_keys, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, SwiftKeys, op.user.uinfo.swift_keys, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, SubUsers, op.user.uinfo.subusers, sdb);
 
   op.user.uinfo.suspended = sqlite3_column_int(stmt, Suspended);
   op.user.uinfo.max_buckets = sqlite3_column_int(stmt, MaxBuckets);
   op.user.uinfo.op_mask = sqlite3_column_int(stmt, OpMask);
 
-  SQL_DECODE_BLOB_PARAM(stmt, UserCaps, op.user.uinfo.caps, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, UserCaps, op.user.uinfo.caps, sdb);
 
   op.user.uinfo.admin = sqlite3_column_int(stmt, Admin);
   op.user.uinfo.system = sqlite3_column_int(stmt, System);
@@ -268,31 +268,31 @@ static int list_user(DBOpInfo &op, sqlite3_stmt *stmt) {
 
   op.user.uinfo.default_placement.storage_class = (const char*)sqlite3_column_text(stmt, PlacementStorageClass);
 
-  SQL_DECODE_BLOB_PARAM(stmt, PlacementTags, op.user.uinfo.placement_tags, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, PlacementTags, op.user.uinfo.placement_tags, sdb);
 
-  SQL_DECODE_BLOB_PARAM(stmt, BucketQuota, op.user.uinfo.bucket_quota, sdb);
-  SQL_DECODE_BLOB_PARAM(stmt, TempURLKeys, op.user.uinfo.temp_url_keys, sdb);
-  SQL_DECODE_BLOB_PARAM(stmt, UserQuota, op.user.uinfo.user_quota, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, BucketQuota, op.user.uinfo.bucket_quota, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, TempURLKeys, op.user.uinfo.temp_url_keys, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, UserQuota, op.user.uinfo.user_quota, sdb);
 
   op.user.uinfo.type = sqlite3_column_int(stmt, TYPE);
 
-  SQL_DECODE_BLOB_PARAM(stmt, MfaIDs, op.user.uinfo.mfa_ids, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, MfaIDs, op.user.uinfo.mfa_ids, sdb);
 
   op.user.uinfo.assumed_role_arn = (const char*)sqlite3_column_text(stmt, AssumedRoleARN);
 
-  SQL_DECODE_BLOB_PARAM(stmt, UserAttrs, op.user.user_attrs, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, UserAttrs, op.user.user_attrs, sdb);
   op.user.user_version.ver = sqlite3_column_int(stmt, UserVersion);
   op.user.user_version.tag = (const char*)sqlite3_column_text(stmt, UserVersionTag);
 
   return 0;
 }
 
-static int list_bucket(DBOpInfo &op, sqlite3_stmt *stmt) {
+static int list_bucket(CephContext *cct, DBOpInfo &op, sqlite3_stmt *stmt) {
   if (!stmt)
     return -1;
 
-  cout<<sqlite3_column_text(stmt, 0)<<", ";
 cout<<sqlite3_column_text(stmt, 1)<<"\n";
// cout<<sqlite3_column_text(stmt, 0)<<", ";
// cout<<sqlite3_column_text(stmt, 1) << dbendl;
 
   op.bucket.ent.bucket.name = (const char*)sqlite3_column_text(stmt, BucketName);
   op.bucket.ent.bucket.tenant = (const char*)sqlite3_column_text(stmt, Bucket_Tenant);
@@ -300,7 +300,7 @@ static int list_bucket(DBOpInfo &op, sqlite3_stmt *stmt) {
   op.bucket.ent.bucket.bucket_id = (const char*)sqlite3_column_text(stmt, BucketID);
   op.bucket.ent.size = sqlite3_column_int(stmt, Size);
   op.bucket.ent.size_rounded = sqlite3_column_int(stmt, SizeRounded);
-  SQL_DECODE_BLOB_PARAM(stmt, CreationTime, op.bucket.ent.creation_time, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, CreationTime, op.bucket.ent.creation_time, sdb);
   op.bucket.ent.count = sqlite3_column_int(stmt, Count);
   op.bucket.ent.placement_rule.name = (const char*)sqlite3_column_text(stmt, Bucket_PlacementName);
   op.bucket.ent.placement_rule.storage_class = (const char*)sqlite3_column_text(stmt, Bucket_PlacementStorageClass);
@@ -320,17 +320,17 @@ static int list_bucket(DBOpInfo &op, sqlite3_stmt *stmt) {
   op.bucket.info.zonegroup = (const char*)sqlite3_column_text(stmt, Zonegroup);
   op.bucket.info.has_instance_obj = sqlite3_column_int(stmt, HasInstanceObj);
 
-  SQL_DECODE_BLOB_PARAM(stmt, Quota, op.bucket.info.quota, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, Quota, op.bucket.info.quota, sdb);
   op.bucket.info.requester_pays = sqlite3_column_int(stmt, RequesterPays);
   op.bucket.info.has_website = sqlite3_column_int(stmt, HasWebsite);
-  SQL_DECODE_BLOB_PARAM(stmt, WebsiteConf, op.bucket.info.website_conf, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, WebsiteConf, op.bucket.info.website_conf, sdb);
   op.bucket.info.swift_versioning = sqlite3_column_int(stmt, SwiftVersioning);
   op.bucket.info.swift_ver_location = (const char*)sqlite3_column_text(stmt, SwiftVerLocation);
-  SQL_DECODE_BLOB_PARAM(stmt, MdsearchConfig, op.bucket.info.mdsearch_config, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, MdsearchConfig, op.bucket.info.mdsearch_config, sdb);
   op.bucket.info.new_bucket_instance_id = (const char*)sqlite3_column_text(stmt, NewBucketInstanceID);
-  SQL_DECODE_BLOB_PARAM(stmt, ObjectLock, op.bucket.info.obj_lock, sdb);
-  SQL_DECODE_BLOB_PARAM(stmt, SyncPolicyInfoGroups, op.bucket.info.sync_policy, sdb);
-  SQL_DECODE_BLOB_PARAM(stmt, BucketAttrs, op.bucket.bucket_attrs, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, ObjectLock, op.bucket.info.obj_lock, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, SyncPolicyInfoGroups, op.bucket.info.sync_policy, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, BucketAttrs, op.bucket.bucket_attrs, sdb);
   op.bucket.bucket_version.ver = sqlite3_column_int(stmt, BucketVersion);
   op.bucket.bucket_version.tag = (const char*)sqlite3_column_text(stmt, BucketVersionTag);
 
@@ -340,24 +340,24 @@ static int list_bucket(DBOpInfo &op, sqlite3_stmt *stmt) {
   op.bucket.info.objv_tracker.read_version = op.bucket.bucket_version;
   op.bucket.info.objv_tracker.write_version = op.bucket.bucket_version;
 
-  SQL_DECODE_BLOB_PARAM(stmt, Mtime, op.bucket.mtime, sdb);
+  SQL_DECODE_BLOB_PARAM(cct, stmt, Mtime, op.bucket.mtime, sdb);
 
   op.bucket.list_entries.push_back(op.bucket.ent);
 
   return 0;
 }
 
-static int list_object(DBOpInfo &op, sqlite3_stmt *stmt) {
+static int list_object(CephContext *cct, DBOpInfo &op, sqlite3_stmt *stmt) {
   if (!stmt)
     return -1;
 
-  cout<<sqlite3_column_text(stmt, 0)<<", ";
 cout<<sqlite3_column_text(stmt, 1)<<"\n";
// cout<<sqlite3_column_text(stmt, 0)<<", ";
// cout<<sqlite3_column_text(stmt, 1) << dbendl;
 
   return 0;
 }
 
-static int get_objectdata(DBOpInfo &op, sqlite3_stmt *stmt) {
+static int get_objectdata(CephContext *cct, DBOpInfo &op, sqlite3_stmt *stmt) {
   if (!stmt)
     return -1;
 
@@ -367,14 +367,14 @@ static int get_objectdata(DBOpInfo &op, sqlite3_stmt *stmt) {
   blob = sqlite3_column_blob(stmt, 3);
   datalen = sqlite3_column_bytes(stmt, 3);
 
-  cout<<sqlite3_column_text(stmt, 0)<<", ";
/* cout<<sqlite3_column_text(stmt, 0)<<", ";
   cout<<sqlite3_column_text(stmt, 1)<<",";
-  cout<<sqlite3_column_int(stmt, 2)<<",";
+  cout<<sqlite3_column_int(stmt, 2)<<",";*/
   char data[datalen+1] = {};
   if (blob)
     strncpy(data, (const char *)blob, datalen);
 
-  cout<<data<<","<<datalen<<"\n";
+//  cout<<data<<","<<datalen << dbendl;
 
   return 0;
 }
@@ -382,14 +382,14 @@ static int get_objectdata(DBOpInfo &op, sqlite3_stmt *stmt) {
 int SQLiteDB::InitializeDBOps()
 {
   (void)createTables();
-  dbops.InsertUser = new SQLInsertUser(&this->db);
-  dbops.RemoveUser = new SQLRemoveUser(&this->db);
-  dbops.GetUser = new SQLGetUser(&this->db);
-  dbops.InsertBucket = new SQLInsertBucket(&this->db);
-  dbops.UpdateBucket = new SQLUpdateBucket(&this->db);
-  dbops.RemoveBucket = new SQLRemoveBucket(&this->db);
-  dbops.GetBucket = new SQLGetBucket(&this->db);
-  dbops.ListUserBuckets = new SQLListUserBuckets(&this->db);
+  dbops.InsertUser = new SQLInsertUser(&this->db, cct);
+  dbops.RemoveUser = new SQLRemoveUser(&this->db, cct);
+  dbops.GetUser = new SQLGetUser(&this->db, cct);
+  dbops.InsertBucket = new SQLInsertBucket(&this->db, cct);
+  dbops.UpdateBucket = new SQLUpdateBucket(&this->db, cct);
+  dbops.RemoveBucket = new SQLRemoveBucket(&this->db, cct);
+  dbops.GetBucket = new SQLGetBucket(&this->db, cct);
+  dbops.ListUserBuckets = new SQLListUserBuckets(&this->db, cct);
 
   return 0;
 }
@@ -413,9 +413,9 @@ void *SQLiteDB::openDB()
   string dbname;
   int rc = 0;
 
-  dbname       = getDBname();
+  dbname = getDBname();
   if (dbname.empty()) {
-    dbout(L_ERR)<<"dbname is NULL\n";
+    dbout(cct, 0)<<"dbname is NULL" << dbendl;
     goto out;
   }
 
@@ -426,10 +426,10 @@ void *SQLiteDB::openDB()
       NULL);
 
   if (rc) {
-    dbout(L_ERR)<<"Cant open "<<dbname<<"; Errmsg - "\
-      <<sqlite3_errmsg((sqlite3*)db)<<"\n";
+    dbout(cct, 0) <<"Cant open "<<dbname<<"; Errmsg - "\
+      <<sqlite3_errmsg((sqlite3*)db) <<  dbendl;
   } else {
-    dbout(L_DEBUG)<<"Opened database("<<dbname<<") successfully\n";
+    dbout(cct, 0) <<"Opened database("<<dbname<<") successfully" <<  dbendl;
   }
 
   exec("PRAGMA foreign_keys=ON", NULL);
@@ -462,7 +462,7 @@ int SQLiteDB::Reset(sqlite3_stmt *stmt)
 }
 
 int SQLiteDB::Step(DBOpInfo &op, sqlite3_stmt *stmt,
-    int (*cbk)(DBOpInfo &op, sqlite3_stmt *stmt))
+    int (*cbk)(CephContext *cct, DBOpInfo &op, sqlite3_stmt *stmt))
 {
   int ret = -1;
 
@@ -474,19 +474,19 @@ again:
   ret = sqlite3_step(stmt);
 
   if ((ret != SQLITE_DONE) && (ret != SQLITE_ROW)) {
-    dbout(L_ERR)<<"sqlite step failed for stmt("<<stmt \
-      <<"); Errmsg - "<<sqlite3_errmsg((sqlite3*)db)<<"\n";
+    dbout(cct, 0)<<"sqlite step failed for stmt("<<stmt \
+      <<"); Errmsg - "<<sqlite3_errmsg((sqlite3*)db) << dbendl;
     return -1;
   } else if (ret == SQLITE_ROW) {
     if (cbk) {
-      (*cbk)(op, stmt);
+      (*cbk)(ctx(), op, stmt);
     } else {
     }
     goto again;
   }
 
-  dbout(L_FULLDEBUG)<<"sqlite step successfully executed for stmt(" \
-    <<stmt<<")  ret = " << ret <<"\n";
+  dbout(cct, 20)<<"sqlite step successfully executed for stmt(" \
+    <<stmt<<")  ret = " << ret << dbendl;
 
   return 0;
 }
@@ -502,14 +502,14 @@ int SQLiteDB::exec(const char *schema,
 
   ret = sqlite3_exec((sqlite3*)db, schema, callback, 0, &errmsg);
   if (ret != SQLITE_OK) {
-    dbout(L_ERR)<<"sqlite exec failed for schema("<<schema \
-      <<"); Errmsg - "<<errmsg<<"\n";
+    dbout(cct, 0) <<"sqlite exec failed for schema("<<schema \
+      <<"); Errmsg - "<<errmsg <<  dbendl;
     sqlite3_free(errmsg);
     goto out;
   }
   ret = 0;
-  dbout(L_FULLDEBUG)<<"sqlite exec successfully processed for schema(" \
-    <<schema<<")\n";
+  dbout(cct, 10) <<"sqlite exec successfully processed for schema(" \
+    <<schema<<")" <<  dbendl;
 out:
   return ret;
 }
@@ -539,7 +539,7 @@ out:
       DeleteUserTable(&params);
     if (cb)
       DeleteBucketTable(&params);
-    dbout(L_ERR)<<"Creation of tables failed \n";
+    dbout(cct, 0)<<"Creation of tables failed" << dbendl;
   }
 
   return ret;
@@ -554,9 +554,9 @@ int SQLiteDB::createUserTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"CreateUserTable failed \n";
+    dbout(cct, 0)<<"CreateUserTable failed" << dbendl;
 
-  dbout(L_FULLDEBUG)<<"CreateUserTable suceeded \n";
+  dbout(cct, 20)<<"CreateUserTable suceeded" << dbendl;
 
   return ret;
 }
@@ -570,9 +570,9 @@ int SQLiteDB::createBucketTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"CreateBucketTable failed \n";
+    dbout(cct, 0)<<"CreateBucketTable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"CreateBucketTable suceeded \n";
+  dbout(cct, 20)<<"CreateBucketTable suceeded " << dbendl;
 
   return ret;
 }
@@ -586,9 +586,9 @@ int SQLiteDB::createObjectTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"CreateObjectTable failed \n";
+    dbout(cct, 0)<<"CreateObjectTable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"CreateObjectTable suceeded \n";
+  dbout(cct, 20)<<"CreateObjectTable suceeded " << dbendl;
 
   return ret;
 }
@@ -602,9 +602,9 @@ int SQLiteDB::createQuotaTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"CreateQuotaTable failed \n";
+    dbout(cct, 0)<<"CreateQuotaTable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"CreateQuotaTable suceeded \n";
+  dbout(cct, 20)<<"CreateQuotaTable suceeded " << dbendl;
 
   return ret;
 }
@@ -618,9 +618,9 @@ int SQLiteDB::createObjectDataTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"CreateObjectDataTable failed \n";
+    dbout(cct, 0)<<"CreateObjectDataTable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"CreateObjectDataTable suceeded \n";
+  dbout(cct, 20)<<"CreateObjectDataTable suceeded " << dbendl;
 
   return ret;
 }
@@ -634,9 +634,9 @@ int SQLiteDB::DeleteUserTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"DeleteUserTable failed \n";
+    dbout(cct, 0)<<"DeleteUserTable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"DeleteUserTable suceeded \n";
+  dbout(cct, 20)<<"DeleteUserTable suceeded " << dbendl;
 
   return ret;
 }
@@ -650,9 +650,9 @@ int SQLiteDB::DeleteBucketTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"DeletebucketTable failed \n";
+    dbout(cct, 0)<<"DeletebucketTable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"DeletebucketTable suceeded \n";
+  dbout(cct, 20)<<"DeletebucketTable suceeded " << dbendl;
 
   return ret;
 }
@@ -666,9 +666,9 @@ int SQLiteDB::DeleteObjectTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"DeleteObjectTable failed \n";
+    dbout(cct, 0)<<"DeleteObjectTable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"DeleteObjectTable suceeded \n";
+  dbout(cct, 20)<<"DeleteObjectTable suceeded " << dbendl;
 
   return ret;
 }
@@ -682,9 +682,9 @@ int SQLiteDB::DeleteObjectDataTable(DBOpParams *params)
 
   ret = exec(schema.c_str(), NULL);
   if (ret)
-    dbout(L_ERR)<<"DeleteObjectDataTable failed \n";
+    dbout(cct, 0)<<"DeleteObjectDataTable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"DeleteObjectDataTable suceeded \n";
+  dbout(cct, 20)<<"DeleteObjectDataTable suceeded " << dbendl;
 
   return ret;
 }
@@ -695,12 +695,12 @@ int SQLiteDB::ListAllUsers(DBOpParams *params)
   string schema;
 
   schema = ListTableSchema(params->user_table);
 cout<<"########### Listing all Users #############\n";
// cout<<"########### Listing all Users #############" << dbendl;
   ret = exec(schema.c_str(), &list_callback);
   if (ret)
-    dbout(L_ERR)<<"GetUsertable failed \n";
+    dbout(cct, 0)<<"GetUsertable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"GetUserTable suceeded \n";
+  dbout(cct, 20)<<"GetUserTable suceeded " << dbendl;
 
   return ret;
 }
@@ -712,12 +712,12 @@ int SQLiteDB::ListAllBuckets(DBOpParams *params)
 
   schema = ListTableSchema(params->bucket_table);
 
-  cout<<"########### Listing all Buckets #############\n";
+//  cout<<"########### Listing all Buckets #############" << dbendl;
   ret = exec(schema.c_str(), &list_callback);
   if (ret)
-    dbout(L_ERR)<<"Listbuckettable failed \n";
+    dbout(cct, 0)<<"Listbuckettable failed " << dbendl;
 
-  dbout(L_FULLDEBUG)<<"ListbucketTable suceeded \n";
+  dbout(cct, 20)<<"ListbucketTable suceeded " << dbendl;
 
   return ret;
 }
@@ -730,12 +730,12 @@ int SQLiteDB::ListAllObjects(DBOpParams *params)
   map<string, class ObjectOp*> objectmap;
   string bucket;
 
-  cout<<"########### Listing all Objects #############\n";
+  //cout<<"########### Listing all Objects #############" << dbendl;
 
   objectmap = getObjectMap();
 
   if (objectmap.empty())
-    dbout(L_DEBUG)<<"objectmap empty \n";
+    dbout(cct, 20)<<"objectmap empty " << dbendl;
 
   for (iter = objectmap.begin(); iter != objectmap.end(); ++iter) {
     bucket = iter->first;
@@ -745,9 +745,9 @@ int SQLiteDB::ListAllObjects(DBOpParams *params)
 
     ret = exec(schema.c_str(), &list_callback);
     if (ret)
-      dbout(L_ERR)<<"ListObjecttable failed \n";
+      dbout(cct, 0)<<"ListObjecttable failed " << dbendl;
 
-    dbout(L_FULLDEBUG)<<"ListObjectTable suceeded \n";
+    dbout(cct, 20)<<"ListObjectTable suceeded " << dbendl;
   }
 
   return ret;
@@ -755,12 +755,12 @@ int SQLiteDB::ListAllObjects(DBOpParams *params)
 
 int SQLObjectOp::InitializeObjectOps()
 {
-  InsertObject = new SQLInsertObject(sdb);
-  RemoveObject = new SQLRemoveObject(sdb);
-  ListObject = new SQLListObject(sdb);
-  PutObjectData = new SQLPutObjectData(sdb);
-  GetObjectData = new SQLGetObjectData(sdb);
-  DeleteObjectData = new SQLDeleteObjectData(sdb);
+  InsertObject = new SQLInsertObject(sdb, cct);
+  RemoveObject = new SQLRemoveObject(sdb, cct);
+  ListObject = new SQLListObject(sdb, cct);
+  PutObjectData = new SQLPutObjectData(sdb, cct);
+  GetObjectData = new SQLGetObjectData(sdb, cct);
+  DeleteObjectData = new SQLDeleteObjectData(sdb, cct);
 
   return 0;
 }
@@ -783,13 +783,13 @@ int SQLInsertUser::Prepare(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLInsertUser - no db\n";
+    dbout(cct, 0)<<"In SQLInsertUser - no db" << dbendl;
     goto out;
   }
 
   p_params.user_table = params->user_table;
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareInsertUser");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareInsertUser");
 out:
   return ret;
 }
@@ -800,20 +800,20 @@ int SQLInsertUser::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.tenant.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.user_id.tenant.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.tenant.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.user_id.tenant.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_id.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_id.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.ns.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.user_id.ns.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.ns.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.user_id.ns.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.display_name.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.display_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.display_name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.display_name.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_email.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.user_email.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_email.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.user_email.c_str(), sdb);
 
   if (!params->op.user.uinfo.access_keys.empty()) {
     string access_key;
@@ -824,75 +824,75 @@ int SQLInsertUser::Bind(struct DBOpParams *params)
     access_key = k.id;
     key = k.key;
 
-    SQL_BIND_INDEX(stmt, index, p_params.op.user.access_keys_id.c_str(), sdb);
-    SQL_BIND_TEXT(stmt, index, access_key.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.access_keys_id.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), stmt, index, access_key.c_str(), sdb);
 
-    SQL_BIND_INDEX(stmt, index, p_params.op.user.access_keys_secret.c_str(), sdb);
-    SQL_BIND_TEXT(stmt, index, key.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.access_keys_secret.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), stmt, index, key.c_str(), sdb);
 
-    SQL_BIND_INDEX(stmt, index, p_params.op.user.access_keys.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.access_keys, sdb);
+    SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.access_keys.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.access_keys, sdb);
   }
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.swift_keys.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.swift_keys, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.swift_keys.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.swift_keys, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.subusers.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.subusers, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.subusers.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.subusers, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.suspended.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.user.uinfo.suspended, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.suspended.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.user.uinfo.suspended, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.max_buckets.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.user.uinfo.max_buckets, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.max_buckets.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.user.uinfo.max_buckets, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.op_mask.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.user.uinfo.op_mask, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.op_mask.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.user.uinfo.op_mask, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_caps.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.caps, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_caps.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.caps, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.admin.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.user.uinfo.admin, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.admin.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.user.uinfo.admin, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.system.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.user.uinfo.system, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.system.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.user.uinfo.system, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.placement_name.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.default_placement.name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.placement_name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.default_placement.name.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.placement_storage_class.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.default_placement.storage_class.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.placement_storage_class.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.default_placement.storage_class.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.placement_tags.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.placement_tags, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.placement_tags.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.placement_tags, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.bucket_quota.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.bucket_quota, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.bucket_quota.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.bucket_quota, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.temp_url_keys.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.temp_url_keys, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.temp_url_keys.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.temp_url_keys, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_quota.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.user_quota, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_quota.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.user_quota, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.type.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.user.uinfo.type, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.type.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.user.uinfo.type, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.mfa_ids.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.uinfo.mfa_ids, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.mfa_ids.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.uinfo.mfa_ids, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.assumed_role_arn.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.assumed_role_arn.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.assumed_role_arn.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.assumed_role_arn.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_attrs.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.user.user_attrs, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_attrs.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.user.user_attrs, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_ver.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.user.user_version.ver, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_ver.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.user.user_version.ver, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_ver_tag.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.user_version.tag.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_ver_tag.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.user_version.tag.c_str(), sdb);
 
 out:
   return rc;
@@ -913,13 +913,13 @@ int SQLRemoveUser::Prepare(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLRemoveUser - no db\n";
+    dbout(cct, 0)<<"In SQLRemoveUser - no db" << dbendl;
     goto out;
   }
 
   p_params.user_table = params->user_table;
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareRemoveUser");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareRemoveUser");
 out:
   return ret;
 }
@@ -930,8 +930,8 @@ int SQLRemoveUser::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_id.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_id.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
 
 out:
   return rc;
@@ -952,7 +952,7 @@ int SQLGetUser::Prepare(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLGetUser - no db\n";
+    dbout(cct, 0)<<"In SQLGetUser - no db" << dbendl;
     goto out;
   }
 
@@ -960,13 +960,13 @@ int SQLGetUser::Prepare(struct DBOpParams *params)
   p_params.op.query_str = params->op.query_str;
 
   if (params->op.query_str == "email") { 
-    SQL_PREPARE(p_params, sdb, email_stmt, ret, "PrepareGetUser");
+    SQL_PREPARE(ctx(), p_params, sdb, email_stmt, ret, "PrepareGetUser");
   } else if (params->op.query_str == "access_key") { 
-    SQL_PREPARE(p_params, sdb, ak_stmt, ret, "PrepareGetUser");
+    SQL_PREPARE(ctx(), p_params, sdb, ak_stmt, ret, "PrepareGetUser");
   } else if (params->op.query_str == "user_id") { 
-    SQL_PREPARE(p_params, sdb, userid_stmt, ret, "PrepareGetUser");
+    SQL_PREPARE(ctx(), p_params, sdb, userid_stmt, ret, "PrepareGetUser");
   } else { // by default by userid
-    SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareGetUser");
+    SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareGetUser");
   }
 out:
   return ret;
@@ -979,8 +979,8 @@ int SQLGetUser::Bind(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (params->op.query_str == "email") { 
-    SQL_BIND_INDEX(email_stmt, index, p_params.op.user.user_email.c_str(), sdb);
-    SQL_BIND_TEXT(email_stmt, index, params->op.user.uinfo.user_email.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), email_stmt, index, p_params.op.user.user_email.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), email_stmt, index, params->op.user.uinfo.user_email.c_str(), sdb);
   } else if (params->op.query_str == "access_key") { 
     if (!params->op.user.uinfo.access_keys.empty()) {
       string access_key;
@@ -989,21 +989,21 @@ int SQLGetUser::Bind(struct DBOpParams *params)
       const RGWAccessKey& k = it->second;
       access_key = k.id;
 
-      SQL_BIND_INDEX(ak_stmt, index, p_params.op.user.access_keys_id.c_str(), sdb);
-      SQL_BIND_TEXT(ak_stmt, index, access_key.c_str(), sdb);
+      SQL_BIND_INDEX(ctx(), ak_stmt, index, p_params.op.user.access_keys_id.c_str(), sdb);
+      SQL_BIND_TEXT(ctx(), ak_stmt, index, access_key.c_str(), sdb);
     }
   } else if (params->op.query_str == "user_id") { 
-    SQL_BIND_INDEX(userid_stmt, index, p_params.op.user.tenant.c_str(), sdb);
-    SQL_BIND_TEXT(userid_stmt, index, params->op.user.uinfo.user_id.tenant.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), userid_stmt, index, p_params.op.user.tenant.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), userid_stmt, index, params->op.user.uinfo.user_id.tenant.c_str(), sdb);
 
-    SQL_BIND_INDEX(userid_stmt, index, p_params.op.user.user_id.c_str(), sdb);
-    SQL_BIND_TEXT(userid_stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), userid_stmt, index, p_params.op.user.user_id.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), userid_stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
 
-    SQL_BIND_INDEX(userid_stmt, index, p_params.op.user.ns.c_str(), sdb);
-    SQL_BIND_TEXT(userid_stmt, index, params->op.user.uinfo.user_id.ns.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), userid_stmt, index, p_params.op.user.ns.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), userid_stmt, index, params->op.user.uinfo.user_id.ns.c_str(), sdb);
   } else { // by default by userid
-    SQL_BIND_INDEX(stmt, index, p_params.op.user.user_id.c_str(), sdb);
-    SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_id.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
   }
 
 out:
@@ -1034,13 +1034,13 @@ int SQLInsertBucket::Prepare(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLInsertBucket - no db\n";
+    dbout(cct, 0)<<"In SQLInsertBucket - no db" << dbendl;
     goto out;
   }
 
   p_params.bucket_table = params->bucket_table;
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareInsertBucket");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareInsertBucket");
 
 out:
   return ret;
@@ -1052,89 +1052,89 @@ int SQLInsertBucket::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_id.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_id.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.tenant.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.tenant.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.tenant.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.tenant.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.marker.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.marker.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.marker.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.marker.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_id.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.bucket_id.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_id.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.bucket_id.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.size.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.ent.size, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.size.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.ent.size, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.size_rounded.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.ent.size_rounded, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.size_rounded.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.ent.size_rounded, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.creation_time.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.bucket.info.creation_time, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.creation_time.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.bucket.info.creation_time, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.count.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.ent.count, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.count.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.ent.count, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.placement_name.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.placement_rule.name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.placement_name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.placement_rule.name.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.placement_storage_class.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.placement_rule.storage_class.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.placement_storage_class.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.placement_rule.storage_class.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.flags.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.info.flags, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.flags.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.info.flags, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.zonegroup.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.zonegroup.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.zonegroup.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.zonegroup.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.has_instance_obj.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.info.has_instance_obj, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.has_instance_obj.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.info.has_instance_obj, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.quota.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.bucket.info.quota, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.quota.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.bucket.info.quota, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.requester_pays.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.info.requester_pays, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.requester_pays.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.info.requester_pays, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.has_website.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.info.has_website, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.has_website.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.info.has_website, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.website_conf.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.bucket.info.website_conf, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.website_conf.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.bucket.info.website_conf, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.swift_versioning.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.info.swift_versioning, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.swift_versioning.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.info.swift_versioning, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.swift_ver_location.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.swift_ver_location.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.swift_ver_location.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.swift_ver_location.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.mdsearch_config.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.bucket.info.mdsearch_config, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.mdsearch_config.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.bucket.info.mdsearch_config, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.new_bucket_instance_id.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.new_bucket_instance_id.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.new_bucket_instance_id.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.new_bucket_instance_id.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.obj_lock.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.bucket.info.obj_lock, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.obj_lock.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.bucket.info.obj_lock, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.sync_policy_info_groups.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.bucket.info.sync_policy, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.sync_policy_info_groups.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.bucket.info.sync_policy, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_attrs.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.bucket.bucket_attrs, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_attrs.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.bucket.bucket_attrs, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_ver.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.bucket.bucket_version.ver, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_ver.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.bucket.bucket_version.ver, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_ver_tag.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.bucket_version.tag.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_ver_tag.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.bucket_version.tag.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.mtime.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(stmt, index, params->op.bucket.mtime, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.mtime.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), stmt, index, params->op.bucket.mtime, sdb);
 
 out:
   return rc;
@@ -1146,7 +1146,7 @@ int SQLInsertBucket::Execute(struct DBOpParams *params)
   class SQLObjectOp *ObPtr = NULL;
   string bucket_name = params->op.bucket.info.bucket.name;
 
-  ObPtr = new SQLObjectOp(sdb);
+  ObPtr = new SQLObjectOp(sdb, ctx());
 
   objectmapInsert(bucket_name, ObPtr);
 
@@ -1165,7 +1165,7 @@ int SQLUpdateBucket::Prepare(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLUpdateBucket - no db\n";
+    dbout(cct, 0)<<"In SQLUpdateBucket - no db" << dbendl;
     goto out;
   }
 
@@ -1173,14 +1173,14 @@ int SQLUpdateBucket::Prepare(struct DBOpParams *params)
   p_params.bucket_table = params->bucket_table;
 
   if (params->op.query_str == "attrs") { 
-    SQL_PREPARE(p_params, sdb, attrs_stmt, ret, "PrepareUpdateBucket");
+    SQL_PREPARE(ctx(), p_params, sdb, attrs_stmt, ret, "PrepareUpdateBucket");
   } else if (params->op.query_str == "owner") { 
-    SQL_PREPARE(p_params, sdb, owner_stmt, ret, "PrepareUpdateBucket");
+    SQL_PREPARE(ctx(), p_params, sdb, owner_stmt, ret, "PrepareUpdateBucket");
   } else if (params->op.query_str == "info") { 
-    SQL_PREPARE(p_params, sdb, info_stmt, ret, "PrepareUpdateBucket");
+    SQL_PREPARE(ctx(), p_params, sdb, info_stmt, ret, "PrepareUpdateBucket");
   } else {
-    dbout(L_ERR)<<"In SQLUpdateBucket invalid query_str:" <<
-      params->op.query_str << "\n";
+    dbout(cct, 0)<<"In SQLUpdateBucket invalid query_str:" <<
+      params->op.query_str << "" << dbendl;
     goto out;
   }
 
@@ -1203,90 +1203,90 @@ int SQLUpdateBucket::Bind(struct DBOpParams *params)
   } else if (params->op.query_str == "info") { 
     stmt = &info_stmt;
   } else {
-    dbout(L_ERR)<<"In SQLUpdateBucket invalid query_str:" <<
-      params->op.query_str << "\n";
+    dbout(cct, 0)<<"In SQLUpdateBucket invalid query_str:" <<
+      params->op.query_str << "" << dbendl;
     goto out;
   }
 
   if (params->op.query_str == "attrs") { 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.bucket_attrs.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.bucket_attrs, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.bucket_attrs.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.bucket_attrs, sdb);
   } else if (params->op.query_str == "owner") { 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.creation_time.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.info.creation_time, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.creation_time.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.info.creation_time, sdb);
   } else if (params->op.query_str == "info") { 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.tenant.c_str(), sdb);
-    SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.bucket.tenant.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.tenant.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.bucket.tenant.c_str(), sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.marker.c_str(), sdb);
-    SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.bucket.marker.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.marker.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.bucket.marker.c_str(), sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.bucket_id.c_str(), sdb);
-    SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.bucket.bucket_id.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.bucket_id.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.bucket.bucket_id.c_str(), sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.creation_time.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.info.creation_time, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.creation_time.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.info.creation_time, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.count.c_str(), sdb);
-    SQL_BIND_INT(*stmt, index, params->op.bucket.ent.count, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.count.c_str(), sdb);
+    SQL_BIND_INT(ctx(), *stmt, index, params->op.bucket.ent.count, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.placement_name.c_str(), sdb);
-    SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.placement_rule.name.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.placement_name.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.placement_rule.name.c_str(), sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.placement_storage_class.c_str(), sdb);
-    SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.placement_rule.storage_class.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.placement_storage_class.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.placement_rule.storage_class.c_str(), sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.flags.c_str(), sdb);
-    SQL_BIND_INT(*stmt, index, params->op.bucket.info.flags, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.flags.c_str(), sdb);
+    SQL_BIND_INT(ctx(), *stmt, index, params->op.bucket.info.flags, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.zonegroup.c_str(), sdb);
-    SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.zonegroup.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.zonegroup.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.zonegroup.c_str(), sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.has_instance_obj.c_str(), sdb);
-    SQL_BIND_INT(*stmt, index, params->op.bucket.info.has_instance_obj, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.has_instance_obj.c_str(), sdb);
+    SQL_BIND_INT(ctx(), *stmt, index, params->op.bucket.info.has_instance_obj, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.quota.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.info.quota, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.quota.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.info.quota, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.requester_pays.c_str(), sdb);
-    SQL_BIND_INT(*stmt, index, params->op.bucket.info.requester_pays, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.requester_pays.c_str(), sdb);
+    SQL_BIND_INT(ctx(), *stmt, index, params->op.bucket.info.requester_pays, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.has_website.c_str(), sdb);
-    SQL_BIND_INT(*stmt, index, params->op.bucket.info.has_website, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.has_website.c_str(), sdb);
+    SQL_BIND_INT(ctx(), *stmt, index, params->op.bucket.info.has_website, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.website_conf.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.info.website_conf, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.website_conf.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.info.website_conf, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.swift_versioning.c_str(), sdb);
-    SQL_BIND_INT(*stmt, index, params->op.bucket.info.swift_versioning, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.swift_versioning.c_str(), sdb);
+    SQL_BIND_INT(ctx(), *stmt, index, params->op.bucket.info.swift_versioning, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.swift_ver_location.c_str(), sdb);
-    SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.swift_ver_location.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.swift_ver_location.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.swift_ver_location.c_str(), sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.mdsearch_config.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.info.mdsearch_config, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.mdsearch_config.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.info.mdsearch_config, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.new_bucket_instance_id.c_str(), sdb);
-    SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.new_bucket_instance_id.c_str(), sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.new_bucket_instance_id.c_str(), sdb);
+    SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.new_bucket_instance_id.c_str(), sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.obj_lock.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.info.obj_lock, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.obj_lock.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.info.obj_lock, sdb);
 
-    SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.sync_policy_info_groups.c_str(), sdb);
-    SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.info.sync_policy, sdb);
+    SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.sync_policy_info_groups.c_str(), sdb);
+    SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.info.sync_policy, sdb);
   }
 
-  SQL_BIND_INDEX(*stmt, index, p_params.op.user.user_id.c_str(), sdb);
-  SQL_BIND_TEXT(*stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.user.user_id.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), *stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
 
-  SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
-  SQL_BIND_TEXT(*stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), *stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 
-  SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.bucket_ver.c_str(), sdb);
-  SQL_BIND_INT(*stmt, index, params->op.bucket.bucket_version.ver, sdb);
+  SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.bucket_ver.c_str(), sdb);
+  SQL_BIND_INT(ctx(), *stmt, index, params->op.bucket.bucket_version.ver, sdb);
 
-  SQL_BIND_INDEX(*stmt, index, p_params.op.bucket.mtime.c_str(), sdb);
-  SQL_ENCODE_BLOB_PARAM(*stmt, index, params->op.bucket.mtime, sdb);
+  SQL_BIND_INDEX(ctx(), *stmt, index, p_params.op.bucket.mtime.c_str(), sdb);
+  SQL_ENCODE_BLOB_PARAM(ctx(), *stmt, index, params->op.bucket.mtime, sdb);
 
 out:
   return rc;
@@ -1304,8 +1304,8 @@ int SQLUpdateBucket::Execute(struct DBOpParams *params)
   } else if (params->op.query_str == "info") { 
     stmt = &info_stmt;
   } else {
-    dbout(L_ERR)<<"In SQLUpdateBucket invalid query_str:" <<
-      params->op.query_str << "\n";
+    dbout(cct, 0)<<"In SQLUpdateBucket invalid query_str:" <<
+      params->op.query_str << "" << dbendl;
     goto out;
   }
 
@@ -1320,13 +1320,13 @@ int SQLRemoveBucket::Prepare(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLRemoveBucket - no db\n";
+    dbout(cct, 0)<<"In SQLRemoveBucket - no db" << dbendl;
     goto out;
   }
 
   p_params.bucket_table = params->bucket_table;
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareRemoveBucket");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareRemoveBucket");
 
 out:
   return ret;
@@ -1338,9 +1338,9 @@ int SQLRemoveBucket::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 
 out:
   return rc;
@@ -1363,14 +1363,14 @@ int SQLGetBucket::Prepare(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLGetBucket - no db\n";
+    dbout(cct, 0)<<"In SQLGetBucket - no db" << dbendl;
     goto out;
   }
 
   p_params.bucket_table = params->bucket_table;
   p_params.user_table = params->user_table;
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareGetBucket");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareGetBucket");
 
 out:
   return ret;
@@ -1382,9 +1382,9 @@ int SQLGetBucket::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 
 out:
   return rc;
@@ -1406,13 +1406,13 @@ int SQLListUserBuckets::Prepare(struct DBOpParams *params)
   struct DBOpPrepareParams p_params = PrepareParams;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLListUserBuckets - no db\n";
+    dbout(cct, 0)<<"In SQLListUserBuckets - no db" << dbendl;
     goto out;
   }
 
   p_params.bucket_table = params->bucket_table;
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareListUserBuckets");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareListUserBuckets");
 
 out:
   return ret;
@@ -1424,14 +1424,14 @@ int SQLListUserBuckets::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.user.user_id.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.user.user_id.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.user.uinfo.user_id.id.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.min_marker.c_str(), sdb);
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.min_marker.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.min_marker.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.min_marker.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.list_max_count.c_str(), sdb);
-  SQL_BIND_INT(stmt, index, params->op.list_max_count, sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.list_max_count.c_str(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->op.list_max_count, sdb);
 
 out:
   return rc;
@@ -1454,14 +1454,14 @@ int SQLInsertObject::Prepare(struct DBOpParams *params)
   string bucket_name;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLInsertObject - no db\n";
+    dbout(cct, 0)<<"In SQLInsertObject - no db" << dbendl;
     goto out;
   }
 
   bucket_name = params->op.bucket.info.bucket.name;
   p_params.object_table = bucket_name + ".object.table";
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareInsertObject");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareInsertObject");
 
 out:
   return ret;
@@ -1473,13 +1473,13 @@ int SQLInsertObject::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.object.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.object.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->object.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->object.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 
 out:
   return rc;
@@ -1502,7 +1502,7 @@ int SQLRemoveObject::Prepare(struct DBOpParams *params)
   string bucket_name;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLRemoveObject - no db\n";
+    dbout(cct, 0)<<"In SQLRemoveObject - no db" << dbendl;
     goto out;
   }
 
@@ -1512,7 +1512,7 @@ int SQLRemoveObject::Prepare(struct DBOpParams *params)
 
   (void)createObjectTable(&copy);
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareRemoveObject");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareRemoveObject");
 
 out:
   return ret;
@@ -1524,13 +1524,13 @@ int SQLRemoveObject::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.object.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.object.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->object.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->object.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 
 out:
   return rc;
@@ -1553,7 +1553,7 @@ int SQLListObject::Prepare(struct DBOpParams *params)
   string bucket_name;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLListObject - no db\n";
+    dbout(cct, 0)<<"In SQLListObject - no db" << dbendl;
     goto out;
   }
 
@@ -1564,7 +1564,7 @@ int SQLListObject::Prepare(struct DBOpParams *params)
   (void)createObjectTable(&copy);
 
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareListObject");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareListObject");
 
 out:
   return ret;
@@ -1576,13 +1576,13 @@ int SQLListObject::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.object.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.object.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->object.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->object.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 
 out:
   return rc;
@@ -1605,7 +1605,7 @@ int SQLPutObjectData::Prepare(struct DBOpParams *params)
   string bucket_name;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLPutObjectData - no db\n";
+    dbout(cct, 0)<<"In SQLPutObjectData - no db" << dbendl;
     goto out;
   }
 
@@ -1617,7 +1617,7 @@ int SQLPutObjectData::Prepare(struct DBOpParams *params)
 
   (void)createObjectDataTable(&copy);
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PreparePutObjectData");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PreparePutObjectData");
 
 out:
   return ret;
@@ -1629,25 +1629,25 @@ int SQLPutObjectData::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.object.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.object.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->object.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->object.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.offset.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.offset.c_str(), sdb);
 
-  SQL_BIND_INT(stmt, 3, params->offset, sdb);
+  SQL_BIND_INT(ctx(), stmt, 3, params->offset, sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.data.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.data.c_str(), sdb);
 
-  SQL_BIND_BLOB(stmt, index, params->data.c_str(), params->data.length(), sdb);
+  SQL_BIND_BLOB(ctx(), stmt, index, params->data.c_str(), params->data.length(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.datalen.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.datalen.c_str(), sdb);
 
-  SQL_BIND_INT(stmt, index, params->data.length(), sdb);
+  SQL_BIND_INT(ctx(), stmt, index, params->data.length(), sdb);
 
 out:
   return rc;
@@ -1670,7 +1670,7 @@ int SQLGetObjectData::Prepare(struct DBOpParams *params)
   string bucket_name;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLGetObjectData - no db\n";
+    dbout(cct, 0)<<"In SQLGetObjectData - no db" << dbendl;
     goto out;
   }
 
@@ -1682,7 +1682,7 @@ int SQLGetObjectData::Prepare(struct DBOpParams *params)
 
   (void)createObjectDataTable(&copy);
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareGetObjectData");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareGetObjectData");
 
 out:
   return ret;
@@ -1694,13 +1694,13 @@ int SQLGetObjectData::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.object.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.object.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->object.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->object.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 out:
   return rc;
 }
@@ -1722,7 +1722,7 @@ int SQLDeleteObjectData::Prepare(struct DBOpParams *params)
   string bucket_name;
 
   if (!*sdb) {
-    dbout(L_ERR)<<"In SQLDeleteObjectData - no db\n";
+    dbout(cct, 0)<<"In SQLDeleteObjectData - no db" << dbendl;
     goto out;
   }
 
@@ -1734,7 +1734,7 @@ int SQLDeleteObjectData::Prepare(struct DBOpParams *params)
 
   (void)createObjectDataTable(&copy);
 
-  SQL_PREPARE(p_params, sdb, stmt, ret, "PrepareDeleteObjectData");
+  SQL_PREPARE(ctx(), p_params, sdb, stmt, ret, "PrepareDeleteObjectData");
 
 out:
   return ret;
@@ -1746,13 +1746,13 @@ int SQLDeleteObjectData::Bind(struct DBOpParams *params)
   int rc = 0;
   struct DBOpPrepareParams p_params = PrepareParams;
 
-  SQL_BIND_INDEX(stmt, index, p_params.object.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.object.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->object.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->object.c_str(), sdb);
 
-  SQL_BIND_INDEX(stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
+  SQL_BIND_INDEX(ctx(), stmt, index, p_params.op.bucket.bucket_name.c_str(), sdb);
 
-  SQL_BIND_TEXT(stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
+  SQL_BIND_TEXT(ctx(), stmt, index, params->op.bucket.info.bucket.name.c_str(), sdb);
 out:
   return rc;
 }
index 70408d80e7483790aa25c5950a85de2a8d4220dd..828595ce0b4f38831c1f049d96fa09e806e27e35 100644 (file)
@@ -16,15 +16,20 @@ class SQLiteDB : public DBStore, public DBOp{
   private:
     sqlite3_mutex *mutex = NULL;
 
+  protected:
+    CephContext *cct;
+
   public:      
     sqlite3_stmt *stmt = NULL;
     DBOpPrepareParams PrepareParams;
 
-    SQLiteDB(string db_name) : DBStore(db_name) {
+    SQLiteDB(string db_name, CephContext *_cct) : DBStore(db_name, _cct) {
+      cct = _cct;
       InitPrepareParams(PrepareParams);
     }
-    SQLiteDB(sqlite3 *dbi) : DBStore() {
+    SQLiteDB(sqlite3 *dbi, CephContext *_cct) : DBStore(_cct) {
       db = (void*)dbi;
+      cct = _cct;
       InitPrepareParams(PrepareParams);
     }
     ~SQLiteDB() {}
@@ -34,14 +39,13 @@ class SQLiteDB : public DBStore, public DBOp{
     void *openDB();
     int closeDB();
     int Step(DBOpInfo &op, sqlite3_stmt *stmt,
-        int (*cbk)(DBOpInfo &op, sqlite3_stmt *stmt));
+        int (*cbk)(CephContext *cct, DBOpInfo &op, sqlite3_stmt *stmt));
     int Reset(sqlite3_stmt *stmt);
     int InitializeDBOps();
     int FreeDBOps();
     /* default value matches with sqliteDB style */
     int InitPrepareParams(DBOpPrepareParams &params) { return 0; }
 
-
     int createTables();
     int createBucketTable(DBOpParams *params);
     int createUserTable(DBOpParams *params);
@@ -62,9 +66,10 @@ class SQLiteDB : public DBStore, public DBOp{
 class SQLObjectOp : public ObjectOp {
   private:
     sqlite3 **sdb = NULL;
+    CephContext *cct;
 
   public:
-    SQLObjectOp(sqlite3 **sdbi) : sdb(sdbi) {};
+    SQLObjectOp(sqlite3 **sdbi, CephContext *_cct) : sdb(sdbi), cct(_cct) {};
     ~SQLObjectOp() {}
 
     int InitializeObjectOps();
@@ -77,7 +82,7 @@ class SQLInsertUser : public SQLiteDB, public InsertUserOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLInsertUser(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
+    SQLInsertUser(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
     ~SQLInsertUser() {
       if (stmt)
         sqlite3_finalize(stmt);
@@ -93,7 +98,7 @@ class SQLRemoveUser : public SQLiteDB, public RemoveUserOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLRemoveUser(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
+    SQLRemoveUser(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
     ~SQLRemoveUser() {
       if (stmt)
         sqlite3_finalize(stmt);
@@ -112,7 +117,7 @@ class SQLGetUser : public SQLiteDB, public GetUserOp {
     sqlite3_stmt *userid_stmt = NULL; // Prepared statement to query by user_id
 
   public:
-    SQLGetUser(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
+    SQLGetUser(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
     ~SQLGetUser() {
       if (stmt)
         sqlite3_finalize(stmt);
@@ -134,7 +139,7 @@ class SQLInsertBucket : public SQLiteDB, public InsertBucketOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLInsertBucket(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
+    SQLInsertBucket(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
     ~SQLInsertBucket() {
       if (stmt)
         sqlite3_finalize(stmt);
@@ -152,7 +157,7 @@ class SQLUpdateBucket : public SQLiteDB, public UpdateBucketOp {
     sqlite3_stmt *owner_stmt = NULL; // Prepared statement
 
   public:
-    SQLUpdateBucket(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
+    SQLUpdateBucket(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
     ~SQLUpdateBucket() {
       if (info_stmt)
         sqlite3_finalize(info_stmt);
@@ -172,7 +177,7 @@ class SQLRemoveBucket : public SQLiteDB, public RemoveBucketOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLRemoveBucket(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
+    SQLRemoveBucket(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
     ~SQLRemoveBucket() {
       if (stmt)
         sqlite3_finalize(stmt);
@@ -188,7 +193,7 @@ class SQLGetBucket : public SQLiteDB, public GetBucketOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLGetBucket(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
+    SQLGetBucket(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
     ~SQLGetBucket() {
       if (stmt)
         sqlite3_finalize(stmt);
@@ -204,7 +209,7 @@ class SQLListUserBuckets : public SQLiteDB, public ListUserBucketsOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLListUserBuckets(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
+    SQLListUserBuckets(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
     ~SQLListUserBuckets() {
       if (stmt)
         sqlite3_finalize(stmt);
@@ -220,8 +225,8 @@ class SQLInsertObject : public SQLiteDB, public InsertObjectOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLInsertObject(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
-    SQLInsertObject(sqlite3 **sdbi) : SQLiteDB(*sdbi), sdb(sdbi) {}
+    SQLInsertObject(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
+    SQLInsertObject(sqlite3 **sdbi, CephContext *cct) : SQLiteDB(*sdbi, cct), sdb(sdbi) {}
 
     ~SQLInsertObject() {
       if (stmt)
@@ -238,8 +243,8 @@ class SQLRemoveObject : public SQLiteDB, public RemoveObjectOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLRemoveObject(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
-    SQLRemoveObject(sqlite3 **sdbi) : SQLiteDB(*sdbi), sdb(sdbi) {}
+    SQLRemoveObject(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
+    SQLRemoveObject(sqlite3 **sdbi, CephContext *cct) : SQLiteDB(*sdbi, cct), sdb(sdbi) {}
 
     ~SQLRemoveObject() {
       if (stmt)
@@ -256,8 +261,8 @@ class SQLListObject : public SQLiteDB, public ListObjectOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLListObject(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
-    SQLListObject(sqlite3 **sdbi) : SQLiteDB(*sdbi), sdb(sdbi) {}
+    SQLListObject(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
+    SQLListObject(sqlite3 **sdbi, CephContext *cct) : SQLiteDB(*sdbi, cct), sdb(sdbi) {}
 
     ~SQLListObject() {
       if (stmt)
@@ -274,8 +279,8 @@ class SQLPutObjectData : public SQLiteDB, public PutObjectDataOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLPutObjectData(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
-    SQLPutObjectData(sqlite3 **sdbi) : SQLiteDB(*sdbi), sdb(sdbi) {}
+    SQLPutObjectData(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
+    SQLPutObjectData(sqlite3 **sdbi, CephContext *cct) : SQLiteDB(*sdbi, cct), sdb(sdbi) {}
 
     ~SQLPutObjectData() {
       if (stmt)
@@ -292,8 +297,8 @@ class SQLGetObjectData : public SQLiteDB, public GetObjectDataOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLGetObjectData(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
-    SQLGetObjectData(sqlite3 **sdbi) : SQLiteDB(*sdbi), sdb(sdbi) {}
+    SQLGetObjectData(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
+    SQLGetObjectData(sqlite3 **sdbi, CephContext *cct) : SQLiteDB(*sdbi, cct), sdb(sdbi) {}
 
     ~SQLGetObjectData() {
       if (stmt)
@@ -310,8 +315,8 @@ class SQLDeleteObjectData : public SQLiteDB, public DeleteObjectDataOp {
     sqlite3_stmt *stmt = NULL; // Prepared statement
 
   public:
-    SQLDeleteObjectData(void **db) : SQLiteDB((sqlite3 *)(*db)), sdb((sqlite3 **)db) {}
-    SQLDeleteObjectData(sqlite3 **sdbi) : SQLiteDB(*sdbi), sdb(sdbi) {}
+    SQLDeleteObjectData(void **db, CephContext *cct) : SQLiteDB((sqlite3 *)(*db), cct), sdb((sqlite3 **)db) {}
+    SQLDeleteObjectData(sqlite3 **sdbi, CephContext *cct) : SQLiteDB(*sdbi, cct), sdb(sdbi) {}
 
     ~SQLDeleteObjectData() {
       if (stmt)
index f99c8addb3c75b5239a2e0eefbe027f5dd7ff9cd..187d364fca0facf91c31d254d0d8af73cdb49f8e 100644 (file)
@@ -6,45 +6,53 @@
 #include <string.h>
 #include <dbstore.h>
 #include <sqliteDB.h>
+#include "rgw_common.h"
 
 using namespace std;
 
-namespace gtest {
-       class Environment* env;
-
-       class Environment : public ::testing::Environment {
-       public:
-               Environment(): tenant("default_ns"), db(nullptr),
-                               db_type("SQLite"), ret(-1) {}
-
-               Environment(string tenantname, string db_typename): 
-                       tenant("tenantname"), db(nullptr),
-                       db_type("db_typename"), ret(-1) {}
-
-               virtual ~Environment() {}
+vector<const char*> args;
 
-               void SetUp() override {
-                       if (!db_type.compare("SQLite")) {
-                               db = new SQLiteDB(tenant);
-                               ASSERT_TRUE(db != nullptr);
+CephContext *cct;
 
-                               ret = db->Initialize("", -1);
-                               ASSERT_GE(ret, 0);
-                       }
-               }
+namespace gtest {
+  class Environment* env;
+
+  class Environment : public ::testing::Environment {
+    public:
+      Environment(): tenant("default_ns"), db(nullptr),
+      db_type("SQLite"), ret(-1) {}
+
+      Environment(string tenantname, string db_typename): 
+        tenant("tenantname"), db(nullptr),
+        db_type("db_typename"), ret(-1) {}
+
+      virtual ~Environment() {}
+
+      void SetUp() override {
+        cct = global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT,
+            CODE_ENVIRONMENT_UTILITY, 1)->get();
+        if (!db_type.compare("SQLite")) {
+          db = new SQLiteDB(tenant, cct);
+          ASSERT_TRUE(db != nullptr);
+          ret = db->Initialize(logfile, loglevel);
+          ASSERT_GE(ret, 0);
+        }
+      }
 
-               void TearDown() override {
-                       if (!db)
-                               return;
-                       db->Destroy();
-                       delete db;
-               }
+      void TearDown() override {
+        if (!db)
+          return;
+        db->Destroy();
+        delete db;
+      }
 
-               string tenant;
-               class DBStore *db;
-               string db_type;
-               int ret;
-       };
+      string tenant;
+      class DBStore *db;
+      string db_type;
+      int ret;
+      string logfile = "rgw_dbstore_tests.log";
+      int loglevel = 30;
+  };
 }
 
 ceph::real_time bucket_mtime = real_clock::now();
@@ -52,623 +60,634 @@ string marker1;
 
 namespace {
 
-       class DBStoreBaseTest : public ::testing::Test {
-       protected:
-               int ret;
-               DBStore *db = nullptr;
-               string user1 = "user1";
-        string user_id1 = "user_id1";
-               string bucket1 = "bucket1";
-               string object1 = "object1";
-               string data = "Hello World";
-               DBOpParams GlobalParams = {};
-
-               DBStoreBaseTest() {}
-               void SetUp() {
-                       db = gtest::env->db;
-                       ASSERT_TRUE(db != nullptr);
-
-                       GlobalParams.op.user.uinfo.display_name = user1;
-                       GlobalParams.op.user.uinfo.user_id.id = user_id1;
-                       GlobalParams.op.bucket.info.bucket.name = bucket1;
-                       GlobalParams.object = object1;
-                       GlobalParams.offset = 0;
-                       GlobalParams.data = data;
-                       GlobalParams.datalen = data.length();
-
-                       /* As of now InitializeParams doesnt do anything
-                        * special based on fop. Hence its okay to do
-                        * global initialization once.
-                        */
-                       ret = db->InitializeParams("", &GlobalParams);
-                       ASSERT_EQ(ret, 0);
-               }
-
-               void TearDown() {
-               }
-       };
+  class DBStoreBaseTest : public ::testing::Test {
+    protected:
+      int ret;
+      DBStore *db = nullptr;
+      string user1 = "user1";
+      string user_id1 = "user_id1";
+      string bucket1 = "bucket1";
+      string object1 = "object1";
+      string data = "Hello World";
+      DBOpParams GlobalParams = {};
+
+      DBStoreBaseTest() {}
+      void SetUp() {
+        db = gtest::env->db;
+        ASSERT_TRUE(db != nullptr);
+
+        GlobalParams.op.user.uinfo.display_name = user1;
+        GlobalParams.op.user.uinfo.user_id.id = user_id1;
+        GlobalParams.op.bucket.info.bucket.name = bucket1;
+        GlobalParams.object = object1;
+        GlobalParams.offset = 0;
+        GlobalParams.data = data;
+        GlobalParams.datalen = data.length();
+
+        /* As of now InitializeParams doesnt do anything
+         * special based on fop. Hence its okay to do
+         * global initialization once.
+         */
+        ret = db->InitializeParams("", &GlobalParams);
+        ASSERT_EQ(ret, 0);
+      }
+
+      void TearDown() {
+      }
+  };
 }
 
 TEST_F(DBStoreBaseTest, InsertUser) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
-
-       params.op.user.uinfo.user_id.tenant = "tenant";
-       params.op.user.uinfo.user_email = "user1@dbstore.com";
-       params.op.user.uinfo.suspended = 123;
-       params.op.user.uinfo.max_buckets = 456;
-       params.op.user.uinfo.assumed_role_arn = "role";
-       params.op.user.uinfo.placement_tags.push_back("tags");
-       RGWAccessKey k1("id1", "key1");
-       RGWAccessKey k2("id2", "key2");
-       params.op.user.uinfo.access_keys["id1"] = k1;
-       params.op.user.uinfo.access_keys["id2"] = k2;
-    params.op.user.user_version.ver = 1;    
-    params.op.user.user_version.tag = "UserTAG";    
-
-       ret = db->ProcessOp("InsertUser", &params);
-       ASSERT_EQ(ret, 0);
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
+
+  params.op.user.uinfo.user_id.tenant = "tenant";
+  params.op.user.uinfo.user_email = "user1@dbstore.com";
+  params.op.user.uinfo.suspended = 123;
+  params.op.user.uinfo.max_buckets = 456;
+  params.op.user.uinfo.assumed_role_arn = "role";
+  params.op.user.uinfo.placement_tags.push_back("tags");
+  RGWAccessKey k1("id1", "key1");
+  RGWAccessKey k2("id2", "key2");
+  params.op.user.uinfo.access_keys["id1"] = k1;
+  params.op.user.uinfo.access_keys["id2"] = k2;
+  params.op.user.user_version.ver = 1;    
+  params.op.user.user_version.tag = "UserTAG";    
+
+  ret = db->ProcessOp("InsertUser", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, GetUser) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
-
-       ret = db->ProcessOp("GetUser", &params);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(params.op.user.uinfo.user_id.tenant, "tenant");
-       ASSERT_EQ(params.op.user.uinfo.user_email, "user1@dbstore.com");
-       ASSERT_EQ(params.op.user.uinfo.user_id.id, "user_id1");
-       ASSERT_EQ(params.op.user.uinfo.suspended, 123);
-       ASSERT_EQ(params.op.user.uinfo.max_buckets, 456);
-       ASSERT_EQ(params.op.user.uinfo.assumed_role_arn, "role");
-       ASSERT_EQ(params.op.user.uinfo.placement_tags.back(), "tags");
-       RGWAccessKey k;
-       map<string, RGWAccessKey>::iterator it2 = params.op.user.uinfo.access_keys.begin();
-       k = it2->second;
-       ASSERT_EQ(k.id, "id1");
-       ASSERT_EQ(k.key, "key1");
-       it2++;
-       k = it2->second;
-       ASSERT_EQ(k.id, "id2");
-       ASSERT_EQ(k.key, "key2");
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
+
+  ret = db->ProcessOp("GetUser", &params);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(params.op.user.uinfo.user_id.tenant, "tenant");
+  ASSERT_EQ(params.op.user.uinfo.user_email, "user1@dbstore.com");
+  ASSERT_EQ(params.op.user.uinfo.user_id.id, "user_id1");
+  ASSERT_EQ(params.op.user.uinfo.suspended, 123);
+  ASSERT_EQ(params.op.user.uinfo.max_buckets, 456);
+  ASSERT_EQ(params.op.user.uinfo.assumed_role_arn, "role");
+  ASSERT_EQ(params.op.user.uinfo.placement_tags.back(), "tags");
+  RGWAccessKey k;
+  map<string, RGWAccessKey>::iterator it2 = params.op.user.uinfo.access_keys.begin();
+  k = it2->second;
+  ASSERT_EQ(k.id, "id1");
+  ASSERT_EQ(k.key, "key1");
+  it2++;
+  k = it2->second;
+  ASSERT_EQ(k.id, "id2");
+  ASSERT_EQ(k.key, "key2");
 
 }
 
 TEST_F(DBStoreBaseTest, GetUserQuery) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
-
-       params.op.query_str = "email";
-       params.op.user.uinfo.user_email = "user1@dbstore.com";
-
-       ret = db->ProcessOp("GetUser", &params);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(params.op.user.uinfo.user_id.tenant, "tenant");
-       ASSERT_EQ(params.op.user.uinfo.user_email, "user1@dbstore.com");
-       ASSERT_EQ(params.op.user.uinfo.user_id.id, "user_id1");
-       ASSERT_EQ(params.op.user.uinfo.suspended, 123);
-       ASSERT_EQ(params.op.user.uinfo.max_buckets, 456);
-       ASSERT_EQ(params.op.user.uinfo.assumed_role_arn, "role");
-       ASSERT_EQ(params.op.user.uinfo.placement_tags.back(), "tags");
-       RGWAccessKey k;
-       map<string, RGWAccessKey>::iterator it2 = params.op.user.uinfo.access_keys.begin();
-       k = it2->second;
-       ASSERT_EQ(k.id, "id1");
-       ASSERT_EQ(k.key, "key1");
-       it2++;
-       k = it2->second;
-       ASSERT_EQ(k.id, "id2");
-       ASSERT_EQ(k.key, "key2");
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
+
+  params.op.query_str = "email";
+  params.op.user.uinfo.user_email = "user1@dbstore.com";
+
+  ret = db->ProcessOp("GetUser", &params);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(params.op.user.uinfo.user_id.tenant, "tenant");
+  ASSERT_EQ(params.op.user.uinfo.user_email, "user1@dbstore.com");
+  ASSERT_EQ(params.op.user.uinfo.user_id.id, "user_id1");
+  ASSERT_EQ(params.op.user.uinfo.suspended, 123);
+  ASSERT_EQ(params.op.user.uinfo.max_buckets, 456);
+  ASSERT_EQ(params.op.user.uinfo.assumed_role_arn, "role");
+  ASSERT_EQ(params.op.user.uinfo.placement_tags.back(), "tags");
+  RGWAccessKey k;
+  map<string, RGWAccessKey>::iterator it2 = params.op.user.uinfo.access_keys.begin();
+  k = it2->second;
+  ASSERT_EQ(k.id, "id1");
+  ASSERT_EQ(k.key, "key1");
+  it2++;
+  k = it2->second;
+  ASSERT_EQ(k.id, "id2");
+  ASSERT_EQ(k.key, "key2");
 
 }
 
 TEST_F(DBStoreBaseTest, GetUserQueryByEmail) {
-       int ret = -1;
-    RGWUserInfo uinfo;
-    string email = "user1@dbstore.com";
-    map<std::string, bufferlist> attrs;
-    RGWObjVersionTracker objv;
-
-       ret = db->get_user("email", email, uinfo, &attrs, &objv);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(uinfo.user_id.tenant, "tenant");
-       ASSERT_EQ(uinfo.user_email, "user1@dbstore.com");
-       ASSERT_EQ(uinfo.user_id.id, "user_id1");
-       ASSERT_EQ(uinfo.suspended, 123);
-       ASSERT_EQ(uinfo.max_buckets, 456);
-       ASSERT_EQ(uinfo.assumed_role_arn, "role");
-       ASSERT_EQ(uinfo.placement_tags.back(), "tags");
-       RGWAccessKey k;
-       map<string, RGWAccessKey>::iterator it2 = uinfo.access_keys.begin();
-       k = it2->second;
-       ASSERT_EQ(k.id, "id1");
-       ASSERT_EQ(k.key, "key1");
-       it2++;
-       k = it2->second;
-       ASSERT_EQ(k.id, "id2");
-       ASSERT_EQ(k.key, "key2");
-    ASSERT_EQ(objv.read_version.ver, 1);
+  int ret = -1;
+  RGWUserInfo uinfo;
+  string email = "user1@dbstore.com";
+  map<std::string, bufferlist> attrs;
+  RGWObjVersionTracker objv;
+
+  ret = db->get_user("email", email, uinfo, &attrs, &objv);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(uinfo.user_id.tenant, "tenant");
+  ASSERT_EQ(uinfo.user_email, "user1@dbstore.com");
+  ASSERT_EQ(uinfo.user_id.id, "user_id1");
+  ASSERT_EQ(uinfo.suspended, 123);
+  ASSERT_EQ(uinfo.max_buckets, 456);
+  ASSERT_EQ(uinfo.assumed_role_arn, "role");
+  ASSERT_EQ(uinfo.placement_tags.back(), "tags");
+  RGWAccessKey k;
+  map<string, RGWAccessKey>::iterator it2 = uinfo.access_keys.begin();
+  k = it2->second;
+  ASSERT_EQ(k.id, "id1");
+  ASSERT_EQ(k.key, "key1");
+  it2++;
+  k = it2->second;
+  ASSERT_EQ(k.id, "id2");
+  ASSERT_EQ(k.key, "key2");
+  ASSERT_EQ(objv.read_version.ver, 1);
 }
 
 TEST_F(DBStoreBaseTest, GetUserQueryByAccessKey) {
-       int ret = -1;
-    RGWUserInfo uinfo;
-    string key = "id1";
-
-       ret = db->get_user("access_key", key, uinfo, nullptr, nullptr);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(uinfo.user_id.tenant, "tenant");
-       ASSERT_EQ(uinfo.user_email, "user1@dbstore.com");
-       ASSERT_EQ(uinfo.user_id.id, "user_id1");
-       ASSERT_EQ(uinfo.suspended, 123);
-       ASSERT_EQ(uinfo.max_buckets, 456);
-       ASSERT_EQ(uinfo.assumed_role_arn, "role");
-       ASSERT_EQ(uinfo.placement_tags.back(), "tags");
-       RGWAccessKey k;
-       map<string, RGWAccessKey>::iterator it2 = uinfo.access_keys.begin();
-       k = it2->second;
-       ASSERT_EQ(k.id, "id1");
-       ASSERT_EQ(k.key, "key1");
-       it2++;
-       k = it2->second;
-       ASSERT_EQ(k.id, "id2");
-       ASSERT_EQ(k.key, "key2");
+  int ret = -1;
+  RGWUserInfo uinfo;
+  string key = "id1";
+
+  ret = db->get_user("access_key", key, uinfo, nullptr, nullptr);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(uinfo.user_id.tenant, "tenant");
+  ASSERT_EQ(uinfo.user_email, "user1@dbstore.com");
+  ASSERT_EQ(uinfo.user_id.id, "user_id1");
+  ASSERT_EQ(uinfo.suspended, 123);
+  ASSERT_EQ(uinfo.max_buckets, 456);
+  ASSERT_EQ(uinfo.assumed_role_arn, "role");
+  ASSERT_EQ(uinfo.placement_tags.back(), "tags");
+  RGWAccessKey k;
+  map<string, RGWAccessKey>::iterator it2 = uinfo.access_keys.begin();
+  k = it2->second;
+  ASSERT_EQ(k.id, "id1");
+  ASSERT_EQ(k.key, "key1");
+  it2++;
+  k = it2->second;
+  ASSERT_EQ(k.id, "id2");
+  ASSERT_EQ(k.key, "key2");
 }
 
 TEST_F(DBStoreBaseTest, StoreUser) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
-    RGWUserInfo uinfo, old_uinfo;
-    map<std::string, bufferlist> attrs;
-    RGWObjVersionTracker objv_tracker;
-
-    bufferlist attr1, attr2;
-    encode("attrs1", attr1);
-    attrs["attr1"] = attr1;
-    encode("attrs2", attr2);
-    attrs["attr2"] = attr2;
-
-       uinfo.user_id.id = "user_id2";
-       uinfo.user_id.tenant = "tenant";
-       uinfo.user_email = "user2@dbstore.com";
-       uinfo.suspended = 123;
-       uinfo.max_buckets = 456;
-       uinfo.assumed_role_arn = "role";
-       uinfo.placement_tags.push_back("tags");
-       RGWAccessKey k1("id1", "key1");
-       RGWAccessKey k2("id2", "key2");
-       uinfo.access_keys["id1"] = k1;
-       uinfo.access_keys["id2"] = k2;
-
-    /* non exclusive create..should create new one */
-       ret = db->store_user(uinfo, true, &attrs, &objv_tracker, &old_uinfo);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(old_uinfo.user_email, "");
-       ASSERT_EQ(objv_tracker.read_version.ver, 1);
-       ASSERT_EQ(objv_tracker.read_version.tag, "UserTAG");
-
-    /* invalid version number */
-    objv_tracker.read_version.ver = 4;
-       ret = db->store_user(uinfo, true, &attrs, &objv_tracker, &old_uinfo);
-       ASSERT_EQ(ret, -125); /* returns ECANCELED */
-       ASSERT_EQ(old_uinfo.user_id.id, uinfo.user_id.id);
-       ASSERT_EQ(old_uinfo.user_email, uinfo.user_email);
-
-    /* exclusive create..should not create new one */
-       uinfo.user_email = "user2_new@dbstore.com";
-    objv_tracker.read_version.ver = 1;
-       ret = db->store_user(uinfo, true, &attrs, &objv_tracker, &old_uinfo);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(old_uinfo.user_email, "user2@dbstore.com");
-       ASSERT_EQ(objv_tracker.read_version.ver, 1);
-
-       ret = db->store_user(uinfo, false, &attrs, &objv_tracker, &old_uinfo);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(old_uinfo.user_email, "user2@dbstore.com");
-       ASSERT_EQ(objv_tracker.read_version.ver, 2);
-       ASSERT_EQ(objv_tracker.read_version.tag, "UserTAG");
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
+  RGWUserInfo uinfo, old_uinfo;
+  map<std::string, bufferlist> attrs;
+  RGWObjVersionTracker objv_tracker;
+
+  bufferlist attr1, attr2;
+  encode("attrs1", attr1);
+  attrs["attr1"] = attr1;
+  encode("attrs2", attr2);
+  attrs["attr2"] = attr2;
+
+  uinfo.user_id.id = "user_id2";
+  uinfo.user_id.tenant = "tenant";
+  uinfo.user_email = "user2@dbstore.com";
+  uinfo.suspended = 123;
+  uinfo.max_buckets = 456;
+  uinfo.assumed_role_arn = "role";
+  uinfo.placement_tags.push_back("tags");
+  RGWAccessKey k1("id1", "key1");
+  RGWAccessKey k2("id2", "key2");
+  uinfo.access_keys["id1"] = k1;
+  uinfo.access_keys["id2"] = k2;
+
+  /* non exclusive create..should create new one */
+  ret = db->store_user(uinfo, true, &attrs, &objv_tracker, &old_uinfo);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(old_uinfo.user_email, "");
+  ASSERT_EQ(objv_tracker.read_version.ver, 1);
+  ASSERT_EQ(objv_tracker.read_version.tag, "UserTAG");
+
+  /* invalid version number */
+  objv_tracker.read_version.ver = 4;
+  ret = db->store_user(uinfo, true, &attrs, &objv_tracker, &old_uinfo);
+  ASSERT_EQ(ret, -125); /* returns ECANCELED */
+  ASSERT_EQ(old_uinfo.user_id.id, uinfo.user_id.id);
+  ASSERT_EQ(old_uinfo.user_email, uinfo.user_email);
+
+  /* exclusive create..should not create new one */
+  uinfo.user_email = "user2_new@dbstore.com";
+  objv_tracker.read_version.ver = 1;
+  ret = db->store_user(uinfo, true, &attrs, &objv_tracker, &old_uinfo);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(old_uinfo.user_email, "user2@dbstore.com");
+  ASSERT_EQ(objv_tracker.read_version.ver, 1);
+
+  ret = db->store_user(uinfo, false, &attrs, &objv_tracker, &old_uinfo);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(old_uinfo.user_email, "user2@dbstore.com");
+  ASSERT_EQ(objv_tracker.read_version.ver, 2);
+  ASSERT_EQ(objv_tracker.read_version.tag, "UserTAG");
 }
 
 TEST_F(DBStoreBaseTest, GetUserQueryByUserID) {
-       int ret = -1;
-    RGWUserInfo uinfo;
-    map<std::string, bufferlist> attrs;
-    RGWObjVersionTracker objv;
-
-    uinfo.user_id.tenant = "tenant";
-    uinfo.user_id.id = "user_id2";
-
-       ret = db->get_user("user_id", "", uinfo, &attrs, &objv);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(uinfo.user_id.tenant, "tenant");
-       ASSERT_EQ(uinfo.user_email, "user2_new@dbstore.com");
-       ASSERT_EQ(uinfo.user_id.id, "user_id2");
-       ASSERT_EQ(uinfo.suspended, 123);
-       ASSERT_EQ(uinfo.max_buckets, 456);
-       ASSERT_EQ(uinfo.assumed_role_arn, "role");
-       ASSERT_EQ(uinfo.placement_tags.back(), "tags");
-       RGWAccessKey k;
-       map<string, RGWAccessKey>::iterator it = uinfo.access_keys.begin();
-       k = it->second;
-       ASSERT_EQ(k.id, "id1");
-       ASSERT_EQ(k.key, "key1");
-       it++;
-       k = it->second;
-       ASSERT_EQ(k.id, "id2");
-       ASSERT_EQ(k.key, "key2");
-
-    ASSERT_EQ(objv.read_version.ver, 2);
-
-       bufferlist k1, k2;
-    string attr;
-       map<std::string, bufferlist>::iterator it2 = attrs.begin();
-       k1 = it2->second;
-    decode(attr, k1);
-       ASSERT_EQ(attr, "attrs1");
-       it2++;
-       k2 = it2->second;
-    decode(attr, k2);
-       ASSERT_EQ(attr, "attrs2");
+  int ret = -1;
+  RGWUserInfo uinfo;
+  map<std::string, bufferlist> attrs;
+  RGWObjVersionTracker objv;
+
+  uinfo.user_id.tenant = "tenant";
+  uinfo.user_id.id = "user_id2";
+
+  ret = db->get_user("user_id", "", uinfo, &attrs, &objv);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(uinfo.user_id.tenant, "tenant");
+  ASSERT_EQ(uinfo.user_email, "user2_new@dbstore.com");
+  ASSERT_EQ(uinfo.user_id.id, "user_id2");
+  ASSERT_EQ(uinfo.suspended, 123);
+  ASSERT_EQ(uinfo.max_buckets, 456);
+  ASSERT_EQ(uinfo.assumed_role_arn, "role");
+  ASSERT_EQ(uinfo.placement_tags.back(), "tags");
+  RGWAccessKey k;
+  map<string, RGWAccessKey>::iterator it = uinfo.access_keys.begin();
+  k = it->second;
+  ASSERT_EQ(k.id, "id1");
+  ASSERT_EQ(k.key, "key1");
+  it++;
+  k = it->second;
+  ASSERT_EQ(k.id, "id2");
+  ASSERT_EQ(k.key, "key2");
+
+  ASSERT_EQ(objv.read_version.ver, 2);
+
+  bufferlist k1, k2;
+  string attr;
+  map<std::string, bufferlist>::iterator it2 = attrs.begin();
+  k1 = it2->second;
+  decode(attr, k1);
+  ASSERT_EQ(attr, "attrs1");
+  it2++;
+  k2 = it2->second;
+  decode(attr, k2);
+  ASSERT_EQ(attr, "attrs2");
 }
 
 TEST_F(DBStoreBaseTest, ListAllUsers) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ListAllUsers(&params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ListAllUsers(&params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, InsertBucket) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       params.op.bucket.info.bucket.name = "bucket1";
-    params.op.bucket.info.bucket.tenant = "tenant";
-    params.op.bucket.info.bucket.marker = "marker1";
+  params.op.bucket.info.bucket.name = "bucket1";
+  params.op.bucket.info.bucket.tenant = "tenant";
+  params.op.bucket.info.bucket.marker = "marker1";
 
-    params.op.bucket.ent.size = 1024;
+  params.op.bucket.ent.size = 1024;
 
-    params.op.bucket.info.has_instance_obj = false;
-    params.op.bucket.bucket_version.ver = 1;
-    params.op.bucket.bucket_version.tag = "read_tag";
+  params.op.bucket.info.has_instance_obj = false;
+  params.op.bucket.bucket_version.ver = 1;
+  params.op.bucket.bucket_version.tag = "read_tag";
 
-    params.op.bucket.mtime = bucket_mtime;
+  params.op.bucket.mtime = bucket_mtime;
 
-       ret = db->ProcessOp("InsertBucket", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("InsertBucket", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, UpdateBucketAttrs) {
-       int ret = -1;
-    RGWBucketInfo info;
-    map<std::string, bufferlist> attrs;
-    RGWObjVersionTracker objv;
+  int ret = -1;
+  RGWBucketInfo info;
+  map<std::string, bufferlist> attrs;
+  RGWObjVersionTracker objv;
 
-    bufferlist aclbl, aclbl2;
-    encode("attrs1", aclbl);
-    attrs["attr1"] = aclbl;
-    encode("attrs2", aclbl2);
-    attrs["attr2"] = aclbl2;
+  bufferlist aclbl, aclbl2;
+  encode("attrs1", aclbl);
+  attrs["attr1"] = aclbl;
+  encode("attrs2", aclbl2);
+  attrs["attr2"] = aclbl2;
 
-       info.bucket.name = "bucket1";
+  info.bucket.name = "bucket1";
 
-    /* invalid version number */
-    objv.read_version.ver = 4;
-       ret = db->update_bucket("attrs", info, false, nullptr, &attrs, &bucket_mtime, &objv);
-       ASSERT_EQ(ret, -125); /* returns ECANCELED */
+  /* invalid version number */
+  objv.read_version.ver = 4;
+  ret = db->update_bucket("attrs", info, false, nullptr, &attrs, &bucket_mtime, &objv);
+  ASSERT_EQ(ret, -125); /* returns ECANCELED */
 
-    /* right version number */
-    objv.read_version.ver = 1;
-       ret = db->update_bucket("attrs", info, false, nullptr, &attrs, &bucket_mtime, &objv);
-       ASSERT_EQ(ret, 0);
-    ASSERT_EQ(objv.read_version.ver, 2);
+  /* right version number */
+  objv.read_version.ver = 1;
+  ret = db->update_bucket("attrs", info, false, nullptr, &attrs, &bucket_mtime, &objv);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(objv.read_version.ver, 2);
 }
 
 TEST_F(DBStoreBaseTest, BucketChown) {
-       int ret = -1;
-    RGWBucketInfo info;
-    rgw_user user;
-    user.id = "user_id2";
+  int ret = -1;
+  RGWBucketInfo info;
+  rgw_user user;
+  user.id = "user_id2";
 
-       info.bucket.name = "bucket1";
+  info.bucket.name = "bucket1";
 
-       ret = db->update_bucket("owner", info, false, &user, nullptr, &bucket_mtime, nullptr);
-       ASSERT_EQ(ret, 0);
-    ASSERT_EQ(info.objv_tracker.read_version.ver, 3);
+  ret = db->update_bucket("owner", info, false, &user, nullptr, &bucket_mtime, nullptr);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(info.objv_tracker.read_version.ver, 3);
 }
 
 TEST_F(DBStoreBaseTest, UpdateBucketInfo) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
-    RGWBucketInfo info;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
+  RGWBucketInfo info;
 
-       params.op.bucket.info.bucket.name = "bucket1";
+  params.op.bucket.info.bucket.name = "bucket1";
 
-       ret = db->ProcessOp("GetBucket", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("GetBucket", &params);
+  ASSERT_EQ(ret, 0);
 
-    info = params.op.bucket.info;
+  info = params.op.bucket.info;
 
-    info.bucket.marker = "marker2";
-       ret = db->update_bucket("info", info, false, nullptr, nullptr, &bucket_mtime, nullptr);
-       ASSERT_EQ(ret, 0);
-    ASSERT_EQ(info.objv_tracker.read_version.ver, 4);
+  info.bucket.marker = "marker2";
+  ret = db->update_bucket("info", info, false, nullptr, nullptr, &bucket_mtime, nullptr);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(info.objv_tracker.read_version.ver, 4);
 }
 
 TEST_F(DBStoreBaseTest, GetBucket) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
-
-       ret = db->ProcessOp("GetBucket", &params);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(params.op.bucket.info.bucket.name, "bucket1");
-       ASSERT_EQ(params.op.bucket.info.bucket.tenant, "tenant");
-       ASSERT_EQ(params.op.bucket.info.bucket.marker, "marker2");
-       ASSERT_EQ(params.op.bucket.ent.size, 1024);
-       ASSERT_EQ(params.op.bucket.ent.bucket.name, "bucket1");
-       ASSERT_EQ(params.op.bucket.ent.bucket.tenant, "tenant");
-       ASSERT_EQ(params.op.bucket.info.has_instance_obj, false);
-       ASSERT_EQ(params.op.bucket.info.objv_tracker.read_version.ver, 4);
-       ASSERT_EQ(params.op.bucket.info.objv_tracker.read_version.tag, "read_tag");
-       ASSERT_EQ(params.op.bucket.mtime, bucket_mtime);
-       ASSERT_EQ(params.op.bucket.info.owner.id, "user_id2");
-       bufferlist k, k2;
-    string acl;
-       map<std::string, bufferlist>::iterator it2 = params.op.bucket.bucket_attrs.begin();
-       k = it2->second;
-    decode(acl, k);
-       ASSERT_EQ(acl, "attrs1");
-       it2++;
-       k2 = it2->second;
-    decode(acl, k2);
-       ASSERT_EQ(acl, "attrs2");
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
+
+  ret = db->ProcessOp("GetBucket", &params);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(params.op.bucket.info.bucket.name, "bucket1");
+  ASSERT_EQ(params.op.bucket.info.bucket.tenant, "tenant");
+  ASSERT_EQ(params.op.bucket.info.bucket.marker, "marker2");
+  ASSERT_EQ(params.op.bucket.ent.size, 1024);
+  ASSERT_EQ(params.op.bucket.ent.bucket.name, "bucket1");
+  ASSERT_EQ(params.op.bucket.ent.bucket.tenant, "tenant");
+  ASSERT_EQ(params.op.bucket.info.has_instance_obj, false);
+  ASSERT_EQ(params.op.bucket.info.objv_tracker.read_version.ver, 4);
+  ASSERT_EQ(params.op.bucket.info.objv_tracker.read_version.tag, "read_tag");
+  ASSERT_EQ(params.op.bucket.mtime, bucket_mtime);
+  ASSERT_EQ(params.op.bucket.info.owner.id, "user_id2");
+  bufferlist k, k2;
+  string acl;
+  map<std::string, bufferlist>::iterator it2 = params.op.bucket.bucket_attrs.begin();
+  k = it2->second;
+  decode(acl, k);
+  ASSERT_EQ(acl, "attrs1");
+  it2++;
+  k2 = it2->second;
+  decode(acl, k2);
+  ASSERT_EQ(acl, "attrs2");
 }
 
 TEST_F(DBStoreBaseTest, RemoveBucketAPI) {
-       int ret = -1;
-    RGWBucketInfo info;
+  int ret = -1;
+  RGWBucketInfo info;
 
-       info.bucket.name = "bucket1";
+  info.bucket.name = "bucket1";
 
-       ret = db->remove_bucket(info);
-       ASSERT_EQ(ret, 0);
+  ret = db->remove_bucket(info);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, RemoveUserAPI) {
-       int ret = -1;
-    RGWUserInfo uinfo;
-    RGWObjVersionTracker objv;
+  int ret = -1;
+  RGWUserInfo uinfo;
+  RGWObjVersionTracker objv;
 
-    uinfo.user_id.tenant = "tenant";
-    uinfo.user_id.id = "user_id2";
+  uinfo.user_id.tenant = "tenant";
+  uinfo.user_id.id = "user_id2";
 
-    /* invalid version number...should fail */
-    objv.read_version.ver = 4;
-       ret = db->remove_user(uinfo, &objv);
-       ASSERT_EQ(ret, -125);
+  /* invalid version number...should fail */
+  objv.read_version.ver = 4;
+  ret = db->remove_user(uinfo, &objv);
+  ASSERT_EQ(ret, -125);
 
-    /* invalid version number...should fail */
-    objv.read_version.ver = 2;
-       ret = db->remove_user(uinfo, &objv);
-       ASSERT_EQ(ret, 0);
+  /* invalid version number...should fail */
+  objv.read_version.ver = 2;
+  ret = db->remove_user(uinfo, &objv);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, CreateBucket) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
-    RGWBucketInfo info;
-    RGWUserInfo owner;
-    rgw_bucket bucket;
-    obj_version objv;
-    rgw_placement_rule rule;
-    map<std::string, bufferlist> attrs;
-
-    owner.user_id.id = "user_id1";
-    bucket.name = "bucket1";
-    bucket.tenant = "tenant";
-
-    objv.ver = 2;
-    objv.tag = "write_tag";
-
-    rule.name = "rule1";
-    rule.storage_class = "sc1";
-
-       ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
-                            attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
-                            null_yield, NULL, false);
-       ASSERT_EQ(ret, 0);
-    bucket.name = "bucket2";
-       ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
-                            attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
-                            null_yield, NULL, false);
-       ASSERT_EQ(ret, 0);
-    bucket.name = "bucket3";
-       ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
-                            attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
-                            null_yield, NULL, false);
-       ASSERT_EQ(ret, 0);
-    bucket.name = "bucket4";
-       ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
-                            attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
-                            null_yield, NULL, false);
-       ASSERT_EQ(ret, 0);
-    bucket.name = "bucket5";
-       ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
-                            attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
-                            null_yield, NULL, false);
-       ASSERT_EQ(ret, 0);
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
+  RGWBucketInfo info;
+  RGWUserInfo owner;
+  rgw_bucket bucket;
+  obj_version objv;
+  rgw_placement_rule rule;
+  map<std::string, bufferlist> attrs;
+
+  owner.user_id.id = "user_id1";
+  bucket.name = "bucket1";
+  bucket.tenant = "tenant";
+
+  objv.ver = 2;
+  objv.tag = "write_tag";
+
+  rule.name = "rule1";
+  rule.storage_class = "sc1";
+
+  ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
+      attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
+      null_yield, NULL, false);
+  ASSERT_EQ(ret, 0);
+  bucket.name = "bucket2";
+  ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
+      attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
+      null_yield, NULL, false);
+  ASSERT_EQ(ret, 0);
+  bucket.name = "bucket3";
+  ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
+      attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
+      null_yield, NULL, false);
+  ASSERT_EQ(ret, 0);
+  bucket.name = "bucket4";
+  ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
+      attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
+      null_yield, NULL, false);
+  ASSERT_EQ(ret, 0);
+  bucket.name = "bucket5";
+  ret = db->create_bucket(owner, bucket, "zid", rule, "swift_ver", NULL,
+      attrs, info, &objv, NULL, bucket_mtime, NULL, NULL,
+      null_yield, NULL, false);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, GetBucketQueryByName) {
-       int ret = -1;
-    RGWBucketInfo binfo;
-    binfo.bucket.name = "bucket2";
-    rgw::sal::Attrs attrs;
-    ceph::real_time mtime;
-    obj_version objv;
-
-       ret = db->get_bucket_info("name", "", binfo, &attrs, &mtime, &objv);
-       ASSERT_EQ(ret, 0);
-       ASSERT_EQ(binfo.bucket.name, "bucket2");
-       ASSERT_EQ(binfo.bucket.tenant, "tenant");
-       ASSERT_EQ(binfo.owner.id, "user_id1");
-       ASSERT_EQ(binfo.objv_tracker.read_version.ver, 2);
-       ASSERT_EQ(binfo.objv_tracker.read_version.tag, "write_tag");
-       ASSERT_EQ(binfo.zonegroup, "zid");
-       ASSERT_EQ(binfo.creation_time, bucket_mtime);
-       ASSERT_EQ(binfo.placement_rule.name, "rule1");
-       ASSERT_EQ(binfo.placement_rule.storage_class, "sc1");
-       ASSERT_EQ(objv.ver, 2);
-       ASSERT_EQ(objv.tag, "write_tag");
-
-    marker1 = binfo.bucket.marker;
+  int ret = -1;
+  RGWBucketInfo binfo;
+  binfo.bucket.name = "bucket2";
+  rgw::sal::Attrs attrs;
+  ceph::real_time mtime;
+  obj_version objv;
+
+  ret = db->get_bucket_info("name", "", binfo, &attrs, &mtime, &objv);
+  ASSERT_EQ(ret, 0);
+  ASSERT_EQ(binfo.bucket.name, "bucket2");
+  ASSERT_EQ(binfo.bucket.tenant, "tenant");
+  ASSERT_EQ(binfo.owner.id, "user_id1");
+  ASSERT_EQ(binfo.objv_tracker.read_version.ver, 2);
+  ASSERT_EQ(binfo.objv_tracker.read_version.tag, "write_tag");
+  ASSERT_EQ(binfo.zonegroup, "zid");
+  ASSERT_EQ(binfo.creation_time, bucket_mtime);
+  ASSERT_EQ(binfo.placement_rule.name, "rule1");
+  ASSERT_EQ(binfo.placement_rule.storage_class, "sc1");
+  ASSERT_EQ(objv.ver, 2);
+  ASSERT_EQ(objv.tag, "write_tag");
+
+  marker1 = binfo.bucket.marker;
 }
 
 TEST_F(DBStoreBaseTest, ListUserBuckets) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
-    rgw_user owner;
-    int max = 2;
-    bool need_stats = true;
-    bool is_truncated = false;
-    RGWUserBuckets ulist;
-
-    owner.id = "user_id1";
-
-    marker1 = "";
-    do {
-        is_truncated = false;
-       ret = db->list_buckets(owner, marker1, "", max, need_stats, &ulist, &is_truncated);
-           ASSERT_EQ(ret, 0);
-
-        cout << "marker1 :" << marker1 << "\n";
-
-        cout << "is_truncated :" << is_truncated << "\n";
-
-        for (const auto& ent: ulist.get_buckets()) {
-          RGWBucketEnt e = ent.second;
-          cout << "###################### \n";
-          cout << "ent.bucket.id : " << e.bucket.name << "\n";
-          cout << "ent.bucket.marker : " << e.bucket.marker << "\n";
-          cout << "ent.bucket.bucket_id : " << e.bucket.bucket_id << "\n";
-          cout << "ent.size : " << e.size << "\n";
-          cout << "ent.rule.name : " << e.placement_rule.name << "\n";
-
-          marker1 = e.bucket.name;
-        }
-        ulist.clear();
-    } while(is_truncated);
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
+  rgw_user owner;
+  int max = 2;
+  bool need_stats = true;
+  bool is_truncated = false;
+  RGWUserBuckets ulist;
+
+  owner.id = "user_id1";
+
+  marker1 = "";
+  do {
+    is_truncated = false;
+    ret = db->list_buckets(owner, marker1, "", max, need_stats, &ulist, &is_truncated);
+    ASSERT_EQ(ret, 0);
+
+    cout << "marker1 :" << marker1 << "\n";
+
+    cout << "is_truncated :" << is_truncated << "\n";
+
+    for (const auto& ent: ulist.get_buckets()) {
+      RGWBucketEnt e = ent.second;
+      cout << "###################### \n";
+      cout << "ent.bucket.id : " << e.bucket.name << "\n";
+      cout << "ent.bucket.marker : " << e.bucket.marker << "\n";
+      cout << "ent.bucket.bucket_id : " << e.bucket.bucket_id << "\n";
+      cout << "ent.size : " << e.size << "\n";
+      cout << "ent.rule.name : " << e.placement_rule.name << "\n";
+
+      marker1 = e.bucket.name;
+    }
+    ulist.clear();
+  } while(is_truncated);
 }
 
 TEST_F(DBStoreBaseTest, ListAllBuckets) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ListAllBuckets(&params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ListAllBuckets(&params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, InsertObject) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ProcessOp("InsertObject", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("InsertObject", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, ListObject) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ProcessOp("ListObject", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("ListObject", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, ListAllObjects) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ListAllObjects(&params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ListAllObjects(&params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, PutObjectData) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ProcessOp("PutObjectData", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("PutObjectData", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, GetObjectData) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ProcessOp("GetObjectData", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("GetObjectData", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, DeleteObjectData) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ProcessOp("DeleteObjectData", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("DeleteObjectData", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, RemoveObject) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ProcessOp("RemoveObject", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("RemoveObject", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, RemoveBucket) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ProcessOp("RemoveBucket", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("RemoveBucket", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, RemoveUser) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-       ret = db->ProcessOp("RemoveUser", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("RemoveUser", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 TEST_F(DBStoreBaseTest, InsertTestIDUser) {
-       struct DBOpParams params = GlobalParams;
-       int ret = -1;
+  struct DBOpParams params = GlobalParams;
+  int ret = -1;
 
-    params.op.user.uinfo.user_id.id = "testid";
-    params.op.user.uinfo.display_name = "M. Tester";
-       params.op.user.uinfo.user_id.tenant = "tenant";
-       params.op.user.uinfo.user_email = "tester@ceph.com";
-       RGWAccessKey k1("0555b35654ad1656d804", "h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q==");
-       params.op.user.uinfo.access_keys["0555b35654ad1656d804"] = k1;
-    params.op.user.user_version.ver = 1;    
-    params.op.user.user_version.tag = "UserTAG";    
+  params.op.user.uinfo.user_id.id = "testid";
+  params.op.user.uinfo.display_name = "M. Tester";
+  params.op.user.uinfo.user_id.tenant = "tenant";
+  params.op.user.uinfo.user_email = "tester@ceph.com";
+  RGWAccessKey k1("0555b35654ad1656d804", "h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q==");
+  params.op.user.uinfo.access_keys["0555b35654ad1656d804"] = k1;
+  params.op.user.user_version.ver = 1;    
+  params.op.user.user_version.tag = "UserTAG";    
 
-       ret = db->ProcessOp("InsertUser", &params);
-       ASSERT_EQ(ret, 0);
+  ret = db->ProcessOp("InsertUser", &params);
+  ASSERT_EQ(ret, 0);
 }
 
 int main(int argc, char **argv)
 {
-       int ret = -1;
+  int ret = -1;
+  string c_logfile = "rgw_dbstore_tests.log";
+  int c_loglevel = 20;
+
+  // format: ./dbstore-tests logfile loglevel
+  if (argc == 3) {
+       c_logfile = argv[1];
+       c_loglevel = (atoi)(argv[2]);
+       cout << "logfile:" << c_logfile << ", loglevel set to " << c_loglevel << "\n";
+  }
 
-       ::testing::InitGoogleTest(&argc, argv);
+  ::testing::InitGoogleTest(&argc, argv);
 
-       gtest::env = new gtest::Environment();
-       ::testing::AddGlobalTestEnvironment(gtest::env);
+  gtest::env = new gtest::Environment();
+  gtest::env->logfile = c_logfile;
+  gtest::env->loglevel = c_loglevel;
+  ::testing::AddGlobalTestEnvironment(gtest::env);
 
-       ret = RUN_ALL_TESTS();
+  ret = RUN_ALL_TESTS();
 
-       return ret;
+  return ret;
 }