-
Notifications
You must be signed in to change notification settings - Fork 2
/
ChangeLog
1379 lines (1024 loc) · 46.8 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
2024-04-29 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Record the name and host of the Control server so that,
if they are changed and the new values don't work, we can still try
the old values. This copes with the situation where the processes
start up using values from the NSUserDefaults system but then something
in Control.plist overrides those values for the running process.
2024-02-06 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Combine code for 'quit' into a single method to try
to consistently manage shutdown for both running processes and those
in the queue attempting to restart.
2024-01-15 Richard Frith-Macdonald <[email protected]>
* EcProcess.m: Remove excess frame in stack trace log
* EcCommand.m: Fixup handling of config update to use the common
variables when configuring the Command server itself.
2023-10-07 Richard Frith-Macdonald <[email protected]>
* EcProcess.h: clarify comment a little
* EcProcess.m: fix typo
* EcCommand.m: Check that the Home configured in the launch
information is (if defined) a relative path inside the ECCL
user directory, that the Home directory exists, and that it
is writable.
Create a debug log of any problems.
Terminate.m: Calrify comment
2023-07-25 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
* EcTest.m:
Add -ecDidAwakenCompletely
2023-04-07 Richard Frith-Macdonald <[email protected]>
* ECCL.h:
* EcCommand.m:
* EcConsole.m:
* EcControl.m:
* EcProcess.h:
* EcProcess.m:
Add display options 'mark' and 'prompt' to control output format to
make it easier to perform pattern matching when using Console in a
script.
2023-03-10 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcControl.m:
* EcProcess.h:
* EcProcess.m:
* Operators.plist:
Change Blocked array to Commands array so we list commands that the
operator is allowed to use and default (where a Commands array is
defined) to blocking all commands.
2023-03-08 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcControl.m:
* EcProcess.h:
* EcProcess.m:
* Operators.plist:
Implement a Blocked array to list the commands that an operator should
not be allowed to perform.
2023-02-14 Richard Frith-Macdonald <[email protected]>
* EcProcess.m: When using the 'defaults' command from the Console,
writing or deleting a key without the prefix should implicitly
alter the default for both the prefixed and unprefixed versions
of the key. This ensures that any low level code that does not use
prefixes to access the defaults will still read the updated value.
2023-01-21 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Allow SetE and AddE configuration for the Command
server to set up the default environment variables to be used for
launched child processes.
EcProcess.m: If MemoryMaximum is set to a value less than the initial
memory usage of the process plus 20%, it is ignored but an alarm is
raised. Once the configuration is fixed the alarm is cleared.
2023-01-13 Richard Frith-Macdonald <[email protected]>
* GNUmakefile: bump version to 1.2.0 for release
2023-01-03 Richard Frith-Macdonald <[email protected]>
EcCommand.m: Fix clearing of alarms about a process when it becomes
stable. Implement 'alarms' and 'clear' commands like those in client
processes.
2022-11-14 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcCommand.m:
Add new method of Command server (-restart:reason:) to requst that
it restart an individual process.
2022-11-11 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
Fix a few incorrect checks for TLS certificate presence.
2022-11-09 Richard Frith-Macdonald <[email protected]>
* Control.plist:
* EcCommand.m:
* EcProcess.m:
More TLS cleanup and support for setting TLS options in the Launch
configuration in Control.plist
2022-11-07 Richard Frith-Macdonald <[email protected]>
* EcControl.m: Make Control specific config clearer and avoid
polluting server specific config space with it.
* EcCommand.m: Pass along more TLS control vlaues to clients
* EcProcess.m: Clean up setting TLS configuration, fix to be present
in all necessary code paths, add support for GSTLSVerify and
GSTLSServerName in process config, so we can
control inter process verification.
2022-11-04 Richard Frith-Macdonald <[email protected]>
* configure.ac: check for crypt
* config.h.in: regenerate
* config.make.in: regenerate
* configure: regenerate
* EcProcess.h: remove -cmdOperator: method.
* EcProcess.m: remove -cmdOperator: method.
* EcControl.m: Implement hashed passwords but allow
password=username in plaintext for backward compatibility.
2022-11-04 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: When a process shuts down due to a configuration error
autolaunch is deferred for 5 minutes because human intervention is
unlikely to be rapid (thereiis no point repeatedly trying to autolaunch
a misconfigured process).
2022-11-01 Richard Frith-Macdonald <[email protected]>
* EcAlarmDestination.h:
* EcAlarmDestination.m:
Keep track of the alarm thread and signal it to flush alarms on
shutdown.
2022-10-10 Richard Frith-Macdonald <[email protected]>
* EcProcess.m: Do not override signals which are intended for
applications to use (SIGUSR1 and SIGUSR2).
2022-10-05 Richard Frith-Macdonald <[email protected]>
* EcConsole.m: Use SUDO_USER preferentially as username of person
executing command. This is supplied when the command is run via sudo.
2022-07-12 Richard Frith-Macdonald <[email protected]>
configure.ac:
configure:
config.h.in:
EcProcess.m:
Check for valgrind and, if availeable, log when a 'memory' command
is executed so that valgrind logs can be matched to events between
successive memory check commands.
2022-07-11 Richard Frith-Macdonald <[email protected]>
* EcConsole.m: Exit immediately after registration with Control server
is rejected (don't re-prompt for password before exit).
2022-06-17 Richard Frith-Macdonald <[email protected]>
* EcProcess.m: Intercept lock error handling and, in the case of a
deadlock, raise an alarm before calling the normal handler to log
and stop the thread.
2022-06-07 Richard Frith-Macdonald <[email protected]>
* GNUMakefile: Fix to supply local flags to build libraries
* EcConsole.m: Add EC_LOGIN_NAME define set to 1 to permit the
entry of a login name with a 'Login' prompt.
Use the EffectiveUser default or the name of the user running the
process as the default name to login with.
If EC_LOGIN_NAME is not set then the name of the user running the
process is used unconditionally.
2022-02-28 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
When building config for a process, only count the part of a process
name after the last hyphen as an instance ID if it is entirely
composed of digits.
2022-02-08 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcProcess.m:
Add EncryptedDO boolean user default value to turn on TLS for
distributed objects (if the gnustep-base library supports it).
This is used only if TLS_DISTRIBUTED_OBJECTS is NOT defined at
compile time.
2022-02-07 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Use alarms rather than alerts to report lack
of disk space or inodes.
2021-12-22 Richard Frith-Macdonald <[email protected]>
* EcControl.m: Add AlamrFilter as a config option to provide a
regular expression to filter out alarms to be ignored.
2021-12-19 Richard Frith-Macdonald <[email protected]>
* EcAlarmDestination.h:
* EcAlarmDestination.m:
* EcControl.m:
Add (-latest:) method to find the most recent match for an alarm
in the queue/active/cleared data structures.
Use it to filter out duplicate clears.
2021-12-16 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcControl.m:
Make -alarm: method run in main thread so that bundles loaded and
running on other threads can raise?clear alarms safely.
2021-12-10 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcCommand.m:
* EcControl.m:
New -clear: method in Command server to clear an alarm in one of its
clients. Changed the Control server so that the 'suppress' command
clears an alarm locally (suppressing its effects by leaving it
raised in the originating client), while the 'clear' command clears
the alarm in the originating client.
2021-09-13 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcProcess.m:
* EcTest.m:
Use TLS for DO only if TLS_DISTRIBUTED_OBJECTS is defined.
2021-09-03 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: When deleting old logs, consider directories from all
time rather than just those for the last year. This prevents logs
from being left undeleted when the DeleteLogsAfter config is changed
from a value longer than a year to a shorter value.
2021-06-30 Richard Frith-Macdonald <[email protected]>
* Command.m:
* Console.m:
* ECCL.h:
* EcConsole.m:
* EcProcess.m:
Fixups for Console to return error status if it can't connect to the
Control server or if the Control server rejects its login attempt.
2021-06-24 Richard Frith-Macdonald <[email protected]>
* EcProcess.m:
* EcTest.h:
* EcTest.m:
Update for Distributed Objects over TLS API changes and to add
EcTestShutdownByName() function to shut down a client process.
2021-06-23 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcProcess.m:
* EcProcess.h:
When we restart because MemoryMaximum is reached/near, use termination
status -5. Raise an alarm to log this in the Command server.
Change unregistering so that it reports the status the process intends
to exit with. The Command server can then use this information in
cases where the client process is not one of its children.
2021-06-20 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcProcess.m:
* EcTest.m:
* Control.plist:
Improve building when TLS stuff is not available.
Add code to allow a process launch configuration to contain a
HungTime setting for automatic restart of apparently hung processes.
Add HungTool configuration to specify a tool to be executed to
gather information about a hung process before it is restarted (if
not defined, the gcore tool is used).
Add Ping configuration to control how long a process needs to be
umresponsive to pings before it is considered hung.
2021-06-18 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcProcess.m:
Pass TLS information from Command server to clients via pipe, so the
clients can use a key/certificate shared with the Command server to
encrypt communications. This avoids each client process having to
do expensive generation of a key.
2021-06-17 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcProcess.m:
Change the way the Command server launches subprocesses, so that
the key/value pairs normally passed as process arguments to populate
the NSUserDefaults NSArgumentDomain are mostly passed via a pipe to
STDIN of the subprocess. This keeps the argument list visible to
commands like 'ps' small and readable, and allows us to pass hidden
values (eg encryption keys) to the subprocess.
2021-01-15 Wolfgang Lux <[email protected]>
* EcProcess.m(cmdMesgmemory:):
Fix output of 'memory all' command to really report all
allocations.
2020-04-06 Richard Frith-Macdonald <[email protected]>
* EcControl.m:
Fix bug with AlertConfig.plist; when the file is not provided the
value of the Alerter key in the Control (keyed on any empty string)
area in Control.plist should be used, but instead it was failing.
2020-04-02 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcLogger.m:
* EcProcess.h:
* EcProcess.m:
Remove obsolete methods for registration/unregistration. Change code
to refrain from registering with Command server if in the process of
shutting down, and to refrain from attempting an unregistration if
not already registered. The hope is that this will prevent a race
condition where loss of connection to the Command server can cause a
shutdown and re-register during the shutdown fooling the Command
server into thinking the process is still running.
2020-03-23 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Add protocols to allow one process to register with another as a
client to whom config should be forwarded. This allows closely
cooperating processes to be aware of each-other's config changes.
2020-01-27 Richard Frith-Macdonald <[email protected]>
* EcAlarmSinkSNMP.m:
* EcCommand.m:
* EcLogger.h:
* EcLogger.m:
* EcProcess.h:
* EcProcess.m:
Changes to formally deprecate cmdAlert:... and cmdError:...
2019-11-01 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Restructure so that all ways we can be informed that
a task has shut down/ended funnel into the same few methods to avoid
code duplication and errors where different code paths treat things
differently. All unregistration into one method (with options for
a clean unregistration and a simple loss of connection ... dirty).
Final task cleanup/restart code in one method called on notifiction
of task termination or (if we don't have an NSTask object because
the process was not launched by the Command server) simulated when
the process unregisters or the connection is lost. Add comments.
2019-10-29 Richard Frith-Macdonald <[email protected]>
* EcClientI.h:
* EcClientI.m: Remove a couple of methods only used by EcCommand.
* EcCommand.m: Add more information to launch info and use it to
ensure that suspended tasks remain suspended if they crash. Also
check for task completion in case a task crashes before it can
establish a DO connection back to the Command server.
2019-10-05 Richard Frith-Macdonald <[email protected]>
* EcLogger.m:
* EcProcess.m:
The debug command at the Console should report when debug (STDERR)
is suppressed.
2019-10-04 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcClientI.m:
When we ask a client to terminate, turn off restarting flag.
When a client has restarted, turn off restarting flag.
2019-10-03 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
When processes shut themselves down gracefully, don't relaunch them
unless they are either configured to autolaunch or are being
restarted.
2019-09-25 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
Rename launch timeout methods to avoid conflict with EcProcess
timeouts and make code clearer.
2019-09-25 Wolfgang Lux <[email protected]>
* EcCommand.m:
Fix bugs that prevent the status command from working for
abbreviated process names.
2019-08-23 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
When checking to see if a process is alive/responding, set a short
timeout for the DO request to get a proxy to the process so that
we don't hang waiting for a response that never comes.
2019-08-11 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Add MemoryAlarm config to control at whaich level of 'severity'
a process actually starts raising alarms about memory usage.
2019-08-10 Richard Frith-Macdonald <[email protected]>
* EcMemoryLogger.h: Change protocol to pass more information.
* EcProcess.h: Update comments/documentation.
* EcProcess.m: Revise memory usage code to
Provide resident and data memory stats to the memory logger
Refrain from generating alerts (remove MemoryIncrement and
MemoryPercent settings) having a base memory calculated
simply as the average usage after ten minutes, plus 20 percent.
Generate alarms for memory usage between the base/allowed value
and the maximum allowed value.
Add MemoryIdle setting to specify an 'idle' hour during the day
in which the process will restart if it's near maximum allowed
memory (in the critical alarm range).
Change the status reporting to improve readability.
2019-08-06 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Prevent repeated clears of alarms for newly connected
clients. Use a flag to record that a client is considered 'stable'
and has already had alarms cleared.
2019-07-15 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Change -ecWillQuit: behavior so that repeated calls are ignored rather
than causing the process to abort; the risk of accidentally aborting
during a clean shutdown (effectively turning the shutdown into a
crash) is greater than any utility in having quit force an abort (the
OS 'kill' command is adequate for that) of any process still capable
of responding to the request over Distributed Objects.
Added method to see how long we have been quitting, and method to
set how long we are allowed to quit.
2019-07-12 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Have ecHandleQuit call ecDidQuit in the main thread. That way an
application can make the handling run in one thread, and still
have the final shutdown done in the main thread.
2019-05-31 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Add EcMemoryTypeto control what type of memory usage we track:
Total, Resident, or Data (stack and heap).
2019-05-31 Richard Frith-Macdonald <[email protected]>
* EcControl.h:
* EcControl.m:
* EcProcess.h:
* EcProcess.m:
Tweaks to allow a new Command process to ask running clients to
reconnect to it immediately, so that it doesn;t try to launch
client processes unnecessarily.
2019-05-28 Richard Frith-Macdonald <[email protected]>
* EcControl.m: Stream alarm information to Console for Wolfgang.
2019-05-27 Richard Frith-Macdonald <[email protected]>
* EcUserDefaults.h:
* EcUserDefaults.m:
Extend API to allow temporary defaults overrides to have a specific
limited life span (an interval after which they can be purged from
the defaults database).
* EcProcess.h:
* EcProcess.m: Change error about long lived defaults to be warning.
Change 'defaults' command to support specific lifetime settings from
1 to 168 hours. Add APIs for logging exceptions and other unexpected
software/data errors using NSLog() and alarms.
Add convenience macros for logging exeptions or code/data errors.
2019-05-23 Richard Frith-Macdonald <[email protected]>
* EcAlerter.m: Allow dot to match line separators so we can readily
work with multi-line text.
2019-05-22 Richard Frith-Macdonald <[email protected]>
* EcAlerter.m: Add capture group support for Extra1 and Extra2
2019-05-21 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: For 'quit all' fix code to wait 35 seconds before
sending a second quit to recalcitrant processes.
For 'restart all', do not send a second restart to processes as
that would force a quit in the middle of shutting down cleanly,
instead wait up to 35 seconds for all processes to shut down.
2019-05-14 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcCommand.m: Replace -terminate with -terminate: method.
* Terminate.m: Extend termination to control the time allowed for the
graceful shutdown (default to 30 seconds).
2019-05-14 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcCommand.m: New method to return count of active clients.
* Terminate.m: New help output and option to wait until Command
server shuts down (printing out number of active clients).
2019-05-09 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Add status command for daiagnostics.
2019-05-05 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
Rewrite code for launching/relaunching processes so that a crashing
process will not get relaunched too frequently (eg filling a disk
with core dumps). We employ a fibonacci sequence to produce
increasing delays between successive launch failures (starting with
a tenth of a second). This sequence is not reset simply because a
process launches successfully, the process must also stay alive and
respond to a few 'pings' before it is considered a successful launch
causing the inter-launch delay to be reset.
Also, from the second relaunch onwards in any sequence of failures,
the -CoreSize 0 arguments are passed to the lanched process to tell
it ti suppress core dumps.
2019-03-02 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Add KillDebugOutput option to configure a process to avoid logging
on systems where logged information should not be available for
security reasons. This option is not overidable from the Console.
2019-02-15 Richard Frith-Macdonald <[email protected]>
* EcControl.m: If we get an alarm clear before we have reported the
original alarm, we should report the alarm before reporting the
clear.
* EcCommand.m: Be slower to clear alarms on client startup; in case
it's just going to crash fairly immediately.
2019-02-11 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Relaunch process more rapidly, turn off alarm coalesce.
* EcControl.m: Turn off alarm coalesce
* EcProcess.[hm]: Expose the alarm destination object.
2019-02-11 Wolfgang Lux <[email protected]>
* EcAlerter.m: Define Regex class as a simple wrapper around
NSRegularExpression.
2019-02-08 Wolfgang Lux <[email protected]>
* EcAlerter.m: Only ignore invalid rules in setRules: and update
the cached rules with the remaining rules.
2019-02-08 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Allow the Command server to launch multiple tasks at
the same time. Provide LaunchLimit config to specify the maximum
number of concurrent launches (in case launching a large number of
processes all at once would overload the hardware). Once the limit
of launching tasks is reached, new tasks should be launched as and
when launching tasks complete their startup and register with the
Command server.
Add suspend and resume command to control whether the Command server
will actually launch/relaunch tasks, along with a LaunchStartSuspended
user default to control whether launching starts as soon as the Command
server starts up (by default launching is not suspended on startup).
2018-12-11 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Improve alarm generation to cover the case of hung
processes better.
2018-11-23 Richard Frith-Macdonald <[email protected]>
* EcProcess.m: Remove excess comma which was messing up the printf
formatting of the output of the --help option.
2018-11-22 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Report host name when we report that there are no
clients.
* EcControl.m: When a 'tell' command is not sent to a specific host,
it should go to all the hosts, not to a random one.
2018-11-09 Wolfgang Lux <[email protected]>
EcProcess.m: Call ecAwaken only after registration at the name
server was successful.
2018-10-24 Richard Frith-Macdonald <[email protected]>
* EcAlerter.m: Fix off by one error in getting string after colon.
* EcProcess.m: Correct the number of hex digits we say we want when
reading in an encryption key.
* EcControl.m: Improve logging of Console commands and add casts and
comments to avoid compiler warnings about using an NSHost as a
dictionary key.
* Control.m: Change the name of the encryption key we prompt for,
from 'EcControlKey' to 'master encryption key'.
2018-07-30 Richard Frith-Macdonald <[email protected]>
* EcProcess.h: Add LT_CONSOLE for messages to be reported in the console
and also be logged to file as an audit log.
* EcProcess.m: Add LT_CONSOLE implementation/
* EcCommand.m: Use LT_CONSOLE for messages about process start/stop.
* EcControl.m: Add option to turn on/off audit log reporting in Console
and make it off by default, so we only see audit style logs
specifically intended for the Console
2018-06-26 [email protected]
* EcControl.m: Make some events audit logs where they might be security
or system stability related.
2018-06-25 Richard Frith-Macdonald <[email protected]>
* EcAlerter.h:
* EcAlerter.m:
Extend to permit (simple) handling of audit logs as well as
error/alert/alarm.
New -handleAudit:withHost:andServer:timestamp: method.
2018-06-24 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Change quit API to handle the quit in the main thread consistently and
also provide a mechanism to ensure that handling a quit does not block
other methods on which graceful shutdown depends.
2018-06-12 Richard Frith-Macdonald <[email protected]>
* EcClientI.h:
* EcClientI.m:
* EcCommand.m:
* EcControl.m:
* EcProcess.m:
When we restart clients, store that information so that, when the
client unregisters, we can immediately add them to the set of
processes to be launched again (and ensure the next launch attempt
is in 0.5 of a second or less). Improve audit messages for restart.
Remove restart command from individual processes so that it is
reliably done from Command server.
2018-05-10 Richard Frith-Macdonald <[email protected]>
* Control.m:
* EcControl.m:
* Command.m:
* EcCommand.m:
On restart of the Command server, lanch the new copy after half a
second rather than the normal 30 seconds.
2018-04-05 Richard Frith-Macdonald <[email protected]>
* EcCommand.m: Do not try to compress old debug files if there is
not enough space on the filesystem for both the uncompressed and
compressed versions to co-exist while compressing. Instead delete
the file and generate an error message.
2018-03-08 Richard Frith-Macdonald <[email protected]>
* EcControl.m: Allow EcControlKeyTest to be defined to supply a key
without requring it to be entered from the terminal. This is solely
to enable automated testing of systems.
2018-03-02 Richard Frith-Macdonald <[email protected]>
* Control.m:
* EcControl.m:
* EcProcess.h:
* EcProcess.m:
Allow EcControlKey to be an MD5 digest of the expected key, so we can
easily tell if the expected key was entered correctly.
Expose method to request entry of a hexadecimal key, with checking
against an MD5 digest of the expected value.
2018-02-23 Richard Frith-Macdonald <[email protected]>
* AlarmTool.m: Add default values for arguments, suitable for sending
a test/dummy alarm as an example.
* Control.m:
* EcControl.m:
* ECCL.h:
Add support for EcControlKey to force a value to be entered from the
terminal and have that value made available to all processes in the
cluster (eg so they can use a common encryption key not from disk).
2018-02-20 Richard Frith-Macdonald <[email protected]>
EcAlerter.h:
EcAlerter.m:
New type 'Raise' to match only an alarm being raised. Behavior of
'Alarm' changed to match both 'Raise' and 'Clear' (and reminders as
long as ReminderInterval matches).
2018-01-05 Richard Frith-Macdonald <[email protected]>
EcProcess.h:
EcProcess.m: New -ecRestart: method called when we pass the maximum
memory usage limit or when a restart command is issued. The default
implementation calls the -ecQuitFor:status: method using a status of
minus one so that the Command server will restart the program after
it shuts down.
EcCommand.m: New Launch option 'Time' to specify how long after a
crash we attempt to re-start an autolaunched program.
Control.plist: Document launch options better
2018-01-04 Richard Frith-Macdonald <[email protected]>
EcProcess.h: Improve comments.
EcProcess.m: Avoid warning about unknown connection on shutdown.
Rewrite config update code to catch exceptions, ensure that methods
are called in the correct order so that -cmdUpdated is always last,
and ensure that -cmdUpdated is called when a local defaults update
occurs. Also, ignore config updates while process is quitting.
2017-12-04 Richard Frith-Macdonald <[email protected]>
EcCommand.m: Change default period to start compressing logs to 7 days
and default for starting del;eting logs to 180 days.
2017-11-02 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m: New methods for handling clean quitting with abort
if it takes too long. Fix the directory in which nightly archived
logs are placed.
2017-09-18 Richard Frith-Macdonald <[email protected]>
* EcProcess.m: Fix for repeated log archiving on startup.
2017-08-09 Wolfgang Lux <[email protected]>
* EcProcess.m(ecNewDay:):
Fix bug where archiving was no longer run every day unless some
defaults had been changed locally.
2017-06-23 Richard Frith-Macdonald <[email protected]>
* EcCommand.m:
* EcControl.m:
* EcProcess.h:
* EcProcess.m:
Replace cmdArchive: with ecArchive: changing the log file archiving
model to archive files primarily based on their last modification
date. Fixes the bug where files were archived to a folder with the
wrong date on startup, and simplifies archiving code generally.
Move startup of timeouts to -ecRun so that they won't occur until
after all initialisation. Add -ecAwaken, -ecDidAwaken, and
-ecConfigurationError: to make it easy to initialise stuff at the
start of -ecRun and to ignore config updates before that happens.
Improve diagnostic logging for registration failure.
2017-03-06 Richard Frith-Macdonald <[email protected]>
* EcAlarmDestination.h:
* EcAlarmDestination.m:
Change signature of -setDebug: method to be consistent with other
classes using a method of the same name.
2017-01-30 Wolfgang Lux <[email protected]>
* EcAlarmSinkSNMP.m (pollHeartBeat_handler): Don't use memdup,
which is replaced by netsnmp_memdup with a different interface in
net-snmp 5.7.3.
2016-07-20 Wolfgang Lux <[email protected]>
* EcConsole.m (-ecRun): Pass distantFuture to -runMode:beforeDate:
to prevent returning immediately from the run loop after recent
gnustep-base changes.
2016-06-09 Richard Frith-Macdonald <[email protected]>
* EcControl.m: Fix bug where alerter config was not always updated
when changed, and where Control server defaults were lost during
alerter updates.
2016-05-18 Richard Frith-Macdonald <[email protected]>
* EcProcess.m: When changing log files on a nightly basis, don't
close descriptor 2 (stderr). Instead open the new log and use
dup2() to switch the new log to be stderr. Wolfgang spotted that
the existing code allowed another thread to ned up using the
descriptor if it opened a device in the gap between the old log
file being closed and the new one opened.
2016-01-21 Richard Frith-Macdonald <[email protected]>
* EcAlarm.h:
* EcAlarm.m:
* EcAlarmDestination.m: When coalescing alarms, allow a clear and
alarm to cancel each other out, but only if the alarm is not yet
active (only queued). Allow alarms to be set to persist in the queue
for up to 255 seconds to allow more coalescing.
This lets us raise an alarm which, if cleared within the delay
period, will never be forwarded anywhere.
2015-11-18 Richard Frith-Macdonald <[email protected]>
* EcProcess.m: Improve output when changing/reading defaults, and
restore tolerant behavior of doing a read by default.
* ECAlerter.h:
* ECAlerter.m: Remove obsolete methods, and a 'Quiet' configuration
option, and log alarms (and their disposition) by default.
2015-11-18 Niels Grewe <[email protected]>
* EcProcess.m: Fix argument validation when reading/writing defaults.
2015-10-28 Niels Grewe <[email protected]>
* EcConsole.m: Use readpassphrase() instead of getpass() if available.
* configure.ac
* config.make.in:
Test for readpassphrase in the C library and libbsd, link if needed.
* configure:
* config.h.in:
Regenerate
2015-10-15 Richard Frith-Macdonald <[email protected]>
* EcTest.h:
* EcTest.m:
Add new function to shut down a process via DO connection.
2015-10-14 Richard Frith-Macdonald <[email protected]>
* EcUserDefaults.h:
* EcUserDefaults.m:
New -revertSettings method to revert all local config settings.
* EcProcess.h:
* EcProcess.m:
Change cmdDefaultDbg to cmdBasicDbg to avoid confusion of the debug
mode with default settings.
Add 'defaults revert' command for Console to use.
2015-10-09 Richard Frith-Macdonald <[email protected]>
* EcProcess.h: declare new -launch: method
* EcCommand.m: implement -launch: method
* EcTest.m: use -launch: when asked to get a connection to a process.
2015-08-25 Richard Frith-Macdonald <[email protected]>
* AlarmTool.m:
* LogTool.m:
* Terminate.m:
Set up well known hosts at start.
2015-07-21 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Be more rigorous about checking instance id values. Ignore anything
other than a non-negative integer instance ID.
2015-07-15 Niels Grewe <[email protected]>
* EcMemoryLogger.h
* EcProcess.m:
Add the ability to load a bundle to export memory logs to. Configured
using the 'MemoryLoggerBundle' default key.
2015-07-13 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Restore lost effect of -ecNotLeaked to moderate changes in our idea
of when we should generate a warening about potential leaks
2015-07-08 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Allow 'memory current' to list current object allocation values.
Report time at which memory stats are generated.
For allocation changes, also show time of previous report.
2015-07-08 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Allow the memory monitoring configuration to be set from the Console
via the 'memory' command. Improve the help text. Improve the info
provided in the debug/error reports.
2015-07-06 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Various tweaks to leak alert generation. Change default initial
thresholds and change increments after an alert to be based upon
the *peak* usage at the point when the alert was generated, rather
than on the previous threshodld. This reduces the number of alerts
in a process whose memory usage grows rapidly on startup.
2015-07-03 Richard Frith-Macdonald <[email protected]>
* EcProcess.h:
* EcProcess.m:
Revamp memory handling code to work with total process memory rather
than heap size. Report usage in same units as the 'ps' command.
2015-06-17 Richard Frith-Macdonald <[email protected]>
* EcAlarmSinkSNMP.m: Fix stupid mistake setting notificationID.
2015-06-16 Richard Frith-Macdonald <[email protected]>
* EcAlarmSinkSNMP.m: Fix error in alarms table oid length.
* EcCommand.m: Fix error in compression of debug logs.
2015-05-31 Richard Frith-Macdonald <[email protected]>
* EcLogger.m: When logging to stderr, use lock to synchronise with
logs produced by gnustep-base NSLog().
2015-05-29 Richard Frith-Macdonald <[email protected]>
* EcAlarmSinkSNMP.m: log SNMP errors via the main logging mechanism
or NSLog.
* EcControl.m: fix failure to perform includes in some cases.
* EcAlerter.m: tidyups
2015-03-26 Richard Frith-Macdonald <[email protected]>
* Control.plist:
* EcCommand.m:
* EcProcess.h:
* EcProcess.m:
New options for dealing with I/O. In EcProcess we can set
EcKeepStandardError to keep the stderr stream separate from the
debug logging file.
When a process is launched from the Command server, we can define
KeepStandardInput, KeepStandardOutput, and KeepStandardError flags
in the task info to stop the standard streams from being closed.
2015-03-19 Richard Frith-Macdonald <[email protected]>
* EcProcess.m:
* EcAlerter.m:
Use milliseconds in logging timestamps.
2015-02-02 Richard Frith-Macdonald <[email protected]>
* EcAlerter.h: Add options for time-limiting rule activity
* EcAlerter.m: Implement those options
* EcProcess.m: Put debug logs in 'DebugLogs' by default.
* EcCommand.m: Put our logs in 'Logs' by default.
* EcControl.m: Put our logs in 'Logs' by default.
Change default logging locations.