Unverified Commit 24c7f764 authored by Rubik-W's avatar Rubik-W Committed by GitHub
Browse files

Merge pull request #2734 from gabrywu/removeUnnecessaryLock

remove unnecessary lock & fix syncWorkerHostWeight variable reference
parents a58d1b3b f532853f
Loading
Loading
Loading
Loading
+5 −23
Original line number Diff line number Diff line
@@ -36,8 +36,6 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import static org.apache.dolphinscheduler.common.Constants.COMMA;

@@ -70,11 +68,6 @@ public class LowerWeightHostManager extends CommonHostManager {
     */
    private ConcurrentHashMap<String, Set<HostWeight>> workerHostWeights;

    /**
     * worker group host lock
     */
    private Lock lock;

    /**
     * executor service
     */
@@ -84,7 +77,6 @@ public class LowerWeightHostManager extends CommonHostManager {
    public void init(){
        this.selector = new LowerWeightRoundRobin();
        this.workerHostWeights = new ConcurrentHashMap<>();
        this.lock = new ReentrantLock();
        this.executorService = Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("LowerWeightHostManagerExecutor"));
        this.executorService.scheduleWithFixedDelay(new RefreshResourceTask(),35, 40, TimeUnit.SECONDS);
        this.roundRobinHostManager = new RoundRobinHostManager();
@@ -117,22 +109,12 @@ public class LowerWeightHostManager extends CommonHostManager {
    }

    private void syncWorkerHostWeight(Map<String, Set<HostWeight>> workerHostWeights) {
        lock.lock();
        try {
            workerHostWeights.clear();
            workerHostWeights.putAll(workerHostWeights);
        } finally {
            lock.unlock();
        }
        this.workerHostWeights.clear();
        this.workerHostWeights.putAll(workerHostWeights);
    }

    private Set<HostWeight> getWorkerHostWeights(String workerGroup) {
        lock.lock();
        try {
        return workerHostWeights.get(workerGroup);
        } finally {
            lock.unlock();
        }
    }

    class RefreshResourceTask implements Runnable{