[ https://issues.apache.org/jira/browse/LOGCXX-390?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13868827#comment-13868827 ]
Joseph Southwell commented on LOGCXX-390: ----------------------------------------- Although, now that I read it, I see that you are allowing multiple watchdogs to run at the same time. My fix does not do that. It simply replaces the existing watchdog with the new one. What is the use case for wanting multiple watch dogs running? If we are going to allow that do we need to add some locking around doConfigure? I also note your fix will break our c++ 98 compatibility since shared_ptr was not part of the standard library at that point. I am not necessarily opposed to that but think there should be some discussion first. > xml::DOMConfigurator::configureAndWatch leaks memory and threads like > LOGCXX-342 > -------------------------------------------------------------------------------- > > Key: LOGCXX-390 > URL: https://issues.apache.org/jira/browse/LOGCXX-390 > Project: Log4cxx > Issue Type: Bug > Components: Configurator > Affects Versions: 0.10.1 > Environment: windows > Reporter: Victor > Assignee: Florian Seydoux > > Each call to configureAndWatch causes a new FileWatcher object to be created > (without deleting the old one) and consequently a new thread to be created > (even though the old one may still be running). > It problem may be fixed by creating > std::vector<std::tr1::shared_ptr<FileWatchdog>> vecWatchDog; > change > // XMLWatchdog * xdog = new XMLWatchdog(file); > // xdog->setDelay(delay); > // xdog->start(); > std::tr1::shared_ptr<FileWatchdog> xdog((FileWatchdog*)new > XMLWatchdog(file)); > xdog->setDelay(delay); > xdog->start(); > vecWatchDog.push_back(xdog); > and adding > void xml::DOMConfigurator::stopAllWatch() > { > vecWatchDog.clear(); > } > for correctly stoped FileWatchers on application exit befor destroing Pool > objects. Or need create vecWatchDog on Pool. -- This message was sent by Atlassian JIRA (v6.1.5#6160)