You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2013/07/11 18:37:48 UTC

git commit: updated refs/heads/4.2 to cce2dad

Updated Branches:
  refs/heads/4.2 e9dfb79e0 -> cce2dad2e


CLOUDSTACK-3458: network GC thread - acquire global lock to prevent multiple MS from running the GC thread on the network at the same time


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/cce2dad2
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/cce2dad2
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/cce2dad2

Branch: refs/heads/4.2
Commit: cce2dad2e44f8b3832cb2ea5d9006f6a6b57b2ff
Parents: e9dfb79
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Wed Jul 10 16:27:31 2013 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Thu Jul 11 09:37:39 2013 -0700

----------------------------------------------------------------------
 .../src/com/cloud/network/NetworkManagerImpl.java   | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/cce2dad2/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index 2b53565..7642352 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<Long> shutdownList = new ArrayList<Long>();
                 long currentTime = System.currentTimeMillis() >> 10;