From b979b782c1664fa016970ecdcd30074d065e3442 Mon Sep 17 00:00:00 2001 From: Abhinandan Prateek Date: Thu, 21 Apr 2011 09:20:50 +0530 Subject: [PATCH] bug 9487: race condition in taking ownership --- .../src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java | 2 +- server/src/com/cloud/vm/SystemVmLoadScanHandler.java | 1 + server/src/com/cloud/vm/SystemVmLoadScanner.java | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java index e8e6e2d81c9..a8743df3d07 100644 --- a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java +++ b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java @@ -121,7 +121,7 @@ public class SnapshotSchedulerImpl implements SnapshotScheduler { scanLock.releaseRef(); } - scanLock = GlobalLock.getInternLock(this.getClass().getName()); + scanLock = GlobalLock.getInternLock("snapshot.poll"); try { if(scanLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_COOPERATION)) { try { diff --git a/server/src/com/cloud/vm/SystemVmLoadScanHandler.java b/server/src/com/cloud/vm/SystemVmLoadScanHandler.java index ced7e9e6ddb..fc4998d0701 100644 --- a/server/src/com/cloud/vm/SystemVmLoadScanHandler.java +++ b/server/src/com/cloud/vm/SystemVmLoadScanHandler.java @@ -3,6 +3,7 @@ package com.cloud.vm; import com.cloud.vm.SystemVmLoadScanner.AfterScanAction; public interface SystemVmLoadScanHandler { + String getScanHandlerName(); boolean canScan(); void onScanStart(); diff --git a/server/src/com/cloud/vm/SystemVmLoadScanner.java b/server/src/com/cloud/vm/SystemVmLoadScanner.java index 7649897699b..f5ebac2dd6c 100644 --- a/server/src/com/cloud/vm/SystemVmLoadScanner.java +++ b/server/src/com/cloud/vm/SystemVmLoadScanner.java @@ -28,7 +28,7 @@ public class SystemVmLoadScanner { public SystemVmLoadScanner(SystemVmLoadScanHandler scanHandler) { _scanHandler = scanHandler; _capacityScanScheduler = Executors.newScheduledThreadPool(1, new NamedThreadFactory(scanHandler.getClass().getSimpleName())); - _capacityScanLock = GlobalLock.getInternLock(scanHandler.getClass().getSimpleName() + ".scan.lock"); + _capacityScanLock = GlobalLock.getInternLock(scanHandler.getScanHandlerName() + ".scan.lock"); } public void initScan(long startupDelayMs, long scanIntervalMs) {