fix(excel-import): guard excelReader.close() against null in finally - #2042
Merged
Merged
Conversation
ExcelReader is assigned via EasyExcel.read(...).build() inside the try; if build() throws, excelReader is still null and the finally block's excelReader.close() throws NPE, masking the real cause. Null-check before close at both import sites. Fixes OtterMind#2033 Co-Authored-By: Claude <noreply@anthropic.com>
openai0229
approved these changes
Jul 24, 2026
openai0229
left a comment
Contributor
There was a problem hiding this comment.
Reviewed both Excel reader cleanup paths. The null guards preserve the original initialization failure instead of masking it with a finally-block NPE; no blocking issue found.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issue
Closes #2033
Summary
In
DbExcelTableServiceImpl,ExcelReader excelReader = nullis assigned viaEasyExcel.read(...).build()inside atry. Ifbuild()(orread) throws — e.g. a corrupt/IO-error file —excelReaderis stillnull, and thefinally { excelReader.close(); }block throws aNullPointerExceptionthat masks the real root cause. Added a null-check beforeclose()at both import sites.Affected surfaces
Verification
mvn -B -q -f chat2db-community-server/pom.xml -pl chat2db-community-domain/chat2db-community-domain-core -am -Dmaven.test.skip=true compile-> BUILD SUCCESS.build()throws,excelReaderremains null, the guardedfinallyskipsclose(), and the original exception propagates via thecatch (Exception e) { throw new RuntimeException(e); }.Risk and compatibility
Reviewer map
DbExcelTableServiceImpl.javafinallyblocks at the two import methods —excelReader.close();->if (excelReader != null) { excelReader.close(); }.NullPointerExceptionfromexcelReader.close()still masks the real parse/IO error.Contributor declaration
AI assistance: The fix, verification, and PR description were produced with Claude Code assistance.