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>*™*

Reply via email to