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. 6 7syntax = "proto2"; 8 9option optimize_for = LITE_RUNTIME; 10option retain_unknown_fields = true; 11 12package sync_pb; 13 14import "get_updates_caller_info.proto"; 15import "sync_enums.proto"; 16 17// Per-type hint information. 18message TypeHint { 19 // The data type this hint applied to. 20 optional int32 data_type_id = 1; 21 22 // Whether or not a valid hint is provided. 23 optional bool has_valid_hint = 2; 24} 25 26// Information about the source that triggered a sync. 27message SourceInfo { 28 // An enum indicating the reason for the nudge. 29 optional GetUpdatesCallerInfo.GetUpdatesSource source = 1; 30 31 // The per-type hint information associated with the nudge. 32 repeated TypeHint type_hint = 2; 33} 34 35// The additional info here is from the StatusController. They get sent when 36// the event SYNC_CYCLE_COMPLETED is sent. 37message SyncCycleCompletedEventInfo { 38 // optional bool syncer_stuck = 1; // Was always false, now obsolete. 39 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]; 49 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; 55 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; 60 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; 66} 67 68// Datatype specifics statistics gathered at association time. 69message DatatypeAssociationStats { 70 // The datatype that was associated. 71 optional int32 data_type_id = 1; 72 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; 76 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; 80 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; 89 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; 95 96 // The data type ran into an error during model association. 97 optional bool had_error = 12; 98 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; 103 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; 112 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; 118 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; 128 129 // Time spent on model association. 130 optional int64 association_time_us = 17; 131 132 // Higher priority type that's configured before this type. 133 repeated int32 high_priority_type_configured_before = 18; 134 135 // Same priority type that's configured before this type. 136 repeated int32 same_priority_type_configured_before = 19; 137} 138 139message 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; 152} 153 154message DebugInfo { 155 repeated DebugEventInfo events = 1; 156 157 // Whether cryptographer is ready to encrypt and decrypt data. 158 optional bool cryptographer_ready = 2; 159 160 // Cryptographer has pending keys which indicates the correct passphrase 161 // has not been provided yet. 162 optional bool cryptographer_has_pending_keys = 3; 163 164 // Indicates client has dropped some events to save bandwidth. 165 optional bool events_dropped = 4; 166} 167