Wouter Zelle wrote: > I've attached two patches. The wdbp one does an instance-of. The > webdav-client patch doesn't, because the method is new there. Thx! I'll keep you posted on the progress.
Regards, Bart > > Regards, > > Wouter > > On Mon, Jan 12, 2009 at 1:06 PM, Bart van der Schans > <[email protected]>wrote: > >> On 12-1-2009 12:42, Wouter Zelle wrote: >> >>> I've had similar problems. I've never been able to copy a considerable >>> part >>> of a repository using the repositorycopy or repository-datacopy tools. I >>> always get HttpRecoverableExceptions. They do not consistently happen to >>> the >>> same files, so it seems that it is a non-deterministic issue (probably >>> timing-related). Instead of trying to fix the actual issue, I decided to >>> try >>> and fix the symptoms by adding retries to hippo-tools/hippo-wdbp. In >>> WebdavBatchProcessor there is an executeMethod(HttpMethod method) that >>> performs the actual httpclient call. I added 3 retries like so: >>> >>> /** >>> * Retries up to three times >>> * >>> * @return httpclient response code >>> */ >>> public int executeMethod(HttpMethodBase method) throws IOException { >>> DefaultMethodRetryHandler retryHandler = new >>> DefaultMethodRetryHandler(); >>> retryHandler.setRetryCount(3); >>> method.setMethodRetryHandler(retryHandler); >>> >>> return m_httpClient.executeMethod(method); >>> } >>> >>> This change works very well for me. In one single repositorycopy run I >>> copied 6358 files between different repositories, where I had 22 >>> recoverable >>> exceptions, which all succeeded on a retry. I also did many other runs >>> that >>> went well. So I strongly suggest that this change gets adopted by Hippo. >>> Even if the underlying bug is fixed, there may still be network hiccups >>> that >>> preferably should not stop a multi-hour copy. Please note that I did >>> change >>> the method API to HttpMethodBase instead of HttpMethod. This allows a >>> guarantee that the supplied method will be retried. An alternative is to >>> keep the same API and perform an instanceof check & cast inside the >>> method. >>> >> I agree. This makes the java adapter more fault resilient. Changing > the api >> is probably going to be a problem, so I think we should go for a > instanceof >> check. >> >> >>> The same fix can be applied to the different WebdavMethods in >>> hippo-repository-java-adapter to fix Nick's issue. The easiest fix is to >>> put >>> the method below in WebdavMethod: >>> >>> /** >>> * Retries up to three times >>> * >>> * @return httpclient response code >>> */ >>> protected int executeMethod(HttpClient httpclient, HttpMethodBase method) >>> throws IOException { >>> DefaultMethodRetryHandler retryHandler = new >>> DefaultMethodRetryHandler(); >>> retryHandler.setRetryCount(3); >>> method.setMethodRetryHandler(retryHandler); >>> >>> return httpclient.executeMethod(method); >>> } >>> >>> Then the subclasses of WebdavMethod should call this method instead of >>> client.executeMethod(method). >>> >> I've to look into this on how to do this exactly. It would be great if you >> can create a patch. >> >> Regards, >> Bart >> >> >> >> >>> Regards, >>> >>> Wouter >>> >>> On Wed, Nov 5, 2008 at 6:15 PM, Nick Stolwijk >>> <[email protected]>wrote: >>> >>> > Hello, >>> > >>> > When we put a little load on our application, which writes XML files >>> > into the repository, now and then a ClientException occurs: >>> > >>> > Caused by: nl.hippo.client.api.ClientException: Exception while >>> > executing PUT method.: >>> > org.apache.commons.httpclient.HttpRecoverableException: Error in >>> > parsing the status line from the response: unable to find line >>> > starting with "HTTP" >>> > at nl.hippo.client.webdav.method.Put$1.doExec(Put.java:60) >>> > at >>> > >>> nl.hippo.client.webdav.method.WebdavMethod.execute(WebdavMethod.java:62) >>> > at nl.hippo.client.webdav.method.Put.execute(Put.java:45) >>> > at >>> > >>> >>> > nl.hippo.client.webdav.service.WebdavServiceImpl.executePut(WebdavServiceImpl.java:151) >>> > at >>> > >>> >>> > com.example.service.Store2RepoServiceImpl.saveFile(Store2RepoServiceImpl.java:107) >>> > ... 43 more >>> > Caused by: org.apache.commons.httpclient.HttpRecoverableException: >>> > org.apache.commons.httpclient.HttpRecoverableException: Error in >>> > parsing the status line from the response: unable to find line >>> > starting with "HTTP" >>> > at >>> > >>> >>> > org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1962) >>> > at >>> > >>> >>> > org.apache.commons.httpclient.HttpMethodBase.processRequest(HttpMethodBase.java:2653) >>> > at >>> > >>> >>> > org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1087) >>> > at >>> > >>> >>> > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:643) >>> > at >>> > >>> >>> > org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:497) >>> > at nl.hippo.client.webdav.method.Put$1.doExec(Put.java:56) >>> > ... 47 more >>> > >>> > Is this a known exception? I am not able to reproduce it clearly with >>> > a subset of requests. >>> > >>> > When we're doing a bulk update, we do two different updates on one >>> > file. Could it be an issue with putting the same file multiple times >>> > very soon after each other? >>> > >>> > With regards, >>> > >>> > Nick Stolwijk >>> > ~Java Developer~ >>> > >>> > Iprofs BV. >>> > Claus Sluterweg 125 >>> > 2012 WS Haarlem >>> > www.iprofs.nl >>> > ******************************************** >>> > Hippocms-dev: Hippo CMS development public mailinglist >>> > >>> > Searchable archives can be found at: >>> > MarkMail: http://hippocms-dev.markmail.org >>> > Nabble: http://www.nabble.com/Hippo-CMS-f26633.html >>> > >>> > >>> >>> >>> -- >>> Met vriendelijke groet, >>> >>> Wouter Zelle >>> ******************************************** >>> Hippocms-dev: Hippo CMS development public mailinglist >>> >>> Searchable archives can be found at: >>> MarkMail: http://hippocms-dev.markmail.org >>> Nabble: http://www.nabble.com/Hippo-CMS-f26633.html >>> >>> >> >> -- >> Hippo B.V. - Amsterdam >> Oosteinde 11, 1017 WT, Amsterdam, +31(0)20-5224466 >> >> Hippo USA Inc. - San Francisco >> 101 H Street, Suite Q, Petaluma CA, 94952-3329, +1 (707) 773-4646 >> ----------------------------------------------------------------- >> http://www.onehippo.com - [email protected] >> ----------------------------------------------------------------- >> >> ******************************************** >> Hippocms-dev: Hippo CMS development public mailinglist >> >> Searchable archives can be found at: >> MarkMail: http://hippocms-dev.markmail.org >> Nabble: http://www.nabble.com/Hippo-CMS-f26633.html >> >> > > > -- > Met vriendelijke groet, > > Wouter Zelle > -- Hippo B.V. - Amsterdam Oosteinde 11, 1017 WT, Amsterdam, +31(0)20-5224466 Hippo USA Inc. - San Francisco 101 H Street, Suite Q, Petaluma CA, 94952-3329, +1 (707) 773-4646 ----------------------------------------------------------------- http://www.onehippo.com - [email protected] ----------------------------------------------------------------- ******************************************** Hippocms-dev: Hippo CMS development public mailinglist Searchable archives can be found at: MarkMail: http://hippocms-dev.markmail.org Nabble: http://www.nabble.com/Hippo-CMS-f26633.html
