mirror of
https://github.com/gnustep/libs-ec.git
synced 2025-02-20 18:32:09 +00:00
Improve automated clear of alarms when a process is available again.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/ec/trunk@38082 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
c590d3d66d
commit
c8cc8ac0e0
2 changed files with 28 additions and 32 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2014-09-16 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* EcCommand.m: Simplify handling of loss of process and configuration
|
||||||
|
error alarms. Clear such alarms when we receive a ping from the
|
||||||
|
process.
|
||||||
|
|
||||||
2014-09-04 Richard Frith-Macdonald <rfm@gnu.org>
|
2014-09-04 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
* EcProcess.m: Fix missing clear after unable to register with name
|
* EcProcess.m: Fix missing clear after unable to register with name
|
||||||
|
|
54
EcCommand.m
54
EcCommand.m
|
@ -129,7 +129,6 @@ static NSString* cmdWord(NSArray* a, unsigned int pos)
|
||||||
NSDictionary *environment;
|
NSDictionary *environment;
|
||||||
NSMutableDictionary *launches;
|
NSMutableDictionary *launches;
|
||||||
NSMutableSet *launching;
|
NSMutableSet *launching;
|
||||||
NSMutableSet *alarmed;
|
|
||||||
unsigned pingPosition;
|
unsigned pingPosition;
|
||||||
NSTimer *terminating;
|
NSTimer *terminating;
|
||||||
NSDate *lastUnanswered;
|
NSDate *lastUnanswered;
|
||||||
|
@ -584,37 +583,33 @@ static NSString* cmdWord(NSArray* a, unsigned int pos)
|
||||||
r = [self findIn: clients byObject: (id)from];
|
r = [self findIn: clients byObject: (id)from];
|
||||||
if (r != nil)
|
if (r != nil)
|
||||||
{
|
{
|
||||||
NSString *n = [r name];
|
NSString *managedObject;
|
||||||
|
NSString *n;
|
||||||
|
EcAlarm *a;
|
||||||
|
|
||||||
[r gnip: num];
|
[r gnip: num];
|
||||||
|
n = [r name];
|
||||||
|
|
||||||
/* After the first ping response from a client we assume
|
/* After the first ping response from a client we assume
|
||||||
* that client has completed startup and is running OK.
|
* that client has completed startup and is running OK.
|
||||||
* We can therefore clear any loss of client alarm.
|
* We can therefore clear any loss of client alarm.
|
||||||
*/
|
*/
|
||||||
if (nil != [alarmed member: n])
|
managedObject = EcMakeManagedObject(host, n, nil);
|
||||||
{
|
a = [EcAlarm alarmForManagedObject: managedObject
|
||||||
NSString *managedObject;
|
at: nil
|
||||||
EcAlarm *a;
|
withEventType: EcAlarmEventTypeProcessingError
|
||||||
|
probableCause: EcAlarmSoftwareProgramAbnormallyTerminated
|
||||||
[alarmed removeObject: n];
|
specificProblem: @"Process availability"
|
||||||
managedObject = EcMakeManagedObject(host, n, nil);
|
perceivedSeverity: EcAlarmSeverityCleared
|
||||||
a = [EcAlarm alarmForManagedObject: managedObject
|
proposedRepairAction: nil
|
||||||
at: nil
|
additionalText: nil];
|
||||||
withEventType: EcAlarmEventTypeProcessingError
|
[self alarm: a];
|
||||||
probableCause: EcAlarmSoftwareProgramAbnormallyTerminated
|
[self clearConfigurationFor: managedObject
|
||||||
specificProblem: @"Process availability"
|
specificProblem: @"Process launch"
|
||||||
perceivedSeverity: EcAlarmSeverityCleared
|
additionalText: @"Process is now running"];
|
||||||
proposedRepairAction: nil
|
[self clearConfigurationFor: managedObject
|
||||||
additionalText: nil];
|
specificProblem: @"Fatal configuration error"
|
||||||
[self alarm: a];
|
additionalText: @"Process is now running"];
|
||||||
[self clearConfigurationFor: managedObject
|
|
||||||
specificProblem: @"Process launch"
|
|
||||||
additionalText: @"Process is now running"];
|
|
||||||
[self clearConfigurationFor: managedObject
|
|
||||||
specificProblem: @"Fatal configuration error"
|
|
||||||
additionalText: @"Process is now running"];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1371,7 +1366,6 @@ static NSString* cmdWord(NSArray* a, unsigned int pos)
|
||||||
EcAlarm *a;
|
EcAlarm *a;
|
||||||
|
|
||||||
s = EcMakeManagedObject(host, name, nil);
|
s = EcMakeManagedObject(host, name, nil);
|
||||||
[alarmed addObject: name];
|
|
||||||
a = [EcAlarm alarmForManagedObject: s
|
a = [EcAlarm alarmForManagedObject: s
|
||||||
at: nil
|
at: nil
|
||||||
withEventType: EcAlarmEventTypeProcessingError
|
withEventType: EcAlarmEventTypeProcessingError
|
||||||
|
@ -1424,7 +1418,6 @@ static NSString* cmdWord(NSArray* a, unsigned int pos)
|
||||||
{
|
{
|
||||||
[timer invalidate];
|
[timer invalidate];
|
||||||
}
|
}
|
||||||
RELEASE(alarmed);
|
|
||||||
RELEASE(launching);
|
RELEASE(launching);
|
||||||
RELEASE(launches);
|
RELEASE(launches);
|
||||||
DESTROY(control);
|
DESTROY(control);
|
||||||
|
@ -1610,7 +1603,6 @@ static NSString* cmdWord(NSArray* a, unsigned int pos)
|
||||||
clients = [[NSMutableArray alloc] initWithCapacity: 10];
|
clients = [[NSMutableArray alloc] initWithCapacity: 10];
|
||||||
launches = [[NSMutableDictionary alloc] initWithCapacity: 10];
|
launches = [[NSMutableDictionary alloc] initWithCapacity: 10];
|
||||||
launching = [[NSMutableSet alloc] initWithCapacity: 10];
|
launching = [[NSMutableSet alloc] initWithCapacity: 10];
|
||||||
alarmed = [[NSMutableSet alloc] initWithCapacity: 10];
|
|
||||||
|
|
||||||
timer = [NSTimer scheduledTimerWithTimeInterval: 5.0
|
timer = [NSTimer scheduledTimerWithTimeInterval: 5.0
|
||||||
target: self
|
target: self
|
||||||
|
@ -1716,7 +1708,7 @@ static NSString* cmdWord(NSArray* a, unsigned int pos)
|
||||||
{
|
{
|
||||||
[launching addObject: key];
|
[launching addObject: key];
|
||||||
}
|
}
|
||||||
else if (nil == [alarmed member: key])
|
else
|
||||||
{
|
{
|
||||||
NSString *managedObject;
|
NSString *managedObject;
|
||||||
EcAlarm *a;
|
EcAlarm *a;
|
||||||
|
@ -1724,7 +1716,6 @@ static NSString* cmdWord(NSArray* a, unsigned int pos)
|
||||||
/* We are re-attempting a launch of a program which never
|
/* We are re-attempting a launch of a program which never
|
||||||
* contacted us and registered with us ... raise an alarm.
|
* contacted us and registered with us ... raise an alarm.
|
||||||
*/
|
*/
|
||||||
[alarmed addObject: key];
|
|
||||||
managedObject = EcMakeManagedObject(host, key, nil);
|
managedObject = EcMakeManagedObject(host, key, nil);
|
||||||
a = [EcAlarm alarmForManagedObject: managedObject
|
a = [EcAlarm alarmForManagedObject: managedObject
|
||||||
at: nil
|
at: nil
|
||||||
|
@ -1807,11 +1798,10 @@ static NSString* cmdWord(NSArray* a, unsigned int pos)
|
||||||
@"bad program name to launch %@"), key];
|
@"bad program name to launch %@"), key];
|
||||||
[self information: m from: nil to: nil type: LT_AUDIT];
|
[self information: m from: nil to: nil type: LT_AUDIT];
|
||||||
}
|
}
|
||||||
if (nil != failed && nil == [alarmed member: key])
|
if (nil != failed)
|
||||||
{
|
{
|
||||||
NSString *managedObject;
|
NSString *managedObject;
|
||||||
|
|
||||||
[alarmed addObject: key];
|
|
||||||
managedObject = EcMakeManagedObject(host, key, nil);
|
managedObject = EcMakeManagedObject(host, key, nil);
|
||||||
[self alarmConfigurationFor: managedObject
|
[self alarmConfigurationFor: managedObject
|
||||||
specificProblem: @"Process launch"
|
specificProblem: @"Process launch"
|
||||||
|
|
Loading…
Reference in a new issue