Actions
Bug #10445
openFix memory leak in Python SDK Collection class
Start date:
11/02/2016
Due date:
% Done:
0%
Estimated time:
Story points:
2.0
Description
Currently, each new CollectionReader creates its own API client, and Keep client, and block cache unless the caller supplies an API client object (and Keep client object?). If a caller creates 10 CollectionReaders and reads 64 MiB from each one, the program will use 640 MiB. Possibly due to HTTP KeepAlive behavior, Python does not reclaim memory even if the caller unreferences the CollectionReaders. For example, this script leaks memory and network connections:
import arvados
uuid = '......'
for i in range(20):
cr = arvados.collection.CollectionReader(uuid)
for fn in cr:
f = cr.open(fn)
f.read()
f.close()
Proposed improvement:
Share block caches between auto-instantiated API clients that use the same settings.
This also applied to KeepClient and BlockManager
Files
Actions