changeset 18920:35d3777cc4d2

fts: If Tika returns 500, retry it a couple of times and then fallback to ignoring the problem.
author Timo Sirainen <tss@iki.fi>
date Fri, 07 Aug 2015 11:31:29 +0300
parents 98158ef015f7
children c143d037fd54
files src/plugins/fts/fts-parser-tika.c
diffstat 1 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts/fts-parser-tika.c	Thu Aug 06 22:36:20 2015 +0300
+++ b/src/plugins/fts/fts-parser-tika.c	Fri Aug 07 11:31:29 2015 +0300
@@ -103,6 +103,21 @@
 		}
 		parser->payload = i_stream_create_from_data("", 0);
 		break;
+	case 500:
+		/* Server Error - the problem could be anything (in Tika or
+		   HTTP server or proxy) and might be retriable, but Tika has
+		   trouble processing some documents and throws up this error
+		   every time for those documents. So we try retrying this a
+		   couple of times, but if that doesn't work we'll just ignore
+		   it. */
+		if (http_client_request_try_retry(parser->http_req))
+			return;
+		i_info("fts_tika: PUT %s failed: %u %s - ignoring",
+		       mail_user_plugin_getenv(parser->user, "fts_tika"),
+		       response->status, response->reason);
+		parser->payload = i_stream_create_from_data("", 0);
+		break;
+
 	default:
 		i_error("fts_tika: PUT %s failed: %u %s",
 			mail_user_plugin_getenv(parser->user, "fts_tika"),