[Sync] Move DataTypeStatusTable ownership into DataTypeManager.
[chromium-blink-merge.git] / sync / protocol / client_debug_info.proto
blob34e53a3f5707891f6a727b35c687095dcf1b1363
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 //
5 // Sync protocol for debug info clients can send to the sync server.
7 syntax = "proto2";
9 option optimize_for = LITE_RUNTIME;
10 option retain_unknown_fields = true;
12 package sync_pb;
14 import "get_updates_caller_info.proto";
15 import "sync_enums.proto";
17 // Per-type hint information.
18 message TypeHint {
19   // The data type this hint applied to.
20   optional int32 data_type_id = 1;
22   // Whether or not a valid hint is provided.
23   optional bool has_valid_hint = 2;
26 // Information about the source that triggered a sync.
27 message SourceInfo {
28   // An enum indicating the reason for the nudge.
29   optional GetUpdatesCallerInfo.GetUpdatesSource source = 1;
31   // The per-type hint information associated with the nudge.
32   repeated TypeHint type_hint = 2;
35 // The additional info here is from the StatusController. They get sent when
36 // the event SYNC_CYCLE_COMPLETED  is sent.
37 message SyncCycleCompletedEventInfo {
38   // optional bool syncer_stuck = 1; // Was always false, now obsolete.
40   // The client has never set these values correctly.  It set
41   // num_blocking_conflicts to the total number of conflicts detected and set
42   // num_non_blocking_conflicts to the number of blocking (aka. simple)
43   // conflicts.
44   //
45   // These counters have been deprecated to avoid further confusion.  The newer
46   // counters provide more detail and are less buggy.
47   optional int32 num_blocking_conflicts = 2 [deprecated = true];
48   optional int32 num_non_blocking_conflicts = 3 [deprecated = true];
50   // These new conflict counters replace the ones above.
51   optional int32 num_encryption_conflicts = 4;
52   optional int32 num_hierarchy_conflicts = 5;
53   optional int32 num_simple_conflicts = 6; // No longer sent since M24.
54   optional int32 num_server_conflicts = 7;
56   // Counts to track the effective usefulness of our GetUpdate requests.
57   optional int32 num_updates_downloaded = 8;
58   optional int32 num_reflected_updates_downloaded = 9;
59   optional GetUpdatesCallerInfo caller_info = 10;
61   // A list of all the sources that were merged into this session.
62   //
63   // Some scenarios, notably mode switches and canary jobs, can spuriously add
64   // back-to-back duplicate sources to this list.
65   repeated SourceInfo source_info = 11;
68 // Datatype specifics statistics gathered at association time.
69 message DatatypeAssociationStats {
70   // The datatype that was associated.
71   optional int32 data_type_id = 1;
73   // The state of the world before association.
74   optional int32 num_local_items_before_association = 2;
75   optional int32 num_sync_items_before_association = 3;
77   // The state of the world after association.
78   optional int32 num_local_items_after_association = 4;
79   optional int32 num_sync_items_after_association = 5;
81   // The changes that got us from before to after. In a correctly working
82   // system these should be the deltas between before and after.
83   optional int32 num_local_items_added = 6;
84   optional int32 num_local_items_deleted = 7;
85   optional int32 num_local_items_modified = 8;
86   optional int32 num_sync_items_added = 9;
87   optional int32 num_sync_items_deleted = 10;
88   optional int32 num_sync_items_modified = 11;
90   // Model versions before association. Ideally local and sync model should
91   // have same version if models were persisted properly in last session.
92   // Note: currently version is only set on bookmark model.
93   optional int64 local_version_pre_association = 20;
94   optional int64 sync_version_pre_association = 21;
96   // The data type ran into an error during model association.
97   optional bool had_error = 12;
99   // Waiting time before downloading starts. This measures the time between
100   // receiving configuration request for a set of data types to starting
101   // downloading data of this type.
102   optional int64 download_wait_time_us = 15;
104   // Time spent on downloading sync data for first time sync.
105   // Note: This measures the time between asking backend to download data to
106   //       being notified of download-ready by backend. So it consists of
107   //       time on data downloading and processing at sync backend. But
108   //       downloading time should dominate. It's also the total time spent on
109   //       downloading data of all types in the priority group of
110   //       |data_type_id| instead of just one data type.
111   optional int64 download_time_us = 13;
113   // Waiting time for higher priority types to finish association. This
114   // measures the time between finishing downloading data to requesting
115   // association manager to associate this batch of types. High priority types
116   // have near zero waiting time.
117   optional int64 association_wait_time_for_high_priority_us = 16;
119   // Waiting time for other types with same priority during association.
120   // Data type manger sends types of same priority to association manager to
121   // configure as a batch. Association manager configures one type at a time.
122   // This measures the time between when a type is sent to association manager
123   // (among other types) to when association manager starts configuring the
124   // type. Total wait time before association is
125   //     |association_wait_time_for_high_priority_us| +
126   //     |association_wait_time_for_same_priority_us|
127   optional int64 association_wait_time_for_same_priority_us = 14;
129   // Time spent on model association.
130   optional int64 association_time_us = 17;
132   // Higher priority type that's configured before this type.
133   repeated int32 high_priority_type_configured_before = 18;
135   // Same priority type that's configured before this type.
136   repeated int32 same_priority_type_configured_before = 19;
139 message DebugEventInfo {
140   // Each of the following fields correspond to different kinds of events. as
141   // a result, only one is set during any single DebugEventInfo.
142   // A singleton event. See enum definition.
143   optional SyncEnums.SingletonDebugEventType singleton_event = 1;
144   // A sync cycle completed.
145   optional SyncCycleCompletedEventInfo sync_cycle_completed_event_info = 2;
146   // A datatype triggered a nudge.
147   optional int32 nudging_datatype = 3;
148   // A notification triggered a nudge.
149   repeated int32 datatypes_notified_from_server = 4;
150   // A datatype finished model association.
151   optional DatatypeAssociationStats datatype_association_stats = 5;
154 message DebugInfo {
155   repeated DebugEventInfo events = 1;
157   // Whether cryptographer is ready to encrypt and decrypt data.
158   optional bool cryptographer_ready = 2;
160   // Cryptographer has pending keys which indicates the correct passphrase
161   // has not been provided yet.
162   optional bool cryptographer_has_pending_keys = 3;
164   // Indicates client has dropped some events to save bandwidth.
165   optional bool events_dropped = 4;