mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 02:15:43 -04:00
proactive leak detection for distributed objects
This commit is contained in:
parent
c19665e627
commit
e185892eb1
@ -32,6 +32,9 @@ class CRCache:
|
||||
distObj.deleteOrDelay()
|
||||
if distObj.getDelayDeleteCount() != 0:
|
||||
delayDeleted.append(distObj)
|
||||
if distObj.getDelayDeleteCount() <= 0:
|
||||
# make sure we're not leaking
|
||||
distObj.detectLeaks()
|
||||
# now that all objects have had a chance to delete, are there any objects left
|
||||
# that are still delayDeleted?
|
||||
delayDeleteLeaks = []
|
||||
@ -76,6 +79,9 @@ class CRCache:
|
||||
del(self.dict[oldestDistObj.getDoId()])
|
||||
# and delete it
|
||||
oldestDistObj.deleteOrDelay()
|
||||
if oldestDistObj.getDelayDeleteCount() <= 0:
|
||||
# make sure we're not leaking
|
||||
oldestDistObj.detectLeaks()
|
||||
|
||||
# Make sure that the fifo and the dictionary are sane
|
||||
assert len(self.dict) == len(self.fifo)
|
||||
@ -109,6 +115,9 @@ class CRCache:
|
||||
self.fifo.remove(distObj)
|
||||
# and delete it
|
||||
distObj.deleteOrDelay()
|
||||
if distObj.getDelayDeleteCount() <= 0:
|
||||
# make sure we're not leaking
|
||||
distObj.detectLeaks()
|
||||
|
||||
def checkCache(self):
|
||||
# For debugging; this verifies that the cache is sensible and
|
||||
|
@ -490,12 +490,14 @@ class ClientRepositoryBase(ConnectionRepository):
|
||||
# object; this way we don't clutter up the caches with
|
||||
# trivial objects that don't benefit from caching.
|
||||
# also don't try to cache an object that is delayDeleted
|
||||
cached = False
|
||||
if distObj.getCacheable() and distObj.getDelayDeleteCount() <= 0:
|
||||
cached = cache.cache(distObj)
|
||||
if not cached:
|
||||
distObj.deleteOrDelay()
|
||||
else:
|
||||
if not cached:
|
||||
distObj.deleteOrDelay()
|
||||
if distObj.getDelayDeleteCount() <= 0:
|
||||
# make sure we're not leaking
|
||||
distObj.detectLeaks()
|
||||
|
||||
elif self.deferredDoIds.has_key(doId):
|
||||
# The object had been deferred. Great; we don't even have
|
||||
|
Loading…
x
Reference in New Issue
Block a user