Before you dig into reading this guide, have you tried asking OpsGPT what this log means? You’ll receive a customized analysis of your log.
Try OpsGPT now for step-by-step guidance and tailored insights into your OpenSearch operation.
Briefly, this error occurs when OpenSearch fails to execute a listener callback during the unloading process of the field data cache. This could be due to a bug in the software, a lack of system resources, or a problem with the listener itself. To resolve this issue, you could try updating OpenSearch to the latest version, ensuring your system has sufficient resources, or debugging the listener to identify and fix any potential issues. If the problem persists, consider seeking help from the OpenSearch community or professional support.
For a complete solution to your to your search operation, try for free AutoOps for Elasticsearch & OpenSearch . With AutoOps and Opster’s proactive support, you don’t have to worry about your search operation – we take charge of it. Get improved performance & stability with less hardware.
This guide will help you check for common problems that cause the log ” Failed to call listener on field data cache unloading ” to appear. To understand the issues related to this log, read the explanation below about the following OpenSearch concepts: cache, fielddata, indices.
Overview
In OpenSearch the term fielddata is relevant when sorting and doing aggregations (similar to SQL GROUP BY COUNT and AVERAGE functions) on text fields.
For performance reasons, there are some rules as to the kinds of fields that can be aggregated. You can group by any numeric field but for text fields, which have to be of keyword type or have fielddata=true since they don’t support doc_values (Doc values are the on-disk inverted index data structure, built at document indexing time, which makes aggregations possible).
Fielddata is an in-memory data structure used by text fields for the same purpose. Since it uses a lot of heap size it is disabled by default.
Examples
The following PUT mapping API call will enable Fielddata on my_field text field.
PUT my_index/_mapping{"properties":{"my_field":{"type":"text","fielddata":true}}}
Notes
- As field-data is disabled by default on text fields, in case of an attempt to aggregate on a text field with field-data disabled, you would get the following error message:
“Fielddata is disabled on text fields by default. Set `fielddata=true` on [`your_field_name`] in order to load field data in memory by uninverting the inverted index. Note that this can however, use “significant memory.” – if this happens you can either enable the field-data on that text field, or choose another way to query the data (again, because field-data consumes a lot of memory and is not recommended).
Log Context
Log “Failed to call listener on field data cache unloading” classname is IndicesFieldDataCache.java.
We extracted the following from OpenSearch source code for those seeking an in-depth context :
notification.getRemovalReason() == RemovalReason.EVICTED; value.ramBytesUsed() ); } catch (Exception e) { // load anyway since listeners should not throw exceptions logger.error("Failed to call listener on field data cache unloading"; e); } } } /**