You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
Merge branch 'develop-1.0' into 1.1-merge-up-20180118
This commit is contained in:
@ -76,7 +76,8 @@ ENDIF("${isSystemDir}" STREQUAL "-1")
|
|||||||
|
|
||||||
INCLUDE (configureEngine.cmake)
|
INCLUDE (configureEngine.cmake)
|
||||||
|
|
||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h.in ${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h)
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/releasenum.in ${CMAKE_CURRENT_BINARY_DIR}/build/releasenum @ONLY IMMEDIATE)
|
||||||
|
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/build/releasenum DESTINATION ${INSTALL_ENGINE} COMPONENT platform)
|
||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
|
||||||
|
|
||||||
INCLUDE(bison.cmake)
|
INCLUDE(bison.cmake)
|
||||||
|
1
README
1
README
@ -9,5 +9,4 @@ series are included in this release.
|
|||||||
|
|
||||||
Additional features will be pushed in future releases.
|
Additional features will be pushed in future releases.
|
||||||
A few things to notice:
|
A few things to notice:
|
||||||
- Do not use Beta releases on production systems.
|
|
||||||
- The building of the ColumnStore engine needs a special build environment. We're working on making it available for everyone to build.
|
- The building of the ColumnStore engine needs a special build environment. We're working on making it available for everyone to build.
|
||||||
|
@ -124,6 +124,17 @@ static int is_columnstore_files_fill(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
iter++;
|
iter++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
oam_instance.getDbrootPmConfig(iter->dbRoot, pmId);
|
||||||
|
}
|
||||||
|
catch (std::runtime_error)
|
||||||
|
{
|
||||||
|
// MCOL-1116: If we are here a DBRoot is offline/missing
|
||||||
|
iter++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
table->field[0]->store(oid);
|
table->field[0]->store(oid);
|
||||||
table->field[1]->store(iter->segmentNum);
|
table->field[1]->store(iter->segmentNum);
|
||||||
table->field[2]->store(iter->partitionNum);
|
table->field[2]->store(iter->partitionNum);
|
||||||
@ -134,7 +145,7 @@ static int is_columnstore_files_fill(THD *thd, TABLE_LIST *tables, COND *cond)
|
|||||||
std::string DbRootPath = config->getConfig("SystemConfig", DbRootName.str());
|
std::string DbRootPath = config->getConfig("SystemConfig", DbRootName.str());
|
||||||
fileSize = compressedFileSize = 0;
|
fileSize = compressedFileSize = 0;
|
||||||
snprintf(fullFileName, WriteEngine::FILE_NAME_SIZE, "%s/%s", DbRootPath.c_str(), oidDirName);
|
snprintf(fullFileName, WriteEngine::FILE_NAME_SIZE, "%s/%s", DbRootPath.c_str(), oidDirName);
|
||||||
oam_instance.getDbrootPmConfig(iter->dbRoot, pmId);
|
|
||||||
std::ostringstream oss;
|
std::ostringstream oss;
|
||||||
oss << "pm" << pmId << "_WriteEngineServer";
|
oss << "pm" << pmId << "_WriteEngineServer";
|
||||||
std::string client = oss.str();
|
std::string client = oss.str();
|
||||||
|
@ -61,7 +61,7 @@ datadir=$basedir/db
|
|||||||
# Value here is overriden by value in my.cnf.
|
# Value here is overriden by value in my.cnf.
|
||||||
# 0 means don't wait at all
|
# 0 means don't wait at all
|
||||||
# Negative numbers mean to wait indefinitely
|
# Negative numbers mean to wait indefinitely
|
||||||
service_startup_timeout=60
|
service_startup_timeout=90
|
||||||
|
|
||||||
# Lock directory for RedHat / SuSE.
|
# Lock directory for RedHat / SuSE.
|
||||||
lockdir='/var/lock/subsys'
|
lockdir='/var/lock/subsys'
|
||||||
|
@ -4,7 +4,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} )
|
|||||||
|
|
||||||
########### next target ###############
|
########### next target ###############
|
||||||
|
|
||||||
set(DDLProc_SRCS ddlproc.cpp ddlprocessor.cpp)
|
set(DDLProc_SRCS ddlproc.cpp ddlprocessor.cpp ../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(DDLProc ${DDLProc_SRCS})
|
add_executable(DDLProc ${DDLProc_SRCS})
|
||||||
|
|
||||||
|
@ -61,6 +61,7 @@ using namespace execplan;
|
|||||||
#include "IDBPolicy.h"
|
#include "IDBPolicy.h"
|
||||||
#include "utils_utf8.h"
|
#include "utils_utf8.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
namespace fs = boost::filesystem;
|
namespace fs = boost::filesystem;
|
||||||
|
|
||||||
@ -97,6 +98,9 @@ int main(int argc, char* argv[])
|
|||||||
string systemLang = "C";
|
string systemLang = "C";
|
||||||
systemLang = funcexp::utf8::idb_setlocale();
|
systemLang = funcexp::utf8::idb_setlocale();
|
||||||
|
|
||||||
|
// This is unset due to the way we start it
|
||||||
|
program_invocation_short_name = const_cast<char*>("DDLProc");
|
||||||
|
|
||||||
setupCwd();
|
setupCwd();
|
||||||
|
|
||||||
WriteEngine::WriteEngineWrapper::init( WriteEngine::SUBSYSTEM_ID_DDLPROC );
|
WriteEngine::WriteEngineWrapper::init( WriteEngine::SUBSYSTEM_ID_DDLPROC );
|
||||||
@ -116,6 +120,11 @@ int main(int argc, char* argv[])
|
|||||||
sigaction(SIGHUP, &ign, 0);
|
sigaction(SIGHUP, &ign, 0);
|
||||||
ign.sa_handler = SIG_IGN;
|
ign.sa_handler = SIG_IGN;
|
||||||
sigaction(SIGPIPE, &ign, 0);
|
sigaction(SIGPIPE, &ign, 0);
|
||||||
|
memset(&ign, 0, sizeof(ign));
|
||||||
|
ign.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &ign, 0);
|
||||||
|
sigaction(SIGABRT, &ign, 0);
|
||||||
|
sigaction(SIGFPE, &ign, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ddlprocessor::DDLProcessor ddlprocessor(1, 20);
|
ddlprocessor::DDLProcessor ddlprocessor(1, 20);
|
||||||
|
@ -8,7 +8,8 @@ set(DMLProc_SRCS
|
|||||||
dmlproc.cpp
|
dmlproc.cpp
|
||||||
dmlprocessor.cpp
|
dmlprocessor.cpp
|
||||||
dmlresultbuffer.cpp
|
dmlresultbuffer.cpp
|
||||||
batchinsertprocessor.cpp)
|
batchinsertprocessor.cpp
|
||||||
|
../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(DMLProc ${DMLProc_SRCS})
|
add_executable(DMLProc ${DMLProc_SRCS})
|
||||||
|
|
||||||
|
@ -82,6 +82,8 @@ using namespace joblist;
|
|||||||
|
|
||||||
#include "utils_utf8.h"
|
#include "utils_utf8.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
namespace fs = boost::filesystem;
|
namespace fs = boost::filesystem;
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
@ -473,6 +475,9 @@ int main(int argc, char* argv[])
|
|||||||
//BUG 5362
|
//BUG 5362
|
||||||
systemLang = funcexp::utf8::idb_setlocale();
|
systemLang = funcexp::utf8::idb_setlocale();
|
||||||
|
|
||||||
|
// This is unset due to the way we start it
|
||||||
|
program_invocation_short_name = const_cast<char*>("DMLProc");
|
||||||
|
|
||||||
Config* cf = Config::makeConfig();
|
Config* cf = Config::makeConfig();
|
||||||
|
|
||||||
setupCwd();
|
setupCwd();
|
||||||
@ -592,6 +597,12 @@ int main(int argc, char* argv[])
|
|||||||
sigaction(SIGHUP, &ign, 0);
|
sigaction(SIGHUP, &ign, 0);
|
||||||
ign.sa_handler = SIG_IGN;
|
ign.sa_handler = SIG_IGN;
|
||||||
sigaction(SIGPIPE, &ign, 0);
|
sigaction(SIGPIPE, &ign, 0);
|
||||||
|
|
||||||
|
memset(&ign, 0, sizeof(ign));
|
||||||
|
ign.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &ign, 0);
|
||||||
|
sigaction(SIGABRT, &ign, 0);
|
||||||
|
sigaction(SIGFPE, &ign, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dmlserver.start();
|
dmlserver.start();
|
||||||
|
@ -4,7 +4,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} )
|
|||||||
|
|
||||||
########### next target ###############
|
########### next target ###############
|
||||||
|
|
||||||
set(ExeMgr_SRCS main.cpp activestatementcounter.cpp femsghandler.cpp)
|
set(ExeMgr_SRCS main.cpp activestatementcounter.cpp femsghandler.cpp ../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(ExeMgr ${ExeMgr_SRCS})
|
add_executable(ExeMgr ${ExeMgr_SRCS})
|
||||||
|
|
||||||
|
@ -98,6 +98,7 @@ using namespace querytele;
|
|||||||
#include "boost/filesystem.hpp"
|
#include "boost/filesystem.hpp"
|
||||||
|
|
||||||
#include "threadpool.h"
|
#include "threadpool.h"
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ send_user "\n"
|
|||||||
send_user "Start ColumnStore service "
|
send_user "Start ColumnStore service "
|
||||||
send_user " \n"
|
send_user " \n"
|
||||||
send "ssh -v $USERNAME@$SERVER '$INSTALLDIR/bin/columnstore restart'\n"
|
send "ssh -v $USERNAME@$SERVER '$INSTALLDIR/bin/columnstore restart'\n"
|
||||||
set timeout 60
|
set timeout 120
|
||||||
# check return
|
# check return
|
||||||
expect {
|
expect {
|
||||||
"word: " { send "$PASSWORD\n"
|
"word: " { send "$PASSWORD\n"
|
||||||
|
@ -13,7 +13,8 @@ set(ServerMonitor_SRCS
|
|||||||
procmonMonitor.cpp
|
procmonMonitor.cpp
|
||||||
msgProcessor.cpp
|
msgProcessor.cpp
|
||||||
dbhealthMonitor.cpp
|
dbhealthMonitor.cpp
|
||||||
UMAutoSync.cpp)
|
UMAutoSync.cpp
|
||||||
|
../../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(ServerMonitor ${ServerMonitor_SRCS})
|
add_executable(ServerMonitor ${ServerMonitor_SRCS})
|
||||||
|
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
#include "IDBPolicy.h"
|
#include "IDBPolicy.h"
|
||||||
#include "serverMonitor.h"
|
#include "serverMonitor.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace servermonitor;
|
using namespace servermonitor;
|
||||||
using namespace oam;
|
using namespace oam;
|
||||||
@ -38,6 +40,14 @@ int main (int argc, char** argv)
|
|||||||
ServerMonitor serverMonitor;
|
ServerMonitor serverMonitor;
|
||||||
Oam oam;
|
Oam oam;
|
||||||
|
|
||||||
|
struct sigaction ign;
|
||||||
|
|
||||||
|
memset(&ign, 0, sizeof(ign));
|
||||||
|
ign.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &ign, 0);
|
||||||
|
sigaction(SIGABRT, &ign, 0);
|
||||||
|
sigaction(SIGFPE, &ign, 0);
|
||||||
|
|
||||||
//Launch Memory Monitor Thread and check if swap is in critical condition
|
//Launch Memory Monitor Thread and check if swap is in critical condition
|
||||||
pthread_t memoryMonitorThread;
|
pthread_t memoryMonitorThread;
|
||||||
pthread_create (&memoryMonitorThread, NULL, (void*(*)(void*)) &memoryMonitor, NULL);
|
pthread_create (&memoryMonitorThread, NULL, (void*(*)(void*)) &memoryMonitor, NULL);
|
||||||
|
@ -18,7 +18,8 @@ set(PrimProc_SRCS
|
|||||||
primitiveserver.cpp
|
primitiveserver.cpp
|
||||||
pseudocc.cpp
|
pseudocc.cpp
|
||||||
rtscommand.cpp
|
rtscommand.cpp
|
||||||
umsocketselector.cpp)
|
umsocketselector.cpp
|
||||||
|
../../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
#PrimProc_CXXFLAGS = $(march_flags) $(AM_CXXFLAGS)
|
#PrimProc_CXXFLAGS = $(march_flags) $(AM_CXXFLAGS)
|
||||||
|
|
||||||
|
@ -71,6 +71,8 @@ using namespace idbdatafile;
|
|||||||
|
|
||||||
#include "cgroupconfigurator.h"
|
#include "cgroupconfigurator.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
namespace primitiveprocessor
|
namespace primitiveprocessor
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -126,6 +128,12 @@ void setupSignalHandlers()
|
|||||||
ign.sa_handler = SIG_IGN;
|
ign.sa_handler = SIG_IGN;
|
||||||
sigaction(SIGUSR2, &ign, 0);
|
sigaction(SIGUSR2, &ign, 0);
|
||||||
|
|
||||||
|
memset(&ign, 0, sizeof(ign));
|
||||||
|
ign.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &ign, 0);
|
||||||
|
sigaction(SIGABRT, &ign, 0);
|
||||||
|
sigaction(SIGFPE, &ign, 0);
|
||||||
|
|
||||||
sigset_t sigset;
|
sigset_t sigset;
|
||||||
sigemptyset(&sigset);
|
sigemptyset(&sigset);
|
||||||
sigaddset(&sigset, SIGPIPE);
|
sigaddset(&sigset, SIGPIPE);
|
||||||
@ -288,6 +296,9 @@ int main(int argc, char* argv[])
|
|||||||
systemLang.find("UTF") != string::npos )
|
systemLang.find("UTF") != string::npos )
|
||||||
utf8 = true;
|
utf8 = true;
|
||||||
|
|
||||||
|
// This is unset due to the way we start it
|
||||||
|
program_invocation_short_name = const_cast<char*>("PrimProc");
|
||||||
|
|
||||||
Config* cf = Config::makeConfig();
|
Config* cf = Config::makeConfig();
|
||||||
|
|
||||||
setupSignalHandlers();
|
setupSignalHandlers();
|
||||||
|
@ -4,7 +4,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} )
|
|||||||
|
|
||||||
########### next target ###############
|
########### next target ###############
|
||||||
|
|
||||||
set(ProcMgr_SRCS main.cpp processmanager.cpp)
|
set(ProcMgr_SRCS main.cpp processmanager.cpp ../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(ProcMgr ${ProcMgr_SRCS})
|
add_executable(ProcMgr ${ProcMgr_SRCS})
|
||||||
|
|
||||||
|
@ -33,6 +33,8 @@
|
|||||||
|
|
||||||
#include "utils_utf8.h"
|
#include "utils_utf8.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace logging;
|
using namespace logging;
|
||||||
using namespace messageqcpp;
|
using namespace messageqcpp;
|
||||||
@ -99,6 +101,16 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
setlocale(LC_ALL, systemLang.c_str());
|
setlocale(LC_ALL, systemLang.c_str());
|
||||||
|
|
||||||
|
// This is unset due to the way we start it
|
||||||
|
program_invocation_short_name = const_cast<char*>("ProcMgr");
|
||||||
|
|
||||||
|
struct sigaction ign;
|
||||||
|
memset(&ign, 0, sizeof(ign));
|
||||||
|
ign.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &ign, 0);
|
||||||
|
sigaction(SIGABRT, &ign, 0);
|
||||||
|
sigaction(SIGFPE, &ign, 0);
|
||||||
|
|
||||||
Oam oam;
|
Oam oam;
|
||||||
|
|
||||||
//check if root-user
|
//check if root-user
|
||||||
|
@ -4,7 +4,7 @@ include_directories( ${ENGINE_COMMON_INCLUDES} )
|
|||||||
|
|
||||||
########### next target ###############
|
########### next target ###############
|
||||||
|
|
||||||
set(ProcMon_SRCS main.cpp processmonitor.cpp)
|
set(ProcMon_SRCS main.cpp processmonitor.cpp ../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(ProcMon ${ProcMon_SRCS})
|
add_executable(ProcMon ${ProcMon_SRCS})
|
||||||
|
|
||||||
|
@ -26,6 +26,8 @@ namespace bi=boost::interprocess;
|
|||||||
|
|
||||||
#include "IDBPolicy.h"
|
#include "IDBPolicy.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace messageqcpp;
|
using namespace messageqcpp;
|
||||||
using namespace processmonitor;
|
using namespace processmonitor;
|
||||||
@ -55,10 +57,12 @@ void updateShareMemory(processStatusList* aPtr);
|
|||||||
bool runStandby = false;
|
bool runStandby = false;
|
||||||
bool processInitComplete = false;
|
bool processInitComplete = false;
|
||||||
bool rootUser = true;
|
bool rootUser = true;
|
||||||
|
bool mainResumeFlag;
|
||||||
string USER = "root";
|
string USER = "root";
|
||||||
string PMwithUM = "n";
|
string PMwithUM = "n";
|
||||||
bool startProcMon = false;
|
bool startProcMon = false;
|
||||||
|
|
||||||
|
|
||||||
//extern std::string gOAMParentModuleName;
|
//extern std::string gOAMParentModuleName;
|
||||||
extern bool gOAMParentModuleFlag;
|
extern bool gOAMParentModuleFlag;
|
||||||
|
|
||||||
@ -76,6 +80,14 @@ int main(int argc, char **argv)
|
|||||||
setuid(0); // set effective ID to root; ignore return status
|
setuid(0); // set effective ID to root; ignore return status
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct sigaction ign;
|
||||||
|
|
||||||
|
memset(&ign, 0, sizeof(ign));
|
||||||
|
ign.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &ign, 0);
|
||||||
|
sigaction(SIGABRT, &ign, 0);
|
||||||
|
sigaction(SIGFPE, &ign, 0);
|
||||||
|
|
||||||
if (argc > 1 && string(argv[1]) == "--daemon")
|
if (argc > 1 && string(argv[1]) == "--daemon")
|
||||||
{
|
{
|
||||||
if (fork() != 0) return 0;
|
if (fork() != 0) return 0;
|
||||||
@ -499,13 +511,24 @@ int main(int argc, char **argv)
|
|||||||
unlink ("/var/log/mariadb/columnstore/activeAlarms");
|
unlink ("/var/log/mariadb/columnstore/activeAlarms");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Clear mainResumeFlag
|
||||||
|
|
||||||
|
mainResumeFlag = false;
|
||||||
|
|
||||||
//launch Status table control thread on 'pm' modules
|
//launch Status table control thread on 'pm' modules
|
||||||
pthread_t statusThread;
|
pthread_t statusThread;
|
||||||
int ret = pthread_create (&statusThread, NULL, (void*(*)(void*)) &statusControlThread, NULL);
|
int ret = pthread_create (&statusThread, NULL, (void*(*)(void*)) &statusControlThread, NULL);
|
||||||
if ( ret != 0 )
|
if ( ret != 0 )
|
||||||
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
|
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
|
||||||
|
|
||||||
sleep(6); // give the Status thread time to fully initialize
|
//wait for flag to be set
|
||||||
|
|
||||||
|
while(!mainResumeFlag)
|
||||||
|
{
|
||||||
|
log.writeLog(__LINE__, "WATING FOR mainResumeFlag to be set", LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemStatus systemstatus;
|
SystemStatus systemstatus;
|
||||||
@ -786,6 +809,8 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.writeLog(__LINE__, "SYSTEM STATUS = " + oam.itoa(systemstatus.SystemOpState), LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
if ( systemstatus.SystemOpState != MAN_OFFLINE && !DISABLED) {
|
if ( systemstatus.SystemOpState != MAN_OFFLINE && !DISABLED) {
|
||||||
|
|
||||||
// Loop through the process list to check the process current state
|
// Loop through the process list to check the process current state
|
||||||
@ -2099,6 +2124,10 @@ static void statusControlThread()
|
|||||||
log.writeLog(__LINE__, "Dbroot Status shared Memory allociated and Initialized", LOG_TYPE_DEBUG);
|
log.writeLog(__LINE__, "Dbroot Status shared Memory allociated and Initialized", LOG_TYPE_DEBUG);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Set mainResumeFlag, to start up main thread
|
||||||
|
|
||||||
|
mainResumeFlag = true;
|
||||||
|
|
||||||
string portName = "ProcStatusControl";
|
string portName = "ProcStatusControl";
|
||||||
if (runStandby) {
|
if (runStandby) {
|
||||||
portName = "ProcStatusControlStandby";
|
portName = "ProcStatusControlStandby";
|
||||||
|
51
utils/common/crashtrace.cpp
Normal file
51
utils/common/crashtrace.cpp
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
/* Copyright (C) 2018 MariaDB Corporaton
|
||||||
|
|
||||||
|
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. */
|
||||||
|
|
||||||
|
#include <execinfo.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <ctime>
|
||||||
|
#include <cstring>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void fatalHandler(int sig)
|
||||||
|
{
|
||||||
|
char filename[128];
|
||||||
|
void* addrs[128];
|
||||||
|
snprintf(filename, 128, "/var/log/mariadb/columnstore/trace/%s.%d.log", program_invocation_short_name, getpid());
|
||||||
|
FILE* logfile = fopen(filename, "w");
|
||||||
|
char s[30];
|
||||||
|
struct tm tim;
|
||||||
|
time_t now;
|
||||||
|
now = time(NULL);
|
||||||
|
tim = *(localtime(&now));
|
||||||
|
strftime(s,30,"%F %T",&tim);
|
||||||
|
fprintf(logfile, "Date/time: %s\n", s);
|
||||||
|
fprintf(logfile, "Signal: %d\n\n", sig);
|
||||||
|
fflush(logfile);
|
||||||
|
int fd = fileno(logfile);
|
||||||
|
int count = backtrace(addrs, sizeof(addrs) / sizeof(addrs[0]));
|
||||||
|
backtrace_symbols_fd(addrs, count, fd);
|
||||||
|
fclose(logfile);
|
||||||
|
struct sigaction sigact;
|
||||||
|
memset(&sigact, 0, sizeof(sigact));
|
||||||
|
sigact.sa_handler = SIG_DFL;
|
||||||
|
sigaction(sig, &sigact, NULL);
|
||||||
|
raise(sig);
|
||||||
|
}
|
18
utils/common/crashtrace.h
Normal file
18
utils/common/crashtrace.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/* Copyright (C) 2018 MariaDB Corporaton
|
||||||
|
|
||||||
|
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. */
|
||||||
|
|
||||||
|
void fatalHandler(int sig);
|
@ -39,7 +39,7 @@ install(TARGETS brm DESTINATION ${ENGINE_LIBDIR} COMPONENT libs)
|
|||||||
|
|
||||||
########### next target ###############
|
########### next target ###############
|
||||||
|
|
||||||
set(controllernode_SRCS masternode.cpp masterdbrmnode.cpp)
|
set(controllernode_SRCS masternode.cpp masterdbrmnode.cpp ../../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(controllernode ${controllernode_SRCS})
|
add_executable(controllernode ${controllernode_SRCS})
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ install(TARGETS controllernode DESTINATION ${ENGINE_BINDIR} COMPONENT platform)
|
|||||||
|
|
||||||
########### next target ###############
|
########### next target ###############
|
||||||
|
|
||||||
set(workernode_SRCS slavenode.cpp)
|
set(workernode_SRCS slavenode.cpp ../../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(workernode ${workernode_SRCS})
|
add_executable(workernode ${workernode_SRCS})
|
||||||
|
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
#include "brmtypes.h"
|
#include "brmtypes.h"
|
||||||
#include "utils_utf8.h"
|
#include "utils_utf8.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
#define MAX_RETRIES 10
|
#define MAX_RETRIES 10
|
||||||
|
|
||||||
BRM::MasterDBRMNode *m;
|
BRM::MasterDBRMNode *m;
|
||||||
@ -128,6 +130,13 @@ int main(int argc, char **argv)
|
|||||||
signal(SIGUSR1, restart);
|
signal(SIGUSR1, restart);
|
||||||
signal(SIGPIPE, SIG_IGN);
|
signal(SIGPIPE, SIG_IGN);
|
||||||
#endif
|
#endif
|
||||||
|
struct sigaction ign;
|
||||||
|
|
||||||
|
memset(&ign, 0, sizeof(ign));
|
||||||
|
ign.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &ign, 0);
|
||||||
|
sigaction(SIGABRT, &ign, 0);
|
||||||
|
sigaction(SIGFPE, &ign, 0);
|
||||||
|
|
||||||
idbdatafile::IDBPolicy::configIDBPolicy();
|
idbdatafile::IDBPolicy::configIDBPolicy();
|
||||||
|
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#include "utils_utf8.h"
|
#include "utils_utf8.h"
|
||||||
#include "IDBPolicy.h"
|
#include "IDBPolicy.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
using namespace BRM;
|
using namespace BRM;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@ -117,6 +119,13 @@ int main(int argc, char **argv)
|
|||||||
signal(SIGPIPE, SIG_IGN);
|
signal(SIGPIPE, SIG_IGN);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct sigaction ign;
|
||||||
|
memset(&ign, 0, sizeof(ign));
|
||||||
|
ign.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &ign, 0);
|
||||||
|
sigaction(SIGABRT, &ign, 0);
|
||||||
|
sigaction(SIGFPE, &ign, 0);
|
||||||
|
|
||||||
if (!(argc >= 3 && (arg = argv[2]) == "fg"))
|
if (!(argc >= 3 && (arg = argv[2]) == "fg"))
|
||||||
err = fork();
|
err = fork();
|
||||||
|
|
||||||
|
@ -14,7 +14,8 @@ set(WriteEngineServer_SRCS
|
|||||||
we_dmlcommandproc.cpp
|
we_dmlcommandproc.cpp
|
||||||
we_cleartablelockcmd.cpp
|
we_cleartablelockcmd.cpp
|
||||||
we_cpifeederthread.cpp
|
we_cpifeederthread.cpp
|
||||||
we_getfilesizes.cpp)
|
we_getfilesizes.cpp
|
||||||
|
../../utils/common/crashtrace.cpp)
|
||||||
|
|
||||||
add_executable(WriteEngineServer ${WriteEngineServer_SRCS})
|
add_executable(WriteEngineServer ${WriteEngineServer_SRCS})
|
||||||
|
|
||||||
|
@ -51,6 +51,8 @@ using namespace oam;
|
|||||||
#include "utils_utf8.h"
|
#include "utils_utf8.h"
|
||||||
#include "dbrm.h"
|
#include "dbrm.h"
|
||||||
|
|
||||||
|
#include "crashtrace.h"
|
||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
void added_a_pm(int)
|
void added_a_pm(int)
|
||||||
@ -96,6 +98,9 @@ int main(int argc, char** argv)
|
|||||||
string systemLang = "C";
|
string systemLang = "C";
|
||||||
systemLang = funcexp::utf8::idb_setlocale();
|
systemLang = funcexp::utf8::idb_setlocale();
|
||||||
|
|
||||||
|
// This is unset due to the way we start it
|
||||||
|
program_invocation_short_name = const_cast<char*>("WriteEngineServ");
|
||||||
|
|
||||||
printf ("Locale is : %s\n", systemLang.c_str() );
|
printf ("Locale is : %s\n", systemLang.c_str() );
|
||||||
|
|
||||||
//set BUSY_INIT state
|
//set BUSY_INIT state
|
||||||
@ -119,6 +124,12 @@ int main(int argc, char** argv)
|
|||||||
sigaction(SIGHUP, &sa, 0);
|
sigaction(SIGHUP, &sa, 0);
|
||||||
sa.sa_handler = SIG_IGN;
|
sa.sa_handler = SIG_IGN;
|
||||||
sigaction(SIGPIPE, &sa, 0);
|
sigaction(SIGPIPE, &sa, 0);
|
||||||
|
|
||||||
|
memset(&sa, 0, sizeof(sa));
|
||||||
|
sa.sa_handler = fatalHandler;
|
||||||
|
sigaction(SIGSEGV, &sa, 0);
|
||||||
|
sigaction(SIGABRT, &sa, 0);
|
||||||
|
sigaction(SIGFPE, &sa, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Init WriteEngine Wrapper (including Config Columnstore.xml cache)
|
// Init WriteEngine Wrapper (including Config Columnstore.xml cache)
|
||||||
|
Reference in New Issue
Block a user