~vcs-imports/mysql-mmm/2.0

« back to all changes in this revision

Viewing changes to lib/Monitor/Agent.pm

  • Committer: mail at pascalhofmann
  • Date: 2009-05-19 22:35:32 UTC
  • Revision ID: vcs-imports@canonical.com-20090519223532-iejor6gyb8spnu8c
mmm2: code cleanup, better log messages, retry failed agent commands in some cases

Show diffs side-by-side

added added

removed removed

Lines of Context:
116
116
        return $res;
117
117
}
118
118
 
 
119
sub _send_command_retry {
 
120
        my $self        = shift;
 
121
        my $retries     = shift;
 
122
        my $cmd         = shift;
 
123
        my @params      = @_;
 
124
 
 
125
        my $res;
 
126
 
 
127
        do {
 
128
                $res = $self->_send_command($cmd, @params);
 
129
                if ($res) { return $res; }
 
130
                $retries--;
 
131
                if ($retries >= 0) { DEBUG "Retrying to send command"; }
 
132
        } while ($retries >= 0);
 
133
        return $res;
 
134
}
 
135
 
119
136
sub cmd_ping($) {
120
137
        my $self        = shift;
121
 
        return $self->_send_command('PING');
 
138
        my $retries     = shift || 0;
 
139
        return $self->_send_command_retry($retries, 'PING');
122
140
}
123
141
 
124
142
sub cmd_set_status($$) {
125
143
        my $self        = shift;
126
144
        my $master      = shift;
 
145
        my $retries     = shift || 0;
127
146
 
128
 
        return $self->_send_command('SET_STATUS', $self->state, join(',', sort(@{$self->roles})), $master);
 
147
        return $self->_send_command_retry($retries, 'SET_STATUS', $self->state, join(',', sort(@{$self->roles})), $master);
129
148
}
130
149
 
131
150
sub cmd_get_agent_status($) {
132
151
        my $self        = shift;
133
 
        return $self->_send_command('GET_AGENT_STATUS');
 
152
        my $retries     = shift || 0;
 
153
        return $self->_send_command_retry($retries, 'GET_AGENT_STATUS');
134
154
}
135
155
 
136
156
sub cmd_get_system_status($) {
137
157
        my $self        = shift;
138
 
        return $self->_send_command('GET_SYSTEM_STATUS');
 
158
        my $retries     = shift || 0;
 
159
        return $self->_send_command_retry($retries, 'GET_SYSTEM_STATUS');
139
160
}
140
161
 
141
162
sub cmd_clear_bad_roles($) {
142
163
        my $self        = shift;
143
 
        return $self->_send_command('CLEAR_BAD_ROLES');
 
164
        my $retries     = shift || 0;
 
165
        return $self->_send_command_retry($retries, 'CLEAR_BAD_ROLES');
144
166
}
145
167
 
146
168
1;