Author: jmssiera
Date: Mon Nov 18 17:51:22 2019
New Revision: 1869984
URL: http://svn.apache.org/viewvc?rev=1869984&view=rev
Log:
CONNECTORS-1628: Fix Confluence Connector hang on error
Modified:
manifoldcf/trunk/connectors/confluence/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/client/ConfluenceClient.java
Modified:
manifoldcf/trunk/connectors/confluence/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/client/ConfluenceClient.java
URL:
http://svn.apache.org/viewvc/manifoldcf/trunk/connectors/confluence/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/client/ConfluenceClient.java?rev=1869984&r1=1869983&r2=1869984&view=diff
==============================================================================
---
manifoldcf/trunk/connectors/confluence/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/client/ConfluenceClient.java
(original)
+++
manifoldcf/trunk/connectors/confluence/connector/src/main/java/org/apache/manifoldcf/crawler/connectors/confluence/client/ConfluenceClient.java
Mon Nov 18 17:51:22 2019
@@ -30,6 +30,7 @@ import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
@@ -320,9 +321,8 @@ public class ConfluenceClient {
private ConfluenceResponse<? extends ConfluenceResource>
getConfluenceResources(String url, ConfluenceResourceBuilder<? extends
ConfluenceResource> builder) throws Exception {
logger.debug("[Processing] Hitting url for get confluence resources: {}",
sanitizeUrl(url));
- try {
- HttpGet httpGet = createGetRequest(url);
- HttpResponse response = executeRequest(httpGet);
+ HttpGet httpGet = createGetRequest(url);
+ try(CloseableHttpResponse response = executeRequest(httpGet);) {
ConfluenceResponse<? extends ConfluenceResource> confluenceResponse =
responseFromHttpEntity(response
.getEntity(), builder);
EntityUtils.consume(response.getEntity());
@@ -398,9 +398,8 @@ public class ConfluenceClient {
logger.debug(
"[Processing] Hitting url for getting document content : {}",
sanitizeUrl(url));
- try {
- HttpGet httpGet = createGetRequest(url);
- HttpResponse response = executeRequest(httpGet);
+ HttpGet httpGet = createGetRequest(url);
+ try(CloseableHttpResponse response = executeRequest(httpGet);) {
HttpEntity entity = response.getEntity();
MutableAttachment attachment = attachmentFromHttpEntity(entity);
EntityUtils.consume(entity);
@@ -434,9 +433,8 @@ public class ConfluenceClient {
logger.debug(
"[Processing] Hitting url for getting attachment content : {}",
url);
- try {
- HttpGet httpGet = createGetRequest(url);
- HttpResponse response = executeRequest(httpGet);
+ HttpGet httpGet = createGetRequest(url);
+ try(CloseableHttpResponse response = executeRequest(httpGet);) {
attachment.setLength(response.getEntity().getContentLength());
byte[] byteContent = IOUtils.toByteArray(response.getEntity()
.getContent());
@@ -466,9 +464,8 @@ public class ConfluenceClient {
logger.debug(
"[Processing] Hitting url for getting document content : {}",
url);
- try {
- HttpGet httpGet = createGetRequest(url);
- HttpResponse response = executeRequest(httpGet);
+ HttpGet httpGet = createGetRequest(url);
+ try(CloseableHttpResponse response = executeRequest(httpGet);) {
HttpEntity entity = response.getEntity();
MutablePage page = pageFromHttpEntity(entity);
EntityUtils.consume(entity);
@@ -558,22 +555,28 @@ public class ConfluenceClient {
* @return the {@code HttpResponse} object returned from the server
* @throws Exception
*/
- private HttpResponse executeRequest(HttpUriRequest request)
+ private CloseableHttpResponse executeRequest(HttpUriRequest request)
throws Exception {
String url = request.getURI().toString();
logger.debug(
"[Processing] Hitting url for getting document content : {}",
url);
+ CloseableHttpResponse response = null;
try {
- HttpResponse response = httpClient.execute(request, httpContext);
+ response = httpClient.execute(request, httpContext);
if (response.getStatusLine().getStatusCode() != 200) {
+ String errorDesc = response.getStatusLine().getStatusCode() + " "
+ + response.getStatusLine().getReasonPhrase();
+ response.close();
throw new Exception("Confluence error. "
- + response.getStatusLine().getStatusCode() + " "
- + response.getStatusLine().getReasonPhrase());
+ + errorDesc);
}
return response;
} catch (Exception e) {
+ if(response != null) {
+ response.close();
+ }
logger.error("[Processing] Failed to get page {}. Error: {}",
url, e.getMessage());
throw e;