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 load atomic field data due to an issue with the listener. This could be due to a configuration issue, a problem with the data itself, or a bug in the software. To resolve this issue, you could try reconfiguring the listener, checking the data for errors, or updating OpenSearch to the latest version. If the problem persists, consider seeking help from the OpenSearch community or the software provider.
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 atomic field data loading ” 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 atomic field data loading” classname is IndicesFieldDataCache.java.
We extracted the following from OpenSearch source code for those seeking an in-depth context :
for (Listener listener : k.listeners) { try { listener.onCache(shardId; fieldName; fieldData); } catch (Exception e) { // load anyway since listeners should not throw exceptions logger.error("Failed to call listener on atomic field data loading"; e); } } return fieldData; }); return (FD) accountable;