Skip to content

[core] Use libuuid's uuid_generate_time in TUUID when available#22016

Open
chrisburr wants to merge 1 commit intoroot-project:masterfrom
chrisburr:fix/tuuid-libuuid-concurrent-collisions
Open

[core] Use libuuid's uuid_generate_time in TUUID when available#22016
chrisburr wants to merge 1 commit intoroot-project:masterfrom
chrisburr:fix/tuuid-libuuid-concurrent-collisions

Conversation

@chrisburr
Copy link
Copy Markdown
Contributor

@chrisburr chrisburr commented Apr 22, 2026

This Pull request:

Uses libuuid to generate UUIDs in a more robust way, avoiding the issues seen with duplicates in LHCb.

Checklist:

  • tested changes locally
  • updated the docs (if necessary)

This PR fixes #22015

The existing TUUID v1 generator seeds its per-thread 14-bit clock
sequence from `gSystem->Now() + GetPid()`. When many processes start
within the same second on a single host, the seeds are nearly identical
and all processes share the same MAC-derived node identifier, so UUIDs
produced in the same 100ns tick collide (root-project#22015).

libuuid's uuid_generate_time coordinates the clock sequence across
processes via /var/lib/libuuid/clock.txt (or uuidd), eliminating these
collisions while preserving the RFC 4122 v1 wire format. Link Core
against uuid::uuid on non-Windows when libuuid is found and delegate
generation to uuid_generate_time; fall back to the existing code path
on Windows and on systems without libuuid.
@chrisburr chrisburr force-pushed the fix/tuuid-libuuid-concurrent-collisions branch from 5a813e9 to 2205b5e Compare April 22, 2026 14:14
@chrisburr chrisburr marked this pull request as ready for review April 22, 2026 14:14
@dpiparo dpiparo self-assigned this Apr 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Non uniquess of the UUID inside TFile

2 participants