[ ] Reviewed feedback from the "Sonar Cloud" bot. Note that you have to wait
for the "CI / Unit Tests") to complete first. Failed Unit tests can be
debugged by adding the label "verbose logging" to the GitHub PR.
Description of the Change
Arrays have been replaced with ArrayLists in the processing of the Katz Centrality Analytic data.
This code change prevents a JVM crash that occurs when using the Katz Centrality Analytic on a mid-large graph.
The underlying issue is within Java itself with its management of Arrays.
A newer version of Java (22) seems to have addressed the issue, but we cannot move to that version yet due to other compatibility issues.
Alternate Designs
Considered updating Java to a newer version, but no other versions at the same release level were suitable.
Why Should This Be In Core?
To avoid an abrupt crash of the application.
Benefits
Katz Centrality Analytic will perform as expected, without any surprise abrupt crashes.
Possible Drawbacks
Potentially less performant than using Arrays directly.
Verification Process
Open a large graph and preform some Analytic operations:
Select Categories - Centrality,
Test/Select various combinations of Centrality Analytics to run, some using Katz, some without.
Confirm the application remains active and running normally (no crashing).
Prerequisites
[ ] Reviewed the checklist
[ ] Reviewed feedback from the "Sonar Cloud" bot. Note that you have to wait for the "CI / Unit Tests") to complete first. Failed Unit tests can be debugged by adding the label "verbose logging" to the GitHub PR.
Description of the Change
Arrays have been replaced with ArrayLists in the processing of the Katz Centrality Analytic data. This code change prevents a JVM crash that occurs when using the Katz Centrality Analytic on a mid-large graph. The underlying issue is within Java itself with its management of Arrays. A newer version of Java (22) seems to have addressed the issue, but we cannot move to that version yet due to other compatibility issues.
Alternate Designs
Considered updating Java to a newer version, but no other versions at the same release level were suitable.
Why Should This Be In Core?
To avoid an abrupt crash of the application.
Benefits
Katz Centrality Analytic will perform as expected, without any surprise abrupt crashes.
Possible Drawbacks
Potentially less performant than using Arrays directly.
Verification Process
Open a large graph and preform some Analytic operations: Select Categories - Centrality, Test/Select various combinations of Centrality Analytics to run, some using Katz, some without. Confirm the application remains active and running normally (no crashing).
Applicable Issues
2191