Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2294)

Unified Diff: chrome/browser/sync/glue/typed_url_model_associator.h

Issue 10257026: Log UMA stats on Typed URL DB errors instead of stopping sync. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed compilation err. Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/glue/typed_url_model_associator.h
diff --git a/chrome/browser/sync/glue/typed_url_model_associator.h b/chrome/browser/sync/glue/typed_url_model_associator.h
index 019c760c684bfed8e7efa6948c6c99faeecddbe5..3ad770a435a7c271fe2d8fd58a6572869341a6fb 100644
--- a/chrome/browser/sync/glue/typed_url_model_associator.h
+++ b/chrome/browser/sync/glue/typed_url_model_associator.h
@@ -76,10 +76,10 @@ class TypedUrlModelAssociator : public AssociatorInterface {
// Delete all typed url nodes.
bool DeleteAllNodes(sync_api::WriteTransaction* trans);
- SyncError WriteToHistoryBackend(const history::URLRows* new_urls,
- const TypedUrlUpdateVector* updated_urls,
- const TypedUrlVisitVector* new_visits,
- const history::VisitVector* deleted_visits);
+ void WriteToHistoryBackend(const history::URLRows* new_urls,
+ const TypedUrlUpdateVector* updated_urls,
+ const TypedUrlVisitVector* new_visits,
+ const history::VisitVector* deleted_visits);
// Given a typed URL in the sync DB, looks for an existing entry in the
// local history DB and generates a list of visits to add to the
@@ -88,8 +88,7 @@ class TypedUrlModelAssociator : public AssociatorInterface {
// visits to add to/remove from the history DB, and adds a new entry to either
// |updated_urls| or |new_urls| depending on whether the URL already existed
// in the history DB.
- // Returns false if we encountered an error trying to access the history DB.
- SyncError UpdateFromSyncDB(const sync_pb::TypedUrlSpecifics& typed_url,
+ void UpdateFromSyncDB(const sync_pb::TypedUrlSpecifics& typed_url,
TypedUrlVisitVector* visits_to_add,
history::VisitVector* visits_to_remove,
TypedUrlUpdateVector* updated_urls,
@@ -101,6 +100,8 @@ class TypedUrlModelAssociator : public AssociatorInterface {
sync_pb::TypedUrlSpecifics FilterExpiredVisits(
const sync_pb::TypedUrlSpecifics& specifics);
+ // Returns the percentage of DB accesses that have resulted in an error.
+ int GetErrorPercentage() const;
// Bitfield returned from MergeUrls to specify the result of the merge.
typedef uint32 MergeResult;
@@ -144,16 +145,16 @@ class TypedUrlModelAssociator : public AssociatorInterface {
const history::VisitVector& visits,
sync_pb::TypedUrlSpecifics* specifics);
- // Helper function that fetches visits from the history DB corresponding to
- // the passed URL. This function compensates for the fact that the history DB
- // has rather poor data integrity (duplicate visits, visit timestamps that
- // don't match the last_visit timestamp, huge data sets that exhaust memory
- // when fetched, etc) by modifying the passed |url| object and |visits|
- // vector.
- // Returns false if we could not fetch the visits for the passed URL.
- static bool FixupURLAndGetVisits(history::HistoryBackend* backend,
- history::URLRow* url,
- history::VisitVector* visits);
+ // Fetches visits from the history DB corresponding to the passed URL. This
+ // function compensates for the fact that the history DB has rather poor data
+ // integrity (duplicate visits, visit timestamps that don't match the
+ // last_visit timestamp, huge data sets that exhaust memory when fetched,
+ // etc) by modifying the passed |url| object and |visits| vector.
+ // Returns false if we could not fetch the visits for the passed URL, and
+ // tracks DB error statistics internally for reporting via UMA.
+ bool FixupURLAndGetVisits(history::HistoryBackend* backend,
+ history::URLRow* url,
+ history::VisitVector* visits);
// Updates the passed |url_row| based on the values in |specifics|. Fields
// that are not contained in |specifics| (such as typed_count) are left
@@ -165,7 +166,16 @@ class TypedUrlModelAssociator : public AssociatorInterface {
// Returns true if pending_abort_ is true. Overridable by tests.
virtual bool IsAbortPending();
+ // Helper function that clears our error counters (used to reset stats after
+ // model association so we can track model association errors separately).
+ // Overridden by tests.
+ virtual void ClearErrorStats();
+
private:
+
+ // Helper routine that actually does the work of associating models.
+ SyncError DoAssociateModels();
+
// Helper function that determines if we should ignore a URL for the purposes
// of sync, because it contains invalid data or is import-only.
bool ShouldIgnoreUrl(const history::URLRow& url,
@@ -184,6 +194,11 @@ class TypedUrlModelAssociator : public AssociatorInterface {
DataTypeErrorHandler* error_handler_; // Guaranteed to outlive datatypes.
+ // Statistics for the purposes of tracking the percentage of DB accesses that
+ // fail for each client via UMA.
+ int num_db_accesses_;
+ int num_db_errors_;
+
DISALLOW_COPY_AND_ASSIGN(TypedUrlModelAssociator);
};
« no previous file with comments | « chrome/browser/sync/glue/typed_url_change_processor.cc ('k') | chrome/browser/sync/glue/typed_url_model_associator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698