(MODULES-1738) Don't modify the global seed in fqdn_rotate() #406
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.
MODULES-1738 is similar to Redmine-15791, which was addressed in puppetlabs/puppet@292233c. The current implementation of fqdn_rotate() leaves the global seed in a deterministic state, which is bad. Puppet::Util.deterministic_rand() exists to avoid running into this issue, but is only present starting in Puppet 3.2.0.
An alternative (and, IMO, superior) way to handle this would be to instead replace lines 34-37 of fqdn_rotate.rb with:
This would have the benefits of being much cleaner and not having duplicated code from the Puppet codebase that would have to be maintained if for some reason it changed there. On the other hand, it would not prevent fqdn_rotate() from poisoning the global seed in versions of Puppet prior to 3.2.0. That being said, since fqdn_rand() already poisons the global seed in versions of Puppet prior to 3.2.0, maybe it doesn't matter if fqdn_rotate() does the same in those versions.