You read my mind. I actually just posted to that forum. I also reported an issue from the thing that Morten emailed about in the Adwords UI awhile back. My forum posting doesn't appear to be showing up yet--maybe the forum is moderated, so it will take a little while to make it. It is kind of a pain to describe this problem. Here is what I posted, so hopefully I get some kind of an answer:
We are seeing strange behavior with ManagedCustomerService.get(). We have a large MCC (over 1400 child AdWords accounts). We are periodically calling ManagedCustomerService.get() to detect newly linked/unlinked child AdWords accounts. In other words, we are periodically calling ManagedCustomerService.get() to retrieve our entire MCC tree and compare with previous results to detect changes. This normally works just fine. That is, when we call ManagedCustomerService.get(), we get exactly what we expect. However, we are seeing times when our calls are returning unreliable results. By unreliable results, I mean that we make one call to get and receive one result. Then just a minute or so later, we make a second call and get a different result. After just one more minute, we might get the first result again. When this happens what we typically see are one or two AdWords accounts are excluded from the results of some of our calls, while they are included in other calls. This situation remains for hours at a time (often more than 6 hours). During this problem time period, it will always be the same AdWords accounts that are missing from some of the API calls but included in others. Note that these missing accounts have not been removed from our MCC, so they should be in the results of the API call. After many hours of this problematic situation where ManagedCustomerService.get() returns unreliable results (sometimes correct and sometimes missing a few AdWords accounts), then things will be fine again for awhile. However, it doesn't usually take that long for the problem to recur (maybe a day or two). When the problem does recur, then it will typically be different AdWords accounts that are missing from some of our API calls. Our application requires that we detect changes to our MCC pretty quickly, so having these periods where ManagedCustomerService returns different results from minute to minute is a real problem for us. From our software's point of view, it appears that there are a few random AdWords accounts that are added/removed/added/removed/added/removed/etc. over and over again during these periods. Here is some proof from logging the SOAP calls. Here's the first call. Note the totalNumEntries reported in the result is 1465: 2013-10-15 22:18:47,191 [http-bio-8080-exec-1] INFO AdWordsServiceClient.soapXmlLogger - SOAP Request: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header> <ns1:RequestHeader xmlns:ns1=" https://adwords.google.com/api/adwords/mcm/v201302" soapenv:mustUnderstand="0"> <ns2:developerToken xmlns:ns2=" https://adwords.google.com/api/adwords/cm/v201302">xyz</ns2:developerToken> <ns3:userAgent xmlns:ns3=" https://adwords.google.com/api/adwords/cm/v201302">Shanghai: Oriental Pearl Tower (AwApi-Java, AdWords-Axis/1.15.2, Common-Java/1.15.2, Axis/1.4, Java/1.7.0_21, maven)</ns3:userAgent> <ns4:validateOnly xmlns:ns4=" https://adwords.google.com/api/adwords/cm/v201302">false</ns4:validateOnly> <ns5:partialFailure xmlns:ns5=" https://adwords.google.com/api/adwords/cm/v201302 ">false</ns5:partialFailure> </ns1:RequestHeader> </soapenv:Header> <soapenv:Body> <get xmlns="https://adwords.google.com/api/adwords/mcm/v201302"> <serviceSelector> <ns6:fields xmlns:ns6=" https://adwords.google.com/api/adwords/cm/v201302">CustomerId</ns6:fields> <ns7:fields xmlns:ns7=" https://adwords.google.com/api/adwords/cm/v201302">Name</ns7:fields> <ns8:fields xmlns:ns8=" https://adwords.google.com/api/adwords/cm/v201302">CurrencyCode</ns8:fields> <ns9:fields xmlns:ns9=" https://adwords.google.com/api/adwords/cm/v201302">DateTimeZone</ns9:fields> <ns10:fields xmlns:ns10=" https://adwords.google.com/api/adwords/cm/v201302 ">CanManageClients</ns10:fields> <ns11:fields xmlns:ns11=" https://adwords.google.com/api/adwords/cm/v201302">TestAccount</ns11:fields> <ns12:paging xmlns:ns12=" https://adwords.google.com/api/adwords/cm/v201302"> <ns12:startIndex>0</ns12:startIndex> <ns12:numberResults>1000</ns12:numberResults> </ns12:paging> </serviceSelector> </get> </soapenv:Body> </soapenv:Envelope> 2013-10-15 22:18:47,191 [http-bio-8080-exec-1] INFO AdWordsServiceClient.soapXmlLogger - SOAP Response: <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap=" http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <ns2:ResponseHeader xmlns:ns2=" https://adwords.google.com/api/adwords/mcm/v201302" xmlns=" https://adwords.google.com/api/adwords/cm/v201302"> <requestId>0004e8d3ff3bc7f00aa4bc4200004348</requestId> <serviceName>ManagedCustomerService</serviceName> <methodName>get</methodName> <operations>0</operations> <responseTime>1549</responseTime> <units>0</units> </ns2:ResponseHeader> </soap:Header> <soap:Body> <ns2:getResponse xmlns=" https://adwords.google.com/api/adwords/cm/v201302" xmlns:ns2=" https://adwords.google.com/api/adwords/mcm/v201302"> <ns2:rval> <totalNumEntries>1465</totalNumEntries> <Page.Type>ManagedCustomerPage</Page.Type> <ns2:entries> <ns2:name>Foo</ns2:name> <ns2:customerId>2222222222</ns2:customerId> <ns2:canManageClients>false</ns2:canManageClients> <ns2:currencyCode>USD</ns2:currencyCode> <ns2:dateTimeZone>America/New_York</ns2:dateTimeZone> <ns2:testAccount>false</ns2:testAccount> </ns2:entries> ... Here's the second call, made 3 seconds after the first call. It's for the second page of results, but note that the totalNumEntries reported in the response is now 1462: 2013-10-15 22:18:50,197 [http-bio-8080-exec-1] INFO AdWordsServiceClient.soapXmlLogger - SOAP Request: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv=" http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd=" http://www.w3.org/2001/XMLSchema" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Header> <ns1:RequestHeader xmlns:ns1=" https://adwords.google.com/api/adwords/mcm/v201302" soapenv:mustUnderstand="0"> <ns2:developerToken xmlns:ns2=" https://adwords.google.com/api/adwords/cm/v201302">xyz</ns2:developerToken> <ns3:userAgent xmlns:ns3=" https://adwords.google.com/api/adwords/cm/v201302">Shanghai: Oriental Pearl Tower (AwApi-Java, AdWords-Axis/1.15.2, Common-Java/1.15.2, Axis/1.4, Java/1.7.0_21, maven)</ns3:userAgent> <ns4:validateOnly xmlns:ns4=" https://adwords.google.com/api/adwords/cm/v201302">false</ns4:validateOnly> <ns5:partialFailure xmlns:ns5=" https://adwords.google.com/api/adwords/cm/v201302 ">false</ns5:partialFailure> </ns1:RequestHeader> </soapenv:Header> <soapenv:Body> <get xmlns="https://adwords.google.com/api/adwords/mcm/v201302"> <serviceSelector> <ns6:fields xmlns:ns6=" https://adwords.google.com/api/adwords/cm/v201302">CustomerId</ns6:fields> <ns7:fields xmlns:ns7=" https://adwords.google.com/api/adwords/cm/v201302">Name</ns7:fields> <ns8:fields xmlns:ns8=" https://adwords.google.com/api/adwords/cm/v201302">CurrencyCode</ns8:fields> <ns9:fields xmlns:ns9=" https://adwords.google.com/api/adwords/cm/v201302">DateTimeZone</ns9:fields> <ns10:fields xmlns:ns10=" https://adwords.google.com/api/adwords/cm/v201302 ">CanManageClients</ns10:fields> <ns11:fields xmlns:ns11=" https://adwords.google.com/api/adwords/cm/v201302">TestAccount</ns11:fields> <ns12:paging xmlns:ns12=" https://adwords.google.com/api/adwords/cm/v201302"> <ns12:startIndex>1000</ns12:startIndex> <ns12:numberResults>1000</ns12:numberResults> </ns12:paging> </serviceSelector> </get> </soapenv:Body> </soapenv:Envelope> 2013-10-15 22:18:50,197 [http-bio-8080-exec-1] INFO AdWordsServiceClient.soapXmlLogger - SOAP Response: <?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap=" http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <ns2:ResponseHeader xmlns:ns2=" https://adwords.google.com/api/adwords/mcm/v201302" xmlns=" https://adwords.google.com/api/adwords/cm/v201302"> <requestId>0004e8d3ff82ac600aa49a4a00002d50</requestId> <serviceName>ManagedCustomerService</serviceName> <methodName>get</methodName> <operations>0</operations> <responseTime>1216</responseTime> <units>0</units> </ns2:ResponseHeader> </soap:Header> <soap:Body> <ns2:getResponse xmlns=" https://adwords.google.com/api/adwords/cm/v201302" xmlns:ns2=" https://adwords.google.com/api/adwords/mcm/v201302"> <ns2:rval> <totalNumEntries>1462</totalNumEntries> <Page.Type>ManagedCustomerPage</Page.Type> <ns2:entries> <ns2:name>Blah</ns2:name> <ns2:customerId>1111111111</ns2:customerId> <ns2:canManageClients>false</ns2:canManageClients> <ns2:currencyCode>CHF</ns2:currencyCode> <ns2:dateTimeZone>Europe/Zurich</ns2:dateTimeZone> <ns2:testAccount>false</ns2:testAccount> </ns2:entries> So, in the 3 seconds between the request for the first page and the request for the second page, we see the totalNumEntries change from 1465 to 1462. In this case, we ended up missing one of our AdWords accounts from the results once we merged the results from page one and page two together. You might say, well, 3 AdWords accounts were removed in the 3 seconds between the 2 calls to ManagedCustomerService.get(). Yes, that could happen, but that is not what happened. I created a little test problem to make these calls over and over again during this period, and the results were truly random. Often I'd get the correct results (which is when both pages reported totalNumEntries of 1465). Whenever either of the pages returned totalNumEntries of 1462, I'd get a missing AdWords account from the results. Interestingly, if page one reported totalNumEntries of 1462, then one AdWords account would always be missing, but when page two reported totalNumEntries of 1462, then a different AdWords account would be missing. We did think that perhaps by increasing the page size so that all results would be returned in a single call that this might fix our problem. However, we tried this earlier today, and we saw the problem happen again, so we don't think this is the case. We have not yet had the opportunity to trace the SOAP calls in the single page case, and we've only had the problem once since we deployed this change yesterday, so we're not 100% certain whether paging is involved or not, but initial indications are that the problem can be reproduced without requesting multiple pages. We've seen this problem crop up at various times for well over a month now (which is when we deployed new software that used ManagedCustomerService for the first time), so it's not a one-time glitch on the AdWords servers. We see it start to happen for one or two AdWords accounts for 6 or more hours, then we get correct results again for awhile. Maybe the next day, we start getting bad results for another few AdWords accounts. We are surprised that our searches for this issue haven't turned up anything. It seems like others should be seeing this issue. Maybe the size of our AdWords MCC makes it much more likely for us to see this behavior than others with smaller AdWords MCC trees? It seems like a pretty serious issue to us, and we hope that the AdWords team will be able to address it soon. As things are right now, this issue pretty much makes ManagedCustomerService.get() unusable from our point of view. Does anyone have any ideas? -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ 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. For more options, visit https://groups.google.com/groups/opt_out.