[client] Fix creating session file #3212
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.
If we run multiple CodeChecker commands (login, store) which uses the same
home directory and the CodeChecker session file (
~/.codechecker.session.json
)does not exist yet the following scenario is possible:
this file for writing.
It recognizes that the file exists, so it will read up the file. It expects that
the file is a valid json file but it is empty. So the
token_dict
variablewill be an empty dict, we try to get the
tokens
member of this emptydictionary (
self.__tokens
) which will beNone
, and when we will try toiterate over this directory (which is
None
in our case) the CodeChecker willraise an exception.
To solve this problem we will use
portalocker
after we opened the file tolock it, so only one process will be able to read/write this file simultaneously.
Also we will handle the use case when this file is still empty.