force db_process_sql

This commit is contained in:
fbsanchez 2021-12-03 12:59:50 +01:00
parent c2348fdc3e
commit a94f6be37e
5 changed files with 70 additions and 113 deletions

View File

@ -8,7 +8,7 @@ ALTER TABLE `tlocal_component` ADD COLUMN `percentage_critical` tinyint(1) UNSIG
ALTER TABLE `tlocal_component` ADD COLUMN `percentage_warning` tinyint(1) UNSIGNED DEFAULT 0;
ALTER TABLE `tpolicy_modules` ADD COLUMN `percentage_warning` tinyint(1) UNSIGNED DEFAULT 0;
ALTER TABLE `tpolicy_modules` ADD COLUMN `percentage_critical` tinyint(1) UNSIGNED DEFAULT 0;
ALTER TABLE `tsync_queue` ADD COLUMN `result` TEXT;
ALTER TABLE tagente_modulo MODIFY debug_content TEXT;
CREATE TABLE IF NOT EXISTS `talert_calendar` (

View File

@ -4089,6 +4089,7 @@ CREATE TABLE IF NOT EXISTS `tsync_queue` (
`operation` text,
`table` text,
`error` MEDIUMTEXT,
`result` TEXT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

View File

@ -1244,57 +1244,6 @@ function mysql_db_get_all_row_by_steps_sql($new=true, &$result, $sql=null)
}
/**
* Starts a database transaction.
*/
function mysql_db_process_sql_begin()
{
global $config;
if ($config['mysqli']) {
mysqli_query($config['dbconnection'], 'SET AUTOCOMMIT = 0');
mysqli_query($config['dbconnection'], 'START TRANSACTION');
} else {
mysql_query('SET AUTOCOMMIT = 0');
mysql_query('START TRANSACTION');
}
}
/**
* Commits a database transaction.
*/
function mysql_db_process_sql_commit()
{
global $config;
if ($config['mysqli']) {
mysqli_query($config['dbconnection'], 'COMMIT');
mysqli_query($config['dbconnection'], 'SET AUTOCOMMIT = 1');
} else {
mysql_query('COMMIT');
mysql_query('SET AUTOCOMMIT = 1');
}
}
/**
* Rollbacks a database transaction.
*/
function mysql_db_process_sql_rollback()
{
global $config;
if ($config['mysqli']) {
mysqli_query($config['dbconnection'], 'ROLLBACK ');
mysqli_query($config['dbconnection'], 'SET AUTOCOMMIT = 1');
} else {
mysql_query('ROLLBACK ');
mysql_query('SET AUTOCOMMIT = 1');
}
}
/**
* Get last error.
*

View File

@ -1377,42 +1377,56 @@ function db_process_sql($sql, $rettype='affected_rows', $dbconnection='', $cache
break;
}
if ($rc !== false) {
if (enterprise_hook('is_metaconsole') === true
&& isset($config['centralized_management']) === true
&& (bool) $config['centralized_management'] === true
&& $dbconnection === ''
) {
$errors = null;
try {
// Synchronize changes to nodes if needed.
$sync = new Synchronizer();
if ($sync !== null) {
if ($sync->queue($sql) === false) {
// Launch events per failed query.
$errors = $sync->getLatestErrors();
if ($errors !== null) {
$errors = join(', ', $errors);
} else {
$errors = '';
}
}
}
} catch (\Exception $e) {
$errors = $e->getMessage();
}
if ($errors !== null) {
// TODO: Generate pandora event.
error_log($errors);
}
}
}
db_sync($dbconnection, $sql, $rc);
return $rc;
}
/**
* Propagate to nodes.
*
* @param mixed $dbconnection Dbconnection.
* @param mixed $sql Sql.
* @param mixed $rc Rc.
*
* @return void
*/
function db_sync($dbconnection, $sql, $rc)
{
global $config;
if (enterprise_hook('is_metaconsole') === true
&& isset($config['centralized_management']) === true
&& (bool) $config['centralized_management'] === true
&& $dbconnection === ''
) {
$errors = null;
try {
// Synchronize changes to nodes if needed.
$sync = new Synchronizer();
if ($sync !== null) {
if ($sync->queue($sql, $rc) === false) {
// Launch events per failed query.
$errors = $sync->getLatestErrors();
if ($errors !== null) {
$errors = join(', ', $errors);
} else {
$errors = '';
}
}
}
} catch (\Exception $e) {
$errors = $e->getMessage();
}
if ($errors !== null) {
// TODO: Generate pandora event.
error_log($errors);
}
}
}
/**
* Get all the rows in a table of the database.
*
@ -1810,18 +1824,17 @@ function db_process_sql_begin()
global $config;
switch ($config['dbtype']) {
case 'mysql':
return mysql_db_process_sql_begin();
break;
case 'postgresql':
return postgresql_db_process_sql_begin();
break;
case 'oracle':
return oracle_db_process_sql_begin();
break;
default:
case 'mysql':
db_process_sql('SET AUTOCOMMIT = 0', 'affected_rows', '', false, null, false);
db_process_sql('START TRANSACTION', 'affected_rows', '', false, null, false);
break;
}
}
@ -1834,18 +1847,17 @@ function db_process_sql_commit()
global $config;
switch ($config['dbtype']) {
case 'mysql':
return mysql_db_process_sql_commit();
break;
case 'postgresql':
return postgresql_db_process_sql_commit();
break;
case 'oracle':
return oracle_db_process_sql_commit();
break;
default:
case 'mysql':
db_process_sql('COMMIT', 'affected_rows', '', false, null, false);
db_process_sql('SET AUTOCOMMIT = 1', 'affected_rows', '', false, null, false);
break;
}
}
@ -1858,18 +1870,17 @@ function db_process_sql_rollback()
global $config;
switch ($config['dbtype']) {
case 'mysql':
return mysql_db_process_sql_rollback();
break;
case 'postgresql':
return postgresql_db_process_sql_rollback();
break;
case 'oracle':
return oracle_db_process_sql_rollback();
break;
default:
case 'mysql':
db_process_sql('ROLLBACK', 'affected_rows', '', false, null, false);
db_process_sql('SET AUTOCOMMIT = 1', 'affected_rows', '', false, null, false);
break;
}
}
@ -1889,6 +1900,7 @@ function db_print_database_debug()
echo '<div class="database_debug_title">'.__('Database debug').'</div>';
$table = new stdClass();
$table->id = 'database_debug';
$table->cellpadding = '0';
$table->width = '95%';
@ -1946,18 +1958,15 @@ function db_get_last_error()
global $config;
switch ($config['dbtype']) {
case 'mysql':
return mysql_db_get_last_error();
break;
case 'postgresql':
return postgresql_db_get_last_error();
break;
case 'oracle':
return oracle_db_get_last_error();
break;
case 'mysql':
default:
return mysql_db_get_last_error();
}
}
@ -1975,18 +1984,15 @@ function db_get_type_field_table($table, $field)
global $config;
switch ($config['dbtype']) {
case 'mysql':
return mysql_db_get_type_field_table($table, $field);
break;
case 'postgresql':
return postgresql_db_get_type_field_table($table, $field);
break;
case 'oracle':
return oracle_db_get_type_field_table($table, $field);
break;
case 'mysql':
default:
return mysql_db_get_type_field_table($table, $field);
}
}

View File

@ -4069,6 +4069,7 @@ CREATE TABLE IF NOT EXISTS `tsync_queue` (
`operation` text,
`table` text,
`error` MEDIUMTEXT,
`result` TEXT,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;