You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-10-31 18:30:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			654 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			654 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /* Copyright (C) 2014 InfiniDB, Inc.
 | |
| 
 | |
|    This program is free software; you can redistribute it and/or
 | |
|    modify it under the terms of the GNU General Public License
 | |
|    as published by the Free Software Foundation; version 2 of
 | |
|    the License.
 | |
| 
 | |
|    This program is distributed in the hope that it will be useful,
 | |
|    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|    GNU General Public License for more details.
 | |
| 
 | |
|    You should have received a copy of the GNU General Public License
 | |
|    along with this program; if not, write to the Free Software
 | |
|    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 | |
|    MA 02110-1301, USA. */
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * $Id: we_config.cpp 4737 2013-08-14 20:45:46Z bwilkinson $
 | |
|  *
 | |
|  *******************************************************************************/
 | |
| /** @file */
 | |
| 
 | |
| #include <string>
 | |
| #include <boost/thread.hpp>
 | |
| #include <vector>
 | |
| #include <sstream>
 | |
| #include <algorithm>
 | |
| using namespace std;
 | |
| 
 | |
| #include "configcpp.h"
 | |
| #include "liboamcpp.h"
 | |
| #include "installdir.h"
 | |
| #include "we_config.h"
 | |
| using namespace config;
 | |
| 
 | |
| #include "IDBPolicy.h"
 | |
| using namespace idbdatafile;
 | |
| 
 | |
| #include <boost/algorithm/string.hpp>
 | |
| 
 | |
| namespace WriteEngine
 | |
| {
 | |
| const int DEFAULT_WAIT_PERIOD = 10;
 | |
| const unsigned DEFAULT_FILES_PER_COLUMN_PARTITION = 4;
 | |
| const unsigned DEFAULT_EXTENTS_PER_SEGMENT_FILE = 2;
 | |
| const int DEFAULT_BULK_PROCESS_PRIORITY = -1;
 | |
| const unsigned DEFAULT_MAX_FILESYSTEM_DISK_USAGE = 98;  // allow 98% full
 | |
| const unsigned DEFAULT_COMPRESSED_PADDING_BLKS = 1;
 | |
| const int DEFAULT_LOCAL_MODULE_ID = 1;
 | |
| const bool DEFAULT_PARENT_OAM = true;
 | |
| const char* DEFAULT_LOCAL_MODULE_TYPE = "pm";
 | |
| 
 | |
| int Config::m_dbRootCount = 0;
 | |
| Config::strvec_t Config::m_dbRootPath;
 | |
| Config::intstrmap_t Config::m_dbRootPathMap;
 | |
| Config::uint16vec_t Config::m_dbRootId;
 | |
| string Config::m_bulkRoot;
 | |
| 
 | |
| unsigned long Config::fDBRootChangeCount = 0;
 | |
| time_t Config::fCacheTime = 0;
 | |
| boost::mutex Config::fCacheLock;
 | |
| #ifdef SHARED_NOTHING_DEMO_2
 | |
| boost::mutex Config::m_bulkRoot_lk;
 | |
| #endif
 | |
| int Config::m_WaitPeriod = DEFAULT_WAIT_PERIOD;
 | |
| unsigned Config::m_FilesPerColumnPartition = DEFAULT_FILES_PER_COLUMN_PARTITION;
 | |
| unsigned Config::m_ExtentsPerSegmentFile = DEFAULT_EXTENTS_PER_SEGMENT_FILE;
 | |
| int Config::m_BulkProcessPriority = DEFAULT_BULK_PROCESS_PRIORITY;
 | |
| string Config::m_BulkRollbackDir;
 | |
| bool Config::m_FastDelete;
 | |
| unsigned Config::m_MaxFileSystemDiskUsage = DEFAULT_MAX_FILESYSTEM_DISK_USAGE;
 | |
| unsigned Config::m_NumCompressedPadBlks = DEFAULT_COMPRESSED_PADDING_BLKS;
 | |
| bool Config::m_ParentOAMModuleFlag = DEFAULT_PARENT_OAM;
 | |
| string Config::m_LocalModuleType;
 | |
| int Config::m_LocalModuleID = DEFAULT_LOCAL_MODULE_ID;
 | |
| string Config::m_VersionBufferDir;
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Loads config parms into local cache.
 | |
|  *    Call can be made to initConfigCache() at the start
 | |
|  *    of the program to initialize local cache, before calling accessors.
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| void Config::initConfigCache()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Reload local cache using contents of Columnstore.xml file.
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| void Config::checkReload()
 | |
| {
 | |
|   bool bFirstLoad = false;
 | |
| 
 | |
|   if (fCacheTime == 0)
 | |
|     bFirstLoad = true;
 | |
| 
 | |
|   config::Config* cf = config::Config::makeConfig();
 | |
| 
 | |
|   // Immediately return if Columnstore.xml timestamp has not changed
 | |
|   if (cf->getCurrentMTime() == fCacheTime)
 | |
|     return;
 | |
| 
 | |
|   // std::cout << "RELOADING cache..." << std::endl;
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize bulk root directory
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_bulkRoot = cf->getConfig("WriteEngine", "BulkRoot");
 | |
| 
 | |
|   if (m_bulkRoot.length() == 0)
 | |
|   {
 | |
|     m_bulkRoot = "/var/log/mariadb/columnstore";
 | |
|     m_bulkRoot += "/data";
 | |
|     m_bulkRoot += "/bulk";
 | |
|   }
 | |
| 
 | |
|   // Get latest Columnstore.xml timestamp after first access forced a reload
 | |
|   fCacheTime = cf->getLastMTime();
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize time interval (in seconds) between retries
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_WaitPeriod = DEFAULT_WAIT_PERIOD;
 | |
|   string waitPeriodStr = cf->getConfig("SystemConfig", "WaitPeriod");
 | |
| 
 | |
|   if (waitPeriodStr.length() != 0)
 | |
|     m_WaitPeriod = static_cast<int>(config::Config::fromText(waitPeriodStr));
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize files per column partition
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_FilesPerColumnPartition = DEFAULT_FILES_PER_COLUMN_PARTITION;
 | |
|   string fpc = cf->getConfig("ExtentMap", "FilesPerColumnPartition");
 | |
| 
 | |
|   if (fpc.length() != 0)
 | |
|     m_FilesPerColumnPartition = cf->uFromText(fpc);
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize extents per segment file
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_ExtentsPerSegmentFile = DEFAULT_EXTENTS_PER_SEGMENT_FILE;
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize bulk load process priority
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_BulkProcessPriority = DEFAULT_BULK_PROCESS_PRIORITY;
 | |
|   string prior = cf->getConfig("WriteEngine", "Priority");
 | |
| 
 | |
|   if (prior.length() != 0)
 | |
|   {
 | |
|     int initialBPP = cf->fromText(prior);
 | |
| 
 | |
|     // config file priority is 40..1 (highest..lowest)
 | |
|     // convert config file value to setpriority(2) value(-20..19, -1 is the
 | |
|     // default)
 | |
|     if (initialBPP > 0)
 | |
|       m_BulkProcessPriority = 20 - initialBPP;
 | |
|     else if (initialBPP < 0)
 | |
|       m_BulkProcessPriority = 19;
 | |
| 
 | |
|     if (m_BulkProcessPriority < -20)
 | |
|       m_BulkProcessPriority = -20;
 | |
|   }
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize bulk rollback directory
 | |
|   // Note this uses m_bulkRoot, so this init section must be after the section
 | |
|   // that sets m_bulkRoot.
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_BulkRollbackDir = cf->getConfig("WriteEngine", "BulkRollbackDir");
 | |
| 
 | |
|   if (m_BulkRollbackDir.length() == 0)
 | |
|   {
 | |
|     m_BulkRollbackDir.assign(m_bulkRoot);
 | |
|     m_BulkRollbackDir += "/rollback";
 | |
|   }
 | |
| 
 | |
|   const std::string fastDeleteTemp = cf->getConfig("WriteEngine", "FastDelete");
 | |
| 
 | |
|   if (fastDeleteTemp.length() != 0 &&
 | |
|       (fastDeleteTemp == "y" || fastDeleteTemp == "Y"))
 | |
|   {
 | |
|     m_FastDelete = true;
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     m_FastDelete = false;
 | |
|   }
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize max disk usage
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_MaxFileSystemDiskUsage = DEFAULT_MAX_FILESYSTEM_DISK_USAGE;
 | |
|   string usg = cf->getConfig("WriteEngine", "MaxFileSystemDiskUsagePct");
 | |
| 
 | |
|   if (usg.length() != 0)
 | |
|     m_MaxFileSystemDiskUsage = cf->uFromText(usg);
 | |
| 
 | |
|   if (m_MaxFileSystemDiskUsage > 100)
 | |
|     m_MaxFileSystemDiskUsage = DEFAULT_MAX_FILESYSTEM_DISK_USAGE;
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Number of compressed padding blocks
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_NumCompressedPadBlks = DEFAULT_COMPRESSED_PADDING_BLKS;
 | |
|   string ncpb = cf->getConfig("WriteEngine", "CompressedPaddingBlocks");
 | |
| 
 | |
|   if (ncpb.length() != 0)
 | |
|     m_NumCompressedPadBlks = cf->uFromText(ncpb);
 | |
| 
 | |
|   IDBPolicy::configIDBPolicy();
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize Parent OAM Module flag
 | |
|   // Initialize Module Type
 | |
|   // Initialize Local Module ID
 | |
|   //--------------------------------------------------------------------------
 | |
|   oam::Oam oam;
 | |
|   oam::oamModuleInfo_t t;
 | |
| 
 | |
|   try
 | |
|   {
 | |
|     t = oam.getModuleInfo();
 | |
|     m_ParentOAMModuleFlag = boost::get<4>(t);
 | |
|     m_LocalModuleType = boost::get<1>(t);
 | |
|     m_LocalModuleID = boost::get<2>(t);
 | |
|   }
 | |
|   catch (exception&)
 | |
|   {
 | |
|     m_ParentOAMModuleFlag = DEFAULT_PARENT_OAM;
 | |
|     m_LocalModuleType.assign(DEFAULT_LOCAL_MODULE_TYPE);
 | |
|     m_LocalModuleID = DEFAULT_LOCAL_MODULE_ID;
 | |
|   }
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize Version Buffer
 | |
|   //--------------------------------------------------------------------------
 | |
|   m_VersionBufferDir = cf->getConfig("SystemConfig", "DBRMRoot");
 | |
| 
 | |
|   if (m_VersionBufferDir.length() == 0)
 | |
|   {
 | |
|     m_VersionBufferDir = "/var/lib/columnstore/data1/systemFiles/dbrm/BRM_saves";
 | |
|   }
 | |
| 
 | |
|   //--------------------------------------------------------------------------
 | |
|   // Initialize m_dbRootCount, m_dbRootPath, m_dbRootPathMap, m_dbRootId.
 | |
|   // Note this uses m_localModuleType and m_LocalModuleID, so this init
 | |
|   // section must be after the section(s) that set m_localModuleType and
 | |
|   // m_LocalModuleID.
 | |
|   //--------------------------------------------------------------------------
 | |
|   uint16vec_t dbRootIdPrevious(m_dbRootId);   // save current settings
 | |
|   strvec_t dbRootPathPrevious(m_dbRootPath);  // save current setttings
 | |
| 
 | |
|   m_dbRootPath.clear();
 | |
|   m_dbRootPathMap.clear();
 | |
|   m_dbRootId.clear();
 | |
| 
 | |
|   if (m_LocalModuleType == "pm")
 | |
|   {
 | |
|     oam::DBRootConfigList oamRootList;
 | |
| 
 | |
|     try
 | |
|     {
 | |
|       oam.getPmDbrootConfig(m_LocalModuleID, oamRootList);
 | |
| 
 | |
|       std::sort(oamRootList.begin(), oamRootList.end());
 | |
| 
 | |
|       m_dbRootCount = oamRootList.size();
 | |
| 
 | |
|       for (unsigned int idx = 0; idx < oamRootList.size(); idx++)
 | |
|       {
 | |
|         ostringstream oss;
 | |
|         oss << "DBRoot" << oamRootList[idx];
 | |
|         std::string DbRootPath = cf->getConfig("SystemConfig", oss.str());
 | |
|         m_dbRootPath.push_back(DbRootPath);
 | |
|         m_dbRootPathMap[oamRootList[idx]] = DbRootPath;
 | |
|         m_dbRootId.push_back(oamRootList[idx]);
 | |
|       }
 | |
|     }
 | |
|     catch (exception&)
 | |
|     {
 | |
|       m_dbRootCount = 0;
 | |
|     }
 | |
|   }
 | |
|   else
 | |
|   {
 | |
|     m_dbRootCount = 0;
 | |
|   }
 | |
| 
 | |
|   // Update counter used to track changes to local PM DBRoot list
 | |
|   if (!bFirstLoad)
 | |
|   {
 | |
|     if ((dbRootIdPrevious != m_dbRootId) || (dbRootPathPrevious != m_dbRootPath))
 | |
|     {
 | |
|       fDBRootChangeCount++;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   //  for (unsigned int n=0; n<m_dbRootPath.size(); n++)
 | |
|   //  {
 | |
|   //      std::cout << "dbrootpath: " << n << ". " << m_dbRootPath[n] <<std::endl;
 | |
|   //  }
 | |
|   //  for (unsigned int n=0; n<m_dbRootId.size(); n++)
 | |
|   //  {
 | |
|   //      std::cout << "dbrootId: " << n << ". " << m_dbRootId[n] << std::endl;
 | |
|   //  }
 | |
|   //  for (Config::intstrmap_t::iterator k=m_dbRootPathMap.begin();
 | |
|   //      k!=m_dbRootPathMap.end(); ++k)
 | |
|   //  {
 | |
|   //      std::cout << "dbrootmap: " << k->first << "," << k->second << std::endl;
 | |
|   //  }
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get db root count for local PM
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  * RETURN:
 | |
|  *    Number of DBRoot paths to be used for database files
 | |
|  ******************************************************************************/
 | |
| size_t Config::DBRootCount()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_dbRootCount;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get db root
 | |
|  * PARAMETERS:
 | |
|  *    idx - Index of the DBRootn entry to fetch (0 fetches DBRoot[0],etc.)
 | |
|  * RETURN:
 | |
|  *    DBRoot path for specified index
 | |
|  ******************************************************************************/
 | |
| std::string Config::getDBRootByIdx(unsigned idx)
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   if (idx >= m_dbRootPath.size())
 | |
|   {
 | |
|     std::string emptyResult;
 | |
|     return emptyResult;
 | |
|   }
 | |
| 
 | |
|   return m_dbRootPath[idx];
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get db root path list for the local PM
 | |
|  * PARAMETERS:
 | |
|  *    dbRootPathList - return list of DBRoot paths
 | |
|  * RETURN:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| void Config::getDBRootPathList(std::vector<std::string>& dbRootPathList)
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   dbRootPathList.clear();
 | |
|   dbRootPathList = m_dbRootPath;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get db root
 | |
|  * PARAMETERS:
 | |
|  *    num - DBRootN entry to fetch (1 fetches DBRoot1, etc.)
 | |
|  * RETURN:
 | |
|  *    DBRoot path for specified index
 | |
|  ******************************************************************************/
 | |
| std::string Config::getDBRootByNum(unsigned num)
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   Config::intstrmap_t::const_iterator iter = m_dbRootPathMap.find(num);
 | |
| 
 | |
|   if (iter == m_dbRootPathMap.end())
 | |
|   {
 | |
|     std::string emptyResult;
 | |
|     return emptyResult;
 | |
|   }
 | |
| 
 | |
|   return iter->second;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get list of applicable DBRoot ids for this job.
 | |
|  * PARAMETERS:
 | |
|  *    N/A
 | |
|  * RETURN:
 | |
|  *    The list of DBRoot ids
 | |
|  ******************************************************************************/
 | |
| void Config::getRootIdList(std::vector<uint16_t>& rootIds)
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   rootIds = m_dbRootId;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get bulk root
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  * RETURN:
 | |
|  *    NO_ERROR if success, other otherwise
 | |
|  ******************************************************************************/
 | |
| std::string Config::getBulkRoot()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_bulkRoot;
 | |
| }
 | |
| 
 | |
| #ifdef SHARED_NOTHING_DEMO_2
 | |
| void Config::getSharedNothingRoot(char* ret)
 | |
| {
 | |
|   string root;
 | |
|   boost::mutex::scoped_lock lk(m_bulkRoot_lk);
 | |
| 
 | |
|   root = config::Config::makeConfig()->getConfig("WriteEngine", "SharedNothingRoot");
 | |
|   strncpy(ret, root.c_str(), FILE_NAME_SIZE);
 | |
| }
 | |
| #endif
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get wait period used between tries to get a transaction id.
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  * RETURN:
 | |
|  *    Wait Period in seconds
 | |
|  ******************************************************************************/
 | |
| int Config::getWaitPeriod()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_WaitPeriod;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get number of segment files per column partition.
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  * RETURN:
 | |
|  *    Number of files
 | |
|  ******************************************************************************/
 | |
| unsigned Config::getFilesPerColumnPartition()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_FilesPerColumnPartition;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get number of extents per column segment file
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  * RETURN:
 | |
|  *    Number of extents
 | |
|  ******************************************************************************/
 | |
| unsigned Config::getExtentsPerSegmentFile()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_ExtentsPerSegmentFile;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get process priority for cpimport.bin process.
 | |
|  *    Config file priority is in range 40..1 (highest..lowest)
 | |
|  *    Return value is in range (-20..19)
 | |
|  *
 | |
|  *    This range of values 40..1, and -20..19, matches the
 | |
|  *    convention used by PrimProc and ExeMgr, so that we are
 | |
|  *    consistent with those processes.  Likewise we employ
 | |
|  *    the same default priority of -1.
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  * RETURN:
 | |
|  *    cpimport.bin process priority
 | |
|  ******************************************************************************/
 | |
| int Config::getBulkProcessPriority()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_BulkProcessPriority;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get bulk rollback directory path.
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| std::string Config::getBulkRollbackDir()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_BulkRollbackDir;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get the fast delete option
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| bool Config::getFastDelete()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_FastDelete;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get Max percentage of allowable file system disk usage for each DBRoot
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| unsigned Config::getMaxFileSystemDiskUsage()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_MaxFileSystemDiskUsage;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get number of blocks to use in padding each compressed chunk (only
 | |
|  *    applies to compressed columns).
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| unsigned Config::getNumCompressedPadBlks()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_NumCompressedPadBlks;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get Parent OAM Module flag; are we running on active parent OAM node.
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| bool Config::getParentOAMModuleFlag()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_ParentOAMModuleFlag;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get Module type (ex: "pm")
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| std::string Config::getLocalModuleType()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_LocalModuleType;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get Module ID number (ex: 1)
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  ******************************************************************************/
 | |
| uint16_t Config::getLocalModuleID()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_LocalModuleID;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Get version buffer root
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  * RETURN:
 | |
|  *    NO_ERROR if success, other otherwise
 | |
|  ******************************************************************************/
 | |
| std::string Config::getVBRoot()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
|   checkReload();
 | |
| 
 | |
|   return m_VersionBufferDir;
 | |
| }
 | |
| 
 | |
| /*******************************************************************************
 | |
|  * DESCRIPTION:
 | |
|  *    Has the DBRoot list for the local PM changed since the last time this
 | |
|  *    function was called.
 | |
|  * PARAMETERS:
 | |
|  *    none
 | |
|  * RETURN:
 | |
|  *    returns TRUE if local DBRoot list has changed since the last call.
 | |
|  ******************************************************************************/
 | |
| bool Config::hasLocalDBRootListChanged()
 | |
| {
 | |
|   boost::mutex::scoped_lock lk(fCacheLock);
 | |
| 
 | |
|   if (fDBRootChangeCount > 0)
 | |
|   {
 | |
|     fDBRootChangeCount = 0;
 | |
|     return true;
 | |
|   }
 | |
| 
 | |
|   return false;
 | |
| }
 | |
| 
 | |
| }  // namespace WriteEngine
 |