]> code.ossystems Code Review - openembedded-core.git/commit
cve-check/cve-update-db-native: use lockfile to fix usage under multiconfig
authorChris Laplante <chris.laplante@agilent.com>
Wed, 9 Sep 2020 20:51:07 +0000 (16:51 -0400)
committerSteve Sakoman <steve@sakoman.com>
Mon, 14 Sep 2020 14:26:37 +0000 (04:26 -1000)
commitf08604d27ecacfd37bd37bfaf4c76f17b8f65604
tree25d2d2da07b86f9c890c18b1e83f45a14ce8c07a
parent694f5107388c5301b82581007ff5fe96dfa8769d
cve-check/cve-update-db-native: use lockfile to fix usage under multiconfig

Previously CVE_CHECK_DB_FILE / CVE_CHECK_DB_DIR was the same across
multiconfigs which led to a race condition wherein multiple
cve-update-db-native:do_populate_cve_db tasks could attempt to write to
the same sqlite database. This led to the following task failure:

    Error executing a python function in exec_python_func() autogenerated:

    The stack trace of python calls that resulted in this exception/failure was:
    File: 'exec_python_func() autogenerated', lineno: 2, function: <module>
         0001:
     *** 0002:do_populate_cve_db(d)
         0003:
    File: '/mnt/data/agent/work/74f119cccb44f133/yocto/sources/poky/meta/recipes-core/meta/cve-update-db-native.bb', lineno: 103, function: do_populate_cve_db
         0099:        if year == date.today().year:
         0100:            cve_f.write('CVE database update : %s\n\n' % date.today())
         0101:
         0102:    cve_f.close()
     *** 0103:    conn.commit()
         0104:    conn.close()
         0105:}
         0106:
         0107:def initialize_db(c):
    Exception: sqlite3.OperationalError: disk I/O error

Use a lockfile to ensure multiple tasks don't step over each other.

Signed-off-by: Chris Laplante <chris.laplante@agilent.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 24e9380643a2ae3fcae193519cb64aedaf682153)
Signed-off-by: Steve Sakoman <steve@sakoman.com>
meta/classes/cve-check.bbclass
meta/recipes-core/meta/cve-update-db-native.bb