3751: RBTools leaks DB handles (& other resources?) in long-living process

vlo****@gmai***** (Google Code) (Is this you? Claim this profile.)
brennie
brennie
Feb. 4, 2015
What version are you running?
RBTools 0.6.2

What's the URL of the page containing the problem?
N/A

What steps will reproduce the problem?
1. Update parameters of attached program to match your reviewboard credentials
2. Run attached program

What is the expected output? What do you see instead?
I expect only 1 connection to apicache.db since I only have 1 RBClient created which I tear down immediately.  Instead I see it keeps growing.  There is no way to tear down this RBClient.

What operating system are you using? What browser?
Python 2.7, 10.10

Please provide any additional information below.
This causes a huge problem where we run out of FDs in a long-running process (buildbot) where we create a new connection on every build.  I can improve it slightly by trying to persist the client handle, but the problem is there's absolutely no way for me to tear down this resource.

Looking at the lsof, we see a *lot* of open file handles to ~/Library/Caches/rbtools/apicache.db
from rbtools.api.client import RBClient
import psutil
def doit():
    server = 'reviewboard'
    username = 'foo'
    password = 'bar'
    RBClient(server, username=username, password=password)
    print psutil.Process().open_files()
doit()
doit()
doit()
doit()
doit()
#1 vlo****@gmai***** (Google Code) (Is this you? Claim this profile.)
This reproduces with 0.7
chipx86
#2 chipx86
0.6.x never had an API cache database. I just want to verify that the first reported version was an error.
  • +NeedInfo
  • +Project-RBTools
    +Milestone-RBTools-Release0.7.x
  • +brennie
#3 vlo****@gmai***** (Google Code) (Is this you? Claim this profile.)
Sorry.  I thought I was running 0.6.2 but it was actually 0.7.
chipx86
#4 chipx86
We've discovered the problem and will get it into this week's release.

The problem was due to an atexit() call in rbtools/api/cache.py. You can find that line and remove it to prevent this problem on your server until you can upgrade.
  • -NeedInfo
    +Confirmed
brennie
#5 brennie
The fix for this has landed on both the release-0.7.x branch and the master branch.
  • -Confirmed
    +Fixed