Merge branch 'ent-8324-desincronizacion-entornos-metaconsola-transacciones' into 'develop'
force db_process_sql See merge request artica/pandorafms!4570
This commit is contained in:
commit
76bcbd3c33
|
@ -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` (
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
@ -1390,7 +1339,7 @@ function mysql_db_process_file($path, $handle_error=true)
|
|||
$query = '';
|
||||
|
||||
// Begin the transaction
|
||||
mysql_db_process_sql_begin();
|
||||
db_process_sql_begin();
|
||||
|
||||
foreach ($file_content as $sql_line) {
|
||||
if (trim($sql_line) != '' && strpos($sql_line, '--') === false) {
|
||||
|
@ -1405,7 +1354,7 @@ function mysql_db_process_file($path, $handle_error=true)
|
|||
|
||||
if (!$result = $query_result) {
|
||||
// Error. Rollback the transaction
|
||||
mysql_db_process_sql_rollback();
|
||||
db_process_sql_rollback();
|
||||
|
||||
if ($config['mysqli']) {
|
||||
$error_message = mysqli_error($config['dbconnection']);
|
||||
|
@ -1442,7 +1391,7 @@ function mysql_db_process_file($path, $handle_error=true)
|
|||
}
|
||||
|
||||
// No errors. Commit the transaction
|
||||
mysql_db_process_sql_commit();
|
||||
db_process_sql_commit();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
@ -1481,7 +1430,7 @@ function db_run_sql_file($location)
|
|||
$mysqli->query($config['dbconnection'], 'START TRANSACTION');
|
||||
} else {
|
||||
// Run commands
|
||||
mysql_db_process_sql_begin();
|
||||
db_process_sql_begin();
|
||||
// Begin transaction
|
||||
}
|
||||
|
||||
|
@ -1507,7 +1456,7 @@ function db_run_sql_file($location)
|
|||
$mysqli->query($config['dbconnection'], 'COMMIT');
|
||||
$mysqli->query($config['dbconnection'], 'SET AUTOCOMMIT = 1');
|
||||
} else {
|
||||
mysql_db_process_sql_commit();
|
||||
db_process_sql_commit();
|
||||
// Save results
|
||||
}
|
||||
|
||||
|
@ -1517,7 +1466,7 @@ function db_run_sql_file($location)
|
|||
$mysqli->query($config['dbconnection'], 'ROLLBACK ');
|
||||
$mysqli->query($config['dbconnection'], 'SET AUTOCOMMIT = 1');
|
||||
} else {
|
||||
mysql_db_process_sql_rollback();
|
||||
db_process_sql_rollback();
|
||||
// Undo results
|
||||
}
|
||||
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
@ -1808,20 +1822,20 @@ function db_process_sql_delete($table, $where, $where_join='AND')
|
|||
function db_process_sql_begin()
|
||||
{
|
||||
global $config;
|
||||
$null = null;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1832,20 +1846,20 @@ function db_process_sql_begin()
|
|||
function db_process_sql_commit()
|
||||
{
|
||||
global $config;
|
||||
$null = null;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1856,20 +1870,20 @@ function db_process_sql_commit()
|
|||
function db_process_sql_rollback()
|
||||
{
|
||||
global $config;
|
||||
$null = null;
|
||||
|
||||
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 +1903,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 +1961,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 +1987,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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue