Hi Josh Could the usage of not using distinct temporary IDs cause this problem ? As stated above, 99% of my requests succeed (and we've actually sent millions of them until now).
The tree is correct for our purposes. It will be changed by other requests later on. The problem doesn't seem to be related to the actual tree anyhow. We also see this error when we are trying to add child partitions to already existing ones. This, however, is very hard to reproduce for me since I cannot just add logs for every SOAP request to our live application and wait for a few days for this to happen. Even this simple case required hammering against the API with a local test script for a few hours. Thanks! Peter Am Freitag, 30. Oktober 2015 20:43:58 UTC+1 schrieb Josh Radcliff (AdWords API Team): > > Hi, > > I noticed that your request is operating on two ad groups but you are > reusing the same temporary ID for both. I would recommend using distinct > temporary IDs for distinct *Biddable/NegativeAdGroupCriterion* within a > single request. > > Also, in each case you are constructing what looks like an invalid > product partition tree > <https://developers.google.com/adwords/api/docs/guides/shopping#partitioning>, > > consisting of: > > ROOT (-1 biddable SUBDIVISION) > / > ProductOfferId (negative UNIT) > > It looks like you are trying to create a 2nd level of the tree that > excludes *everything*, since you don't have other UNIT nodes at that > level and the object is a *NegativeAdGroupCriterion*. If you subdivide > the tree by a dimension (offer ID in this case), you must have at least > *two* UNIT nodes: one for "Everything else" (*ProductOfferId* with a null > value) and at least one for a specific *ProductOfferId* with a non-null > value. Otherwise, the subdivision does not serve any purpose. > > Thanks, > Josh, AdWords API Team > > On Friday, October 30, 2015 at 6:35:58 AM UTC-4, peter... wrote: >> >> It looks like that we have the same problem. >> >> We create a brand new AdGroup, then send the following request: >> >> <soapenv:Body> >> <mutate xmlns="https://adwords.google.com/api/adwords/cm/v201506"> >> <operations> >> <operator>ADD</operator> >> <operand xmlns:ns2=" >> https://adwords.google.com/api/adwords/cm/v201506" >> xsi:type="ns2:BiddableAdGroupCriterion"> >> <ns2:adGroupId>22340202143</ns2:adGroupId> >> <ns2:criterion xsi:type="ns2:ProductPartition"> >> <ns2:id>-1</ns2:id> >> <ns2:partitionType>SUBDIVISION</ns2:partitionType> >> </ns2:criterion> >> </operand> >> </operations> >> <operations> >> <operator>ADD</operator> >> <operand xmlns:ns3=" >> https://adwords.google.com/api/adwords/cm/v201506" >> xsi:type="ns3:NegativeAdGroupCriterion"> >> <ns3:adGroupId>22340202143</ns3:adGroupId> >> <ns3:criterion xsi:type="ns3:ProductPartition"> >> <ns3:partitionType>UNIT</ns3:partitionType> >> <ns3:parentCriterionId>-1</ns3:parentCriterionId> >> <ns3:caseValue xsi:type="ns3:ProductOfferId"/> >> </ns3:criterion> >> </operand> >> </operations> >> <operations> >> <operator>ADD</operator> >> <operand xmlns:ns4=" >> https://adwords.google.com/api/adwords/cm/v201506" >> xsi:type="ns4:BiddableAdGroupCriterion"> >> <ns4:adGroupId>22340202263</ns4:adGroupId> >> <ns4:criterion xsi:type="ns4:ProductPartition"> >> <ns4:id>-1</ns4:id> >> <ns4:partitionType>SUBDIVISION</ns4:partitionType> >> </ns4:criterion> >> </operand> >> </operations> >> <operations> >> <operator>ADD</operator> >> <operand xmlns:ns5=" >> https://adwords.google.com/api/adwords/cm/v201506" >> xsi:type="ns5:NegativeAdGroupCriterion"> >> <ns5:adGroupId>22340202263</ns5:adGroupId> >> <ns5:criterion xsi:type="ns5:ProductPartition"> >> <ns5:partitionType>UNIT</ns5:partitionType> >> <ns5:parentCriterionId>-1</ns5:parentCriterionId> >> <ns5:caseValue xsi:type="ns5:ProductOfferId"/> >> </ns5:criterion> >> </operand> >> </operations> >> </mutate> >> </soapenv:Body> >> >> and *sporadically* get back >> >> <soap:Body> >> <soap:Fault> >> <faultcode>soap:Server</faultcode> >> >> <faultstring>[AdGroupCriterionError.PRODUCT_PARTITION_ALREADY_EXISTS @ >> operations[2].operand.criterion, >> AdGroupCriterionError.PRODUCT_PARTITION_DOES_NOT_EXIST @ >> operations[3].operand.criterion.parentCriterionId; >> trigger:'TempCriterionId{id=1}']</faultstring> >> <detail> >> <ApiExceptionFault xmlns=" >> https://adwords.google.com/api/adwords/cm/v201506"> >> >> <message>[AdGroupCriterionError.PRODUCT_PARTITION_ALREADY_EXISTS @ >> operations[2].operand.criterion, >> AdGroupCriterionError.PRODUCT_PARTITION_DOES_NOT_EXIST @ >> operations[3].operand.criterion.parentCriterionId; >> trigger:'TempCriterionId{id=1}']</message> >> >> <ApplicationException.Type>ApiException</ApplicationException.Type> >> <errors xmlns:xsi=" >> http://www.w3.org/2001/XMLSchema-instance" >> xsi:type="AdGroupCriterionError"> >> <fieldPath>operations[2].operand.criterion</fieldPath> >> <trigger/> >> >> >> <errorString>AdGroupCriterionError.PRODUCT_PARTITION_ALREADY_EXISTS</errorString> >> <ApiError.Type>AdGroupCriterionError</ApiError.Type> >> <reason>PRODUCT_PARTITION_ALREADY_EXISTS</reason> >> </errors> >> <errors xmlns:xsi=" >> http://www.w3.org/2001/XMLSchema-instance" >> xsi:type="AdGroupCriterionError"> >> >> <fieldPath>operations[3].operand.criterion.parentCriterionId</fieldPath> >> <trigger>TempCriterionId{id=1}</trigger> >> >> >> <errorString>AdGroupCriterionError.PRODUCT_PARTITION_DOES_NOT_EXIST</errorString> >> <ApiError.Type>AdGroupCriterionError</ApiError.Type> >> <reason>PRODUCT_PARTITION_DOES_NOT_EXIST</reason> >> </errors> >> </ApiExceptionFault> >> </detail> >> </soap:Fault> >> </soap:Body> >> >> (request id of this particular response was >> 00052343fe9006900a0ddbd10203b361 - if this helps). >> >> We also see this error when creating concrete product partitions with >> case values. It succeeds in 99% of all cases, but we sporadically get back >> this error. We've seen this only for product partitions so far. Our code is >> single-threaded. >> >> Am Dienstag, 6. Oktober 2015 16:06:53 UTC+2 schrieb Anthony Madrigal: >>> >>> Hi, >>> >>> Since you are using the AdGroupCriterionService, do you mean AdGroup >>> instead of campaign? Could you please send me both your SOAP request and >>> response for the successful and failed operations through *Reply >>> privately to author*? This will help me see why it is working for one >>> and not the other. >>> >>> Thanks, >>> Anthony >>> AdWords API Team >>> >> -- -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ 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/04e63b41-6121-48d9-a94e-829269749864%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.