xref: /aosp_15_r20/external/federated-compute/fcp/protos/opstats.proto (revision 14675a029014e728ec732f129a32e299b2da0601)
1*14675a02SAndroid Build Coastguard Worker// Copyright 2021 Google LLC
2*14675a02SAndroid Build Coastguard Worker//
3*14675a02SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*14675a02SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*14675a02SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*14675a02SAndroid Build Coastguard Worker//
7*14675a02SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*14675a02SAndroid Build Coastguard Worker//
9*14675a02SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*14675a02SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*14675a02SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*14675a02SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*14675a02SAndroid Build Coastguard Worker// limitations under the License.
14*14675a02SAndroid Build Coastguard Worker
15*14675a02SAndroid Build Coastguard Workersyntax = "proto3";
16*14675a02SAndroid Build Coastguard Worker
17*14675a02SAndroid Build Coastguard Workerpackage fcp.client.opstats;
18*14675a02SAndroid Build Coastguard Worker
19*14675a02SAndroid Build Coastguard Workerimport "google/protobuf/duration.proto";
20*14675a02SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
21*14675a02SAndroid Build Coastguard Workerimport "fcp/protos/federated_api.proto";
22*14675a02SAndroid Build Coastguard Worker
23*14675a02SAndroid Build Coastguard Worker// Operational stats per run.
24*14675a02SAndroid Build Coastguard Workermessage OperationalStats {
25*14675a02SAndroid Build Coastguard Worker  // Population name.
26*14675a02SAndroid Build Coastguard Worker  string population_name = 1;
27*14675a02SAndroid Build Coastguard Worker
28*14675a02SAndroid Build Coastguard Worker  // Session name, if applicable.
29*14675a02SAndroid Build Coastguard Worker  string session_name = 2;
30*14675a02SAndroid Build Coastguard Worker
31*14675a02SAndroid Build Coastguard Worker  // Name of the task that was executed.
32*14675a02SAndroid Build Coastguard Worker  string task_name = 3;
33*14675a02SAndroid Build Coastguard Worker
34*14675a02SAndroid Build Coastguard Worker  // Timestamped training stages and error types.
35*14675a02SAndroid Build Coastguard Worker  message Event {
36*14675a02SAndroid Build Coastguard Worker    // Key training stages and error types.
37*14675a02SAndroid Build Coastguard Worker    enum EventKind {
38*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_UNRECOGNIZED = 0;
39*14675a02SAndroid Build Coastguard Worker
40*14675a02SAndroid Build Coastguard Worker      // An eligibility task checkin attempt started. This does not
41*14675a02SAndroid Build Coastguard Worker      // indicate whether the eligibility checkin request was actually sent.
42*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_CHECKIN_STARTED = 1;
43*14675a02SAndroid Build Coastguard Worker
44*14675a02SAndroid Build Coastguard Worker      // An eligibility task checkin response indicated that the client was
45*14675a02SAndroid Build Coastguard Worker      // rejected because the client was incompatible with the population's
46*14675a02SAndroid Build Coastguard Worker      // eligibility task plan.
47*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_REJECTED = 2;
48*14675a02SAndroid Build Coastguard Worker
49*14675a02SAndroid Build Coastguard Worker      // An eligibility task checkin response indicated that eligibility task
50*14675a02SAndroid Build Coastguard Worker      // plans are not configured.
51*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_DISABLED = 3;
52*14675a02SAndroid Build Coastguard Worker
53*14675a02SAndroid Build Coastguard Worker      // An eligibility task checkin response return an eligibility task plan
54*14675a02SAndroid Build Coastguard Worker      // URI, but the client hasn't downloaded the plan and checkpoint yet. Also
55*14675a02SAndroid Build Coastguard Worker      // logged when the plan/checkpoint resources were actually supplied inline
56*14675a02SAndroid Build Coastguard Worker      // in the protocol response message and no actual HTTP fetch needs to
57*14675a02SAndroid Build Coastguard Worker      // happen anymore. This ensures that this event can always be compared
58*14675a02SAndroid Build Coastguard Worker      // against EVENT_KIND_ELIGIBILITY_ENABLED.
59*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_PLAN_URI_RECEIVED = 48;
60*14675a02SAndroid Build Coastguard Worker
61*14675a02SAndroid Build Coastguard Worker      // An eligibility task checkin response returned an eligibility task plan,
62*14675a02SAndroid Build Coastguard Worker      // and the received plan was parseable.
63*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_ENABLED = 4;
64*14675a02SAndroid Build Coastguard Worker
65*14675a02SAndroid Build Coastguard Worker      // A plan execution started for an eligibility task.
66*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_COMPUTATION_STARTED = 5;
67*14675a02SAndroid Build Coastguard Worker
68*14675a02SAndroid Build Coastguard Worker      // A plan execution completed successfully for an eligibility task.
69*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_COMPUTATION_FINISHED = 6;
70*14675a02SAndroid Build Coastguard Worker
71*14675a02SAndroid Build Coastguard Worker      // A checkin attempt started. This does not indicate whether the checkin
72*14675a02SAndroid Build Coastguard Worker      // request was actually sent.
73*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CHECKIN_STARTED = 7;
74*14675a02SAndroid Build Coastguard Worker
75*14675a02SAndroid Build Coastguard Worker      // A checkin response indicated that the client was rejected.
76*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CHECKIN_REJECTED = 8;
77*14675a02SAndroid Build Coastguard Worker
78*14675a02SAndroid Build Coastguard Worker      // A checkin response indicated that the client was accepted for a task,
79*14675a02SAndroid Build Coastguard Worker      // but the client hasn't downloaded the plan and checkpoint yet. Also
80*14675a02SAndroid Build Coastguard Worker      // logged when the plan/checkpoint resources were actually supplied inline
81*14675a02SAndroid Build Coastguard Worker      // in the protocol response message and no actual HTTP fetch needs to
82*14675a02SAndroid Build Coastguard Worker      // happen anymore. This ensures that this event can always be compared
83*14675a02SAndroid Build Coastguard Worker      // against EVENT_KIND_CHECKIN_ACCEPTED.
84*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CHECKIN_PLAN_URI_RECEIVED = 49;
85*14675a02SAndroid Build Coastguard Worker
86*14675a02SAndroid Build Coastguard Worker      // A checkin response indicated that the client was accepted for a task,
87*14675a02SAndroid Build Coastguard Worker      // and the received plan was parseable.
88*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CHECKIN_ACCEPTED = 9;
89*14675a02SAndroid Build Coastguard Worker
90*14675a02SAndroid Build Coastguard Worker      // A plan execution started for a normal task.
91*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_COMPUTATION_STARTED = 10;
92*14675a02SAndroid Build Coastguard Worker
93*14675a02SAndroid Build Coastguard Worker      // A plan execution completed successfully for a normal task.
94*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_COMPUTATION_FINISHED = 11;
95*14675a02SAndroid Build Coastguard Worker
96*14675a02SAndroid Build Coastguard Worker      // An upload attempt started. This does not indicate whether the upload
97*14675a02SAndroid Build Coastguard Worker      // was actually sent.
98*14675a02SAndroid Build Coastguard Worker      // Deprecated: split into EVENT_KIND_RESULT_UPLOAD_STARTED and
99*14675a02SAndroid Build Coastguard Worker      // EVENT_KIND_FAILURE_UPLOAD_STARTED.
100*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_UPLOAD_STARTED = 12 [deprecated = true];
101*14675a02SAndroid Build Coastguard Worker
102*14675a02SAndroid Build Coastguard Worker      // An upload response indicated that the server successfully received the
103*14675a02SAndroid Build Coastguard Worker      // client's upload. This does not guarantee that the client's results are
104*14675a02SAndroid Build Coastguard Worker      // included in a round update.
105*14675a02SAndroid Build Coastguard Worker      // Deprecated: split into EVENT_KIND_RESULT_UPLOAD_FINISHED and
106*14675a02SAndroid Build Coastguard Worker      // EVENT_KIND_FAILURE_UPLOAD_FINISHED.
107*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_UPLOAD_FINISHED = 13 [deprecated = true];
108*14675a02SAndroid Build Coastguard Worker
109*14675a02SAndroid Build Coastguard Worker      // The client interrupted training due to unmet training conditions. This
110*14675a02SAndroid Build Coastguard Worker      // may occur during checkin, training, or upload.
111*14675a02SAndroid Build Coastguard Worker      // Deprecated: split into EVENT_KIND_{phase}_INTERRUPTED, where phase is
112*14675a02SAndroid Build Coastguard Worker      // one of ELIGIBILITY_CHECKIN, ELIGIBILITY_COMPUTATION, CHECKIN,
113*14675a02SAndroid Build Coastguard Worker      // COMPUTATION, RESULT_UPLOAD, FAILURE_UPLOAD.
114*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CLIENT_INTERRUPTED = 14 [deprecated = true];
115*14675a02SAndroid Build Coastguard Worker
116*14675a02SAndroid Build Coastguard Worker      // The server aborted the client's connection. This may occur during
117*14675a02SAndroid Build Coastguard Worker      // checkin or upload.
118*14675a02SAndroid Build Coastguard Worker      // Deprecated: split into EVENT_KIND_{phase}_SERVER_ABORTED, where phase
119*14675a02SAndroid Build Coastguard Worker      // is one of ELIGIBILITY_CHECKIN, CHECKIN, RESULT_UPLOAD, FAILURE_UPLOAD.
120*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_SERVER_ABORTED = 15 [deprecated = true];
121*14675a02SAndroid Build Coastguard Worker
122*14675a02SAndroid Build Coastguard Worker      // An error occurred that was related to local storage access,
123*14675a02SAndroid Build Coastguard Worker      // communication with the server, or an invalid plan.
124*14675a02SAndroid Build Coastguard Worker      // Deprecated: split into EVENT_KIND_{phase}_ERROR_IO,
125*14675a02SAndroid Build Coastguard Worker      // EVENT_KIND_{phase}_ERROR_INVALID_ARGUMENT and
126*14675a02SAndroid Build Coastguard Worker      // EVENT_KIND_{phase}_ERROR_INVALID_PAYLOAD, where phase is one of
127*14675a02SAndroid Build Coastguard Worker      // ELIGIBILITY_CHECKIN, CHECKIN, RESULT_UPLOAD, FAILURE_UPLOAD,
128*14675a02SAndroid Build Coastguard Worker      // ELIGIBILITY_COMPUTATION, or COMPUTATION.
129*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ERROR_IO = 16 [deprecated = true];
130*14675a02SAndroid Build Coastguard Worker
131*14675a02SAndroid Build Coastguard Worker      // The TensorFlow library reported an error.
132*14675a02SAndroid Build Coastguard Worker      // Deprecated: split into EVENT_KIND_{phase}_ERROR_TENSORFLOW, where phase
133*14675a02SAndroid Build Coastguard Worker      // is one of ELIGIBILITY_COMPUTATION, COMPUTATION.
134*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ERROR_TENSORFLOW = 17 [deprecated = true];
135*14675a02SAndroid Build Coastguard Worker
136*14675a02SAndroid Build Coastguard Worker      // An error occurred when processing the example selector.
137*14675a02SAndroid Build Coastguard Worker      // Deprecated: split into EVENT_KIND_{phase}_ERROR_EXAMPLE_ITERATOR, where
138*14675a02SAndroid Build Coastguard Worker      // phase is one of ELIGIBILITY_EVAL_COMPUTATION, COMPUTATION.
139*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ERROR_EXAMPLE_SELECTOR = 18 [deprecated = true];
140*14675a02SAndroid Build Coastguard Worker
141*14675a02SAndroid Build Coastguard Worker      // Indicates that training was scheduled but did not start due to runtime
142*14675a02SAndroid Build Coastguard Worker      // checks (e.g. insufficient battery levels).
143*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_TRAIN_NOT_STARTED = 19;
144*14675a02SAndroid Build Coastguard Worker
145*14675a02SAndroid Build Coastguard Worker      // Client issued an eligibility eval checkin request, but an IO error was
146*14675a02SAndroid Build Coastguard Worker      // encountered.
147*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_ELIGIBILITY_CHECKIN_STARTED.
148*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_CHECKIN_ERROR_IO = 20;
149*14675a02SAndroid Build Coastguard Worker
150*14675a02SAndroid Build Coastguard Worker      // Client issued an eligibility eval checkin request, but an invalid
151*14675a02SAndroid Build Coastguard Worker      // payload was received.
152*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_ELIGIBILITY_CHECKIN_STARTED.
153*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_CHECKIN_ERROR_INVALID_PAYLOAD = 21;
154*14675a02SAndroid Build Coastguard Worker
155*14675a02SAndroid Build Coastguard Worker      // Client issued an eligibility eval checkin request, but got interrupted
156*14675a02SAndroid Build Coastguard Worker      // on the client. Always preceded by
157*14675a02SAndroid Build Coastguard Worker      // EVENT_KIND_ELIGIBILITY_CHECKIN_STARTED.
158*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_CHECKIN_CLIENT_INTERRUPTED = 22;
159*14675a02SAndroid Build Coastguard Worker
160*14675a02SAndroid Build Coastguard Worker      // Client issued an eligibility eval checkin request, but server aborted.
161*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_ELIGIBILITY_CHECKIN_STARTED.
162*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_CHECKIN_SERVER_ABORTED = 23;
163*14675a02SAndroid Build Coastguard Worker
164*14675a02SAndroid Build Coastguard Worker      // Client issued a regular checkin request, but got an IO error.
165*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_CHECKIN_STARTED.
166*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CHECKIN_ERROR_IO = 24;
167*14675a02SAndroid Build Coastguard Worker
168*14675a02SAndroid Build Coastguard Worker      // Client issued a regular checkin request, but the server returned an
169*14675a02SAndroid Build Coastguard Worker      // invalid payload.
170*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_CHECKIN_STARTED.
171*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CHECKIN_ERROR_INVALID_PAYLOAD = 25;
172*14675a02SAndroid Build Coastguard Worker
173*14675a02SAndroid Build Coastguard Worker      // Client issued a regular checin request, but got interrupted on the
174*14675a02SAndroid Build Coastguard Worker      // client. Always preceded by EVENT_KIND_CHECKIN_STARTED.
175*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CHECKIN_CLIENT_INTERRUPTED = 26;
176*14675a02SAndroid Build Coastguard Worker
177*14675a02SAndroid Build Coastguard Worker      // Client issued a regular checin request, but got aborted by the server.
178*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_CHECKIN_STARTED.
179*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_CHECKIN_SERVER_ABORTED = 27;
180*14675a02SAndroid Build Coastguard Worker
181*14675a02SAndroid Build Coastguard Worker      // Client encountered a TensorFlow error during eligibility eval task
182*14675a02SAndroid Build Coastguard Worker      // computation.
183*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_ELIGIBILITY_COMPUTATION_STARTED.
184*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_COMPUTATION_ERROR_TENSORFLOW = 28;
185*14675a02SAndroid Build Coastguard Worker
186*14675a02SAndroid Build Coastguard Worker      // Reading from disk failed during eligibility eval task computation.
187*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_ELIGIBILITY_COMPUTATION_STARTED.
188*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_COMPUTATION_ERROR_IO = 29;
189*14675a02SAndroid Build Coastguard Worker
190*14675a02SAndroid Build Coastguard Worker      // Input parameters are invalid for eligibility eval task computation.
191*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_ELIGIBILITY_COMPUTATION_STARTED.
192*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_COMPUTATION_ERROR_INVALID_ARGUMENT = 30;
193*14675a02SAndroid Build Coastguard Worker
194*14675a02SAndroid Build Coastguard Worker      // Client encountered an example selector error during eligibility eval
195*14675a02SAndroid Build Coastguard Worker      // task computation. Always preceded by
196*14675a02SAndroid Build Coastguard Worker      // EVENT_KIND_ELIGIBILITY_COMPUTATION_STARTED.
197*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_COMPUTATION_ERROR_EXAMPLE_ITERATOR = 31;
198*14675a02SAndroid Build Coastguard Worker
199*14675a02SAndroid Build Coastguard Worker      // Eligibility eval computation was interrupted by the client.
200*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_ELIGIBILITY_COMPUTATION_STARTED.
201*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_ELIGIBILITY_COMPUTATION_CLIENT_INTERRUPTED = 32;
202*14675a02SAndroid Build Coastguard Worker
203*14675a02SAndroid Build Coastguard Worker      // A TensorFlow error was encountered during computation, or the output
204*14675a02SAndroid Build Coastguard Worker      // from the computation was missing or of an unexpected type. Always
205*14675a02SAndroid Build Coastguard Worker      // preceded by EVENT_KIND_COMPUTATION_STARTED.
206*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_COMPUTATION_ERROR_TENSORFLOW = 33;
207*14675a02SAndroid Build Coastguard Worker
208*14675a02SAndroid Build Coastguard Worker      // Reading from disk failed during computation.
209*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_COMPUTATION_STARTED.
210*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_COMPUTATION_ERROR_IO = 34;
211*14675a02SAndroid Build Coastguard Worker
212*14675a02SAndroid Build Coastguard Worker      // Input parameters are invalid for the given computation.
213*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_COMPUTATION_STARTED.
214*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_COMPUTATION_ERROR_INVALID_ARGUMENT = 35;
215*14675a02SAndroid Build Coastguard Worker
216*14675a02SAndroid Build Coastguard Worker      // An error occurred when processing the example selector.
217*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_COMPUTATION_STARTED.
218*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_COMPUTATION_ERROR_EXAMPLE_ITERATOR = 36;
219*14675a02SAndroid Build Coastguard Worker
220*14675a02SAndroid Build Coastguard Worker      // Client got interrupted during computation.
221*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_COMPUTATION_STARTED.
222*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_COMPUTATION_CLIENT_INTERRUPTED = 37;
223*14675a02SAndroid Build Coastguard Worker
224*14675a02SAndroid Build Coastguard Worker      // Client starts to upload successfully computed results.
225*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_RESULT_UPLOAD_STARTED = 38;
226*14675a02SAndroid Build Coastguard Worker
227*14675a02SAndroid Build Coastguard Worker      // An error occurred during upload.
228*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_RESULT_UPLOAD_STARTED.
229*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_RESULT_UPLOAD_ERROR_IO = 39;
230*14675a02SAndroid Build Coastguard Worker
231*14675a02SAndroid Build Coastguard Worker      // Upload was interrupted by the client.
232*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_RESULT_UPLOAD_STARTED.
233*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_RESULT_UPLOAD_CLIENT_INTERRUPTED = 40;
234*14675a02SAndroid Build Coastguard Worker
235*14675a02SAndroid Build Coastguard Worker      // Upload was aborted by the server.
236*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_RESULT_UPLOAD_STARTED.
237*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_RESULT_UPLOAD_SERVER_ABORTED = 41;
238*14675a02SAndroid Build Coastguard Worker
239*14675a02SAndroid Build Coastguard Worker      // Client uploaded training results to the server
240*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_RESULT_UPLOAD_STARTED.
241*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_RESULT_UPLOAD_FINISHED = 42;
242*14675a02SAndroid Build Coastguard Worker
243*14675a02SAndroid Build Coastguard Worker      // Client starts to upload failure report.
244*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_FAILURE_UPLOAD_STARTED = 43;
245*14675a02SAndroid Build Coastguard Worker
246*14675a02SAndroid Build Coastguard Worker      // An error occurred during upload.
247*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_FAILURE_UPLOAD_STARTED.
248*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_FAILURE_UPLOAD_ERROR_IO = 44;
249*14675a02SAndroid Build Coastguard Worker
250*14675a02SAndroid Build Coastguard Worker      // Upload was interrupted.
251*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_FAILURE_UPLOAD_STARTED.
252*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_FAILURE_UPLOAD_CLIENT_INTERRUPTED = 45;
253*14675a02SAndroid Build Coastguard Worker
254*14675a02SAndroid Build Coastguard Worker      // Upload was interrupted.
255*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_FAILURE_UPLOAD_STARTED.
256*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_FAILURE_UPLOAD_SERVER_ABORTED = 46;
257*14675a02SAndroid Build Coastguard Worker
258*14675a02SAndroid Build Coastguard Worker      // Client uploaded failure report to the server
259*14675a02SAndroid Build Coastguard Worker      // Always preceded by EVENT_KIND_FAILURE_UPLOAD_STARTED.
260*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_FAILURE_UPLOAD_FINISHED = 47;
261*14675a02SAndroid Build Coastguard Worker
262*14675a02SAndroid Build Coastguard Worker      // Client failed to initialize a component, but execution was not halted.
263*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_INITIALIZATION_ERROR_NONFATAL = 50;
264*14675a02SAndroid Build Coastguard Worker
265*14675a02SAndroid Build Coastguard Worker      // Client failed to initialize a component, and execution was halted.
266*14675a02SAndroid Build Coastguard Worker      EVENT_KIND_INITIALIZATION_ERROR_FATAL = 51;
267*14675a02SAndroid Build Coastguard Worker    }
268*14675a02SAndroid Build Coastguard Worker
269*14675a02SAndroid Build Coastguard Worker    EventKind event_type = 1;
270*14675a02SAndroid Build Coastguard Worker
271*14675a02SAndroid Build Coastguard Worker    // Event time.
272*14675a02SAndroid Build Coastguard Worker    google.protobuf.Timestamp timestamp = 2;
273*14675a02SAndroid Build Coastguard Worker  }
274*14675a02SAndroid Build Coastguard Worker
275*14675a02SAndroid Build Coastguard Worker  // History of key training stages and errors encountered during a run. The
276*14675a02SAndroid Build Coastguard Worker  // events are stored in sequential order, with the earliest event first.
277*14675a02SAndroid Build Coastguard Worker  repeated Event events = 4;
278*14675a02SAndroid Build Coastguard Worker
279*14675a02SAndroid Build Coastguard Worker  // Stats about the examples read from a given collection, potentially
280*14675a02SAndroid Build Coastguard Worker  // aggregated over multiple iterators.
281*14675a02SAndroid Build Coastguard Worker  message DatasetStats {
282*14675a02SAndroid Build Coastguard Worker    // Total number of examples read.
283*14675a02SAndroid Build Coastguard Worker    int64 num_examples_read = 1;
284*14675a02SAndroid Build Coastguard Worker
285*14675a02SAndroid Build Coastguard Worker    // Total number of bytes read.
286*14675a02SAndroid Build Coastguard Worker    int64 num_bytes_read = 2;
287*14675a02SAndroid Build Coastguard Worker  }
288*14675a02SAndroid Build Coastguard Worker
289*14675a02SAndroid Build Coastguard Worker  // Map of dataset stats keyed on the collection URI.
290*14675a02SAndroid Build Coastguard Worker  map<string, DatasetStats> dataset_stats = 5;
291*14675a02SAndroid Build Coastguard Worker
292*14675a02SAndroid Build Coastguard Worker  // If this execution failed with an error, the message of that error.
293*14675a02SAndroid Build Coastguard Worker  string error_message = 6;
294*14675a02SAndroid Build Coastguard Worker
295*14675a02SAndroid Build Coastguard Worker  // The retry window returned by the fl runner.
296*14675a02SAndroid Build Coastguard Worker  google.internal.federatedml.v2.RetryWindow retry_window = 7;
297*14675a02SAndroid Build Coastguard Worker
298*14675a02SAndroid Build Coastguard Worker  // The number of bytes downloaded (payload size via the chunking layer, which
299*14675a02SAndroid Build Coastguard Worker  // may be compressed) from the server while executing the task thus far.
300*14675a02SAndroid Build Coastguard Worker  int64 chunking_layer_bytes_downloaded = 10;
301*14675a02SAndroid Build Coastguard Worker
302*14675a02SAndroid Build Coastguard Worker  // The number of bytes uploaded (payload size via the chunking layer, which
303*14675a02SAndroid Build Coastguard Worker  // may be compressed) from the server while executing the task thus far.
304*14675a02SAndroid Build Coastguard Worker  int64 chunking_layer_bytes_uploaded = 11;
305*14675a02SAndroid Build Coastguard Worker
306*14675a02SAndroid Build Coastguard Worker  // The duration of time spent waiting on the network (but excluding idle time
307*14675a02SAndroid Build Coastguard Worker  // like the time between polling the server).
308*14675a02SAndroid Build Coastguard Worker  google.protobuf.Duration network_duration = 12;
309*14675a02SAndroid Build Coastguard Worker
310*14675a02SAndroid Build Coastguard Worker  reserved 8, 9;
311*14675a02SAndroid Build Coastguard Worker}
312*14675a02SAndroid Build Coastguard Worker
313*14675a02SAndroid Build Coastguard Worker// Top level op stats message.
314*14675a02SAndroid Build Coastguard Workermessage OpStatsSequence {
315*14675a02SAndroid Build Coastguard Worker  // The OperationalStats messages are stored in sequential order, with the
316*14675a02SAndroid Build Coastguard Worker  // earliest message first.
317*14675a02SAndroid Build Coastguard Worker  repeated OperationalStats opstats = 1;
318*14675a02SAndroid Build Coastguard Worker  // A timestamp that marks when we can start to trust the data in the
319*14675a02SAndroid Build Coastguard Worker  // OpStatsDb. Any event happens before this time is missing or removed.
320*14675a02SAndroid Build Coastguard Worker  google.protobuf.Timestamp earliest_trustworthy_time = 2;
321*14675a02SAndroid Build Coastguard Worker}
322*14675a02SAndroid Build Coastguard Worker
323*14675a02SAndroid Build Coastguard Worker// Selection criteria for op stats data.
324*14675a02SAndroid Build Coastguard Worker// If this selection criteria not set, all data will be used.
325*14675a02SAndroid Build Coastguard Worker// If start_time is not set but end_time is set, all examples up to end_time
326*14675a02SAndroid Build Coastguard Worker// will be used.
327*14675a02SAndroid Build Coastguard Worker// If end_time is not set, all examples after start_time will be used.
328*14675a02SAndroid Build Coastguard Worker// If neither start_time nor end_time are set, all examples will be used.
329*14675a02SAndroid Build Coastguard Worker// If both start_time and end_time are set, the examples within the time range
330*14675a02SAndroid Build Coastguard Worker// will be used.
331*14675a02SAndroid Build Coastguard Worker// If last_successful_contribution is set, start_time and end_time are ignored,
332*14675a02SAndroid Build Coastguard Worker// and opstats returns a single example containing the entry of the last
333*14675a02SAndroid Build Coastguard Worker// successful contribution (if it exists) of the runtime to the current task. If
334*14675a02SAndroid Build Coastguard Worker// there are no previous successful contributions, returns an empty iterator.
335*14675a02SAndroid Build Coastguard Workermessage OpStatsSelectionCriteria {
336*14675a02SAndroid Build Coastguard Worker  // The lower bound (inclusive) of the last updated time for a OperationalStats
337*14675a02SAndroid Build Coastguard Worker  // message.
338*14675a02SAndroid Build Coastguard Worker  google.protobuf.Timestamp start_time = 1;
339*14675a02SAndroid Build Coastguard Worker  // The upper bound (inclusive) of the last updated time for a OperationalStats
340*14675a02SAndroid Build Coastguard Worker  // message.
341*14675a02SAndroid Build Coastguard Worker  google.protobuf.Timestamp end_time = 2;
342*14675a02SAndroid Build Coastguard Worker  // If set, returns the entry of the last successful contribution to the
343*14675a02SAndroid Build Coastguard Worker  // current task, or no entries if there was no successful contribution.
344*14675a02SAndroid Build Coastguard Worker  // `start_time` and `end_time are ignored.
345*14675a02SAndroid Build Coastguard Worker  bool last_successful_contribution = 3;
346*14675a02SAndroid Build Coastguard Worker}
347