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.

Reply via email to