You're right, it's not the job's weak reference.Task remains unreleased after clear task and explicitly free jobs. Seems I still need more investigation.:(
Thanks a lot!
2012/4/10 Ayal Baron abaron@redhat.com
----- Original Message -----
Guys,
I'm investigating about resource leak problem about task,job,storage pool,storage domain.I don't know very deep about the whole scheme, hope someone can tell if what I found is a problem or not.
task manager thread pool self.tasks = {} self.__tasks = Queue | | |refers( 1.a ) |refers( 1.b ) | |/ |________________ task( 1.c :self.log) task.jobs [ ] /|\ |( 2.a ) ( 1.d ) | |/ job
4 references all together.( 1.a,1.b,1.c,1.d ) When thread pool call "getNextTask" reference 1.b cleared When Task manager call "clearTask" reference 1.a cleared But reference 1.c and 1.d not cleared.Ref 1.d and 2.a make task and its jobs can't be released
My question is: When task manager task call "clearTask" means a task all deleted or
Yes, the task should be removed from the system at this point. On the face of it it looks like 1.d should be a weakref and then clearTask would cause everything to be GC'd, but I might be missing something.
will it be reused or others will clean the remaining reference? Because task.job sequence never cleared so I assume task should be all cleared when "clearTask" to make jobs freed, but the two uncleared reference confuse me about this. Would someone give me a hint?
vdsm-devel mailing list vdsm-devel@lists.fedorahosted.org https://fedorahosted.org/mailman/listinfo/vdsm-devel