[Backgroundrb-devel] Memory leaks in backgroundrb

Hemant Kumar gethemant at gmail.com
Sat Jan 27 17:53:04 EST 2007


On Sat, 2007-01-27 at 18:03 +0300, Mike Aizatsky wrote:
> While debugging stale backgroundrb it became apparent that there're
> memory leaks in it. Here's top object counts dump:
> 
> 36715  String
>  6211  Array
>  5598  Proc
>  3150  Hash
>  1478  DRb::DRbObject
>  1313  Regexp
>  1272  Class
>   750  Thread
>   741  Socket
>   739  Slave
>   739  Slave::LifeLine
>   737  Process::Status
>   691  DrillReminderWorker
>   391  Module
>   160  Range
>    75  Gem::Version
>    73  XSD::QName
> 
> It's easy to see that loads of threads and slaves are present in the
> process. It also has references to 691 workers!
> 
> In case there might be some problems with my worker here's its full code:
> 
> class DrillReminderWorker < BackgrounDRb::Worker::RailsBase
> 
>   def do_work(args)
>     logger.info "DrillReminderSender started"
>     t = Time.now.gmtime
>     tsec = t.sec + t.min*60 + t.hour*60*60
> 
>     logger.info "utc seconds: #{tsec}"
> 
>     User.find_all_to_send_drill_reminder(tsec).each do |u|
>       Notification.deliver_drill_reminder(u)
>       u.update_attributes!(
>         :drill_notification_last_send => TimeUtils.nowf
>       )
>     end
> 
>     logger.info "DrillReminderSender end"
> 
>     self.delete
>   end
> 
> end
> DrillReminderWorker.register
> 
> 

For oneshot workers, I use explicit exit from the worker and it works,
rather than using self.delete, however delete would also work as
documented. 






More information about the Backgroundrb-devel mailing list