mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
cve-update-nvd2-native: increase the delay between subsequent request failures
Sometimes NVD servers are unstable and return too many errors. There is an option to have higher fetch attempts to increase the chances of successfully fetching the CVE data. Additionally, it also makes sense to progressively increase the delay after a failed request to an already unstable or busy server. The increase in delay is reset after every successful request and the maximum delay is limited to 30 seconds. Also, the logs are improved to give more clarity. (From OE-Core rev: 7101d654635b707e56b0dbae8c2146b312d211ea) Signed-off-by: Dhairya Nagodra <dnagodra@cisco.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
ef371d1cb3
commit
0ce61d9b8b
@@ -114,7 +114,10 @@ def cleanup_db_download(db_file, db_tmp_file):
|
||||
if os.path.exists(db_tmp_file):
|
||||
os.remove(db_tmp_file)
|
||||
|
||||
def nvd_request_next(url, attempts, api_key, args):
|
||||
def nvd_request_wait(attempt, min_wait):
|
||||
return min ( ( (2 * attempt) + min_wait ) , 30)
|
||||
|
||||
def nvd_request_next(url, attempts, api_key, args, min_wait):
|
||||
"""
|
||||
Request next part of the NVD dabase
|
||||
"""
|
||||
@@ -143,8 +146,10 @@ def nvd_request_next(url, attempts, api_key, args):
|
||||
r.close()
|
||||
|
||||
except Exception as e:
|
||||
bb.note("CVE database: received error (%s), retrying" % (e))
|
||||
time.sleep(6)
|
||||
wait_time = nvd_request_wait(attempt, min_wait)
|
||||
bb.note("CVE database: received error (%s)" % (e))
|
||||
bb.note("CVE database: retrying download after %d seconds. attempted (%d/%d)" % (wait_time, attempt+1, attempts))
|
||||
time.sleep(wait_time)
|
||||
pass
|
||||
else:
|
||||
return raw_data
|
||||
@@ -195,7 +200,7 @@ def update_db_file(db_tmp_file, d, database_time):
|
||||
|
||||
while True:
|
||||
req_args['startIndex'] = index
|
||||
raw_data = nvd_request_next(url, attempts, api_key, req_args)
|
||||
raw_data = nvd_request_next(url, attempts, api_key, req_args, wait_time)
|
||||
if raw_data is None:
|
||||
# We haven't managed to download data
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user