Backend throttling for getPartialFeedback #1750
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #1661
Description
Updates
rack-attack.rb
to throttlegetPartialFeedback
from the backend & fixes error that occurs when throttling all other endpoints.Motivation and Context
Previously,
getPartialFeedback
was only throttled via the frontend. Students would be able to get past this frontend throttling by writing a script, or by doing an entire webpage refresh rather than an interface refresh. If abused, this could overload Tango with too many requests, thus necessitating backend throttling.Additionally, previously, if
env['rack.attack.match_data']
returnednil
, an error was raised in the overloaded throttled_response method. This error would prevent the endpoints from actually being throttled.How Has This Been Tested?
Note: must first activate cache on the development build using
rails dev:cache
. This can be confirmed by checking for the existence of atmp/caching-dev.txt
file.To disable frontend throttling, replace
onClickRefresh
withconst onClickRefresh = () => refreshPartial(true);
inapp/views/assessments/_partial_feedback_js.html.erb
Types of changes
Checklist:
overcommit --install && overcommit --sign
to use pre-commit hook for linting