Like this: GlobalLock lock = GlobalLock.getInternLock( someStringYouMadeUpThatIsUniqueForThisPurpose);
if (!lock.lock(timeoutInSeconds)) { s_logger.debug("Couldn't lock the db on the string " + someStringYouMadeUpThatIsUniqueForThisPurpose); throw new CloudRuntimeException("Couldn't acquire DB lock"); } try { // do your work } finally { lock.unlock(); lock.releaseRef(); } On Thu, Jan 29, 2015 at 7:32 AM, Mike Tutkowski < mike.tutkow...@solidfire.com> wrote: > I wrote that example code from memory, but now that I think about it, you > wouldn't call the lock method in the try block. > > Call lock and if you're successful, entry a try block to do your work and > have a finally to unlock and release the lock. > > On Thu, Jan 29, 2015 at 7:27 AM, Mike Tutkowski < > mike.tutkow...@solidfire.com> wrote: > >> Does this work for you? >> >> GlobalLock lock = GlobalLock.getInternLock( >> someStringYouMadeUpThatIsUniqueForThisPurpose); >> >> try { >> >> if (!lock.lock(timeoutInSeconds)) { >> >> s_logger.debug("Couldn't lock the db on the string >> " + someStringYouMadeUpThatIsUniqueForThisPurpose); >> >> throw new CloudRuntimeException("Couldn't acquire DB >> lock"); >> >> } >> >> // do your work >> >> } >> >> finally { >> >> lock.unlock(); >> >> lock.releaseRef(); >> >> } >> >> On Thu, Jan 29, 2015 at 3:32 AM, Jeff Hair <j...@greenqloud.com> wrote: >> >>> I have some code I've added to CloudStack that I am currently >>> synchronizing on in the traditional manner (synchronized block, >>> ExecutorService, etc). I'm currently running a single instance of >>> CloudStack so I don't have to deal with clustering. >>> >>> I've read the Data Access Layer documentation and am wondering if the >>> database locks are the actual appropriate solution rather than what >>> I'm doing. >>> >>> Basically my issue is that I need to lock access to an IP address >>> reserved to the account and perform some long operations on it. I also >>> need to guarantee that no other IPs on the account are manipulated >>> while performing this task. Synchronization accomplishes this because >>> I can force the IP operations through an ExecutorService, but I'm >>> really looking for a better solution that will also work with >>> clustered management servers. >>> >>> Thanks, >>> >>> Jeff >>> >> >> >> >> -- >> *Mike Tutkowski* >> *Senior CloudStack Developer, SolidFire Inc.* >> e: mike.tutkow...@solidfire.com >> o: 303.746.7302 >> Advancing the way the world uses the cloud >> <http://solidfire.com/solution/overview/?video=play>*™* >> > > > > -- > *Mike Tutkowski* > *Senior CloudStack Developer, SolidFire Inc.* > e: mike.tutkow...@solidfire.com > o: 303.746.7302 > Advancing the way the world uses the cloud > <http://solidfire.com/solution/overview/?video=play>*™* > -- *Mike Tutkowski* *Senior CloudStack Developer, SolidFire Inc.* e: mike.tutkow...@solidfire.com o: 303.746.7302 Advancing the way the world uses the cloud <http://solidfire.com/solution/overview/?video=play>*™*