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
>