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

Reply via email to