nswamy opened a new pull request #9568: Cherry-picked from master branch(Remove finalizers from Scala API (#8887)) URL: https://github.com/apache/incubator-mxnet/pull/9568 * [scala] Remove finalizers for leakable resources Finalizers always run in a separate thread which is not controlled by the user. Since MXNet cannot be safely accessed from multiple threads, this causes memory corruption. It is not safe to use finalizers in this way. This change also adds some leaked object tracing, to allow leaks to be tracked. It's easy to leak objects and despite warnings in the documentation leaks are common (even within the Scala API itself). The leak tracing is activated by a system property, as its runtime cost may be significant. With the system property unset, the *first* leak of a type will be reported (without a trace) as a prompt to the developer to investigate. Co-authored-by: Andre Tamm <tammt...@amazon.com> * [scala] Fix various resource leaks These leaks were diagnosed with the leak detection added in the previous commit. This is not an exhaustive clean up but it allows predicting with a model from Scala at scale (hundreds of millions of comparisons) without a reported leak, as well as removing the most common errors when training using the Module code. Co-authored-by: Andre Tamm <tammt...@amazon.com> ## Description ## (Brief description on what this PR is about) ## Checklist ## ### Essentials ### - [ ] Passed code style checking (`make lint`) - [ ] Changes are complete (i.e. I finished coding on this PR) - [ ] All changes have test coverage: - Unit tests are added for small changes to verify correctness (e.g. adding a new operator) - Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore) - Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL) - [ ] Code is well-documented: - For user-facing API changes, API doc string has been updated. - For new C++ functions in header files, their functionalities and arguments are documented. - For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable - [ ] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change ### Changes ### - [ ] Feature1, tests, (and when applicable, API doc) - [ ] Feature2, tests, (and when applicable, API doc) ## Comments ## - If this change is a backward incompatible change, why must this change be made. - Interesting edge cases to note here
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services