From b5210ba1428ebdc8728fd1a796442ec47ad49ac8 Mon Sep 17 00:00:00 2001 From: Gemorroj Date: Wed, 11 Dec 2013 12:53:27 +0300 Subject: [PATCH 1/4] fix #4149 Signed-off-by: Marc Delisle --- libraries/replication_gui.lib.php | 82 ++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 17 deletions(-) diff --git a/libraries/replication_gui.lib.php b/libraries/replication_gui.lib.php index eeac7fdf1f..6c966911bc 100644 --- a/libraries/replication_gui.lib.php +++ b/libraries/replication_gui.lib.php @@ -893,20 +893,55 @@ function PMA_handleControlRequest() { if (isset($_REQUEST['sr_take_action'])) { $refresh = false; + $result = null; + $messageSuccess = null; + $messageError = null; + if (isset($_REQUEST['slave_changemaster'])) { - PMA_handleRequestForSlaveChangeMaster(); + $result = PMA_handleRequestForSlaveChangeMaster(); } elseif (isset($_REQUEST['sr_slave_server_control'])) { - PMA_handleRequestForSlaveServerControl(); + $result = PMA_handleRequestForSlaveServerControl(); $refresh = true; + + switch ($_REQUEST['sr_slave_action']) { + case 'start': + $messageSuccess = __('Replication started successfully.'); + $messageError = __('Error starting replication.'); + break; + + case 'stop': + $messageSuccess = __('Replication stopped successfully.'); + $messageError = __('Error stopping replication.'); + break; + + case 'reset': + $messageSuccess = __('Replication resetting successfully.'); + $messageError = __('Error resetting replication.'); + break; + + default: + $messageSuccess = __('Success.'); + $messageError = __('Error.'); + break; + } } elseif (isset($_REQUEST['sr_slave_skip_error'])) { - PMA_handleRequestForSlaveSkipError(); + $result = PMA_handleRequestForSlaveSkipError(); } if ($refresh) { - Header( - "Location: server_replication.php" - . PMA_URL_getCommon($GLOBALS['url_params']) - ); + $response = PMA_Response::getInstance(); + if ($response->isAjax()) { + $response->isSuccess($result); + $response->addJSON( + 'message', + $result ? PMA_Message::success($messageSuccess) : PMA_Message::error($messageError) + ); + } else { + PMA_sendHeaderLocation( + $GLOBALS['cfg']['PmaAbsoluteUri'] . 'server_replication.php' + . PMA_URL_getCommon($GLOBALS['url_params'], '&') + ); + } } unset($refresh); } @@ -914,7 +949,7 @@ function PMA_handleControlRequest() /** * handle control requests for Slave Change Master * - * @return NULL + * @return boolean */ function PMA_handleRequestForSlaveChangeMaster() { @@ -977,31 +1012,39 @@ function PMA_handleRequestForSlaveChangeMaster() } } } + + return $_SESSION['replication']['sr_action_status'] === 'success'; } /** * handle control requests for Slave Server Control * - * @return NULL + * @return boolean */ function PMA_handleRequestForSlaveServerControl() { if ($_REQUEST['sr_slave_action'] == 'reset') { - PMA_Replication_Slave_control("STOP"); - $GLOBALS['dbi']->tryQuery("RESET SLAVE;"); - PMA_Replication_Slave_control("START"); + $qStop = PMA_Replication_Slave_control("STOP"); + $qReset = $GLOBALS['dbi']->tryQuery("RESET SLAVE;"); + $qStart = PMA_Replication_Slave_control("START"); + + $result = ($qStop !== false && $qStop !== -1 && $qReset !== false && $qReset !== -1 && $qStart !== false && $qStart !== -1); } else { - PMA_Replication_Slave_control( + $qControl = PMA_Replication_Slave_control( $_REQUEST['sr_slave_action'], $_REQUEST['sr_slave_control_parm'] ); + + $result = ($qControl !== false && $qControl !== -1); } + + return $result; } /** * handle control requests for Slave Skip Error * - * @return NULL + * @return boolean */ function PMA_handleRequestForSlaveSkipError() { @@ -1009,8 +1052,13 @@ function PMA_handleRequestForSlaveSkipError() if (isset($_REQUEST['sr_skip_errors_count'])) { $count = $_REQUEST['sr_skip_errors_count'] * 1; } - PMA_Replication_Slave_control("STOP"); - $GLOBALS['dbi']->tryQuery("SET GLOBAL SQL_SLAVE_SKIP_COUNTER = ".$count.";"); - PMA_Replication_Slave_control("START"); + + $qStop = PMA_Replication_Slave_control("STOP"); + $qSkip = $GLOBALS['dbi']->tryQuery("SET GLOBAL SQL_SLAVE_SKIP_COUNTER = ".$count.";"); + $qStart = PMA_Replication_Slave_control("START"); + + $result = ($qStop !== false && $qStop !== -1 && $qSkip !== false && $qSkip !== -1 && $qStart !== false && $qStart !== -1); + + return $result; } ?> From 0232003ad25ac29bb03d36befb92c54ebdbcea73 Mon Sep 17 00:00:00 2001 From: Gemorroj Date: Wed, 11 Dec 2013 17:16:06 +0300 Subject: [PATCH 2/4] accept license Signed-off-by: Gemorroj --- libraries/replication_gui.lib.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libraries/replication_gui.lib.php b/libraries/replication_gui.lib.php index 6c966911bc..0bff92d08f 100644 --- a/libraries/replication_gui.lib.php +++ b/libraries/replication_gui.lib.php @@ -1028,7 +1028,9 @@ function PMA_handleRequestForSlaveServerControl() $qReset = $GLOBALS['dbi']->tryQuery("RESET SLAVE;"); $qStart = PMA_Replication_Slave_control("START"); - $result = ($qStop !== false && $qStop !== -1 && $qReset !== false && $qReset !== -1 && $qStart !== false && $qStart !== -1); + $result = ($qStop !== false && $qStop !== -1 && + $qReset !== false && $qReset !== -1 && + $qStart !== false && $qStart !== -1); } else { $qControl = PMA_Replication_Slave_control( $_REQUEST['sr_slave_action'], @@ -1057,7 +1059,9 @@ function PMA_handleRequestForSlaveSkipError() $qSkip = $GLOBALS['dbi']->tryQuery("SET GLOBAL SQL_SLAVE_SKIP_COUNTER = ".$count.";"); $qStart = PMA_Replication_Slave_control("START"); - $result = ($qStop !== false && $qStop !== -1 && $qSkip !== false && $qSkip !== -1 && $qStart !== false && $qStart !== -1); + $result = ($qStop !== false && $qStop !== -1 && + $qSkip !== false && $qSkip !== -1 && + $qStart !== false && $qStart !== -1); return $result; } From 32234fb68e0b7e315a0f94999e4013c8ad721d51 Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Wed, 11 Dec 2013 20:37:09 -0500 Subject: [PATCH 3/4] ChangeLog entry for fix of bug #4149 --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 1a053b248c..74e7902d22 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ phpMyAdmin - ChangeLog 4.1.1.0 (not yet released) - bug #4154 Error using UNION query - bug #4173 Transformations overview not reachable +- bug #4149 Js freezes in the management of replication 4.1.0.0 (not yet released) + rfe #499 On user creation, warn if the user already exists From c8ac4349319e3d6cffe5f469199099ccee5f154a Mon Sep 17 00:00:00 2001 From: Marc Delisle Date: Wed, 11 Dec 2013 20:43:46 -0500 Subject: [PATCH 4/4] Fix undefined variable Signed-off-by: Marc Delisle --- libraries/replication_gui.lib.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/replication_gui.lib.php b/libraries/replication_gui.lib.php index 0bff92d08f..7c5af7b6e2 100644 --- a/libraries/replication_gui.lib.php +++ b/libraries/replication_gui.lib.php @@ -1023,6 +1023,9 @@ function PMA_handleRequestForSlaveChangeMaster() */ function PMA_handleRequestForSlaveServerControl() { + if (empty($_REQUEST['sr_slave_control_parm'])) { + $_REQUEST['sr_slave_control_parm'] = null; + } if ($_REQUEST['sr_slave_action'] == 'reset') { $qStop = PMA_Replication_Slave_control("STOP"); $qReset = $GLOBALS['dbi']->tryQuery("RESET SLAVE;");