Issue #15669 has been updated by Daniel Pittman.

eric sorenson wrote:
> That is a pretty rough error message. It'd be good for the 3.0 agent to be 
> aware of the earlier servers and error out specifically.
> 
> In general, we want to add content negotiation to agent-master communication 
> in 3.x ; I'm relating this to #6879 which I believe is the best place to 
> track the solution.

There are two paths to fixing this:

One is to change the way that classes signal their capability for transforming 
into PSON / JSON, and then make 2.7.x return an appropriate error instead of 
success, and the meaningless `instance.inspect` string as JSON.

This fixes the problem cleanly, but doesn't resolve it until 2.7 users upgrade.

The alternative is to have the client side PSON format detect this degenerate 
situation and handle it as a special sort of failure.  That requires 
special-case logic in the decoder to handle this specific failure mode.

Which is preferable?  Note, also, that this isn't so much a failure of 
negotiation, as a failure of the 2.7.x master: because PSON infects every 
object with the ability to turn into PSON (but uselessly), the format handler 
can't actually tell if something should, or should not, emit JSON.
----------------------------------------
Feature #15669: A more helpful error message when the puppet master is at the 
wrong version (2.7.x to 3.0)
https://projects.puppetlabs.com/issues/15669#change-71224

Author: Ben Hughes
Status: Needs Decision
Priority: Normal
Assignee: eric sorenson
Category: usability
Target version: 3.0.0
Affected Puppet version: 
Keywords: errors
Branch: 


At present, between the 2.7.x and 3.0 transition, when you have a 3.0 agent 
talk to a 2.7.x master you get the following:

<pre>
Error: Failed to apply catalog: Could not intern from pson: source 
'"#&lt;Puppet::Node:0x7f' not in PSON!
</pre>

I imagine it won't be this simple, and this may not be the only case where that 
output is produced, but could we not add some code to the 2.7.x branch that 
detects that, and maybe goes "Hey, I'm not saying it's definitely this, but is 
your master older than your client? That's not cool buddy."

With the move to semver, can we not have that in the handshake, before we get 
to this part? So the agent/master tell each other what they are and what to 
expect? Like SSH does with it's connect.

I imagine this bump is going to be hit a few times for people. Partly why I'm 
"documenting" it here. (and added the doc team as watchers)


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to