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
wdbp-retry.patch
Description: Binary data
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
