I have a retry in place (I believe the limit is 5 tries before giving up), and since the most recent api update we are seeing a significant increase in these failures (those that exceed our retry limit) - both for bid and url updates.
Guys, is this a known issue? Suggestions for how we should structure our code to avoid this error? Is the database lock released before the soap call returns? Can this be mitigated by batching the calls by adgroup? Thanks - mm On Apr 4, 10:43 am, Rohit Dantas <rohit.dan...@visual-meta.com> wrote: > Hi i was updating ~4552 keyword bids today and received the following error, > even though no-one else was using our account to modify keywords, nor was > any other API process try to do the same. The next attempt to do the same > worked without a problem. > > Do you know what could be the issue? Should I just acknowledge that this > error can occur once in a while and build a retry mechanism? What would be > the best practice here? > > Caused by: DatabaseError.CONCURRENT_MODIFICATION @ > [Ljava.lang.StackTraceElement;@1fd12ba > > 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.adwords.v201008.cm.ApiException.getDeserializer(ApiException.java:142) > > 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 > com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501) > > at > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400) > > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2747) > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) > > at > com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) > > at > com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) > > at > com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) > > at > com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) > > at > com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) > > at > com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) > > at > com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) > > at javax.xml.parsers.SAXParser.parse(SAXParser.java:395) > > 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.adwords.v201008.cm.AdGroupCriterionServiceSoapBindingStub.mutate(AdGroupCriterionServiceSoapBindingStub.java:1090) > > ... 53 more > > Cheers. -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ 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