Logrotate module broken, string 'undef' now treated as undef

72 views
Skip to first unread message

Daniel Urist

unread,
May 18, 2016, 5:33:26 PM5/18/16
to Puppet
I have been using the yo61 logrotate module from puppetforge (https://forge.puppet.com/yo61/logrotate), which seems to be the most popular, but it recently stopped working, with many errors about undefined parameters.

The issue seems to be the use of the string 'undef' as a default value; for example:

define logrotate::rule(
                        $create_owner   = 'undef',
 
Later on in the code, there are comparisons against the actual string 'undef'; for example:


  if ($create_owner != 'undef') and ($create_mode == 'undef') {
    fail("Logrotate::Rule[${name}]: create_owner requires create_mode")
   }

Regardless of whether this is best practice, these comparisons are now failing, apparently because the string 'undef' is now treated as the value undef. I've confirmed this by printing the string with notify (prints nothing when it's 'undef'), and changing it to something else, which does print.

I'm not sure exactly when this changed or if it's intended behavior or a bug, but it does seem odd that now apparently 'undef' === undef

Matthaus Owens

unread,
May 18, 2016, 5:40:44 PM5/18/16
to Puppet Users
Daniel,
Which version of Puppet are you seeing this on?

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/CAEo6%3DKYjAx286r9NNvKtGU3PscrAZ77H5_HXc9CXO1LLa552sg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Daniel Urist

unread,
May 19, 2016, 10:30:28 AM5/19/16
to puppet-users
puppetserver: 2.3.2-1puppetlabs1
puppet client: 3.8.5-2~bpo8+1

Both server and clients are running Debian 8 (jessie); the puppet client is from the Debian backports repo.

Daniel Urist

unread,
May 19, 2016, 3:04:12 PM5/19/16
to puppet-users
Here's some code to try:

  $var1 = undef
  $var2 = "undef"
  $var3 = 'undef'
  $var4 = "'undef'"
  $var5 = '"undef"'
  notify { "VAR1: ${var1} VAR2: ${var2} VAR3: ${var3} VAR4: ${var4} VAR5: ${var5}": }
 
When run, this results in:

  Notice: VAR1:  VAR2:  VAR3:  VAR4: 'undef' VAR5: "undef"
Message has been deleted

JeremyCampbell

unread,
May 20, 2016, 8:41:28 AM5/20/16
to Puppet Users
I can confirm the same issue on Puppetserver v2.4.0

Daniel Urist

unread,
May 20, 2016, 11:20:09 AM5/20/16
to puppet-users

On Fri, May 20, 2016 at 6:41 AM, JeremyCampbell <jeremyca...@gmail.com> wrote:
I can confirm the same issue on Puppetserver v2.4.0

--
You received this message because you are subscribed to the Google Groups "Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users...@googlegroups.com.

Matthaus Owens

unread,
May 20, 2016, 12:56:39 PM5/20/16
to Puppet Users
Daniel,
Thanks for filing the ticket. I'll take a stab at reproducing it today. Did you only see it with puppet runs against a master, or also with local puppet apply?

Daniel Urist

unread,
May 20, 2016, 1:32:46 PM5/20/16
to puppet-users
There doesn't seem to be an issue when I run my test code with "puppet apply".

I've tried this under puppet agents v.4.5.0 and v.3.8.5

Henrik Lindberg

unread,
May 22, 2016, 8:47:36 PM5/22/16
to puppet...@googlegroups.com
The bug logged ended up being PUP-6336
It is indeed a bug, a bad regression caused by a series of surprising
details (which you can read about on the ticket
https://tickets.puppetlabs.com/browse/PUP-6336

There is a fix for this that is just merged, and it will be released in
Puppet 4.5.1 (which will be released much sooner because of this bug).

- henrik

--

Visit my Blog "Puppet on the Edge"
http://puppet-on-the-edge.blogspot.se/
Reply all
Reply to author
Forward
0 new messages