oeqa/utils/decorators: LogResults fix race condition in linkfile
PATCH 1/1 oeqa/utils/decorators: LogResults fix race condition in linkfile
In order to avoid race condition when test if exists the linkfile use bb.utils.lock, the best solution is to create a unique name for the link file.
There is no way to create a unique linkfile name at this decorator because is needed the machine and image variables, those variables can't be passed easily in this code.
To avoid broke test export functionality use a try/except because bb isn't available when use test export
[YOCTO #10225]
Signed-off-by Aníbal Limón <[email protected]>
--- meta/lib/oeqa/utils/decorators.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+)
meta/lib/oeqa/utils/decorators.py +14 -0
@@ -189,10 +189,24 @@ def LogResults(original_class): if passed: local_log.results("Testcase "+str(test_case)+": PASSED") + # XXX: In order to avoid race condition when test if exists the linkfile + # use bb.utils.lock, the best solution is to create a unique name for the + # link file. + try: + import bb + has_bb = True + lockfilename = linkfile + '.lock' + except ImportError: + has_bb = False + + if has_bb: + lf = bb.utils.lockfile(lockfilename, block=True) # Create symlink to the current log if os.path.lexists(linkfile): os.remove(linkfile) os.symlink(logfile, linkfile) + if has_bb: + bb.utils.unlockfile(lf) original_class.run = run
Signature · 1 line
2.1.4