transcoding: drop transcoding request for bad actors
Drop requests for a uid if it submits more than X back-to-back requests
that lasted longer than Y seconds.
bug: 177631807
test: new and existing unit tests; CTS MediaTranscodeManagerTest;
Manual testing Yelp app (with shortened thresholds)
Change-Id: I88287be62190ee5bc815dedb2a62c54ed3c41824
diff --git a/services/mediatranscoding/tests/MediaTranscodingServiceTestHelper.h b/services/mediatranscoding/tests/MediaTranscodingServiceTestHelper.h
index 5256a3f..3f7d8d6 100644
--- a/services/mediatranscoding/tests/MediaTranscodingServiceTestHelper.h
+++ b/services/mediatranscoding/tests/MediaTranscodingServiceTestHelper.h
@@ -208,7 +208,9 @@
std::unique_lock lock(mLock);
mEventQueue.push_back(event);
- mLastErr = err;
+ if (err != TranscodingErrorCode::kNoError) {
+ mLastErrQueue.push_back(err);
+ }
mCondition.notify_one();
}
@@ -226,7 +228,12 @@
TranscodingErrorCode getLastError() {
std::unique_lock lock(mLock);
- return mLastErr;
+ if (mLastErrQueue.empty()) {
+ return TranscodingErrorCode::kNoError;
+ }
+ TranscodingErrorCode err = mLastErrQueue.front();
+ mLastErrQueue.pop_front();
+ return err;
}
private:
@@ -234,7 +241,7 @@
std::condition_variable mCondition;
Event mPoppedEvent;
std::list<Event> mEventQueue;
- TranscodingErrorCode mLastErr;
+ std::list<TranscodingErrorCode> mLastErrQueue;
int mUpdateCount = 0;
int mLastProgress = -1;
};