Skip to content

NPE Cannot invoke "java.lang.CharSequence.length()" because "csq" is null #137858

@henrikno

Description

@henrikno

Elasticsearch Version

9.2.0

Installed Plugins

No response

Java Version

bundled

OS Version

cloud.elastic.co

Problem Description

I was uploading symbols to the universal profiling service, and got some errors in the logs.

The profiling service is logging:
(indexReturnPadsFile) [400 Bad Request]: map[error:map[caused_by:map[reason:Cannot invoke "java.lang.CharSequence.length()" because "csq" is null type:null_pointer_exception] reason:[-1:60] failed to parse field [Symbfile.file.id] of type [keyword] in document with id 'Y3wZtJ8gStblRVIE7AOoUgA'. Preview of field's value: '[B@6f9d86ff' root_cause:[map[reason:[-1:60] failed to parse field [Symbfile.file.id] of type [keyword] in document with id 'Y3wZtJ8gStblRVIE7AOoUgA'. Preview of field's value: '[B@6f9d86ff' type:document_parsing_exception]] type:document_parsing_exception] status:400]

Which matches this error in ES logs:

[instance-0000000001][.profiling-returnpads-private-v001] Error while parsing document for index [.profiling-returnpads-private-v001]: [-1:60] failed to parse field [Symbfile.file.id] of type [keyword] in document with id 'Y3wZtJ8gStblRVIE7AOoUgI'. Preview of field's value: '[B@3427843f'
org.elasticsearch.index.mapper.DocumentParsingException: [-1:60] failed to parse field [Symbfile.file.id] of type [keyword] in document with id 'Y3wZtJ8gStblRVIE7AOoUgI'. Preview of field's value: '[B@3427843f'
	at org.elasticsearch.index.mapper.FieldMapper.rethrowAsDocumentParsingException(FieldMapper.java:241) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.FieldMapper.parse(FieldMapper.java:194) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrField(DocumentParser.java:477) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseValue(DocumentParser.java:829) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.innerParseObject(DocumentParser.java:397) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrNested(DocumentParser.java:348) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrField(DocumentParser.java:457) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.doParseObject(DocumentParser.java:545) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseObject(DocumentParser.java:533) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.innerParseObject(DocumentParser.java:387) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrNested(DocumentParser.java:348) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrField(DocumentParser.java:457) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.doParseObject(DocumentParser.java:545) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseObject(DocumentParser.java:533) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.innerParseObject(DocumentParser.java:387) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrNested(DocumentParser.java:348) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.internalParseDocument(DocumentParser.java:157) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:103) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:128) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.shard.IndexShard.prepareIndex(IndexShard.java:1092) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.shard.IndexShard.applyIndexOperation(IndexShard.java:1019) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.shard.IndexShard.applyIndexOperationOnPrimary(IndexShard.java:963) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.action.bulk.TransportShardBulkAction.executeBulkItemRequest(TransportShardBulkAction.java:425) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.action.bulk.TransportShardBulkAction$2.doRun(TransportShardBulkAction.java:276) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.action.bulk.TransportShardBulkAction.performOnPrimary(TransportShardBulkAction.java:344) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.action.bulk.TransportShardBulkAction.dispatchedShardOperationOnPrimary(TransportShardBulkAction.java:181) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.action.bulk.TransportShardBulkAction.dispatchedShardOperationOnPrimary(TransportShardBulkAction.java:82) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.action.support.replication.TransportWriteAction$1.doRun(TransportWriteAction.java:245) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:35) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:1076) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:27) ~[elasticsearch-9.2.0.jar:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1090) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:614) ~[?:?]
	at java.lang.Thread.run(Thread.java:1474) ~[?:?]
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.CharSequence.length()" because "csq" is null
	at java.nio.CharBuffer.wrap(CharBuffer.java:573) ~[?:?]
	at java.nio.charset.Charset.encode(Charset.java:915) ~[?:?]
	at org.elasticsearch.xcontent.Text.bytes(Text.java:71) ~[elasticsearch-x-content-9.2.0.jar:?]
	at org.elasticsearch.xcontent.Text.stringLength(Text.java:101) ~[elasticsearch-x-content-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.Mapper$IgnoreAbove.isIgnored(Mapper.java:185) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.KeywordFieldMapper.indexValue(KeywordFieldMapper.java:1204) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.KeywordFieldMapper.parseCreateField(KeywordFieldMapper.java:1170) ~[elasticsearch-9.2.0.jar:?]
	at org.elasticsearch.index.mapper.FieldMapper.parse(FieldMapper.java:192) ~[elasticsearch-9.2.0.jar:?]
	... 34 more

Which at first glance looks like a mapping issue, but the NullPointerException seems like it should not have happened. I think symbolizer service uses SMILE so maybe that's why it's able to make an invalid string?

Steps to Reproduce

Spin up 9.2.0 deployment on cloud.elastic.co
Go to Kibana and enable universal profiling.
Create an API Key

Download symbtool https://artifacts.elastic.co/downloads/prodfiler/symbtool-9.2.0-linux-x86_64.tar.gz

crane export --platform linux/arm64 docker.elastic.co/elastic-agent/elastic-agent-complete:8.19.6@sha256:0053c73331517e194f0c7ba385cd8f5f848bacd0069447404ca69ca05df6248c - | tar -xC foo/
https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md

./symbtool-9.2.0-linux-x86_64/symbtool push-symbols executable -u 'https://deployment.symbols.us-central1.gcp.cloud.es.io:443' -t API_KEY -e foo/usr/share/elastic-agent/data/elastic-agent-3778d3/elastic-agent

Check ES and profiler service logs.

Logs (if relevant)

No response

Metadata

Metadata

Assignees

Labels

:Search Foundations/MappingIndex mappings, including merging and defining field types>bugTeam:Search FoundationsMeta label for the Search Foundations team in Elasticsearch

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions