Skip to content
Snippets Groups Projects

Resolves #163 garbage segfault

Merged Nicolas Pope requested to merge bug/163/garbage into master
1 file
+ 13
10
Compare changes
  • Side-by-side
  • Inline
@@ -39,6 +39,8 @@ Universe::Universe() :
reconnect_attempts_(50),
thread_(Universe::__start, this) {
_installBindings();
LOG(WARNING) << "Deprecated Universe constructor";
}
Universe::Universe(nlohmann::json &config) :
@@ -54,17 +56,18 @@ Universe::Universe(nlohmann::json &config) :
_installBindings();
LOG(INFO) << "SEND BUFFER SIZE = " << send_size_;
// Add an idle timer job to garbage collect peer objects
// Note: Important to be a timer job to ensure no other timer jobs are
// using the object.
ftl::timer::add(ftl::timer::kTimerIdle10, [this](int64_t ts) {
UNIQUE_LOCK(net_mutex_,lk);
if (ftl::pool.n_idle() == ftl::pool.size()) {
if (garbage_.size() > 0) LOG(INFO) << "Garbage collection";
while (garbage_.size() > 0) {
// FIXME: There is possibly still something with a peer pointer
// that is causing this throw an exception sometimes?
delete garbage_.front();
garbage_.pop_front();
if (garbage_.size() > 0) {
UNIQUE_LOCK(net_mutex_,lk);
if (ftl::pool.n_idle() == ftl::pool.size()) {
if (garbage_.size() > 0) LOG(INFO) << "Garbage collection";
while (garbage_.size() > 0) {
delete garbage_.front();
garbage_.pop_front();
}
}
}
return true;
Loading