Hi,
We are trying to upload pii data to create the user lists in Google Ads manager and face the CONCURRENT_MODIFICATION error. When we read the following paragraph from the doc, our understanding is that as long as we run one job, we should not run into the CONCURRENT_MODIFICATION issue. So we added the requests concurrently to the same job, and submitted the job for only once. However, we still saw this error. - Avoid simultaneously running multiple OfflineUserDataJob <https://developers.google.com/google-ads/api/reference/rpc/v10/OfflineUserDataJob> processes that modify the same user list (that is, multiple jobs whose CustomerMatchUserListMetadata.user_list <https://developers.google.com/google-ads/api/reference/rpc/v10/CustomerMatchUserListMetadata> point to the same resource name). Doing so can result in a CONCURRENT_MODIFICATION <https://developers.google.com/google-ads/api/reference/rpc/v10/DatabaseErrorEnum.DatabaseError#concurrent_modification> error since multiple jobs are not permitted to operate on the same list at the same time. This error can also occur if attempting to simultaneously modify a list through the Google Ads UI and the Google Ads API. Note that this does not apply to adding operations <https://developers.google.com/google-ads/api/reference/rpc/v10/AddOfflineUserDataJobOperationsRequest> to an existing job, which can be done at any time before the job is started. Could you help us address following concerns? 1. Is adding requests to the same job concurrently supported without throwing out the CONCURRENT_MODIFICATION error? 2. If number 1 is supported, then is it a bug development team needs to trouble shoot? 3. If number 1 is not supported, could you suggest if there is any other way to upload the data asynchronously so that we can upload the data faster than the synchronous way? Here I’m pasting how we tested the API again. Following work flow is implemented to upload data to Google in parallel. 1. Created 'google_client' using access tokens 2. Created 'user_list' (we at Epsilon refer it as audience) 3. Created 'offline_user_data_job' using 'OfflineUserDataJobService' service 4. Create a function which takes the 'google_client', 'user_list', 'offline_user_data_job' and small portion of dataframe to be uploaded. This function is called in parallel by spark. 5. Within this function, 5.1 Create request for 'AddOfflineUserDataJobOperations' 5.2 Initialize the request with 'offline_user_data_job' ( This will tag a request to job. 5.3 Create operations using the input data. and assign to request.operations 5.4 submit the 'AddOfflineUserDataJobOperations' request 5.5 Repeat step 5.1 to 5.4 till all data is submitted to Google. 6. On submitting all the 'AddOfflineUserDataJobOperations' request, finally call 'run_offline_user_data_job' which triggers the upload. *Issue details:* We are facing 'database_error: CONCURRENT_MODIFICATION' error when we are submitting "'AddOfflineUserDataJobOperations' request" in parallel. ( Step 5.4) (<_InactiveRpcError of RPC that terminated with:\n\tstatus = StatusCode.INVALID_ARGUMENT\n\tdetails = "Request contains an invalid argument."\n\tdebug_error_string = " { "created": "@1647967680.852767877", "description": "Error received from peer ipv4:172.253.122.95:443", "file": "src/core/lib/surface/call.cc", "file_line": 903, "grpc_message": "Request contains an invalid argument.", "grpc_status": 3 } "\n>, <_InactiveRpcError of RPC that terminated with:\n\tstatus = StatusCode.INVALID_ARGUMENT\n\tdetails = "Request contains an invalid argument."\n\tdebug_error_string = " { "created": "@1647967680.852767877", "description": "Error received from peer ipv4:172.253.122.95:443", "file": "src/core/lib/surface/call.cc", "file_line": 903, "grpc_message": "Request contains an invalid argument.", "grpc_status": 3 } "\n>, errors {\n error_code {\n database_error: CONCURRENT_MODIFICATION\n }\n message: "Multiple requests were attempting to modify the same resource at once. Please retry the request."\n}\nrequest_id: "jUsAGBf4dnPrg6XQX8TEbA"\n, \'jUsAGBf4dnPrg6XQX8TEbA\')',) -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog: https://googleadsdeveloper.blogspot.com/ =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API and Google Ads API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en --- You received this message because you are subscribed to the Google Groups "Google Ads API and AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/fc49beb2-68d6-4374-8040-3e8236431fc8n%40googlegroups.com.