Open
Description
The source of version 1.3.13 says
stepTime = do
h1 <- fmap hundredsOfNanosSinceGregorianReform getCurrentTime
modifyMVar state $ \s@(State mac' c0 h0) ->
if h1 > h0
then
return (State mac' c0 h1, Just (mac', c0, h1))
else
let
c1 = succ c0
in if c1 <= 0x3fff -- when clock is initially randomized,
-- then this test will need to change
then
return (State mac' c1 h1, Just (mac', c1, h1))
else
return (s, Nothing)
Since c0
is never reset to 0 it seems that once 3fff is reached - i.e. after requesting a V1 UUID too fast 3fff times - no new V1 UUID will ever be returned.
Maybe the first return
line should read (note the 0
instead of c0
)
return (State mac' 0 h1, Just (mac', 0, h1))
Or is there a reason for this behaviour, e.g. some specification that demands this?
Metadata
Metadata
Assignees
Labels
No labels