From 398428743484bbacc1d99bf60ae253d36c4c153b Mon Sep 17 00:00:00 2001 From: Alena Prokharchyk Date: Wed, 10 Jul 2013 16:27:31 -0700 Subject: [PATCH] CLOUDSTACK-3458: network GC thread - acquire global lock to prevent multiple MS from running the GC thread on the network at the same time --- .../com/cloud/network/NetworkManagerImpl.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java index e322c9de794..dbd3c1d50df 100755 --- a/server/src/com/cloud/network/NetworkManagerImpl.java +++ b/server/src/com/cloud/network/NetworkManagerImpl.java @@ -3016,9 +3016,23 @@ public class NetworkManagerImpl extends ManagerBase implements NetworkManager, L } public class NetworkGarbageCollector implements Runnable { - @Override public void run() { + GlobalLock gcLock = GlobalLock.getInternLock("Network.GC.Lock"); + try { + if(gcLock.lock(3)) { + try { + reallyRun(); + } finally { + gcLock.unlock(); + } + } + } finally { + gcLock.releaseRef(); + } + } + + public void reallyRun() { try { List shutdownList = new ArrayList(); long currentTime = System.currentTimeMillis() / 1000 ;