Troubleshoot errors
Stay organized with collections
Save and categorize content based on your preferences.
This section describes how to handle errors.
Handle update_mask errors
When GMTDDeliveryVehicleReporter
sends a vehicle update, an update_mask
error can occur when the updateMask
query parameter is empty. To prevent
this error, always provide at least one field name. It typically occurs for the
first update after startup. For more information about updating vehicle fields
in Fleet Engine, see Update vehicle fields.
The following example shows how to handle this error:
Swift
import GoogleRidesharingDriver
class VehicleReporterListener: NSObject, GMTDVehicleReporterListener {
func vehicleReporter(
_ vehicleReporter: GMTDVehicleReporter,
didFail vehicleUpdate: GMTDVehicleUpdate,
withError error: Error
) {
let fullError = error as NSError
if let innerError = fullError.userInfo[NSUnderlyingErrorKey] as? NSError {
let innerFullError = innerError as NSError
if innerFullError.localizedDescription.contains("update_mask cannot be empty") {
emptyMaskUpdates += 1
return
}
}
failedUpdates += 1
}
override init() {
emptyMaskUpdates = 0
failedUpdates = 0
}
}
Objective-C
#import "VehicleReporterListener.h"
#import <GoogleRidesharingDriver/GoogleRidesharingDriver.h>
@implementation VehicleReporterListener {
NSInteger emptyMaskUpdates = 0;
NSInteger failedUpdates = 0;
}
- (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter
didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate
withError:(NSError *)error {
for (NSError *underlyingError in error.underlyingErrors) {
if ([underlyingError.localizedDescription containsString:@"update_mask cannot be empty"]) {
emptyMaskUpdates += 1;
return;
}
}
failedUpdates += 1
}
@end
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-09-03 UTC.
[null,null,["Last updated 2025-09-03 UTC."],[[["\u003cp\u003eThis section explains how to manage \u003ccode\u003eupdate_mask\u003c/code\u003e errors, which happen when the \u003ccode\u003eupdateMask\u003c/code\u003e query parameter is empty during vehicle updates by \u003ccode\u003eGMTDDeliveryVehicleReporter\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eTo avoid the \u003ccode\u003eupdate_mask\u003c/code\u003e error, ensure to always include at least one field name in the \u003ccode\u003eupdateMask\u003c/code\u003e parameter, especially during the initial update after startup.\u003c/p\u003e\n"],["\u003cp\u003eCode examples in Swift and Objective-C demonstrate how to detect and handle the \u003ccode\u003eupdate_mask\u003c/code\u003e error within your application's vehicle reporter listener implementation.\u003c/p\u003e\n"]]],[],null,["# Troubleshoot errors\n\nThis section describes how to handle errors.\n\nHandle update_mask errors\n-------------------------\n\nWhen `GMTDDeliveryVehicleReporter` sends a vehicle update, an `update_mask`\nerror can occur when the [`updateMask`](/maps/documentation/mobility/fleet-engine/reference/tasks/rest/v1/providers.deliveryVehicles/patch#body.QUERY_PARAMETERS.update_mask) query parameter is empty. To prevent\nthis error, always provide at least one field name. It typically occurs for the\nfirst update after startup. For more information about updating vehicle fields\nin Fleet Engine, see [Update vehicle fields](/maps/documentation/mobility/fleet-engine/essentials/vehicles/scheduled-tasks-vehicle-fields).\n\nThe following example shows how to handle this error: \n\n### Swift\n\n import GoogleRidesharingDriver\n\n class VehicleReporterListener: NSObject, GMTDVehicleReporterListener {\n func vehicleReporter(\n _ vehicleReporter: GMTDVehicleReporter,\n didFail vehicleUpdate: GMTDVehicleUpdate,\n withError error: Error\n ) {\n let fullError = error as NSError\n if let innerError = fullError.userInfo[NSUnderlyingErrorKey] as? NSError {\n let innerFullError = innerError as NSError\n if innerFullError.localizedDescription.contains(\"update_mask cannot be empty\") {\n emptyMaskUpdates += 1\n return\n }\n }\n failedUpdates += 1\n }\n\n override init() {\n emptyMaskUpdates = 0\n failedUpdates = 0\n }\n }\n\n### Objective-C\n\n #import \"VehicleReporterListener.h\"\n #import \u003cGoogleRidesharingDriver/GoogleRidesharingDriver.h\u003e\n\n @implementation VehicleReporterListener {\n NSInteger emptyMaskUpdates = 0;\n NSInteger failedUpdates = 0;\n }\n\n - (void)vehicleReporter:(GMTDVehicleReporter *)vehicleReporter\n didFailVehicleUpdate:(GMTDVehicleUpdate *)vehicleUpdate\n withError:(NSError *)error {\n for (NSError *underlyingError in error.underlyingErrors) {\n if ([underlyingError.localizedDescription containsString:@\"update_mask cannot be empty\"]) {\n emptyMaskUpdates += 1;\n return;\n }\n }\n failedUpdates += 1\n }\n\n @end"]]