You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-08-07 03:22:57 +03:00
Merge branch 'develop-1.1' into 1.1-mergeup-20180224
This commit is contained in:
@@ -77,6 +77,9 @@ ENDIF("${isSystemDir}" STREQUAL "-1")
|
|||||||
|
|
||||||
INCLUDE (configureEngine.cmake)
|
INCLUDE (configureEngine.cmake)
|
||||||
|
|
||||||
|
# releasenum is used by external scripts for various tasks. Leave it alone.
|
||||||
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/build/releasenum.in ${CMAKE_CURRENT_BINARY_DIR}/build/releasenum IMMEDIATE)
|
||||||
|
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/build/releasenum DESTINATION ${INSTALL_ENGINE} COMPONENT platform)
|
||||||
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h.in ${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h)
|
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h.in ${CMAKE_CURRENT_SOURCE_DIR}/columnstoreversion.h)
|
||||||
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)
|
||||||
|
|
||||||
|
@@ -7,5 +7,4 @@ fi
|
|||||||
|
|
||||||
prefix=/usr/local
|
prefix=/usr/local
|
||||||
|
|
||||||
echo "MariaDB ColumnStore RPM install completed"
|
|
||||||
|
|
||||||
|
@@ -9,4 +9,3 @@ prefix=/usr/local
|
|||||||
|
|
||||||
test -x /usr/local/mariadb/columnstore/bin/post-install && /usr/local/mariadb/columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode
|
test -x /usr/local/mariadb/columnstore/bin/post-install && /usr/local/mariadb/columnstore/bin/post-install --prefix=$prefix --rpmmode=$rpmmode
|
||||||
|
|
||||||
echo "MariaDB ColumnStore RPM install completed"
|
|
||||||
|
@@ -7,6 +7,5 @@ fi
|
|||||||
|
|
||||||
prefix=/usr/local
|
prefix=/usr/local
|
||||||
|
|
||||||
echo "MariaDB ColumnStore RPM install completed"
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -87,7 +87,7 @@ IF (EXISTS "/etc/SuSE-release")
|
|||||||
set(SUSE_VERSION_NUMBER "${CMAKE_MATCH_1}")
|
set(SUSE_VERSION_NUMBER "${CMAKE_MATCH_1}")
|
||||||
ENDIF ()
|
ENDIF ()
|
||||||
if (${REDHAT_VERSION_NUMBER} EQUAL 6)
|
if (${REDHAT_VERSION_NUMBER} EQUAL 6)
|
||||||
SETA(CPACK_RPM_platform_PACKAGE_REQUIRES "expect" "mariadb-columnstore-libs" "snappy")
|
SETA(CPACK_RPM_platform_PACKAGE_REQUIRES "expect" "mariadb-columnstore-libs" "mariadb-columnstore-shared" "snappy")
|
||||||
# Disable auto require as this will also try to pull Boost via RPM
|
# Disable auto require as this will also try to pull Boost via RPM
|
||||||
SET(CPACK_RPM_PACKAGE_AUTOREQPROV " no")
|
SET(CPACK_RPM_PACKAGE_AUTOREQPROV " no")
|
||||||
elseif (${SUSE_VERSION_NUMBER} EQUAL 12)
|
elseif (${SUSE_VERSION_NUMBER} EQUAL 12)
|
||||||
@@ -188,6 +188,7 @@ SET(CPACK_RPM_platform_USER_FILELIST
|
|||||||
"/usr/local/mariadb/columnstore/etc/MessageFile.txt"
|
"/usr/local/mariadb/columnstore/etc/MessageFile.txt"
|
||||||
"/usr/local/mariadb/columnstore/etc/ErrorMessage.txt"
|
"/usr/local/mariadb/columnstore/etc/ErrorMessage.txt"
|
||||||
"/usr/local/mariadb/columnstore/local/module"
|
"/usr/local/mariadb/columnstore/local/module"
|
||||||
|
"/usr/local/mariadb/columnstore/releasenum"
|
||||||
"/usr/local/mariadb/columnstore/bin/rollback"
|
"/usr/local/mariadb/columnstore/bin/rollback"
|
||||||
"/usr/local/mariadb/columnstore/bin/editem"
|
"/usr/local/mariadb/columnstore/bin/editem"
|
||||||
"/usr/local/mariadb/columnstore/bin/getConfig"
|
"/usr/local/mariadb/columnstore/bin/getConfig"
|
||||||
|
@@ -1155,6 +1155,12 @@ void JobList::abort()
|
|||||||
|
|
||||||
for (i = 0; i < fProject.size(); i++)
|
for (i = 0; i < fProject.size(); i++)
|
||||||
fProject[i]->abort();
|
fProject[i]->abort();
|
||||||
|
|
||||||
|
for (i = 0; i < fQuery.size(); i++)
|
||||||
|
fQuery[i]->join();
|
||||||
|
|
||||||
|
for (i = 0; i < fProject.size(); i++)
|
||||||
|
fProject[i]->join();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -415,6 +415,7 @@ void SubQueryTransformer::updateCorrelateInfo()
|
|||||||
sc->schemaName("");
|
sc->schemaName("");
|
||||||
sc->tableName(fVtable.name());
|
sc->tableName(fVtable.name());
|
||||||
sc->tableAlias(fVtable.alias());
|
sc->tableAlias(fVtable.alias());
|
||||||
|
sc->viewName(fVtable.view());
|
||||||
sc->oid(fVtable.columnOid(k->second));
|
sc->oid(fVtable.columnOid(k->second));
|
||||||
sc->columnName(fVtable.columns()[k->second]->columnName());
|
sc->columnName(fVtable.columns()[k->second]->columnName());
|
||||||
const CalpontSystemCatalog::ColType& ct = fVtable.columnType(k->second);
|
const CalpontSystemCatalog::ColType& ct = fVtable.columnType(k->second);
|
||||||
|
@@ -5063,22 +5063,6 @@ void TupleAggregateStep::threadedAggregateRowGroups(uint32_t threadID)
|
|||||||
|
|
||||||
if (more)
|
if (more)
|
||||||
{
|
{
|
||||||
// Trying out a ramp-up strategy for starting the
|
|
||||||
// first phase threads to cut overhead on big systems
|
|
||||||
// processing small result
|
|
||||||
// sets. On every non-zero read from the input FIFO,
|
|
||||||
// and if there is more data to read, the
|
|
||||||
// first thread will start another thread until the
|
|
||||||
// maximum number is reached.
|
|
||||||
#if 0
|
|
||||||
if (threadID == 0 && fFirstPhaseThreadCount < fNumOfThreads &&
|
|
||||||
dlIn->more(fInputIter))
|
|
||||||
{
|
|
||||||
fFirstPhaseRunners.push_back(jobstepThreadPool.invoke(ThreadedAggregator(this, fFirstPhaseThreadCount)));
|
|
||||||
fFirstPhaseThreadCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
fRowGroupIns[threadID].setData(&rgData);
|
fRowGroupIns[threadID].setData(&rgData);
|
||||||
fMemUsage[threadID] += fRowGroupIns[threadID].getSizeWithStrings();
|
fMemUsage[threadID] += fRowGroupIns[threadID].getSizeWithStrings();
|
||||||
|
|
||||||
@@ -5364,29 +5348,17 @@ uint64_t TupleAggregateStep::doThreadedAggregate(ByteStream& bs, RowGroupDL* dlp
|
|||||||
{
|
{
|
||||||
initializeMultiThread();
|
initializeMultiThread();
|
||||||
|
|
||||||
// This block of code starts all threads at the start
|
vector<uint64_t> runners; // thread pool handles
|
||||||
fFirstPhaseThreadCount = fNumOfThreads;
|
runners.reserve(fNumOfThreads); // to prevent a resize during use
|
||||||
fFirstPhaseRunners.clear();
|
|
||||||
fFirstPhaseRunners.reserve(fNumOfThreads); // to prevent a resize during use
|
|
||||||
|
|
||||||
|
// Start the aggregator threads
|
||||||
for (i = 0; i < fNumOfThreads; i++)
|
for (i = 0; i < fNumOfThreads; i++)
|
||||||
{
|
{
|
||||||
fFirstPhaseRunners.push_back(jobstepThreadPool.invoke(ThreadedAggregator(this, i)));
|
runners.push_back(jobstepThreadPool.invoke(ThreadedAggregator(this, i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
// Now wait for all those threads
|
||||||
// This block of code starts one thread, relies on doThreadedAggregation()
|
jobstepThreadPool.join(runners);
|
||||||
// For reasons unknown, this doesn't work right with threadpool
|
|
||||||
// to start more as needed
|
|
||||||
fFirstPhaseRunners.clear();
|
|
||||||
fFirstPhaseRunners.reserve(fNumOfThreads); // to prevent a resize during use
|
|
||||||
fFirstPhaseThreadCount = 1;
|
|
||||||
fFirstPhaseRunners.push_back(jobstepThreadPool.invoke(ThreadedAggregator(this, 0)));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Now wait for that thread plus all the threads it may have spawned
|
|
||||||
jobstepThreadPool.join(fFirstPhaseRunners);
|
|
||||||
fFirstPhaseRunners.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dynamic_cast<RowAggregationDistinct*>(fAggregator.get()) && fAggregator->aggMapKeyLength() > 0)
|
if (dynamic_cast<RowAggregationDistinct*>(fAggregator.get()) && fAggregator->aggMapKeyLength() > 0)
|
||||||
|
@@ -199,8 +199,6 @@ private:
|
|||||||
bool fIsMultiThread;
|
bool fIsMultiThread;
|
||||||
int fInputIter; // iterator
|
int fInputIter; // iterator
|
||||||
boost::scoped_array<uint64_t> fMemUsage;
|
boost::scoped_array<uint64_t> fMemUsage;
|
||||||
std::vector<uint64_t> fFirstPhaseRunners; // thread pool handles
|
|
||||||
uint32_t fFirstPhaseThreadCount;
|
|
||||||
|
|
||||||
boost::shared_ptr<int64_t> fSessionMemLimit;
|
boost::shared_ptr<int64_t> fSessionMemLimit;
|
||||||
};
|
};
|
||||||
|
@@ -28,8 +28,8 @@ DROP PROCEDURE IF EXISTS `total_usage` //
|
|||||||
CREATE PROCEDURE total_usage ()
|
CREATE PROCEDURE total_usage ()
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT
|
SELECT
|
||||||
(SELECT format_filesize(sum(data_size)) TOTAL_DATA_SIZE FROM INFORMATION_SCHEMA.COLUMNSTORE_EXTENTS) TOTAL_DATA_SIZE,
|
(SELECT columnstore_info.format_filesize(sum(data_size)) TOTAL_DATA_SIZE FROM INFORMATION_SCHEMA.COLUMNSTORE_EXTENTS) TOTAL_DATA_SIZE,
|
||||||
(SELECT format_filesize(sum(file_size)) TOTAL_DISK_USAGE FROM INFORMATION_SCHEMA.COLUMNSTORE_FILES) TOTAL_DISK_USAGE;
|
(SELECT columnstore_info.format_filesize(sum(file_size)) TOTAL_DISK_USAGE FROM INFORMATION_SCHEMA.COLUMNSTORE_FILES) TOTAL_DISK_USAGE;
|
||||||
END //
|
END //
|
||||||
|
|
||||||
DROP PROCEDURE IF EXISTS `table_usage` //
|
DROP PROCEDURE IF EXISTS `table_usage` //
|
||||||
@@ -52,21 +52,21 @@ CREATE PROCEDURE table_usage (IN t_schema char(64), IN t_name char(64))
|
|||||||
CREATE TABLE columnstore_info.columnstore_files engine=myisam as (select * from information_schema.columnstore_files);
|
CREATE TABLE columnstore_info.columnstore_files engine=myisam as (select * from information_schema.columnstore_files);
|
||||||
ALTER TABLE columnstore_info.columnstore_files ADD INDEX `object_id` (`object_id`);
|
ALTER TABLE columnstore_info.columnstore_files ADD INDEX `object_id` (`object_id`);
|
||||||
IF t_name IS NOT NULL THEN
|
IF t_name IS NOT NULL THEN
|
||||||
SELECT TABLE_SCHEMA, TABLE_NAME, format_filesize(data) as DATA_DISK_USAGE, format_filesize(dict) as DICT_DISK_USAGE, format_filesize(data + dict) as TOTAL_USAGE FROM (
|
SELECT TABLE_SCHEMA, TABLE_NAME, columnstore_info.format_filesize(data) as DATA_DISK_USAGE, columnstore_info.format_filesize(dict) as DICT_DISK_USAGE, columnstore_info.format_filesize(data + dict) as TOTAL_USAGE FROM (
|
||||||
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
|
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
|
||||||
FROM
|
FROM
|
||||||
columnstore_info.columnstore_columns ics where table_name = t_name and (table_schema = t_schema or t_schema IS NULL)
|
columnstore_info.columnstore_columns ics where table_name = t_name and (table_schema = t_schema or t_schema IS NULL)
|
||||||
group by table_schema, table_name
|
group by table_schema, table_name
|
||||||
) q;
|
) q;
|
||||||
ELSEIF t_schema IS NOT NULL THEN
|
ELSEIF t_schema IS NOT NULL THEN
|
||||||
SELECT TABLE_SCHEMA, TABLE_NAME, format_filesize(data) as DATA_DISK_USAGE, format_filesize(dict) as DICT_DISK_USAGE, format_filesize(data + dict) as TOTAL_USAGE FROM (
|
SELECT TABLE_SCHEMA, TABLE_NAME, columnstore_info.format_filesize(data) as DATA_DISK_USAGE, columnstore_info.format_filesize(dict) as DICT_DISK_USAGE, columnstore_info.format_filesize(data + dict) as TOTAL_USAGE FROM (
|
||||||
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
|
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
|
||||||
FROM
|
FROM
|
||||||
columnstore_info.columnstore_columns ics where table_schema = t_schema
|
columnstore_info.columnstore_columns ics where table_schema = t_schema
|
||||||
group by table_schema, table_name
|
group by table_schema, table_name
|
||||||
) q;
|
) q;
|
||||||
ELSE
|
ELSE
|
||||||
SELECT TABLE_SCHEMA, TABLE_NAME, format_filesize(data) as DATA_DISK_USAGE, format_filesize(dict) as DICT_DISK_USAGE, format_filesize(data + dict) as TOTAL_USAGE FROM (
|
SELECT TABLE_SCHEMA, TABLE_NAME, columnstore_info.format_filesize(data) as DATA_DISK_USAGE, columnstore_info.format_filesize(dict) as DICT_DISK_USAGE, columnstore_info.format_filesize(data + dict) as TOTAL_USAGE FROM (
|
||||||
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
|
SELECT TABLE_SCHEMA, TABLE_NAME, (SELECT sum(cf.file_size) as data FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema) as data, (SELECT sum(cf.file_size) as dict FROM columnstore_info.columnstore_columns cc JOIN columnstore_info.columnstore_files cf ON cc.dictionary_object_id = cf.object_id WHERE table_name = ics.table_name and table_schema = ics.table_schema GROUP BY table_schema, table_name) as dict
|
||||||
FROM
|
FROM
|
||||||
columnstore_info.columnstore_columns ics
|
columnstore_info.columnstore_columns ics
|
||||||
|
@@ -1870,7 +1870,7 @@ int ProcessDDLStatement(string& ddlStatement, string& schema, const string& tabl
|
|||||||
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "Use of the MySQL auto_increment syntax is not supported in Columnstore. If you wish to create an auto increment column in Columnstore, please consult the Columnstore SQL Syntax Guide for the correct usage.");
|
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "Use of the MySQL auto_increment syntax is not supported in Columnstore. If you wish to create an auto increment column in Columnstore, please consult the Columnstore SQL Syntax Guide for the correct usage.");
|
||||||
}
|
}
|
||||||
// MCOL-867. MariaDB RENAME TABLE statement supports WAIT|NOWAIT options since 10.3.0 but Columnstore isn't yet.
|
// MCOL-867. MariaDB RENAME TABLE statement supports WAIT|NOWAIT options since 10.3.0 but Columnstore isn't yet.
|
||||||
else if(ddlStatement.find("WAIT") != string::npos || ddlStatement.find("NOWAIT") != string::npos)
|
else if (ddlStatement.find("WAIT") != string::npos || ddlStatement.find("NOWAIT") != string::npos)
|
||||||
{
|
{
|
||||||
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "WAIT and NOWAIT options are not supported in Columnstore. Please consult the Columnstore SQL Syntax Guide for the correct usage.");
|
thd->raise_error_printf(ER_CHECK_NOT_IMPLEMENTED, "WAIT and NOWAIT options are not supported in Columnstore. Please consult the Columnstore SQL Syntax Guide for the correct usage.");
|
||||||
}
|
}
|
||||||
|
@@ -2029,7 +2029,7 @@ extern "C"
|
|||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
__declspec(dllexport)
|
__declspec(dllexport)
|
||||||
#endif
|
#endif
|
||||||
// Return 1 if system is read only; 0 if writeable
|
// Return non-zero if system is read only; 0 if writeable
|
||||||
long long mcssystemreadonly(UDF_INIT* initid, UDF_ARGS* args,
|
long long mcssystemreadonly(UDF_INIT* initid, UDF_ARGS* args,
|
||||||
char* is_null, char* error)
|
char* is_null, char* error)
|
||||||
{
|
{
|
||||||
@@ -2038,10 +2038,15 @@ extern "C"
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (dbrm.isReadWrite()) // Returns 0 for writable, 5 for read only
|
if (dbrm.getSystemSuspended())
|
||||||
{
|
{
|
||||||
rtn = 1;
|
rtn = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dbrm.isReadWrite() > 0) // Returns 0 for writable, 5 for read only
|
||||||
|
{
|
||||||
|
rtn = 2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
@@ -2067,47 +2072,6 @@ extern "C"
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
__declspec(dllexport)
|
|
||||||
#endif
|
|
||||||
// Return 1 if system is read only; 0 if writeable
|
|
||||||
long long mcswritessuspended(UDF_INIT* initid, UDF_ARGS* args,
|
|
||||||
char* is_null, char* error)
|
|
||||||
{
|
|
||||||
long long rtn = 0;
|
|
||||||
DBRM dbrm(true);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (dbrm.getSystemSuspended())
|
|
||||||
{
|
|
||||||
rtn = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...)
|
|
||||||
{
|
|
||||||
*error = 1;
|
|
||||||
rtn = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rtn;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
__declspec(dllexport)
|
|
||||||
#endif
|
|
||||||
my_bool mcswritessuspended_init(UDF_INIT* initid, UDF_ARGS* args, char* message)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
__declspec(dllexport)
|
|
||||||
#endif
|
|
||||||
void mcswritessuspended_deinit(UDF_INIT* initid)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#define MAXSTRINGLENGTH 50
|
#define MAXSTRINGLENGTH 50
|
||||||
|
|
||||||
const char* PmSmallSideMaxMemory = "pmmaxmemorysmallside";
|
const char* PmSmallSideMaxMemory = "pmmaxmemorysmallside";
|
||||||
|
@@ -84,7 +84,6 @@ CREATE FUNCTION idbpartition RETURNS STRING soname 'libcalmysql.so';
|
|||||||
CREATE FUNCTION idblocalpm RETURNS INTEGER soname 'libcalmysql.so';
|
CREATE FUNCTION idblocalpm RETURNS INTEGER soname 'libcalmysql.so';
|
||||||
CREATE FUNCTION mcssystemready RETURNS INTEGER soname 'libcalmysql.so';
|
CREATE FUNCTION mcssystemready RETURNS INTEGER soname 'libcalmysql.so';
|
||||||
CREATE FUNCTION mcssystemreadonly RETURNS INTEGER soname 'libcalmysql.so';
|
CREATE FUNCTION mcssystemreadonly RETURNS INTEGER soname 'libcalmysql.so';
|
||||||
CREATE FUNCTION mcswritessuspended RETURNS INTEGER soname 'libcalmysql.so';
|
|
||||||
|
|
||||||
CREATE DATABASE IF NOT EXISTS infinidb_vtable;
|
CREATE DATABASE IF NOT EXISTS infinidb_vtable;
|
||||||
CREATE DATABASE IF NOT EXISTS infinidb_querystats;
|
CREATE DATABASE IF NOT EXISTS infinidb_querystats;
|
||||||
|
@@ -1242,10 +1242,12 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
void exit_(int)
|
void exit_(int)
|
||||||
{
|
{
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void added_a_pm(int)
|
void added_a_pm(int)
|
||||||
{
|
{
|
||||||
@@ -1293,7 +1295,6 @@ void printTotalUmMemory(int sig)
|
|||||||
void setupSignalHandlers()
|
void setupSignalHandlers()
|
||||||
{
|
{
|
||||||
#ifdef _MSC_VER
|
#ifdef _MSC_VER
|
||||||
signal(SIGSEGV, exit_);
|
|
||||||
signal(SIGINT, exit_);
|
signal(SIGINT, exit_);
|
||||||
signal(SIGTERM, exit_);
|
signal(SIGTERM, exit_);
|
||||||
#else
|
#else
|
||||||
@@ -1309,6 +1310,11 @@ void setupSignalHandlers()
|
|||||||
sigaction(SIGHUP, &ign, 0);
|
sigaction(SIGHUP, &ign, 0);
|
||||||
ign.sa_handler = printTotalUmMemory;
|
ign.sa_handler = printTotalUmMemory;
|
||||||
sigaction(SIGUSR1, &ign, 0);
|
sigaction(SIGUSR1, &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
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1389,6 +1395,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*>("ExeMgr");
|
||||||
|
|
||||||
gDebug = 0;
|
gDebug = 0;
|
||||||
bool eFlg = false;
|
bool eFlg = false;
|
||||||
int c;
|
int c;
|
||||||
|
@@ -19,6 +19,10 @@
|
|||||||
<IPAddr>0.0.0.0</IPAddr>
|
<IPAddr>0.0.0.0</IPAddr>
|
||||||
<Port>8603</Port>
|
<Port>8603</Port>
|
||||||
</ProcMgr>
|
</ProcMgr>
|
||||||
|
<ProcMgr_Alarm>
|
||||||
|
<IPAddr>127.0.0.1</IPAddr>
|
||||||
|
<Port>8606</Port>
|
||||||
|
</ProcMgr_Alarm>
|
||||||
<ProcStatusControl>
|
<ProcStatusControl>
|
||||||
<IPAddr>0.0.0.0</IPAddr>
|
<IPAddr>0.0.0.0</IPAddr>
|
||||||
<Port>8604</Port>
|
<Port>8604</Port>
|
||||||
|
@@ -14,6 +14,10 @@
|
|||||||
<IPAddr>127.0.0.1</IPAddr>
|
<IPAddr>127.0.0.1</IPAddr>
|
||||||
<Port>8603</Port>
|
<Port>8603</Port>
|
||||||
</ProcMgr>
|
</ProcMgr>
|
||||||
|
<ProcMgr_Alarm>
|
||||||
|
<IPAddr>127.0.0.1</IPAddr>
|
||||||
|
<Port>8606</Port>
|
||||||
|
</ProcMgr_Alarm>
|
||||||
<ProcStatusControl>
|
<ProcStatusControl>
|
||||||
<IPAddr>127.0.0.1</IPAddr>
|
<IPAddr>127.0.0.1</IPAddr>
|
||||||
<Port>8604</Port>
|
<Port>8604</Port>
|
||||||
|
@@ -1,2 +1,2 @@
|
|||||||
/usr/local/mariadb/columnstore/lib
|
/usr/local/mariadb/columnstore/lib
|
||||||
|
/usr/local/mariadb/columnstore/mysql/lib
|
@@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# MariaDb Columnstore Log Rotate file that gets installed in /etc/logrotate.d
|
# MariaDB ColumnStore Log Rotate file that gets installed in /etc/logrotate.d
|
||||||
# as part of the RPM installation
|
# as part of the package installation
|
||||||
#
|
#
|
||||||
|
|
||||||
/var/log/mariadb/columnstore/*.log {
|
/var/log/mariadb/columnstore/*.log {
|
||||||
@@ -10,14 +10,7 @@
|
|||||||
dateext
|
dateext
|
||||||
copytruncate
|
copytruncate
|
||||||
olddir /var/log/mariadb/columnstore/archive
|
olddir /var/log/mariadb/columnstore/archive
|
||||||
}
|
su root root
|
||||||
/var/log/mariadb/columnstore/*.log1 {
|
|
||||||
missingok
|
|
||||||
rotate 7
|
|
||||||
daily
|
|
||||||
nocreate
|
|
||||||
compress
|
|
||||||
olddir /var/log/mariadb/columnstore/archive
|
|
||||||
}
|
}
|
||||||
/usr/local/mariadb/columnstore/etc/Columnstore.xml {
|
/usr/local/mariadb/columnstore/etc/Columnstore.xml {
|
||||||
daily
|
daily
|
||||||
@@ -32,4 +25,5 @@
|
|||||||
dateext
|
dateext
|
||||||
copytruncate
|
copytruncate
|
||||||
olddir /usr/local/mariadb/columnstore/mysql/db
|
olddir /usr/local/mariadb/columnstore/mysql/db
|
||||||
|
su root root
|
||||||
}
|
}
|
||||||
|
@@ -230,10 +230,6 @@ if [ $user = "root" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#setup MariaDB Columnstore system logging
|
|
||||||
sed -i -e s/groupname/$user/g $installdir/bin/columnstoreSyslog7
|
|
||||||
sed -i -e s/username/$user/g $installdir/bin/columnstoreSyslog7
|
|
||||||
|
|
||||||
if [ $user = "root" ]; then
|
if [ $user = "root" ]; then
|
||||||
$installdir/bin/syslogSetup.sh install > /tmp/syslog_install.log 2>&1
|
$installdir/bin/syslogSetup.sh install > /tmp/syslog_install.log 2>&1
|
||||||
rm -f /etc/default/columnstore
|
rm -f /etc/default/columnstore
|
||||||
@@ -255,10 +251,6 @@ else
|
|||||||
$SUDO chmod 666 /etc/fstab
|
$SUDO chmod 666 /etc/fstab
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# install Columnstore Log Rotate File
|
|
||||||
$SUDO cp $installdir/bin/columnstoreLogRotate /etc/logrotate.d/columnstore > /dev/null 2>&1
|
|
||||||
$SUDO chmod 644 /etc/logrotate.d/columnstore
|
|
||||||
|
|
||||||
#check if MariaDB Columnstore system logging was setup
|
#check if MariaDB Columnstore system logging was setup
|
||||||
cat /tmp/syslog_install.log | grep 'No System Logging' >/dev/null 2>&1
|
cat /tmp/syslog_install.log | grep 'No System Logging' >/dev/null 2>&1
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
@@ -276,8 +268,11 @@ fi
|
|||||||
|
|
||||||
#log install message
|
#log install message
|
||||||
test -f $installdir/post/functions && . $installdir/post/functions
|
test -f $installdir/post/functions && . $installdir/post/functions
|
||||||
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib $installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****"
|
if [ $user = "root" ]; then
|
||||||
|
$installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****"
|
||||||
|
else
|
||||||
|
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$installdir/lib $installdir/bin/cplogger -i 19 "***** MariaDB Columnstore Installed *****"
|
||||||
|
fi
|
||||||
#setup hadoop
|
#setup hadoop
|
||||||
hadoop=`which hadoop 2>/dev/null`
|
hadoop=`which hadoop 2>/dev/null`
|
||||||
if [ -z "$hadoop" ]; then
|
if [ -z "$hadoop" ]; then
|
||||||
|
@@ -166,17 +166,21 @@ if [ ! -z "$syslog_conf" ] ; then
|
|||||||
#set the syslog for ColumnStore logging
|
#set the syslog for ColumnStore logging
|
||||||
# remove older version incase it was installed by previous build
|
# remove older version incase it was installed by previous build
|
||||||
$SUDO rm -rf /etc/rsyslog.d/columnstore.conf
|
$SUDO rm -rf /etc/rsyslog.d/columnstore.conf
|
||||||
|
|
||||||
if [ $rsyslog7 == 1 ]; then
|
if [ $rsyslog7 == 1 ]; then
|
||||||
|
sed -i -e s/groupname/adm/g ${columnstoreSyslogFile7}
|
||||||
|
sed -i -e s/username/syslog/g ${columnstoreSyslogFile7}
|
||||||
|
|
||||||
$SUDO rm -f /etc/rsyslog.d/49-columnstore.conf
|
$SUDO rm -f /etc/rsyslog.d/49-columnstore.conf
|
||||||
$SUDO cp ${columnstoreSyslogFile7} ${syslog_conf}
|
$SUDO cp ${columnstoreSyslogFile7} ${syslog_conf}
|
||||||
else
|
else
|
||||||
$SUDO cp ${columnstoreSyslogFile} ${syslog_conf}
|
$SUDO cp ${columnstoreSyslogFile} ${syslog_conf}
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $rsyslog7 == 1 ]; then
|
# install Columnstore Log Rotate File
|
||||||
$SUDO chown -R syslog:adm /var/log/mariadb/columnstore >/dev/null 2>&1
|
$SUDO cp $installdir/bin/columnstoreLogRotate /etc/logrotate.d/columnstore > /dev/null 2>&1
|
||||||
fi
|
$SUDO chmod 644 /etc/logrotate.d/columnstore
|
||||||
|
|
||||||
restartSyslog
|
restartSyslog
|
||||||
fi
|
fi
|
||||||
|
@@ -521,8 +521,7 @@ enum PROC_MGT_MSG_REQUEST
|
|||||||
ENABLEMYSQLREP,
|
ENABLEMYSQLREP,
|
||||||
DISABLEMYSQLREP,
|
DISABLEMYSQLREP,
|
||||||
GLUSTERASSIGN,
|
GLUSTERASSIGN,
|
||||||
GLUSTERUNASSIGN,
|
GLUSTERUNASSIGN
|
||||||
PROCESSALARM
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** @brief Process Management - Mgr to Mon request options
|
/** @brief Process Management - Mgr to Mon request options
|
||||||
|
@@ -28,10 +28,10 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
#include "messagequeue.h"
|
|
||||||
#include "alarmglobal.h"
|
#include "alarmglobal.h"
|
||||||
#include "liboamcpp.h"
|
#include "liboamcpp.h"
|
||||||
#include "installdir.h"
|
#include "installdir.h"
|
||||||
|
#include "messagequeue.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace oam;
|
using namespace oam;
|
||||||
@@ -409,7 +409,7 @@ void configAlarm (Alarm& calAlarm)
|
|||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* @brief sendAlarmReport API
|
* @brief sendAlarmReport API
|
||||||
*
|
*
|
||||||
* purpose: Process Alarm Report
|
* purpose: Send Alarm Report
|
||||||
*
|
*
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int state,
|
void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int state,
|
||||||
@@ -484,16 +484,73 @@ void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int st
|
|||||||
else
|
else
|
||||||
processName = repProcessName;
|
processName = repProcessName;
|
||||||
|
|
||||||
Alarm calAlarm;
|
int returnStatus = API_SUCCESS; //default
|
||||||
|
ByteStream msg1;
|
||||||
|
|
||||||
calAlarm.setAlarmID (alarmID);
|
// setup message
|
||||||
calAlarm.setComponentID (componentID);
|
msg1 << (ByteStream::byte) alarmID;
|
||||||
calAlarm.setState (state);
|
msg1 << (std::string) componentID;
|
||||||
calAlarm.setSname (ModuleName);
|
msg1 << (ByteStream::byte) state;
|
||||||
calAlarm.setPname (processName);
|
msg1 << (std::string) ModuleName;
|
||||||
calAlarm.setPid (pid);
|
msg1 << (std::string) processName;
|
||||||
calAlarm.setTid (tid);
|
msg1 << (ByteStream::byte) pid;
|
||||||
|
msg1 << (ByteStream::byte) tid;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
//send the msg to Process Manager
|
||||||
|
MessageQueueClient procmgr("ProcMgr_Alarm");
|
||||||
|
procmgr.write(msg1);
|
||||||
|
|
||||||
|
// shutdown connection
|
||||||
|
procmgr.shutdown();
|
||||||
|
}
|
||||||
|
catch (std::runtime_error& e)
|
||||||
|
{
|
||||||
|
LoggingID lid(11);
|
||||||
|
MessageLog ml(lid);
|
||||||
|
Message msg;
|
||||||
|
Message::Args args;
|
||||||
|
args.add("sendAlarmReport error:");
|
||||||
|
args.add(e.what());
|
||||||
|
msg.format(args);
|
||||||
|
ml.logErrorMessage(msg);
|
||||||
|
}
|
||||||
|
catch (std::exception& e)
|
||||||
|
{
|
||||||
|
LoggingID lid(11);
|
||||||
|
MessageLog ml(lid);
|
||||||
|
Message msg;
|
||||||
|
Message::Args args;
|
||||||
|
args.add("sendAlarmReport error:");
|
||||||
|
args.add(e.what());
|
||||||
|
msg.format(args);
|
||||||
|
ml.logErrorMessage(msg);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
LoggingID lid(11);
|
||||||
|
MessageLog ml(lid);
|
||||||
|
Message msg;
|
||||||
|
Message::Args args;
|
||||||
|
args.add("sendAlarmReport error:");
|
||||||
|
args.add("general failure");
|
||||||
|
msg.format(args);
|
||||||
|
ml.logErrorMessage(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
#endif //SKIP_ALARM
|
||||||
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************************
|
||||||
|
* @brief processAlarmReport API
|
||||||
|
*
|
||||||
|
* purpose: Process Alarm Report
|
||||||
|
*
|
||||||
|
*****************************************************************************************/
|
||||||
|
void ALARMManager::processAlarmReport (Alarm& calAlarm)
|
||||||
|
{
|
||||||
// Get alarm configuration
|
// Get alarm configuration
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -512,7 +569,7 @@ void ALARMManager::sendAlarmReport (const char* componentID, int alarmID, int st
|
|||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
#endif //SKIP_ALARM
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
|
@@ -78,6 +78,8 @@ public:
|
|||||||
std::string repProcessName = "");
|
std::string repProcessName = "");
|
||||||
|
|
||||||
|
|
||||||
|
EXPORT void processAlarmReport (Alarm& calAlarm);
|
||||||
|
|
||||||
/** @brief return active alarm list
|
/** @brief return active alarm list
|
||||||
*
|
*
|
||||||
* @param AlarmList the alarm map reference to store alarms
|
* @param AlarmList the alarm map reference to store alarms
|
||||||
|
@@ -58,7 +58,7 @@ const int ArgNum = 10;
|
|||||||
const int DescNumMax = 10;
|
const int DescNumMax = 10;
|
||||||
const int cmdNum = 68;
|
const int cmdNum = 68;
|
||||||
|
|
||||||
const std::string DEFAULT_LOG_FILE = "/var/log/mariadb/columnstore/uiCommands.log";
|
const std::string DEFAULT_LOG_FILE = "/var/log/mariadb/columnstore/mcsadmin.log";
|
||||||
std::ofstream logFile;
|
std::ofstream logFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -2316,7 +2316,8 @@ int main(int argc, char* argv[])
|
|||||||
sysConfig->setConfig(parentProcessMonitor, "IPAddr", parentOAMModuleIPAddr);
|
sysConfig->setConfig(parentProcessMonitor, "IPAddr", parentOAMModuleIPAddr);
|
||||||
sysConfig->setConfig(parentProcessMonitor, "Port", "8800");
|
sysConfig->setConfig(parentProcessMonitor, "Port", "8800");
|
||||||
sysConfig->setConfig("ProcMgr", "IPAddr", parentOAMModuleIPAddr);
|
sysConfig->setConfig("ProcMgr", "IPAddr", parentOAMModuleIPAddr);
|
||||||
//sysConfig->setConfig("ProcHeartbeatControl", "IPAddr", parentOAMModuleIPAddr);
|
sysConfig->setConfig("ProcHeartbeatControl", "IPAddr", parentOAMModuleIPAddr);
|
||||||
|
sysConfig->setConfig("ProcMgr_Alarm", "IPAddr", parentOAMModuleIPAddr);
|
||||||
sysConfig->setConfig("ProcStatusControl", "IPAddr", parentOAMModuleIPAddr);
|
sysConfig->setConfig("ProcStatusControl", "IPAddr", parentOAMModuleIPAddr);
|
||||||
string parentServerMonitor = parentOAMModuleName + "_ServerMonitor";
|
string parentServerMonitor = parentOAMModuleName + "_ServerMonitor";
|
||||||
sysConfig->setConfig(parentServerMonitor, "IPAddr", parentOAMModuleIPAddr);
|
sysConfig->setConfig(parentServerMonitor, "IPAddr", parentOAMModuleIPAddr);
|
||||||
@@ -3227,7 +3228,7 @@ int main(int argc, char* argv[])
|
|||||||
if ( EEPackageType == "rpm")
|
if ( EEPackageType == "rpm")
|
||||||
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.rpm";
|
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.rpm";
|
||||||
else if ( EEPackageType == "deb")
|
else if ( EEPackageType == "deb")
|
||||||
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.deb";
|
columnstorePackage = HOME + "/" + "mariadb-columnstore-*" + systemsoftware.Version + "*.deb";
|
||||||
else
|
else
|
||||||
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.bin.tar.gz";
|
columnstorePackage = HOME + "/" + "mariadb-columnstore-" + version + "*.bin.tar.gz";
|
||||||
|
|
||||||
|
153
procmgr/main.cpp
153
procmgr/main.cpp
@@ -78,6 +78,7 @@ extern bool startFailOver;
|
|||||||
extern bool gOAMParentModuleFlag;
|
extern bool gOAMParentModuleFlag;
|
||||||
|
|
||||||
static void messageThread(Configuration config);
|
static void messageThread(Configuration config);
|
||||||
|
static void alarmMessageThread(Configuration config);
|
||||||
static void sigUser1Handler(int sig);
|
static void sigUser1Handler(int sig);
|
||||||
static void startMgrProcessThread();
|
static void startMgrProcessThread();
|
||||||
static void hdfsActiveAlarmsPushingThread();
|
static void hdfsActiveAlarmsPushingThread();
|
||||||
@@ -280,6 +281,13 @@ int main(int argc, char** argv)
|
|||||||
pthread_t MessageThread;
|
pthread_t MessageThread;
|
||||||
int ret = pthread_create (&MessageThread, NULL, (void* (*)(void*)) &messageThread, &config);
|
int ret = pthread_create (&MessageThread, NULL, (void* (*)(void*)) &messageThread, &config);
|
||||||
|
|
||||||
|
if ( ret != 0 )
|
||||||
|
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
|
||||||
|
|
||||||
|
// create alarm message thread
|
||||||
|
pthread_t AlarmMessageThread;
|
||||||
|
ret = pthread_create (&AlarmMessageThread, NULL, (void* (*)(void*)) &alarmMessageThread, &config);
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
@@ -377,6 +385,7 @@ int main(int argc, char** argv)
|
|||||||
string IPaddr = (*pt1).IPAddr;
|
string IPaddr = (*pt1).IPAddr;
|
||||||
|
|
||||||
sysConfig->setConfig("ProcMgr", "IPAddr", IPaddr);
|
sysConfig->setConfig("ProcMgr", "IPAddr", IPaddr);
|
||||||
|
sysConfig->setConfig("ProcMgr_Alarm", "IPAddr", IPaddr);
|
||||||
|
|
||||||
log.writeLog(__LINE__, "set ProcMgr IPaddr to " + IPaddr, LOG_TYPE_DEBUG);
|
log.writeLog(__LINE__, "set ProcMgr IPaddr to " + IPaddr, LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
@@ -406,6 +415,13 @@ int main(int argc, char** argv)
|
|||||||
pthread_t MessageThread;
|
pthread_t MessageThread;
|
||||||
int ret = pthread_create (&MessageThread, NULL, (void* (*)(void*)) &messageThread, &config);
|
int ret = pthread_create (&MessageThread, NULL, (void* (*)(void*)) &messageThread, &config);
|
||||||
|
|
||||||
|
if ( ret != 0 )
|
||||||
|
log.writeLog(__LINE__, "pthread_create failed, return code = " + oam.itoa(ret), LOG_TYPE_ERROR);
|
||||||
|
|
||||||
|
// create alarm message thread
|
||||||
|
pthread_t AlarmMessageThread;
|
||||||
|
ret = pthread_create (&AlarmMessageThread, NULL, (void* (*)(void*)) &alarmMessageThread, &config);
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -513,8 +529,143 @@ static void messageThread(Configuration config)
|
|||||||
sleep(60);
|
sleep(60);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
/******************************************************************************************
|
||||||
|
* @brief alarmMesssageThread
|
||||||
|
*
|
||||||
|
* purpose: Read incoming alarm messages
|
||||||
|
*
|
||||||
|
******************************************************************************************/
|
||||||
|
static void alarmMessageThread(Configuration config)
|
||||||
|
{
|
||||||
|
ProcessLog log;
|
||||||
|
ProcessManager processManager(config, log);
|
||||||
|
Oam oam;
|
||||||
|
|
||||||
|
ByteStream msg;
|
||||||
|
|
||||||
|
//check for running active, then launch
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
if ( !runStandby)
|
||||||
|
break;
|
||||||
|
|
||||||
|
sleep (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
log.writeLog(__LINE__, "Alarm Message Thread started ..", LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
|
//read and cleanup port before trying to use
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Config* sysConfig = Config::makeConfig();
|
||||||
|
string port = sysConfig->getConfig("ProcMgr_Alarm", "Port");
|
||||||
|
string cmd = "fuser -k " + port + "/tcp >/dev/null 2>&1";
|
||||||
|
|
||||||
|
if ( !rootUser)
|
||||||
|
cmd = "sudo fuser -k " + port + "/tcp >/dev/null 2>&1";
|
||||||
|
|
||||||
|
system(cmd.c_str());
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
//waiting for request
|
||||||
|
//
|
||||||
|
IOSocket fIos;
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
MessageQueueServer procmgr("ProcMgr_Alarm");
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
fIos = procmgr.accept();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
msg = fIos.read();
|
||||||
|
|
||||||
|
if (msg.length() <= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
//log.writeLog(__LINE__, "MSG RECEIVED: Process Alarm Message");
|
||||||
|
|
||||||
|
ByteStream::byte alarmID;
|
||||||
|
std::string componentID;
|
||||||
|
ByteStream::byte state;
|
||||||
|
std::string ModuleName;
|
||||||
|
std::string processName;
|
||||||
|
ByteStream::byte pid;
|
||||||
|
ByteStream::byte tid;
|
||||||
|
|
||||||
|
msg >> alarmID;
|
||||||
|
msg >> componentID;
|
||||||
|
msg >> state;
|
||||||
|
msg >> ModuleName;
|
||||||
|
msg >> processName;
|
||||||
|
msg >> pid;
|
||||||
|
msg >> tid;
|
||||||
|
|
||||||
|
Alarm calAlarm;
|
||||||
|
|
||||||
|
calAlarm.setAlarmID (alarmID);
|
||||||
|
calAlarm.setComponentID (componentID);
|
||||||
|
calAlarm.setState (state);
|
||||||
|
calAlarm.setSname (ModuleName);
|
||||||
|
calAlarm.setPname (processName);
|
||||||
|
calAlarm.setPid (pid);
|
||||||
|
calAlarm.setTid (tid);
|
||||||
|
|
||||||
|
ALARMManager aManager;
|
||||||
|
aManager.processAlarmReport(calAlarm);
|
||||||
|
}
|
||||||
|
catch (exception& ex)
|
||||||
|
{
|
||||||
|
string error = ex.what();
|
||||||
|
log.writeLog(__LINE__, "EXCEPTION ERROR on read for ProcMgr_Alarm:" + error, LOG_TYPE_ERROR);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
log.writeLog(__LINE__, "EXCEPTION ERROR on read for ProcMgr_Alarm: Caught unknown exception!", LOG_TYPE_ERROR);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (exception& ex)
|
||||||
|
{
|
||||||
|
string error = ex.what();
|
||||||
|
log.writeLog(__LINE__, "EXCEPTION ERROR on accept for ProcMgr_Alarm:" + error, LOG_TYPE_ERROR);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
log.writeLog(__LINE__, "EXCEPTION ERROR on accept for ProcMgr_Alarm: Caught unknown exception!", LOG_TYPE_ERROR);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (exception& ex)
|
||||||
|
{
|
||||||
|
string error = ex.what();
|
||||||
|
log.writeLog(__LINE__, "EXCEPTION ERROR on MessageQueueServer for ProcMgr_Alarm:" + error, LOG_TYPE_ERROR);
|
||||||
|
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
log.writeLog(__LINE__, "EXCEPTION ERROR on MessageQueueServer for ProcMgr_Alarm: Caught unknown exception!", LOG_TYPE_ERROR);
|
||||||
|
|
||||||
|
sleep(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************************
|
/******************************************************************************************
|
||||||
|
@@ -2909,44 +2909,6 @@ void processMSG(messageqcpp::IOSocket* cfIos)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
case PROCESSALARM:
|
|
||||||
{
|
|
||||||
log.writeLog(__LINE__, "MSG RECEIVED: Process Alarm Message");
|
|
||||||
|
|
||||||
ByteStream::byte alarmID;
|
|
||||||
std::string componentID;
|
|
||||||
ByteStream::byte state;
|
|
||||||
std::string ModuleName;
|
|
||||||
std::string processName;
|
|
||||||
ByteStream::byte pid;
|
|
||||||
ByteStream::byte tid;
|
|
||||||
|
|
||||||
msg >> alarmID;
|
|
||||||
msg >> componentID;
|
|
||||||
msg >> state;
|
|
||||||
msg >> ModuleName;
|
|
||||||
msg >> processName;
|
|
||||||
msg >> pid;
|
|
||||||
msg >> tid;
|
|
||||||
|
|
||||||
Alarm calAlarm;
|
|
||||||
|
|
||||||
calAlarm.setAlarmID (alarmID);
|
|
||||||
calAlarm.setComponentID (componentID);
|
|
||||||
calAlarm.setState (state);
|
|
||||||
calAlarm.setSname (ModuleName);
|
|
||||||
calAlarm.setPname (processName);
|
|
||||||
calAlarm.setPid (pid);
|
|
||||||
calAlarm.setTid (tid);
|
|
||||||
|
|
||||||
ALARMManager aManager;
|
|
||||||
aManager.processAlarmReport(calAlarm);
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
default:
|
default:
|
||||||
log.writeLog(__LINE__, "MSG RECEIVED: Invalid type" );
|
log.writeLog(__LINE__, "MSG RECEIVED: Invalid type" );
|
||||||
break;
|
break;
|
||||||
@@ -9524,6 +9486,7 @@ int ProcessManager::switchParentOAMModule(std::string newActiveModuleName)
|
|||||||
newActiveIPaddr = (*pt2).IPAddr;
|
newActiveIPaddr = (*pt2).IPAddr;
|
||||||
|
|
||||||
sysConfig4->setConfig("ProcMgr", "IPAddr", newActiveIPaddr);
|
sysConfig4->setConfig("ProcMgr", "IPAddr", newActiveIPaddr);
|
||||||
|
sysConfig4->setConfig("ProcMgr_Alarm", "IPAddr", newActiveIPaddr);
|
||||||
sysConfig4->setConfig("ProcStatusControl", "IPAddr", newActiveIPaddr);
|
sysConfig4->setConfig("ProcStatusControl", "IPAddr", newActiveIPaddr);
|
||||||
sysConfig4->setConfig("DBRM_Controller", "IPAddr", newActiveIPaddr);
|
sysConfig4->setConfig("DBRM_Controller", "IPAddr", newActiveIPaddr);
|
||||||
|
|
||||||
@@ -10159,6 +10122,7 @@ int ProcessManager::OAMParentModuleChange()
|
|||||||
localIPaddr = (*pt1).IPAddr;
|
localIPaddr = (*pt1).IPAddr;
|
||||||
|
|
||||||
sysConfig4->setConfig("ProcMgr", "IPAddr", localIPaddr);
|
sysConfig4->setConfig("ProcMgr", "IPAddr", localIPaddr);
|
||||||
|
sysConfig4->setConfig("ProcMgr_Alarm", "IPAddr", localIPaddr);
|
||||||
sysConfig4->setConfig("ProcStatusControl", "IPAddr", localIPaddr);
|
sysConfig4->setConfig("ProcStatusControl", "IPAddr", localIPaddr);
|
||||||
sysConfig4->setConfig("DBRM_Controller", "IPAddr", localIPaddr);
|
sysConfig4->setConfig("DBRM_Controller", "IPAddr", localIPaddr);
|
||||||
|
|
||||||
|
@@ -80,6 +80,7 @@ void stopSystemThread(oam::DeviceNetworkList devicenetworklist);
|
|||||||
void startModuleThread(std::string moduleName);
|
void startModuleThread(std::string moduleName);
|
||||||
void stopModuleThread(std::string moduleName);
|
void stopModuleThread(std::string moduleName);
|
||||||
void processMSG(messageqcpp::IOSocket* fIos);
|
void processMSG(messageqcpp::IOSocket* fIos);
|
||||||
|
|
||||||
void sendUpgradeRequest();
|
void sendUpgradeRequest();
|
||||||
|
|
||||||
/** @brief Timeset for Milleseconds
|
/** @brief Timeset for Milleseconds
|
||||||
|
@@ -373,6 +373,7 @@ int main(int argc, char** argv)
|
|||||||
string IPaddr = (*pt1).IPAddr;
|
string IPaddr = (*pt1).IPAddr;
|
||||||
|
|
||||||
sysConfig->setConfig("ProcMgr", "IPAddr", IPaddr);
|
sysConfig->setConfig("ProcMgr", "IPAddr", IPaddr);
|
||||||
|
sysConfig->setConfig("ProcMgr_Alarm", "IPAddr", IPaddr);
|
||||||
|
|
||||||
log.writeLog(__LINE__, "set ProcMgr IPaddr to Old Standby Module: " + IPaddr, LOG_TYPE_DEBUG);
|
log.writeLog(__LINE__, "set ProcMgr IPaddr to Old Standby Module: " + IPaddr, LOG_TYPE_DEBUG);
|
||||||
|
|
||||||
@@ -781,7 +782,7 @@ int main(int argc, char** argv)
|
|||||||
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);
|
||||||
|
|
||||||
//mysql status monitor thread
|
//mysql status monitor thread
|
||||||
if ( ( config.ServerInstallType() == oam::INSTALL_COMBINE_DM_UM_PM ) ||
|
if ( ( config.ServerInstallType() != oam::INSTALL_COMBINE_DM_UM_PM ) ||
|
||||||
(PMwithUM == "y") )
|
(PMwithUM == "y") )
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@@ -1060,6 +1060,7 @@ int main(int argc, char* argv[])
|
|||||||
sysConfigNew->setConfig(parentProcessMonitor, "IPAddr", parentOAMModuleIPAddr);
|
sysConfigNew->setConfig(parentProcessMonitor, "IPAddr", parentOAMModuleIPAddr);
|
||||||
sysConfigNew->setConfig(parentProcessMonitor, "Port", "8800");
|
sysConfigNew->setConfig(parentProcessMonitor, "Port", "8800");
|
||||||
sysConfigNew->setConfig("ProcMgr", "IPAddr", parentOAMModuleIPAddr);
|
sysConfigNew->setConfig("ProcMgr", "IPAddr", parentOAMModuleIPAddr);
|
||||||
|
sysConfigNew->setConfig("ProcMgr_Alarm", "IPAddr", parentOAMModuleIPAddr);
|
||||||
sysConfigNew->setConfig("ProcStatusControl", "IPAddr", parentOAMModuleIPAddr);
|
sysConfigNew->setConfig("ProcStatusControl", "IPAddr", parentOAMModuleIPAddr);
|
||||||
string parentServerMonitor = systemParentOAMModuleName + "_ServerMonitor";
|
string parentServerMonitor = systemParentOAMModuleName + "_ServerMonitor";
|
||||||
sysConfigNew->setConfig(parentServerMonitor, "IPAddr", parentOAMModuleIPAddr);
|
sysConfigNew->setConfig(parentServerMonitor, "IPAddr", parentOAMModuleIPAddr);
|
||||||
|
@@ -362,6 +362,20 @@ CalpontSystemCatalog::ColType Func_simple_case::operationType(FunctionParm& fp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Func_simple_case::getBoolVal(Row& row,
|
||||||
|
FunctionParm& parm,
|
||||||
|
bool& isNull,
|
||||||
|
CalpontSystemCatalog::ColType& operationColType)
|
||||||
|
{
|
||||||
|
uint64_t i = simple_case_cmp(row, parm, isNull, operationColType);
|
||||||
|
|
||||||
|
if (isNull)
|
||||||
|
return joblist::BIGINTNULL;
|
||||||
|
|
||||||
|
return parm[i + 1]->data()->getBoolVal(row, isNull);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int64_t Func_simple_case::getIntVal(Row& row,
|
int64_t Func_simple_case::getIntVal(Row& row,
|
||||||
FunctionParm& parm,
|
FunctionParm& parm,
|
||||||
bool& isNull,
|
bool& isNull,
|
||||||
@@ -465,6 +479,18 @@ CalpontSystemCatalog::ColType Func_searched_case::operationType(FunctionParm& fp
|
|||||||
return caseOperationType(fp, resultType, false);
|
return caseOperationType(fp, resultType, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Func_searched_case::getBoolVal(Row& row,
|
||||||
|
FunctionParm& parm,
|
||||||
|
bool& isNull,
|
||||||
|
CalpontSystemCatalog::ColType&)
|
||||||
|
{
|
||||||
|
uint64_t i = searched_case_cmp(row, parm, isNull);
|
||||||
|
|
||||||
|
if (isNull)
|
||||||
|
return joblist::BIGINTNULL;
|
||||||
|
|
||||||
|
return parm[i + 1]->data()->getBoolVal(row, isNull);
|
||||||
|
}
|
||||||
|
|
||||||
int64_t Func_searched_case::getIntVal(Row& row,
|
int64_t Func_searched_case::getIntVal(Row& row,
|
||||||
FunctionParm& parm,
|
FunctionParm& parm,
|
||||||
|
@@ -70,6 +70,11 @@ public:
|
|||||||
|
|
||||||
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType);
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType);
|
||||||
|
|
||||||
|
bool getBoolVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
||||||
|
|
||||||
int64_t getIntVal(rowgroup::Row& row,
|
int64_t getIntVal(rowgroup::Row& row,
|
||||||
FunctionParm& fp,
|
FunctionParm& fp,
|
||||||
bool& isNull,
|
bool& isNull,
|
||||||
@@ -112,6 +117,11 @@ public:
|
|||||||
|
|
||||||
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType);
|
execplan::CalpontSystemCatalog::ColType operationType(FunctionParm& fp, execplan::CalpontSystemCatalog::ColType& resultType);
|
||||||
|
|
||||||
|
bool getBoolVal(rowgroup::Row& row,
|
||||||
|
FunctionParm& fp,
|
||||||
|
bool& isNull,
|
||||||
|
execplan::CalpontSystemCatalog::ColType& op_ct);
|
||||||
|
|
||||||
int64_t getIntVal(rowgroup::Row& row,
|
int64_t getIntVal(rowgroup::Row& row,
|
||||||
FunctionParm& fp,
|
FunctionParm& fp,
|
||||||
bool& isNull,
|
bool& isNull,
|
||||||
|
@@ -11,7 +11,6 @@ CREATE FUNCTION calcleartablelock RETURNS STRING SONAME 'libcalmysql.dll';
|
|||||||
CREATE FUNCTION calgetsqlcount RETURNS STRING SONAME 'libcalmysql.dll';
|
CREATE FUNCTION calgetsqlcount RETURNS STRING SONAME 'libcalmysql.dll';
|
||||||
CREATE FUNCTION mcssystemready RETURNS INTEGER SONAME 'libcalmysql.dll';
|
CREATE FUNCTION mcssystemready RETURNS INTEGER SONAME 'libcalmysql.dll';
|
||||||
CREATE FUNCTION mcssystemreadonly RETURNS INTEGER SONAME 'libcalmysql.dll';
|
CREATE FUNCTION mcssystemreadonly RETURNS INTEGER SONAME 'libcalmysql.dll';
|
||||||
CREATE FUNCTION mcswritessuspended RETURNS INTEGER SONAME 'libcalmysql.dll';
|
|
||||||
|
|
||||||
create database if not exists calpontsys;
|
create database if not exists calpontsys;
|
||||||
use calpontsys;
|
use calpontsys;
|
||||||
|
Reference in New Issue
Block a user