Thanks Alex for clarification. I will provide an extra global setting to
allow user to easily enable/disable this instead of going through
componentContext.xml. Parth already filed a bug to track this:
https://issues.apache.org/jira/browse/CLOUDSTACK-1484

-min

On 3/1/13 5:56 PM, "Alex Huang" <alex.hu...@citrix.com> wrote:

>This is something that everyone writing plugins should think about.
>
>A component being enabled does not automatically mean that functionality
>being enabled.  Here, API Throttling component is enabled/disabled
>through componentcontext.xml  but the behavior of whether it should
>automatically default to setting a limit on api calls is a property of
>the api throttling component and should not depend on api throttling
>component being enabled/disabled to set that limit.
>
>It's a tricky problem to see because the distinction seems to be so
>small.  You have to look at it from the perspective of the people who
>touches cloudstack's code.
>
>One type of people is the distributor of CloudStack code.  He comes in
>and says I understand CloudStack and I pick the best components to deploy
>it with.  For example, they may choose to put in a different api
>throttling component to package.  He's the person who changes
>componentContext.xml.
>
>Another type of people is the deployer of CloudStack code, usually a
>system admin.  He takes the package from distributor and says I read the
>documentation and I understand how to use your cloudstack  as a package.
>He's the person who configures CloudStack through configuration variables.
>
>Sometimes, these two people are the same person but when we write code we
>have to think of them as separate people.  Therefore, api throttling
>component should default to not limiting api calls should not rely on the
>api throttling component being disabled in componentscontext.xml to
>achieve that functionality.  That's functionality that belongs to api
>throttling after it is enabled.
>
>Just think of the case of the deployer upgrading.  The distributor
>decided they want to add this functionality to the release but why should
>the deployer know that he should disable api throttling in
>componentscontext.xml?
>
>--Alex
>
>
>
>> -----Original Message-----
>> From: Min Chen [mailto:min.c...@citrix.com]
>> Sent: Friday, March 1, 2013 4:39 PM
>> To: cloudstack-dev@incubator.apache.org
>> Subject: Re: [DISCUSS} API Throttling minimum number of calls per unit
>>of
>> time
>> 
>> Currently for 4.1 api throttling is enabled by default since we include
>>that
>> pluggable service in ComponentContext.xml. Parth, please file a defect
>>for
>> that, I will fix it.
>> 
>> Thanks
>> -min
>> 
>> On 3/1/13 4:36 PM, "Parth Jagirdar" <parth.jagir...@citrix.com> wrote:
>> 
>> >That sounds right..
>> >
>> >If you enable throttling then .. you are assumed to know what it does.
>> >If you enable throttling then .. you should decide values based on your
>> >environment.
>> >
>> >Thanks,
>> >.. Parth
>> >
>> >
>> >-----Original Message-----
>> >From: David Nalley [mailto:da...@gnsa.us]
>> >Sent: Friday, March 01, 2013 2:58 PM
>> >To: cloudstack-dev@incubator.apache.org
>> >Subject: Re: [DISCUSS} API Throttling minimum number of calls per unit
>> >of time
>> >
>> >On Fri, Mar 1, 2013 at 5:34 PM, Parth Jagirdar
>> ><parth.jagir...@citrix.com> wrote:
>> >> All,
>> >>
>> >> API throttling number can be set to anything at this point.
>> >>
>> >> Suggestions here is to have this number set to a value that is
>> >>"greater than" number of API that can be fired by any potential
>>action on
>> UI.
>> >>
>> >> Minimum API for throttling that can be set  <  Number of API's Any
>> >>action can fire in unit time.
>> >> (unit time is 1 second)
>> >>
>> >>
>> >> That said say action X fires 10 API in 2 seconds than having 10 as
>> >>min number is safe. Or even 8 if we have decent idea of intervals
>> >>they get fired at..
>> >> But for action Y that fires 20 in 2 seconds with 15 in first seconds
>> >>than 15 as min number is required to avoid undesirable effects
>> >>
>> >>
>> >> Real life example,
>> >>
>> >> Login as user (not admin; throttling doesn't apply to Admin) fires
>> >> about 8 in total. (in less than a second which is the unit we are
>> >> using in API throttling)
>> >>
>> >> Now if this number is set to anything less than this will have
>> >>unpleasant effect on UI.
>> >>
>> >> Including unwanted error (HTML 429) and partial UI screen rendering.
>> >>
>> >>
>> >> So to hardcode numbers or just document and leave on admins to
>> >>exercise cautions or ...  .. Please provide your suggestions /inputs.
>> >>
>> >> Track it here:  https://issues.apache.org/jira/browse/CLOUDSTACK-1483
>> >>
>> >>
>> >> Thanks,
>> >> ...Parth
>> >>
>> >
>> >IMO - people should not be surprised when they upgrade to a new feature
>> >release.
>> >The default should be no throttling.
>> >We also have to remember that there are other things besides the UI
>> >that interact with the API. If I were to use Cloudcat  or
>> >knife-cloudstack and provision n-number of nodes, I suspect I'd rapidly
>> >find myself throttled/blacklisted. Any sane default that's remotely
>> >useful for most folks will be awful for high-end sophisticated users.
>> >Adding new functionality that breaks things by default for folks is
>>just a bad
>> idea.
>> >
>> >
>> >--David
>

Reply via email to