[
https://issues.apache.org/jira/browse/HDDS-5671?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Siddhant Sangwan updated HDDS-5671:
-----------------------------------
Description:
If the current thread calls the ContainerBalancer#stop method, it ends up
calling interrupt and join on itself.
{code:title=ContainerBalancer#stop}
balancerRunning = false;
currentBalancingThread.interrupt();
currentBalancingThread.join(1000);
{code}
This causes:
{quote}
[ContainerBalancer] WARN balancer.ContainerBalancer
(ContainerBalancer.java:stop(731)) - Interrupted while waiting for balancing
thread to join.
[ContainerBalancer] INFO balancer.ContainerBalancer
(ContainerBalancer.java:stop(736)) - Container Balancer stopped successfully.
{quote}
The current thread should be prevented from interrupting itself. The interrupt
and join calls are required when ContainerBalancer#stop has been called from a
different thread and balancer needs to stop gracefully.
was:
ContainerBalancer#stop interrupts the balancing thread before letting it join:
{code:title=ContainerBalancer#stop}
balancerRunning = false;
currentBalancingThread.interrupt();
currentBalancingThread.join(1000);
{code}
This causes:
{quote}
[ContainerBalancer] WARN balancer.ContainerBalancer
(ContainerBalancer.java:stop(731)) - Interrupted while waiting for balancing
thread to join.
[ContainerBalancer] INFO balancer.ContainerBalancer
(ContainerBalancer.java:stop(736)) - Container Balancer stopped successfully.
{quote}
ContainerBalancer should instead let the balancing thread joing before calling
interrupt.
> ContainerBalancer#stop should prevent the current balancing thread from
> interrupting itself.
> --------------------------------------------------------------------------------------------
>
> Key: HDDS-5671
> URL: https://issues.apache.org/jira/browse/HDDS-5671
> Project: Apache Ozone
> Issue Type: Sub-task
> Components: SCM
> Reporter: Siddhant Sangwan
> Assignee: Siddhant Sangwan
> Priority: Minor
> Labels: pull-request-available
>
> If the current thread calls the ContainerBalancer#stop method, it ends up
> calling interrupt and join on itself.
> {code:title=ContainerBalancer#stop}
> balancerRunning = false;
> currentBalancingThread.interrupt();
> currentBalancingThread.join(1000);
> {code}
> This causes:
> {quote}
> [ContainerBalancer] WARN balancer.ContainerBalancer
> (ContainerBalancer.java:stop(731)) - Interrupted while waiting for balancing
> thread to join.
> [ContainerBalancer] INFO balancer.ContainerBalancer
> (ContainerBalancer.java:stop(736)) - Container Balancer stopped successfully.
> {quote}
> The current thread should be prevented from interrupting itself. The
> interrupt and join calls are required when ContainerBalancer#stop has been
> called from a different thread and balancer needs to stop gracefully.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]