| Index: trunk/src/components/sync_driver/generic_change_processor.cc
|
| ===================================================================
|
| --- trunk/src/components/sync_driver/generic_change_processor.cc (revision 289354)
|
| +++ trunk/src/components/sync_driver/generic_change_processor.cc (working copy)
|
| @@ -144,10 +144,13 @@
|
| // Need to load specifics from node.
|
| syncer::ReadNode read_node(trans);
|
| if (read_node.InitByIdLookup(it->id) != syncer::BaseNode::INIT_OK) {
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(
|
| + syncer::SyncError error(
|
| FROM_HERE,
|
| + syncer::SyncError::DATATYPE_ERROR,
|
| "Failed to look up data for received change with id " +
|
| - base::Int64ToString(it->id));
|
| + base::Int64ToString(it->id),
|
| + syncer::GetModelTypeFromSpecifics(it->specifics));
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| return;
|
| }
|
| syncer_changes_.push_back(syncer::SyncChange(
|
| @@ -168,17 +171,14 @@
|
| syncer::SyncError::DATATYPE_ERROR,
|
| "Local service destroyed.",
|
| type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(error.location(),
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| return;
|
| }
|
| syncer::SyncError error = local_service_->ProcessSyncChanges(FROM_HERE,
|
| syncer_changes_);
|
| syncer_changes_.clear();
|
| - if (error.IsSet()) {
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(
|
| - error.location(), error.message());
|
| - }
|
| + if (error.IsSet())
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| }
|
|
|
| syncer::SyncDataList GenericChangeProcessor::GetAllSyncData(
|
| @@ -285,9 +285,8 @@
|
|
|
| namespace {
|
|
|
| -// TODO(isherman): Investigating http://crbug.com/121592
|
| // WARNING: this code is sensitive to compiler optimizations. Be careful
|
| -// modifying any code around an OnSingleDatatypeUnrecoverableError call, else
|
| +// modifying any code around an OnSingleDataTypeUnrecoverableError call, else
|
| // the compiler attempts to merge it with other calls, losing useful information
|
| // in breakpad uploads.
|
| syncer::SyncError LogLookupFailure(
|
| @@ -303,24 +302,21 @@
|
| error_prefix +
|
| "could not find entry matching the lookup criteria.",
|
| type);
|
| - error_handler->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Delete: Bad entry.";
|
| return error;
|
| }
|
| case syncer::BaseNode::INIT_FAILED_ENTRY_IS_DEL: {
|
| syncer::SyncError error;
|
| error.Reset(from_here, error_prefix + "entry is already deleted.", type);
|
| - error_handler->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Delete: Deleted entry.";
|
| return error;
|
| }
|
| case syncer::BaseNode::INIT_FAILED_DECRYPT_IF_NECESSARY: {
|
| syncer::SyncError error;
|
| error.Reset(from_here, error_prefix + "unable to decrypt", type);
|
| - error_handler->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Delete: Undecryptable entry.";
|
| return error;
|
| }
|
| @@ -329,8 +325,7 @@
|
| error.Reset(from_here,
|
| error_prefix + "a precondition was not met for calling init.",
|
| type);
|
| - error_handler->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Delete: Failed precondition.";
|
| return error;
|
| }
|
| @@ -338,8 +333,7 @@
|
| syncer::SyncError error;
|
| // Should have listed all the possible error cases above.
|
| error.Reset(from_here, error_prefix + "unknown error", type);
|
| - error_handler->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Delete: Unknown error.";
|
| return error;
|
| }
|
| @@ -361,8 +355,7 @@
|
| "Failed to delete " + type_str + " node. Local data, empty tag. " +
|
| change.location().ToString(),
|
| type);
|
| - error_handler->OnSingleDatatypeUnrecoverableError(error.location(),
|
| - error.message());
|
| + error_handler->OnSingleDataTypeUnrecoverableError(error);
|
| NOTREACHED();
|
| return error;
|
| }
|
| @@ -464,8 +457,7 @@
|
| "Received unset SyncChange in the change processor, " +
|
| change.location().ToString(),
|
| type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| NOTREACHED();
|
| LOG(ERROR) << "Unset sync change.";
|
| return error;
|
| @@ -480,7 +472,7 @@
|
| }
|
|
|
| // WARNING: this code is sensitive to compiler optimizations. Be careful
|
| -// modifying any code around an OnSingleDatatypeUnrecoverableError call, else
|
| +// modifying any code around an OnSingleDataTypeUnrecoverableError call, else
|
| // the compiler attempts to merge it with other calls, losing useful information
|
| // in breakpad uploads.
|
| syncer::SyncError GenericChangeProcessor::HandleActionAdd(
|
| @@ -500,8 +492,7 @@
|
| syncer::SyncError::DATATYPE_ERROR,
|
| "Failed to look up root node for type " + type_str,
|
| type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| NOTREACHED();
|
| LOG(ERROR) << "Create: no root node.";
|
| return error;
|
| @@ -516,24 +507,21 @@
|
| case syncer::WriteNode::INIT_FAILED_EMPTY_TAG: {
|
| syncer::SyncError error;
|
| error.Reset(FROM_HERE, error_prefix + "empty tag", type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Create: Empty tag.";
|
| return error;
|
| }
|
| case syncer::WriteNode::INIT_FAILED_ENTRY_ALREADY_EXISTS: {
|
| syncer::SyncError error;
|
| error.Reset(FROM_HERE, error_prefix + "entry already exists", type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Create: Entry exists.";
|
| return error;
|
| }
|
| case syncer::WriteNode::INIT_FAILED_COULD_NOT_CREATE_ENTRY: {
|
| syncer::SyncError error;
|
| error.Reset(FROM_HERE, error_prefix + "failed to create entry", type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Create: Could not create entry.";
|
| return error;
|
| }
|
| @@ -541,16 +529,14 @@
|
| syncer::SyncError error;
|
| error.Reset(
|
| FROM_HERE, error_prefix + "failed to set predecessor", type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Create: Bad predecessor.";
|
| return error;
|
| }
|
| default: {
|
| syncer::SyncError error;
|
| error.Reset(FROM_HERE, error_prefix + "unknown error", type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Create: Unknown error.";
|
| return error;
|
| }
|
| @@ -575,7 +561,7 @@
|
| return syncer::SyncError();
|
| }
|
| // WARNING: this code is sensitive to compiler optimizations. Be careful
|
| -// modifying any code around an OnSingleDatatypeUnrecoverableError call, else
|
| +// modifying any code around an OnSingleDataTypeUnrecoverableError call, else
|
| // the compiler attempts to merge it with other calls, losing useful information
|
| // in breakpad uploads.
|
| syncer::SyncError GenericChangeProcessor::HandleActionUpdate(
|
| @@ -597,22 +583,19 @@
|
| if (result == syncer::BaseNode::INIT_FAILED_PRECONDITION) {
|
| syncer::SyncError error;
|
| error.Reset(FROM_HERE, error_prefix + "empty tag", type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Update: Empty tag.";
|
| return error;
|
| } else if (result == syncer::BaseNode::INIT_FAILED_ENTRY_NOT_GOOD) {
|
| syncer::SyncError error;
|
| error.Reset(FROM_HERE, error_prefix + "bad entry", type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Update: bad entry.";
|
| return error;
|
| } else if (result == syncer::BaseNode::INIT_FAILED_ENTRY_IS_DEL) {
|
| syncer::SyncError error;
|
| error.Reset(FROM_HERE, error_prefix + "deleted entry", type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Update: deleted entry.";
|
| return error;
|
| } else {
|
| @@ -630,8 +613,7 @@
|
| "nigori mismatch for " +
|
| type_str + ".",
|
| type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Update: encr case 1.";
|
| return error;
|
| } else if (agreement && can_decrypt) {
|
| @@ -641,8 +623,7 @@
|
| "and the nigori matches (?!) for " +
|
| type_str + ".",
|
| type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Update: encr case 2.";
|
| return error;
|
| } else if (agreement) {
|
| @@ -652,8 +633,7 @@
|
| "the nigori matches for " +
|
| type_str + ".",
|
| type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Update: encr case 3.";
|
| return error;
|
| } else {
|
| @@ -663,8 +643,7 @@
|
| "(?!) and nigori mismatch for " +
|
| type_str + ".",
|
| type);
|
| - error_handler()->OnSingleDatatypeUnrecoverableError(FROM_HERE,
|
| - error.message());
|
| + error_handler()->OnSingleDataTypeUnrecoverableError(error);
|
| LOG(ERROR) << "Update: encr case 4.";
|
| return error;
|
| }
|
|
|