MXS-1775 Update statuses the usual way in MMMon
As all other monitors MMMon now only manipulates the pending_status of the monitor object during analysis and only in the end touches the server status.
This commit is contained in:
		@ -150,17 +150,14 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
 | 
			
		||||
 | 
			
		||||
    if (!mon_connection_is_ok(rval))
 | 
			
		||||
    {
 | 
			
		||||
        server_clear_status_nolock(monitored_server->server, SERVER_RUNNING);
 | 
			
		||||
        monitor_clear_pending_status(monitored_server, SERVER_RUNNING);
 | 
			
		||||
 | 
			
		||||
        if (mysql_errno(monitored_server->con) == ER_ACCESS_DENIED_ERROR)
 | 
			
		||||
        {
 | 
			
		||||
            server_set_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
 | 
			
		||||
            monitor_set_pending_status(monitored_server, SERVER_AUTH_ERROR);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
 | 
			
		||||
            monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -174,9 +171,7 @@ void MMMonitor::update_server_status(MXS_MONITORED_SERVER* monitored_server)
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    server_clear_status_nolock(monitored_server->server, SERVER_AUTH_ERROR);
 | 
			
		||||
    monitor_clear_pending_status(monitored_server, SERVER_AUTH_ERROR);
 | 
			
		||||
    server_set_status_nolock(monitored_server->server, SERVER_RUNNING);
 | 
			
		||||
    monitor_set_pending_status(monitored_server, SERVER_RUNNING);
 | 
			
		||||
 | 
			
		||||
    MYSQL_ROW row;
 | 
			
		||||
@ -443,13 +438,17 @@ void MMMonitor::tick()
 | 
			
		||||
                MXS_NOTICE("root server [%s:%i] is no longer Master, let's "
 | 
			
		||||
                           "use it again even if it could be a stale master, you have "
 | 
			
		||||
                           "been warned!", ptr->server->address, ptr->server->port);
 | 
			
		||||
 | 
			
		||||
                /* Reset the pending_status. */
 | 
			
		||||
                ptr->pending_status = ptr->server->status;
 | 
			
		||||
                monitor_clear_pending_status(ptr, SERVER_AUTH_ERROR);
 | 
			
		||||
                monitor_set_pending_status(ptr, SERVER_RUNNING);
 | 
			
		||||
 | 
			
		||||
                /* Set the STALE bit for this server in server struct */
 | 
			
		||||
                server_set_status_nolock(ptr->server, SERVER_STALE_STATUS);
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                ptr->server->status = ptr->pending_status;
 | 
			
		||||
                monitor_set_pending_status(ptr, SERVER_STALE_STATUS);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            ptr->server->status = ptr->pending_status;
 | 
			
		||||
        }
 | 
			
		||||
        ptr = ptr->next;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user