On 2015-15-07 12:22, Peter Huene wrote:
On Wed, Jul 15, 2015 at 12:18 PM, Trevor Vaughan <tvaug...@onyxpoint.com
<mailto:tvaug...@onyxpoint.com>> wrote:

    Indeed, I did change it to that but it would still be nice to know
    what's going on so that I can stuff it into rspec and check for it.


Puppet's compiler intentionally freezes $trusted and its values.  If you
intend to support operating on arguments like this, you should be
creating a copy and not modifying the argument (probably a good rule to
follow anyway, especially for a function named "parse").

Peter is right. Rule of thumb, never ever mutate arguments that are given to you or that you lookup. Unfortunately deep freezing all values has a high cost or we would do that extensively when the puppet runtime returns values, or calls into user supplied logic.

Regards
- henrik

    Thanks,

    Trevor

    On Wed, Jul 15, 2015 at 2:59 PM, R.I.Pienaar <r...@devco.net
    <mailto:r...@devco.net>> wrote:



        ----- Original Message -----
        > From: "Trevor Vaughan" <tvaug...@onyxpoint.com 
<mailto:tvaug...@onyxpoint.com>>
        > To: "puppet-dev" <puppet-dev@googlegroups.com 
<mailto:puppet-dev@googlegroups.com>>
        > Sent: Wednesday, July 15, 2015 7:50:36 PM
        > Subject: Re: [Puppet-dev] How do you know what variables are frozen?

        > In this case, it was a custom function that was tripping things up.
        >
        > Looking through the code, I *think* this was the scenario:
        >
        > 1) Fact => trusted['certname']
        > 2) Function call to parse_host($trusted['certname'])
        > 3) Parse host:
        >
        > host = args.first
        > host.strip! # Here's the offender
        >
        > I also tried seeing if dup'ing the args would work, but it copies the
        > frozen attribute with the String object (which makes sense).
        >
        > So, I don't know if I was trying to modify something from a Fact or 
if the
        > object just happened to be carrying the 'frozen' status as it went 
along.

        so do not use strip! use x = something.strip? this way you dont
        try to
        modify anything in scope.

        --
        You received this message because you are subscribed to the
        Google Groups "Puppet Developers" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to puppet-dev+unsubscr...@googlegroups.com
        <mailto:puppet-dev%2bunsubscr...@googlegroups.com>.
        To view this discussion on the web visit
        
https://groups.google.com/d/msgid/puppet-dev/1753817636.200946.1436986745705.JavaMail.zimbra%40devco.net.
        For more options, visit https://groups.google.com/d/optout.




    --
    Trevor Vaughan
    Vice President, Onyx Point, Inc
    (410) 541-6699 <tel:%28410%29%20541-6699>

    -- This account not approved for unencrypted proprietary information --

    --
    You received this message because you are subscribed to the Google
    Groups "Puppet Developers" group.
    To unsubscribe from this group and stop receiving emails from it,
    send an email to puppet-dev+unsubscr...@googlegroups.com
    <mailto:puppet-dev+unsubscr...@googlegroups.com>.
    To view this discussion on the web visit
    
https://groups.google.com/d/msgid/puppet-dev/CANs%2BFoWKrP%2Btj%2BJsiENkam9q7ohLGQd5-Z5Gfa%3DoE%2BsSX2D%2Bvw%40mail.gmail.com
    
<https://groups.google.com/d/msgid/puppet-dev/CANs%2BFoWKrP%2Btj%2BJsiENkam9q7ohLGQd5-Z5Gfa%3DoE%2BsSX2D%2Bvw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

    For more options, visit https://groups.google.com/d/optout.




--
*Join us at **PuppetConf 2015, October 5-9 in Portland, OR - *www.
<http://www.google.com/url?q=http%3A%2F%2Fwww.&sa=D&sntz=1&usg=AFQjCNEnS7itqgvQV3E4Se1fu4Um_UapSw>2015.puppetconf.com
<http://www.google.com/url?q=http%3A%2F%2F2015.puppetconf.com&sa=D&sntz=1&usg=AFQjCNE1uQL4Sh23Vr-XkPLa4xfNcoXSog>**
/Register early to save 40%!/

--
You received this message because you are subscribed to the Google
Groups "Puppet Developers" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to puppet-dev+unsubscr...@googlegroups.com
<mailto:puppet-dev+unsubscr...@googlegroups.com>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/puppet-dev/CACZQQfOK4iJk7KcFT9_9n3pU-4U90Cxnhw2660FdafMCuYAggg%40mail.gmail.com
<https://groups.google.com/d/msgid/puppet-dev/CACZQQfOK4iJk7KcFT9_9n3pU-4U90Cxnhw2660FdafMCuYAggg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.


--

Visit my Blog "Puppet on the Edge"
http://puppet-on-the-edge.blogspot.se/

--
You received this message because you are subscribed to the Google Groups "Puppet 
Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-dev/mo79uh%24hq2%241%40ger.gmane.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to