[io] use UUIDv4 in ROOT files#22035
Conversation
Test Results 22 files 22 suites 3d 15h 14m 18s ⏱️ For more details on these failures, see this check. Results for commit ec0de0a. ♻️ This comment has been updated with latest results. |
|
Impressive PR: thanks for it. It should be backported until 6.36. |
vepadulano
left a comment
There was a problem hiding this comment.
LGTM, let's wait for the CI. Just a minor consideration.
bad1286 to
e92b612
Compare
Use UUIDv4 in TDirectory (hence in TDirectoryFile and TFile) and in the RMiniFile. Note that TDirectory is used without gSystem (needed for GetCryptoRandom()) in the context of rootcling. In principle, GetCryptoRandom() should work without a TSystem object. That may be for a later commit. The UUIDv4, unlike the current UUIDv1, is (with high enough probability) globally unique.
Factor out calling the OS crypto random number generator into a free function in the Base package. In turn, TSystem::GetCryptoRandom() can be static and does not rely in gSystem being initialized.
|
/backport to 6.40,6.38,6.36 |
|
/backport to 6.40 |
|
Preparing to backport PR #22035 to branch 6.40 requested by jblomer |
|
/backport to 6.38 |
|
This PR has been backported to branch 6.40: #22061 |
|
Preparing to backport PR #22035 to branch 6.38 requested by jblomer |
|
/backport to 6.36 |
|
This PR has been backported to |
|
Preparing to backport PR #22035 to branch 6.36 requested by jblomer |
|
This PR has been backported to |
Use UUIDv4 in TDirectory (hence in TDirectoryFile and TFile) and in the RMiniFile. Note that TDirectory is used without gSystem (needed for GetCryptoRandom()) in the context of rootcling. In principle, GetCryptoRandom() should work without a TSystem object. That may be for a later PR.
The UUIDv4, unlike the current UUIDv1, is (with high enough probability) globally unique.
Also fixes a race in TUUID::AsString().
EDIT: The last two commits factor out the
GetCryptoRandom()into a free function, so that it can be used unconditionally in the I/O.Fixes #22015
Replaces #22016