Kristian Rickert created OPENNLP-1839:
-----------------------------------------

             Summary: DocumentCategorizerDL: close ONNX resources and fail 
clearly on vocabulary misses
                 Key: OPENNLP-1839
                 URL: https://issues.apache.org/jira/browse/OPENNLP-1839
             Project: OpenNLP
          Issue Type: Bug
            Reporter: Kristian Rickert
            Assignee: Kristian Rickert


Follow-up to OPENNLP-1836 / PR #1072.

DocumentCategorizerDL already uses the correct single-segment BERT encoding
(attention_mask=1, token_type_ids=0), but it still shares two problems fixed
in SentenceVectorsDL:

h3. 1. Native-memory leak

In {{categorize()}}, each inference iteration creates {{OnnxTensor}} inputs and
calls {{session.run(inputs)}} without closing either the tensors or the
{{OrtSession.Result}}. SentenceVectorsDL (OPENNLP-1836) now closes both in a
try/finally block; the same pattern should be applied here.

Relevant code: {{DocumentCategorizerDL.categorize()}} (~lines 146–163).

h3. 2. NPE on vocabulary miss

In {{tokenize()}}, token ids are resolved with:

{code}
ids[x] = vocab.get(tokens[x]);
{code}

A missing token yields {{null}} unboxing to {{int}} → {{NullPointerException}}.
SentenceVectorsDL now throws {{IllegalArgumentException}} with a descriptive
message; apply the same handling here.

Relevant code: {{DocumentCategorizerDL.tokenize()}} (~lines 305–307).

h3. Proposal

* Close all {{OnnxTensor}} instances and {{OrtSession.Result}} after each
  inference call (mirror SentenceVectorsDL).
* Replace the NPE with {{IllegalArgumentException}} naming the missing token.
* Add unit tests where feasible (mock or minimal ONNX session not required for
  the vocab-miss path).

h3. Backport

Consider a 2.x maintenance backport of the leak + error-handling fixes only
(no vector-output change — doccat encoding was already correct).

h3. Links

* OPENNLP-1836: https://issues.apache.org/jira/browse/OPENNLP-1836
* PR #1072: https://github.com/apache/opennlp/pull/1072



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to