Details
-
Type: Bug
-
Status: Closed
-
Priority: Critical
-
Resolution: Fixed
-
Affects Version/s: 2.0.0
-
Fix Version/s: 2.1.0
-
Component/s: Admax Deployment Service
-
Labels:
-
Environment:
all
-
Sprint:Sprint 2 - Cumberland, Sprint 3 - Cumberland, Sprint 4 - Cumberland, Sprint 5 - Cumberland
Description
USD/AUD/GBP all use 2 decimal places. JPY does not use decimal places but we're still sending them to Google and Google is responding with the following errors.
To reproduce, do a deploy with these values in contenteditor.properties
# # JPY # ce.orderID = 9081442538 ce.acct.currencycode = JPY ce.acct.language = ja # Japan DEV ce.parentClientCustomerID = 1189748134
Exceptions and errors from Google:
2013-02-20 02:37:14.163 (2) [P2T1]: 6 Errors found
2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[0].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[1].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[2].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[3].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[4].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
2013-02-20 02:37:14.164 (2) [P2T1]: com.google.api.ads.adwords.axis.v201209.cm.BudgetError: ApiError: fieldpath=operations[5].operand.budget.amount, trigger= apierrortype=BudgetError, reason=BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT
2013-02-20 02:37:14.164 (3) [P2T1]: Not retrying Google error. message1=[BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[0].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[1].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[2].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[3].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[4].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[5].operand.budget.amount]
2013-02-20 02:37:14.164 (3) [P2T1]: Caught other/unrecoverable API Error: "com.google.api.ads.adwords.axis.v201209.cm.ApiException"
2013-02-20 02:37:15.048 (4) [P2T1]: Exception [handling exception thrown by google...]:com.thesearchagency.searchengines.SearchEngineCommandException: [BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[0].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[1].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[2].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[3].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[4].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[5].operand.budget.amount]
at com.thesearchagency.searchengines.google.GoogleAdWordsAPI.addCampaignList(GoogleAdWordsAPI.java:3376)
at com.thesearchagency.searchengines.google.contenteditor.changerequest.CampaignChangeRequest.sendRequest(CampaignChangeRequest.java:72)
at com.thesearchagency.searchengines.google.contenteditor.changerequest.CampaignChangeRequest.sendRequest(CampaignChangeRequest.java:45)
at com.thesearchagency.searchengines.google.contenteditor.changerequest.BaseChangeRequest.makeRequest(BaseChangeRequest.java:112)
at com.thesearchagency.searchengines.google.contenteditor.GoogleContentEditor$SearchEngineUserWorker.handleCampaigns(GoogleContentEditor.java:1059)
at com.thesearchagency.searchengines.google.contenteditor.GoogleContentEditor$SearchEngineUserWorker.run(GoogleContentEditor.java:884)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: [BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[0].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[1].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[2].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[3].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[4].operand.budget.amount, BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT @ operations[5].operand.budget.amount]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:104)
at org.apache.axis.encoding.ser.BeanDeserializer.<init>(BeanDeserializer.java:90)
at com.google.api.ads.adwords.axis.v201209.cm.ApiException.getDeserializer(ApiException.java:143)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.axis.encoding.ser.BaseDeserializerFactory.getSpecialized(BaseDeserializerFactory.java:154)
at org.apache.axis.encoding.ser.BaseDeserializerFactory.getDeserializerAs(BaseDeserializerFactory.java:84)
at org.apache.axis.encoding.DeserializationContext.getDeserializer(DeserializationContext.java:464)
at org.apache.axis.encoding.DeserializationContext.getDeserializerForType(DeserializationContext.java:547)
at org.apache.axis.message.SOAPFaultDetailsBuilder.onStartChild(SOAPFaultDetailsBuilder.java:157)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at com.google.api.ads.adwords.axis.v201209.cm.CampaignServiceSoapBindingStub.mutate(CampaignServiceSoapBindingStub.java:1199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.api.ads.common.lib.soap.SoapClientHandler.invoke(SoapClientHandler.java:109)
at com.google.api.ads.common.lib.soap.axis.AxisHandler.invokeSoapCall(AxisHandler.java:175)
at com.google.api.ads.common.lib.soap.SoapServiceClient.callSoapClient(SoapServiceClient.java:64)
at com.google.api.ads.common.lib.soap.SoapServiceClient.invoke(SoapServiceClient.java:93)
at $Proxy20.mutate(Unknown Source)
at com.thesearchagency.searchengines.google.GoogleAdWordsAPI.addCampaignList(GoogleAdWordsAPI.java:3343)
... 11 more
2013-02-20 02:37:16.747 (2) [P2T1]: Google Request Errors for accountID 135(CampaignChangeRequest)
id=564, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[0].operand.budget.amount
id=565, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[1].operand.budget.amount
id=566, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[2].operand.budget.amount
id=567, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[3].operand.budget.amount
id=568, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[4].operand.budget.amount
id=569, code=0: BudgetError(reason: BudgetError.NON_MULTIPLE_OF_MINIMUM_CURRENCY_UNIT)(isExemptable: false), trigger=, field=operations[5].operand.budget.amount