Mike - I think your use case can be answered by Alex's wiki [1] - handling
locking section.                
You can look for where all the methods provided in Generic Dao (that end
in "InLockTable") is referred to get a better idea.

[1] 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Data+Access+Layer

Thanks,
-Nitin

On 22/12/13 4:24 PM, "Mike Tutkowski" <mike.tutkow...@solidfire.com> wrote:

>Yeah, if it were just a single management server, I could use
>"synchronized", but since it's not I was curious how we handle this
>situation.
>
>Perhaps your recommendation in regards to using a database table is the
>way
>to go here. Do you know of any code in CloudStack that performs this kind
>of action that I could use as a template?
>
>I actually looked into this SolidFire API more and - in this case -
>account
>name must be unique in the SAN, so it's a non-issue (I thought like
>volumes
>that account names could be reused and you would identify the one you want
>based on its unique ID only). Technically it's not really a non-issue,
>though. For example, two threads could try to create the same account at
>the same time, but one would get an exception (duplicate account name).
>That's OK, though. I could re-write the logic to catch the exception and
>look for the account again (if the account is there, you're OK; else,
>there
>really is a problem).
>
>CloudStack doesn't need to know about SolidFire accounts, though (just my
>plug-in does). SolidFire has this kind of division in our SAN to support
>APIs that query for statistics based on a tenant's particular account.
>
>
>On Sun, Dec 22, 2013 at 2:40 PM, Marcus Sorensen
><shadow...@gmail.com>wrote:
>
>> As far as I'm aware, most of this sort of thing is managed by the state
>> machines on the resources themselves, combined with the transactional
>> database to move between states it keeps the management servers in sync.
>>
>> I'm not sure the problem is specific to having multiple mgmt servers.
>>You'd
>> have the same race with a single mgmt server, but having one makes it
>> easier to solve (e.g. via synchronize block).
>>
>> There are probably many different ways to tackle this. My immediate
>>thought
>> is that cloudstack needs to know about your external accounts if its to
>>be
>> expected to handle them. But I imagine you could also use any old
>>database
>> transaction to do what you want, maybe have your own accounts table you
>>can
>> lock.
>>
>> Another option is simply to make the action idempotent. Why does
>>creating
>> the same account twice result in two accounts? Can that be fixed?
>> On Dec 22, 2013 1:25 PM, "Mike Tutkowski" <mike.tutkow...@solidfire.com>
>> wrote:
>>
>> > Hi,
>> >
>> > I was wondering how we control access to shared resources that are
>>being
>> > utilized by different management servers at the same time.
>> >
>> > For example:
>> >
>> > When a user attaches a volume (that's based on the SolidFire plug-in)
>>to
>> a
>> > VM, my plug-in looks at the CloudStack account that is requesting the
>> > operation. If this CloudStack account does not have a corresponding
>> account
>> > on the SolidFire SAN, I must create one (there is a 1:1 mapping
>>between
>> > CloudStack and SolidFire accounts).
>> >
>> > How can I protect against a situation where my plug-in is running in
>> > multiple management servers and performing this kind of operation at
>>the
>> > same time (in other words, I don't want both instances of the plug-in
>>to
>> > see no SolidFire account and then they each end up creating one, which
>> > breaks the 1:1 mapping between a CloudStack account and a SolidFire
>> > account)?
>> >
>> > Thanks!
>> >
>> > --
>> > *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