I've attached two patches. The wdbp one does an instance-of. The
webdav-client patch doesn't, because the method is new there.

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

Attachment: wdbp-retry.patch
Description: Binary data

Attachment: java-adapter-webdav-client-retry.patch
Description: Binary data

********************************************
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

Reply via email to