Kristian Rickert created OPENNLP-1840:
-----------------------------------------
Summary: NameFinderDL leaks native ONNX resources on every find()
call
Key: OPENNLP-1840
URL: https://issues.apache.org/jira/browse/OPENNLP-1840
Project: OpenNLP
Issue Type: Bug
Components: dl, Name Finder
Reporter: Kristian Rickert
Assignee: Kristian Rickert
{{NameFinderDL.find()}} creates up to three {{OnnxTensor}} inputs
({{input_ids}}, {{attention_mask}}, {{token_type_ids}}) and an
{{OrtSession.Result}} per sentence chunk, but never closes them. Each call
therefore accumulates off-heap native memory that is only reclaimed when the
process exits -- the same defect fixed for {{SentenceVectorsDL}} in
OPENNLP-1836 and {{DocumentCategorizerDL}} in OPENNLP-1839.
Long-running services invoking {{find()}} repeatedly will grow native memory
unbounded until the process is OOM-killed, while the Java heap looks healthy.
The fix is the established pattern: close the input tensors in a {{finally}}
block and the {{OrtSession.Result}} via try-with-resources ({{getValue()}}
copies into Java arrays first, so closing is safe).
{{NameFinderDL.tokenize()}} also has the same auto-unboxing
{{NullPointerException}} on vocabulary misses ({{vocab.get(tokens[x])}} into
{{int}}) that OPENNLP-1839 fixed for {{DocumentCategorizerDL}}; it should throw
a descriptive {{IllegalArgumentException}} instead.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)