Skip to content

Commit 62d38d3

Browse files
committed
Update addons.xml versions and fix RestClient CompletableResponseListener
1 parent cc8b1f8 commit 62d38d3

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

framework/src/main/groovy/org/moqui/impl/context/ElasticFacadeImpl.groovy

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,7 @@ class ElasticFacadeImpl implements ElasticFacade {
394394

395395
RestClient.RestResponse response = bulkResponse(index, actionSourceList, refresh)
396396
checkResponse(response, "Bulk operations", index)
397+
checkBulkResponseErrors(response, "Bulk index", index)
397398
}
398399

399400
@Override
@@ -742,6 +743,33 @@ class ElasticFacadeImpl implements ElasticFacade {
742743
throw new BaseException(msg)
743744
}
744745

746+
static void checkBulkResponseErrors(RestClient.RestResponse response, String operation, String index) {
747+
if (response == null) return
748+
try {
749+
Map responseMap = (Map) jsonToObject(response.text())
750+
if (responseMap.errors == true) {
751+
List<Map> items = (List<Map>) responseMap.items
752+
List<String> errorMessages = []
753+
for (Map item in items) {
754+
Map itemMap = (Map) item.values().first()
755+
if (itemMap.error) {
756+
String errorMsg = "Doc ${itemMap._id ?: 'unknown'}: ${itemMap.error}"
757+
errorMessages.add(errorMsg)
758+
if (errorMessages.size() >= 10) break
759+
}
760+
}
761+
String msg = "${operation}${index ? ' on index ' + index : ''} had ${items?.size() ?: 0} items with errors"
762+
if (errorMessages) msg += ":\n " + errorMessages.join("\n ")
763+
logger.error("ElasticSearch ${msg}")
764+
throw new BaseException(msg)
765+
}
766+
} catch (BaseException be) {
767+
throw be
768+
} catch (Throwable t) {
769+
logger.error("Error checking bulk response for errors: ${t.toString()}")
770+
}
771+
}
772+
745773
static String objectToJson(Object jsonObject) {
746774
if (jsonObject instanceof String) return (String) jsonObject
747775
return jacksonMapper.writeValueAsString(jsonObject)

0 commit comments

Comments
 (0)