Better cleaning of logger objects in the Python Swig wrapper
Summary
!405 (merged) added several classes to redirect logs from otb to the python console. Several type of logs are handled, and this MR corrects a bug caused by the ProgressReport logs. A progress report log is for example
Writing /tmp/out.tif...: 100% [**************************************************] (0s)
since !405 (merged), this type of log was managed with the ProgressReportManager
class, this class contains a std::vector
of watchers (StandardOneLineFilterWatcher
) to build the logs for different processes, and a logOutputCallback
to redirect the logs to Python. There was one ProgressReportManager
for all applications (created when importing the otbApplication module`) and watchers were added to it every time an application was created. But these watchers were never destroyed which caused the memory consumption of otb to grow over time (See this thread on the forum).
With this MR each application has its own instance of ProgressReportManager
as attribute, and thus the watchers are correctly released on application destruction.
Also the ProgressReportManager
class now use smart point instead of new/delete to manage memory.
Copyright
The copyright owner is CNES and has signed the ORFEO ToolBox Contributor License Agreement.
Check before merging:
- All discussions are resolved
- At least 2
👍 votes from core developers, no👎 vote. - The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
- Optionally, run
git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i
on latest changes and commit