[ 
https://issues.apache.org/jira/browse/YUNIKORN-2552?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Peter Bacsko updated YUNIKORN-2552:
-----------------------------------
    Description: 
When sending a queue event from {{queueEvents}}, we acquire the read lock 
again. 

{noformat}
objects.(*Queue).IsManaged { sq.RLock() } <<<<<
objects.(*Queue).IsManaged { func (sq *Queue) IsManaged() bool { }
objects.(*queueEvents).sendRemoveQueueEvent { } }
objects.(*Queue).RemoveQueue { sq.queueEvents.sendRemoveQueueEvent() }
scheduler.(*partitionManager).cleanQueues { // all OK update the queue 
hierarchy and partition }
scheduler.(*partitionManager).cleanQueues { if children := 
queue.GetCopyOfChildren(); len(children) != 0 { }
scheduler.(*partitionManager).cleanRoot { manager.cleanQueues(manager.pc.root) }
{noformat}

{{RemoveQueue()}} already has the read lock.

  was:
When sending a queue event from {{queueEvents}}, we acquire the read lock 
again. 

{noformat}
objects.(*Queue).IsManaged { sq.RLock() } <<<<<
objects.(*Queue).IsManaged { func (sq *Queue) IsManaged() bool { }
objects.(*queueEvents).sendRemoveQueueEvent { } }
objects.(*Queue).RemoveQueue { sq.queueEvents.sendRemoveQueueEvent() }
scheduler.(*partitionManager).cleanQueues { // all OK update the queue 
hierarchy and partition }
scheduler.(*partitionManager).cleanQueues { if children := 
queue.GetCopyOfChildren(); len(children) != 0 { }
scheduler.(*partitionManager).cleanRoot { manager.cleanQueues(manager.pc.root) }
{noformat}


> Recursive locking when sending Queue events
> -------------------------------------------
>
>                 Key: YUNIKORN-2552
>                 URL: https://issues.apache.org/jira/browse/YUNIKORN-2552
>             Project: Apache YuniKorn
>          Issue Type: Sub-task
>          Components: core - scheduler
>            Reporter: Peter Bacsko
>            Assignee: Peter Bacsko
>            Priority: Major
>
> When sending a queue event from {{queueEvents}}, we acquire the read lock 
> again. 
> {noformat}
> objects.(*Queue).IsManaged { sq.RLock() } <<<<<
> objects.(*Queue).IsManaged { func (sq *Queue) IsManaged() bool { }
> objects.(*queueEvents).sendRemoveQueueEvent { } }
> objects.(*Queue).RemoveQueue { sq.queueEvents.sendRemoveQueueEvent() }
> scheduler.(*partitionManager).cleanQueues { // all OK update the queue 
> hierarchy and partition }
> scheduler.(*partitionManager).cleanQueues { if children := 
> queue.GetCopyOfChildren(); len(children) != 0 { }
> scheduler.(*partitionManager).cleanRoot { 
> manager.cleanQueues(manager.pc.root) }
> {noformat}
> {{RemoveQueue()}} already has the read lock.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to