diff --git a/docs/reference/experiment-config-reference.rst b/docs/reference/experiment-config-reference.rst index c567f0aef073..a22d72972333 100644 --- a/docs/reference/experiment-config-reference.rst +++ b/docs/reference/experiment-config-reference.rst @@ -333,7 +333,7 @@ Parameters include: retention settings post-completion for a single trial or the entire experiment, you can use the CLI command ``det t set log-retention `` or ``det e set log-retention ``. Both commands accept either the argument: ``--days``, which sets the number of days to retain logs - from the time of creation, or ``--forever`` which retains logs indefinitely. + from the end time of the task, or ``--forever`` which retains logs indefinitely. Example configuration: diff --git a/docs/release-notes.rst b/docs/release-notes.rst index d97c8974cae4..b7815f63c1c9 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -37,7 +37,8 @@ Version 0.31.0 ``, to allow the user to set the length of log retention for experiments and trials. Both commands can specify a length in days with the arguments ``--days ``. The number of days must be between -1 and 32767, where -1 retains logs forever. ``--forever`` is - equivalent to ``--days -1``. + equivalent to ``--days -1``. Add ``det task cleanup-logs`` command to allow the administrators to + manually initiate log retention cleanup. - WebUI: Add support for retaining logs for multiple experiments by selecting experiments from the experiment list page and choosing **Retain Logs** from **Actions**. Users can then input the diff --git a/harness/determined/cli/experiment.py b/harness/determined/cli/experiment.py index f75a31c2ab6c..6feb3ce2282f 100644 --- a/harness/determined/cli/experiment.py +++ b/harness/determined/cli/experiment.py @@ -572,7 +572,7 @@ def set_log_retention(args: argparse.Namespace) -> None: if not args.forever and not isinstance(args.days, int): raise cli.CliError( "Please provide an argument to set log retention. --days sets the number of days to" - " retain logs from the time of creation, eg. `det e set log-retention 1 --days 50`." + " retain logs from the end time of the task, eg. `det e set log-retention 1 --days 50`." " --forever retains logs indefinitely, eg.`det e set log-retention 1 --forever`." ) elif isinstance(args.days, int) and (args.days < -1 or args.days > 32767): @@ -1332,8 +1332,8 @@ def experiment_id_arg(help: str) -> cli.Arg: # noqa: A002 cli.Arg( "--days", type=none_or_int, - help="from the time of creation, number of days to " - "retain the logs for. allowed range: -1 to 32767.", + help="number of days to retain the logs for, from the " + "end time of the task, . allowed range: -1 to 32767.", ), cli.Arg( "--forever", diff --git a/harness/determined/cli/trial.py b/harness/determined/cli/trial.py index 5cb268d0001f..5a05c0299e03 100644 --- a/harness/determined/cli/trial.py +++ b/harness/determined/cli/trial.py @@ -243,7 +243,7 @@ def set_log_retention(args: argparse.Namespace) -> None: if not args.forever and not isinstance(args.days, int): raise cli.CliError( "Please provide an argument to set log retention. --days sets the number of days to" - " retain logs from the time of creation, eg. `det t set log-retention 1 --days 50`." + " retain logs from the end time of the task, eg. `det t set log-retention 1 --days 50`." " --forever retains logs indefinitely, eg.`det t set log-retention 1 --forever`." ) elif isinstance(args.days, int) and (args.days < -1 or args.days > 32767): @@ -538,8 +538,8 @@ def create_json_file_in_dir(content: Any, file_path: str) -> None: cli.Arg( "--days", type=none_or_int, - help="from the time of creation, number of days to " - "retain the logs for. allowed range: -1 to 32767.", + help="number of days to retain the logs for, from the " + "end time of the task, . allowed range: -1 to 32767.", ), cli.Arg( "--forever", diff --git a/proto/pkg/apiv1/experiment.pb.go b/proto/pkg/apiv1/experiment.pb.go index 6f6211475ff9..74b3f1637034 100644 --- a/proto/pkg/apiv1/experiment.pb.go +++ b/proto/pkg/apiv1/experiment.pb.go @@ -721,7 +721,7 @@ type PutExperimentRetainLogsRequest struct { // The ID of the experiment. ExperimentId int32 `protobuf:"varint,1,opt,name=experiment_id,json=experimentId,proto3" json:"experiment_id,omitempty"` - // The number of days to retain logs, starting from the time of creation. + // The number of days to retain logs, starting from the end time of the task. NumDays int32 `protobuf:"varint,2,opt,name=num_days,json=numDays,proto3" json:"num_days,omitempty"` } @@ -818,7 +818,7 @@ type PutExperimentsRetainLogsRequest struct { // The ids of the experiments being moved. ExperimentIds []int32 `protobuf:"varint,1,rep,packed,name=experiment_ids,json=experimentIds,proto3" json:"experiment_ids,omitempty"` - // The number of days to retain logs, starting from the time of creation. + // The number of days to retain logs, starting from the end time of the task. NumDays int32 `protobuf:"varint,2,opt,name=num_days,json=numDays,proto3" json:"num_days,omitempty"` // Targets all experiments matching filters. Filters *BulkExperimentFilters `protobuf:"bytes,3,opt,name=filters,proto3" json:"filters,omitempty"` diff --git a/proto/src/determined/api/v1/experiment.proto b/proto/src/determined/api/v1/experiment.proto index 5c8a777bfa99..3f60e02d97e3 100644 --- a/proto/src/determined/api/v1/experiment.proto +++ b/proto/src/determined/api/v1/experiment.proto @@ -156,7 +156,7 @@ message PutExperimentRetainLogsRequest { // The ID of the experiment. int32 experiment_id = 1; - // The number of days to retain logs, starting from the time of creation. + // The number of days to retain logs, starting from the end time of the task. int32 num_days = 2; } @@ -170,7 +170,7 @@ message PutExperimentsRetainLogsRequest { }; // The ids of the experiments being moved. repeated int32 experiment_ids = 1; - // The number of days to retain logs, starting from the time of creation. + // The number of days to retain logs, starting from the end time of the task. int32 num_days = 2; // Targets all experiments matching filters. BulkExperimentFilters filters = 3; diff --git a/proto/src/determined/api/v1/trial.proto b/proto/src/determined/api/v1/trial.proto index e51abebd566a..4cd2d8e74a05 100644 --- a/proto/src/determined/api/v1/trial.proto +++ b/proto/src/determined/api/v1/trial.proto @@ -460,7 +460,7 @@ message PutTrialRetainLogsRequest { // The ID of the trial. int32 trial_id = 1; - // The number of days to retain logs, starting from the time of creation. + // The number of days to retain logs, starting from the end time of the task. int32 num_days = 2; } diff --git a/webui/react/src/services/api-ts-sdk/api.ts b/webui/react/src/services/api-ts-sdk/api.ts index 3b62b304bc9d..c2844ac1eec3 100644 --- a/webui/react/src/services/api-ts-sdk/api.ts +++ b/webui/react/src/services/api-ts-sdk/api.ts @@ -8167,7 +8167,7 @@ export interface V1PutExperimentRetainLogsRequest { */ experimentId: number; /** - * The number of days to retain logs, starting from the time of creation. + * The number of days to retain logs, starting from the end time of the task. * @type {number} * @memberof V1PutExperimentRetainLogsRequest */ @@ -8193,7 +8193,7 @@ export interface V1PutExperimentsRetainLogsRequest { */ experimentIds: Array; /** - * The number of days to retain logs, starting from the time of creation. + * The number of days to retain logs, starting from the end time of the task. * @type {number} * @memberof V1PutExperimentsRetainLogsRequest */