If UI is firing queryAsynJobResult on behalf of the user, then it will be 
counted. With recent event framework merge, can UI be notified with job status 
change instead of constantly polling?

-min

Sent from my iPhone

On Jan 31, 2013, at 8:24 PM, "Sowmya Krishnan" <sowmya.krish...@citrix.com> 
wrote:

> Sorry...I should've been more clear. My question here is, from the UI, when a 
> user fires an async job, do the queryAsyncJobResult APIs also get counted? 
> 
> -----Original Message-----
> From: Chiradeep Vittal [mailto:chiradeep.vit...@citrix.com] 
> Sent: Friday, February 01, 2013 4:44 AM
> To: cloudstack-dev@incubator.apache.org
> Subject: Re: [DISCUSS]API request throttling
> 
> I think she's talking about the CloudStack UI
> 
> On 1/31/13 2:03 PM, "Min Chen" <min.c...@citrix.com> wrote:
> 
>> Hi Sowmya,
>> 
>>    I still could not understand your statement below about queryAsyncJob 
>> api. By searching the codebase, I didn't see anywhere in our code where 
>> CS itself triggers this command internally. For example, in deployVMCmd 
>> api, which will create an async job and return the job id to user, but 
>> CS itself internally will not automatically poll the job result on 
>> behalf of the user, so our current implementation will still count this api 
>> as 1.
>> Did I miss anything here?
>> 
>>    Thanks
>>    -min
>> 
>> On 1/30/13 9:39 PM, "Sowmya Krishnan" <sowmya.krish...@citrix.com> wrote:
>> 
>>>> [Min] Since the intention of this feature is to avoid malicious 
>>>> attacks to CS server, we cannot filter out some APIs in throttling control.
>>>> Otherwise, Malicious hackers can issue those filtered apis to cause 
>>>> CS server down. Also, I don't understand your comment on 
>>>> queryAsyncJobResultCmd, why a user cannot really control that? That 
>>>> is a user API.
>>> 
>>> You're right queryAsyncJob can be fired independently by user. But I 
>>> was wondering in cases where aysnc jobs are issued by users, it 
>>> results in multiple queryAsyncJob requests fired (not by the user) 
>>> that polls for the job result, and yet, these get counted too although 
>>> it was not directly triggered by the user. I would imagine for now, 
>>> the solution is to have a sufficiently high api limit so that a user 
>>> doesn't encounter the limit too early due to multiple aysnc jobs fired in a 
>>> short duration.
>>> 
>>> -----Original Message-----
>>> From: Min Chen [mailto:min.c...@citrix.com]
>>> Sent: Wednesday, January 30, 2013 11:41 PM
>>> To: cloudstack-dev@incubator.apache.org
>>> Subject: Re: [DISCUSS]API request throttling
>>> 
>>> Hi Sowmya,
>>> 
>>>    Thanks for the feedback. See my answers inline.
>>> 
>>>    -min
>>> 
>>> On 1/30/13 3:17 AM, "Sowmya Krishnan" <sowmya.krish...@citrix.com> wrote:
>>> 
>>>> Min, have few questions on this feature while I was coming up with 
>>>> test plan -
>>>> 
>>>> 1. Do we allow specifying multiple limits based on different 
>>>> intervals
>>>> - for ex: 10 requests for interval = 5 sec, and 100 for interval = 60 
>>>> sec.
>>>> Essentially multiple time slices for better granularity and control. 
>>>> If yes, how do I set up this?
>>> [Min] No, currently we only support specifying one time limit with 
>>> your specified interval through components.xml. For the purpose of 
>>> avoid malicious attacks to CS server, I don't see the point of 
>>> specifying multiple limits for different time slices.
>>> 
>>>> 
>>>> 2. What is the purpose of resetApiLimitCmd being provided to the User?
>>>> Can a user not keep invoking this API and reset his counter every 
>>>> time it's exceeding his limit? This should be available only to the 
>>>> admin isn't it?
>>> [Min] That is the good point, we should only provide reset API to 
>>> admin user. I will fix FS to reflect that.
>>> 
>>>> 3. Can we have a "negative list" (or a better name) which shouldn't 
>>>> be accounted for throttling? For example, queryAsyncJob could be one 
>>>> candidate since a user cannot really control that.
>>> [Min] Since the intention of this feature is to avoid malicious 
>>> attacks to CS server, we cannot filter out some APIs in throttling control.
>>> Otherwise, Malicious hackers can issue those filtered apis to cause CS 
>>> server down. Also, I don't understand your comment on 
>>> queryAsyncJobResultCmd, why a user cannot really control that? That is 
>>> a user API.
>>> 
>>>> 
>>>> 4. FS states the back-off algorithm is TBD. I am assuming it's manual 
>>>> for now, at least for 4.1 release?
>>> 
>>> [Min] Yes, that is manual for now.
>>>> 
>>>> Thanks,
>>>> Sowmya
>>>> 
>>>> 
>>>> -----Original Message-----
>>>> From: Pranav Saxena [mailto:pranav.sax...@citrix.com]
>>>> Sent: Saturday, December 22, 2012 5:20 AM
>>>> To: cloudstack-dev@incubator.apache.org
>>>> Subject: RE: [DISCUSS]API request throttling
>>>> 
>>>> A proper error code is certainly seems to be the standard . Just for 
>>>> an example , Twitter uses the same for handling their API throttling 
>>>> response errors as well  (https://dev.twitter.com/docs/rate-limiting ) .
>>>> The back-off algorithm discussion I was referring to was for handling 
>>>> automatic  triggering of blocked requests  but I could not think of a 
>>>> scenario where it might be useful for cloudstack to have such a
>>>> functionality .    Any ideas /suggestions?
>>>> 
>>>> Regards,
>>>> Pranav
>>>> 
>>>> -----Original Message-----
>>>> From: Alex Huang [mailto:alex.hu...@citrix.com]
>>>> Sent: Saturday, December 22, 2012 12:51 AM
>>>> To: cloudstack-dev@incubator.apache.org
>>>> Subject: RE: [DISCUSS]API request throttling
>>>> 
>>>>> 
>>>>> Which brings me to another question: what is the response: is it a 
>>>>> HTTP error code or a normal response that has to be parsed?
>>>>> The reaction of most users to an error from the cloud is to re-try 
>>>>> -- thereby making the problem worse.
>>>>> 
>>>> 
>>>> A proper error code is the right way to do it.  It only makes the 
>>>> problem worse if it causes the system to behave poorly so we have to 
>>>> design this feature such that processing it doesn't cause 
>>>> considerable performance/scale problem in the system.  One 
>>>> possibility is a backoff algorithm (saw some discussion about it but 
>>>> wasn't sure if it was for this), where we hold off the response if it 
>>>> continues to send requests, in effect choking the client.
>>>> 
>>>> --Alex
>>> 
>> 
> 

Reply via email to