From abc2c1fdb5edc28f459d07f6c63885b7d7a8744f Mon Sep 17 00:00:00 2001 From: zhanghaoxin-at-826767166263 Date: Wed, 30 Oct 2019 12:32:22 +0000 Subject: [PATCH] Fix #438 fix lock acquire and release --- .../java/com/netflix/loadbalancer/BaseLoadBalancer.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java index af49283f7..10d36c0f6 100644 --- a/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java +++ b/ribbon-loadbalancer/src/main/java/com/netflix/loadbalancer/BaseLoadBalancer.java @@ -674,9 +674,13 @@ public void runPinger() throws Exception { * going on... */ allLock = allServerLock.readLock(); + allLock.lock(); - allServers = allServerList.toArray(new Server[allServerList.size()]); - allLock.unlock(); + try { + allServers = allServerList.toArray(new Server[allServerList.size()]); + } finally { + allLock.unlock(); + } int numCandidates = allServers.length; results = pingerStrategy.pingServers(ping, allServers);