Hi Alan, Oliver, We have identified the issue at our end, it's a flaky connection to our datastore when creating and reading jobs. We are working on a fix, but meanwhile you can put a retry loop around your code to resubmit the job. MJS can handle the batch size you are providing, so this error needn't be a limiting factor when deciding whether or not to use MJS.
Cheers, Anash P. Oommen, AdWords API Advisor. On Friday, August 29, 2014 4:21:35 AM UTC-4, Oliver wrote: > > Thanks Alan for the update. Let us know if the changes you make will have > an effect. > > Hopefully also the API team will shed some light on this. > > Oliver > > > On Friday, August 29, 2014 9:14:44 AM UTC+1, Alan Coleman wrote: >> >> Hi Oliver, >> >> Thanks for getting involved, that's an interesting find in the >> documentation that I haven't seen before. I started this post about the >> UNEXPECTED_INTERNAL_API_ERROR which I'm sometimes receiving when trying >> bulk uploads using MJS - Hopefully this is being looked into. >> >> However there has been issues with MJS nearly finishing my jobs but then >> just stopping in a *deadlock-like condition*. The SOAP Logs report back >> as normal and indicate that the job is *pending*. >> >> There's no way round using the same customerId as that would defeat the >> object of what we're trying to achieve. >> >> If I use adding TextAds as an example, the array that I currently pass to >> the MJS is constructed in AdGroup order, which is how it comes out of my >> db, and it's not unusual to be trying to add several TextAds in each >> AdGroup. >> >> I'm chunking my ordered array into arrays of 1000 and then looping round >> through MJS to create jobs of that size, so it's possible that a concurrent >> job may contain the same AdGroup if the TextAds for that AdGroup have been >> chunked half way through. I think that is what the following means: >> >> *>> jobs operating on the same AdGroups* >> >> It may be a long shot but a good place for me to start would be to ensure >> that a particular Adgroup can only appear in one job. >> >> With regards to: >> >> Is the creation of multiple Ads within the same AdGroup considered as >>> operating on the adgroup itself? >>> If so, is this implying that we shouldn't attempt to create multiple Ads >>> within the same adgroup using MJS? >> >> >> I may be wrong, but I've never experienced any problems with writing >> multiple TextAds or Keywords to a single AdGroup until I started using MJS, >> and even then it's only when maintaining large job sizes. >> >> As I said earlier, probably unrelated to the >> UNEXPECTED_INTERNAL_API_ERROR, but I'm going to make the subtle changes to >> constructing my MJS anyway. >> >> Thanks again, >> >> >> >> On Thursday, August 28, 2014 5:09:18 PM UTC+1, Oliver wrote: >>> >>> I'm about to do something similar to what Alan is doing and, hence, why >>> I'm also interested in this. >>> >>> I see on this page: >>> https://developers.google.com/adwords/api/docs/guides/batch-processing >>> >>> there is a paragraph that says: >>> >>> >>> - >>> >>> When submitting a lot of concurrent jobs for the same customerId, >>> try to reduce the likelihood of jobs operating on the same AdGroups at >>> the >>> same time, while maintaining large job sizes. Many unfinished jobs (with >>> status of PENDING or PROCESSING) that try to mutate the same set of >>> AdGroups may lead to deadlock-like conditions resulting in severe >>> slow-down >>> and even job failures. >>> >>> I don't know exactly what is being referred to by this term: >>> >>> >> jobs operating on the same AdGroups >>> >>> Is the creation of multiple Ads within the same AdGroup considered as >>> operating on the adgroup itself? >>> >>> If so, is this implying that we shouldn't attempt to create multiple Ads >>> within the same adgroup using MJS? >>> >>> Oliver >>> >>> >>> >>> On Thursday, August 28, 2014 10:39:40 AM UTC+1, Alan Coleman wrote: >>>> >>>> Thanks Anash, >>>> >>>> I caught another such error in my SOAP Log this morning, although this >>>> time the error returned before any results. >>>> >>>> I'd really appreciate it if you could take a quick look and let me know >>>> what you think. >>>> >>>> Many thanks. >>>> >>>> HTTP/1.1 500 Internal Server Error >>>> Content-Type: text/xml; charset=UTF-8 >>>> Date: Thu, 28 Aug 2014 09:28:48 GMT >>>> Expires: Thu, 28 Aug 2014 09:28:48 GMT >>>> Cache-Control: private, max-age=0 >>>> X-Content-Type-Options: nosniff >>>> X-Frame-Options: SAMEORIGIN >>>> X-XSS-Protection: 1; mode=block >>>> Server: GSE >>>> Transfer-Encoding: chunked >>>> >>>> <?xml version="1.0"?> >>>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> >>>> <soap:Header> >>>> <ResponseHeader xmlns=" >>>> https://adwords.google.com/api/adwords/cm/v201402"> >>>> <requestId>000501ad297264b00a4254a6960046b8</requestId> >>>> <serviceName>MutateJobService</serviceName> >>>> <methodName>mutate</methodName> >>>> <operations>0</operations> >>>> <responseTime>8909</responseTime> >>>> </ResponseHeader> >>>> </soap:Header> >>>> <soap:Body> >>>> <soap:Fault> >>>> <faultcode>soap:Server</faultcode> >>>> <faultstring>[InternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ >>>> com.google.ads.api.services.common.error.InternalApiError.<init>(InternalApiErro]</faultstring> >>>> <detail> >>>> <ApiExceptionFault xmlns=" >>>> https://adwords.google.com/api/adwords/cm/v201402"> >>>> <message>[InternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ >>>> com.google.ads.api.services.common.error.InternalApiError.<init>(InternalApiErro]</message> >>>> >>>> <ApplicationException.Type>ApiException</ApplicationException.Type> >>>> <errors xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>>> xsi:type="InternalApiError"> >>>> <fieldPath/> >>>> <trigger/> >>>> >>>> <errorString>InternalApiError.UNEXPECTED_INTERNAL_API_ERROR</errorString> >>>> <ApiError.Type>InternalApiError</ApiError.Type> >>>> <reason>UNEXPECTED_INTERNAL_API_ERROR</reason> >>>> </errors> >>>> </ApiExceptionFault> >>>> </detail> >>>> </soap:Fault> >>>> </soap:Body> >>>> </soap:Envelope> >>>> >>>> On Wednesday, August 27, 2014 12:40:01 PM UTC+1, Alan Coleman wrote: >>>>> >>>>> Hello everyone, >>>>> >>>>> I'm creating some functionality in our app to build a fresh copy of a >>>>> campaign based on a current campaign's ALL_TIME sqpr report. The report >>>>> has the potential to produces tens of thousands of search terms - Which >>>>> will in turn be created into AdGroups, TextAds, Keywords and Negatives. >>>>> >>>>> I'm using MutateJobService to bulk upload data in batches of 1000 >>>>> records. So for example if I need to create 16,000 AdGroups I'm chunking >>>>> the array of AdGroups into 16 x 1000 and making 16 MutateJobService >>>>> requests in a loop. >>>>> >>>>> This works, up to a point. >>>>> >>>>> I can created around 20,000 TextAds before the script stops and I >>>>> receive an error (See below), although confusingly it just stops and I >>>>> don't see an error at all, or even an entry into my various logs. >>>>> >>>>> *Can anyone think of something I could be doing wrong?* >>>>> >>>>> *Am I asking for too much by pushing this much data through the API, >>>>> even using MutateJobService?* >>>>> >>>>> To give you an idea of what I'm trying to achieve, this is what the >>>>> page of my app looks like: >>>>> >>>>> >>>>> <https://lh6.googleusercontent.com/-SPlWg0qUgmQ/U_3CUmnyF4I/AAAAAAAAAUM/yqsQAlAcRHU/s1600/AdWordsApi.PNG> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> *Fatal error*: Uncaught SoapFault exception: [soap:Server] >>>>> [InternalApiError.UNEXPECTED_INTERNAL_API_ERROR @ >>>>> com.google.ads.api.services.common.error.InternalApiError.<init>(InternalApiErro] >>>>> >>>>> in >>>>> /home1/adwordsl/public_html/app/adwords_api_php_5.3.2/src/Google/Api/Ads/Common/Lib/AdsSoapClient.php:216 >>>>> >>>>> Stack trace: #0 >>>>> /home1/adwordsl/public_html/app/adwords_api_php_5.3.2/src/Google/Api/Ads/Common/Lib/AdsSoapClient.php(216): >>>>> >>>>> SoapClient->__soapCall('mutate', Array, NULL, Array, Array) #1 >>>>> /home1/adwordsl/public_html/app/adwords_api_php_5.3.2/src/Google/Api/Ads/AdWords/v201402/MutateJobService.php(19169): >>>>> >>>>> AdsSoapClient->__soapCall('mutate', Array) #2 >>>>> /home1/adwordsl/public_html/app/php_inc/app_addtextadsinbulk.php(73): >>>>> MutateJobService->mutate(Array, Object(BulkMutateJobPolicy)) #3 >>>>> /home1/adwordsl/public_html/app/appcampaignreset.php(484): >>>>> AddTextAdsInBulk(Object(AdWordsUser), Array) #4 {main} thrown in >>>>> */home1/adwordsl/public_html/app/adwords_api_php_5.3.2/src/Google/Api/Ads/Common/Lib/AdsSoapClient.php* >>>>> on >>>>> line *216* >>>>> >>>> -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and Google+: https://googleadsdeveloper.blogspot.com/ https://plus.google.com/+GoogleAdsDevelopers/posts =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords 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 "AdWords API Forum" group. To unsubscribe from this group and stop receiving emails from it, send an email to adwords-api+unsubscr...@googlegroups.com. Visit this group at http://groups.google.com/group/adwords-api. To view this discussion on the web visit https://groups.google.com/d/msgid/adwords-api/c50877cd-f5b2-448a-8019-a1e3bf32ccde%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.