From 9e7f9fe3740a5a0b4d1401865e76bb918355528b Mon Sep 17 00:00:00 2001 From: Shinsuke Sugaya Date: Thu, 4 Apr 2024 18:58:36 +0900 Subject: [PATCH] Refine exception handling for data insertion conflicts to use CrawlingAccessException --- .../fess/crawler/service/impl/AbstractCrawlerService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fess-crawler-es/src/main/java/org/codelibs/fess/crawler/service/impl/AbstractCrawlerService.java b/fess-crawler-es/src/main/java/org/codelibs/fess/crawler/service/impl/AbstractCrawlerService.java index 89f2869a..290b9c99 100644 --- a/fess-crawler-es/src/main/java/org/codelibs/fess/crawler/service/impl/AbstractCrawlerService.java +++ b/fess-crawler-es/src/main/java/org/codelibs/fess/crawler/service/impl/AbstractCrawlerService.java @@ -42,6 +42,7 @@ import org.codelibs.fess.crawler.client.FesenClient; import org.codelibs.fess.crawler.entity.EsAccessResult; import org.codelibs.fess.crawler.entity.EsAccessResultData; +import org.codelibs.fess.crawler.exception.CrawlingAccessException; import org.codelibs.fess.crawler.exception.EsAccessException; import org.codelibs.fess.crawler.util.EsResultList; import org.joda.time.DateTimeZone; @@ -67,6 +68,7 @@ import org.opensearch.cluster.metadata.MappingMetadata; import org.opensearch.common.unit.TimeValue; import org.opensearch.common.xcontent.XContentType; +import org.opensearch.core.rest.RestStatus; import org.opensearch.core.xcontent.XContentBuilder; import org.opensearch.index.IndexNotFoundException; import org.opensearch.index.query.BoolQueryBuilder; @@ -230,6 +232,9 @@ protected IndexResponse insert(final Object target, final OpType opType) { setId(target, id); return response; } catch (final OpenSearchStatusException e) { + if (e.status() == RestStatus.CONFLICT) { + throw new CrawlingAccessException("[" + e.status() + "] Failed to insert " + id, e); + } throw new EsAccessException("[" + e.status() + "] Failed to insert " + id, e); } catch (final Exception e) { throw new EsAccessException("Failed to insert " + id, e);