main: dump history by default

Always write the measurement history on exit when the dump directory is
specified and silently ignore the dumponexit directive. There doesn't
seem to be a good use case for dumpdir and -r without dumponexit as the
history would be invalidated by adjustments of the clock that happened
between the dump command and chronyd exit.
This commit is contained in:
Miroslav Lichvar 2017-03-08 10:45:20 +01:00
parent 539ef3f770
commit f3a16383b9
5 changed files with 11 additions and 37 deletions

11
conf.c
View file

@ -104,7 +104,6 @@ static int do_log_tracking = 0;
static int do_log_rtc = 0; static int do_log_rtc = 0;
static int do_log_refclocks = 0; static int do_log_refclocks = 0;
static int do_log_tempcomp = 0; static int do_log_tempcomp = 0;
static int do_dump_on_exit = 0;
static int log_banner = 32; static int log_banner = 32;
static char *logdir; static char *logdir;
static char *dumpdir; static char *dumpdir;
@ -469,7 +468,7 @@ CNF_ParseLine(const char *filename, int number, char *line)
} else if (!strcasecmp(command, "dumpdir")) { } else if (!strcasecmp(command, "dumpdir")) {
parse_string(p, &dumpdir); parse_string(p, &dumpdir);
} else if (!strcasecmp(command, "dumponexit")) { } else if (!strcasecmp(command, "dumponexit")) {
do_dump_on_exit = parse_null(p); /* Silently ignored */
} else if (!strcasecmp(command, "fallbackdrift")) { } else if (!strcasecmp(command, "fallbackdrift")) {
parse_fallbackdrift(p); parse_fallbackdrift(p);
} else if (!strcasecmp(command, "hwclockfile")) { } else if (!strcasecmp(command, "hwclockfile")) {
@ -1552,14 +1551,6 @@ CNF_GetRtcDevice(void)
/* ================================================== */ /* ================================================== */
int
CNF_GetDumpOnExit(void)
{
return do_dump_on_exit;
}
/* ================================================== */
double double
CNF_GetMaxUpdateSkew(void) CNF_GetMaxUpdateSkew(void)
{ {

1
conf.h
View file

@ -60,7 +60,6 @@ extern int CNF_GetLogRefclocks(void);
extern int CNF_GetLogTempComp(void); extern int CNF_GetLogTempComp(void);
extern char *CNF_GetKeysFile(void); extern char *CNF_GetKeysFile(void);
extern char *CNF_GetRtcFile(void); extern char *CNF_GetRtcFile(void);
extern int CNF_GetDumpOnExit(void);
extern int CNF_GetManualEnabled(void); extern int CNF_GetManualEnabled(void);
extern int CNF_GetCommandPort(void); extern int CNF_GetCommandPort(void);
extern int CNF_GetRtcOnUtc(void); extern int CNF_GetRtcOnUtc(void);

View file

@ -550,11 +550,9 @@ built up since the previous slew.)
+ +
For such systems, it is possible to save the measurement history across For such systems, it is possible to save the measurement history across
restarts of *chronyd* (assuming no changes are made to the system clock restarts of *chronyd* (assuming no changes are made to the system clock
behaviour whilst it is not running). If this capability is to be used (via the behaviour whilst it is not running). The *dumpdir* directive defines the
*dumponexit* directive in the configuration file, or the directory where the measurement histories are saved when *chronyd* exits,
<<chronyc.adoc#dump,*dump*>> command in *chronyc*), the *dumpdir* directive or the <<chronyc.adoc#dump,*dump*>> command in *chronyc* is issued.
should be used to define the directory where the measurement histories are
saved.
+ +
An example of the directive is: An example of the directive is:
+ +
@ -566,11 +564,6 @@ A source whose IP address is _1.2.3.4_ would have its measurement history saved
in the file _@CHRONYRUNDIR@/1.2.3.4.dat_. History of reference clocks is saved in the file _@CHRONYRUNDIR@/1.2.3.4.dat_. History of reference clocks is saved
to files named by their reference ID in form of _refid:XXXXXXXX.dat_. to files named by their reference ID in form of _refid:XXXXXXXX.dat_.
[[dumponexit]]*dumponexit*::
If this directive is present, it indicates that *chronyd* should save the
measurement history for each of its time sources recorded whenever the program
exits. (See the <<dumpdir,*dumpdir*>> directive above.)
[[maxsamples]]*maxsamples* _samples_:: [[maxsamples]]*maxsamples* _samples_::
The *maxsamples* directive sets the default maximum number of samples that The *maxsamples* directive sets the default maximum number of samples that
*chronyd* should keep for each source. This setting can be overridden for *chronyd* should keep for each source. This setting can be overridden for
@ -2178,8 +2171,7 @@ is made of the RTC error at a particular RTC second, and the rate at which the
RTC gains or loses time relative to true time. RTC gains or loses time relative to true time.
When the computer is powered down, the measurement histories for all the NTP When the computer is powered down, the measurement histories for all the NTP
servers are saved to files (if the <<dumponexit,*dumponexit*>> directive is servers are saved to files, and the RTC tracking information is also
specified in the configuration file), and the RTC tracking information is also
saved to a file (if the <<rtcfile,*rtcfile*>> directive has been specified). saved to a file (if the <<rtcfile,*rtcfile*>> directive has been specified).
These pieces of information are also saved if the <<chronyc.adoc#dump,*dump*>> These pieces of information are also saved if the <<chronyc.adoc#dump,*dump*>>
and <<chronyc.adoc#writertc,*writertc*>> commands respectively are issued and <<chronyc.adoc#writertc,*writertc*>> commands respectively are issued
@ -2232,7 +2224,6 @@ log statistics measurements tracking
driftfile @CHRONYVARDIR@/drift driftfile @CHRONYVARDIR@/drift
makestep 1.0 3 makestep 1.0 3
maxupdateskew 100.0 maxupdateskew 100.0
dumponexit
dumpdir @CHRONYVARDIR@ dumpdir @CHRONYVARDIR@
rtcfile @CHRONYVARDIR@/rtc rtcfile @CHRONYVARDIR@/rtc
---- ----
@ -2297,7 +2288,6 @@ clientloglimit 100000000
leapsectz right/UTC leapsectz right/UTC
driftfile @CHRONYVARDIR@/drift driftfile @CHRONYVARDIR@/drift
dumpdir @CHRONYRUNDIR@ dumpdir @CHRONYRUNDIR@
dumponexit
---- ----
== SEE ALSO == SEE ALSO

View file

@ -1118,17 +1118,11 @@ purged. An example of how to do this is shown below.
[[dump]]*dump*:: [[dump]]*dump*::
The *dump* command causes *chronyd* to write its current history of The *dump* command causes *chronyd* to write its current history of
measurements for each of its sources to dump files, either for inspection or to measurements for each of its sources to dump files in the directory specified
support the *-r* option when *chronyd* is restarted. in the configuration file by the <<chrony.conf.adoc#dumpdir,*dumpdir*>>
+ directive. Note that *chronyd* does this automatically when it exits. This
The *dump* command is somewhat equivalent to the command is mainly useful for inspection of the history whilst *chronyd* is
<<chrony.conf.adoc#dumponexit,*dumponexit*>> directive in the configuration running.
file.
+
To use the *dump* command, you might want to configure the name of the
directory into which the dump files will be written. This can only be
done in the configuration file with the <<chrony.conf.adoc#dumpdir,*dumpdir*>>
directive.
[[rekey]]*rekey*:: [[rekey]]*rekey*::
The *rekey* command causes *chronyd* to re-read the key file specified in the The *rekey* command causes *chronyd* to re-read the key file specified in the

2
main.c
View file

@ -97,7 +97,7 @@ MAI_CleanupAndExit(void)
{ {
if (!initialised) exit(exit_status); if (!initialised) exit(exit_status);
if (CNF_GetDumpOnExit()) { if (CNF_GetDumpDir()[0] != '\0') {
SRC_DumpSources(); SRC_DumpSources();
} }