Jira (PUP-3922) Pluginsync collisions

8 views
Skip to first unread message

redmine.exporter (JIRA)

unread,
Jan 28, 2015, 6:22:37 PM1/28/15
to puppe...@googlegroups.com
redmine.exporter created an issue
 
Puppet / Bug PUP-3922
Pluginsync collisions
Issue Type: Bug Bug
Assignee: Unassigned
Created: 2015/01/28 3:21 PM
Labels: redmine
Priority: Normal Normal
Reporter: redmine.exporter

I had a problem come up in training last week involving synced facts that brought out a larger problem in pluginsync.

So if I create a module 'one' and define a fact in it called 'myfact', then create a module 'two' and also define a fact there called 'myfact' they will collide. The fact in 'two' will win because it comes later in the directory globbing. But worse is that they will be continuously fighting. On an agent run you can see this fact being overwritten to 'one/myfact' and then 'two/myfact' every single time.

This is horrible for usability because it's not clear which fact will be called, and it's a terrible waste of bandwidth, etc.

Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v6.3.10#6340-sha1:7ea293a)
Atlassian logo

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 6:24:40 PM1/28/15
to puppe...@googlegroups.com
Eric Sorenson updated an issue
Change By: Eric Sorenson
Reporter: redmine.exporter Eric Sorenson

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 6:35:44 PM1/28/15
to puppe...@googlegroups.com
Eric Sorenson updated an issue
Preserve modulepath structure during pluginsync
Change By: Eric Sorenson
Summary: Pluginsync collisions Preserve modulepath structure during pluginsync

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 6:44:40 PM1/28/15
to puppe...@googlegroups.com
Eric Sorenson updated an issue
Original problem report from [~ben.ford]:
{quote}
I had a problem come up in training last week involving synced facts that brought out a larger problem in pluginsync.

So if I create a module 'one' and define a fact in it called 'myfact', then create a module 'two' and also define a fact there called 'myfact' they will collide. The fact in 'two' will win because it comes later in the directory globbing. But worse is that they will be continuously fighting. On an agent run you can see this fact being overwritten to 'one/myfact' and then 'two/myfact' every single time.

This is horrible for usability because it's not clear which fact will be called, and it's a terrible waste of bandwidth, etc.

{quote}

My comment from two years ago:
{quote}
The namespacing/load order is problematic but the files being copied on top of one another would be fixed if we replicated the module path structure from the master onto the client instead of squashing everything into $plugindest regardless of source.
{quote}

It turns out that this problem blocked our ability to execute on [PUP-1077], because newer versions of a module, installed via pluginsync, which restructured files would incompletely overlay 

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 6:51:46 PM1/28/15
to puppe...@googlegroups.com
It turns out that this problem blocked our ability to execute on [PUP-1077], because newer versions of a module, installed via pluginsync, which restructured files would incompletely overlay    the same module structure included in a package's modulepath.

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 6:56:43 PM1/28/15
to puppe...@googlegroups.com


If we instead preserve the modulepath structure that the master discovers as it builds a file set for pluginsync and send the lib/ directories down to the agent with their module name prepended, 

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 6:58:40 PM1/28/15
to puppe...@googlegroups.com
Eric Sorenson updated an issue
Original problem report from [~ben.ford]:
{quote}
I had a problem come up in training last week involving synced facts that brought out a larger problem in pluginsync.

So if I create a module 'one' and define a fact in it called 'myfact', then create a module 'two' and also define a fact there called 'myfact' they will collide. The fact in 'two' will win because it comes later in the directory globbing. But worse is that they will be continuously fighting. On an agent run you can see this fact being overwritten to 'one/myfact' and then 'two/myfact' every single time.

This is horrible for usability because it's not clear which fact will be called, and it's a terrible waste of bandwidth, etc.
{quote}

My comment from two years ago:
{quote}
The namespacing/load order is problematic but the files being copied on top of one another would be fixed if we replicated the module path structure from the master onto the client instead of squashing everything into $plugindest regardless of source.
{quote}

It turns out that this problem blocked our ability to execute on [PUP-1077], because newer versions of a module , installed via pluginsync,  which restructured files would , when pluginsync'ed,  incompletely overlay the same module structure included in a package's modulepath.

If we instead preserve the modulepath structure that the master discovers as it builds a file set for pluginsync and send the lib/ directories down to the agent with their module name prepended,
   the agent could detect that there was an overlapping module name and exclude the built-in one from its load path.

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 6:59:38 PM1/28/15
to puppe...@googlegroups.com
Eric Sorenson updated an issue
Change By: Eric Sorenson
Fix Version/s: PUP 4.x

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 6:59:40 PM1/28/15
to puppe...@googlegroups.com
Eric Sorenson updated an issue
Change By: Eric Sorenson
Priority: Normal Major

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 7:03:38 PM1/28/15
to puppe...@googlegroups.com
Eric Sorenson commented on Bug PUP-3922
 
Re: Preserve modulepath structure during pluginsync

Josh Cooper please keep me honest by correcting the description if I've misconstrued the issue or omitted anything.

Eric Sorenson (JIRA)

unread,
Jan 28, 2015, 7:04:39 PM1/28/15
to puppe...@googlegroups.com
Eric Sorenson updated an issue
Change By: Eric Sorenson
Original problem report from [~ben.ford]:
{quote}
I had a problem come up in training last week involving synced facts that brought out a larger problem in pluginsync.

So if I create a module 'one' and define a fact in it called 'myfact', then create a module 'two' and also define a fact there called 'myfact' they will collide. The fact in 'two' will win because it comes later in the directory globbing. But worse is that they will be continuously fighting. On an agent run you can see this fact being overwritten to 'one/myfact' and then 'two/myfact' every single time.

This is horrible for usability because it's not clear which fact will be called, and it's a terrible waste of bandwidth, etc.
{quote}

My comment from two years ago:
{quote}
The namespacing/load order is problematic but the files being copied on top of one another would be fixed if we replicated the module path structure from the master onto the client instead of squashing everything into $plugindest regardless of source.
{quote}

It turns out that this problem blocked our ability to execute on [PUP-1077]  and any related efforts to modularize things currently in Puppet core , because newer versions of a module which restructured files would, when pluginsync'ed, incompletely overlay the same module structure included in a package's modulepath.


If we instead preserve the modulepath structure that the master discovers as it builds a file set for pluginsync and send the lib/ directories down to the agent with their module name prepended, the agent could detect that there was an overlapping module name and exclude the built-in one from its load path.

Josh Cooper (JIRA)

unread,
Jan 28, 2015, 7:12:39 PM1/28/15
to puppe...@googlegroups.com
Josh Cooper updated an issue
Change By: Josh Cooper
Original problem report from [~ben.ford]:
{quote}
I had a problem come up in training last week involving synced facts that brought out a larger problem in pluginsync.

So if I create a module 'one' and define a fact in it called 'myfact', then create a module 'two' and also define a fact there called 'myfact' they will collide. The fact in 'two' will win because it comes later in the directory globbing. But worse is that they will be continuously fighting. On an agent run you can see this fact being overwritten to 'one/myfact' and then 'two/myfact' every single time.

This is horrible for usability because it's not clear which fact will be called, and it's a terrible waste of bandwidth, etc.
{quote}

My comment from two years ago:
{quote}
The namespacing/load order is problematic but the files being copied on top of one another would be fixed if we replicated the module path structure from the master onto the client instead of squashing everything into $plugindest regardless of source.
{quote}

It turns out that this problem blocked our ability to execute on [PUP-1077] and any related efforts to modularize things currently in Puppet core, because newer versions of a module which restructured files would, when pluginsync'ed, incompletely overlay the same module structure included in a package's modulepath.

If we instead preserve the modulepath structure that the master discovers as it builds a file set for pluginsync and send the lib/ directories down to the agent with their module name prepended, the agent could detect that there was an overlapping module name and exclude the built-in one from its load path.
 This would ensure that the agent would only have one version of a module in its $LOAD_PATH. If we allow multiple versions, then we will reintroduce problems like redmine 7316, caused by having multiple versions of code in the same 

Josh Cooper (JIRA)

unread,
Jan 28, 2015, 7:14:38 PM1/28/15
to puppe...@googlegroups.com
Josh Cooper updated an issue
Original problem report from [~ben.ford]:
{quote}
I had a problem come up in training last week involving synced facts that brought out a larger problem in pluginsync.

So if I create a module 'one' and define a fact in it called 'myfact', then create a module 'two' and also define a fact there called 'myfact' they will collide. The fact in 'two' will win because it comes later in the directory globbing. But worse is that they will be continuously fighting. On an agent run you can see this fact being overwritten to 'one/myfact' and then 'two/myfact' every single time.

This is horrible for usability because it's not clear which fact will be called, and it's a terrible waste of bandwidth, etc.
{quote}

My comment from two years ago:
{quote}
The namespacing/load order is problematic but the files being copied on top of one another would be fixed if we replicated the module path structure from the master onto the client instead of squashing everything into $plugindest regardless of source.
{quote}

It turns out that this problem blocked our ability to execute on [PUP-1077] and any related efforts to modularize things currently in Puppet core, because newer versions of a module which restructured files would, when pluginsync'ed, incompletely overlay the same module structure included in a package's modulepath.

If we instead preserve the modulepath structure that the master discovers as it builds a file set for pluginsync and send the lib/ directories down to the agent with their module name prepended, the agent could detect that there was an overlapping module name and exclude the built-in one from its load path. This would ensure that the agent would only have one version of a module in its $LOAD_PATH. If we allow multiple versions  of code in the $LOAD_PATH , then we will reintroduce problems like redmine 7316 , caused by having multiple versions of code in the same  .

Josh Cooper (JIRA)

unread,
Jan 28, 2015, 7:14:40 PM1/28/15
to puppe...@googlegroups.com
Josh Cooper updated an issue
Change By: Josh Cooper
Scrum Team: Client Platform
Story Points: 3

Kylo Ginsberg (JIRA)

unread,
May 7, 2015, 12:04:28 PM5/7/15
to puppe...@googlegroups.com
Kylo Ginsberg updated an issue
Change By: Kylo Ginsberg
Sprint: Client 2015-06-24
This message was sent by Atlassian JIRA (v6.3.15#6346-sha1:dbc023d)
Atlassian logo

Steve Barlow (JIRA)

unread,
Jun 10, 2015, 11:37:55 AM6/10/15
to puppe...@googlegroups.com
Steve Barlow updated an issue
Change By: Steve Barlow
Sprint: Client 2015- 06 07 - 24 08

Josh Cooper (JIRA)

unread,
Jun 24, 2015, 11:11:00 AM6/24/15
to puppe...@googlegroups.com
Josh Cooper updated an issue
Change By: Josh Cooper
Sprint: Client 2015-07- 08 22

Kylo Ginsberg (JIRA)

unread,
Jul 7, 2015, 2:48:47 PM7/7/15
to puppe...@googlegroups.com
Kylo Ginsberg updated an issue
Change By: Kylo Ginsberg
Sprint: Client 2015-07-22
This message was sent by Atlassian JIRA (v6.4.5#64020-sha1:78acd6c)
Atlassian logo

William Hopper (JIRA)

unread,
Apr 20, 2016, 7:46:05 PM4/20/16
to puppe...@googlegroups.com
William Hopper updated an issue
Change By: William Hopper
Story Points: 3
This message was sent by Atlassian JIRA (v6.4.13#64028-sha1:b7939e9)
Atlassian logo

Kenn Hussey (JIRA)

unread,
Mar 28, 2017, 4:22:04 PM3/28/17
to puppe...@googlegroups.com
Kenn Hussey updated an issue
Change By: Kenn Hussey
Fix Version/s: PUP 4.y
Fix Version/s: PUP 5.y
This message was sent by Atlassian JIRA (v6.4.14#64029-sha1:ae256fe)
Atlassian logo

Geoff Nichols (JIRA)

unread,
Apr 4, 2017, 5:49:03 PM4/4/17
to puppe...@googlegroups.com

Sean McDonald (JIRA)

unread,
May 15, 2017, 7:52:02 PM5/15/17
to puppe...@googlegroups.com
Sean McDonald updated an issue
Change By: Sean McDonald
Labels: redmine  triaged

Moses Mendoza (JIRA)

unread,
May 18, 2017, 1:54:55 PM5/18/17
to puppe...@googlegroups.com
Moses Mendoza updated an issue
Change By: Moses Mendoza
Labels: redmine  triaged

Josh Cooper (JIRA)

unread,
Mar 15, 2018, 7:32:04 PM3/15/18
to puppe...@googlegroups.com
Josh Cooper updated an issue
Change By: Josh Cooper
Sub-team: Coremunity
This message was sent by Atlassian JIRA (v7.7.1#77002-sha1:e75ca93)
Atlassian logo

Josh Cooper (JIRA)

unread,
Mar 21, 2018, 4:52:02 PM3/21/18
to puppe...@googlegroups.com
Josh Cooper commented on Bug PUP-3922
 
Re: Preserve modulepath structure during pluginsync

I no longer think this issue is a blocker for removing non-core types and providers. But there are still valid reasons for preserving module namespace during pluginsync, so I'll keep this issue open, but remove it from the epic.

Trevor Vaughan (Jira)

unread,
Apr 28, 2020, 1:33:04 PM4/28/20
to puppe...@googlegroups.com

Issues with things like client side namespacing have been problematic in the module space for years.

Honestly, I think that everything should be namespaced at this point and that it should all be completely unambiguous where possible.

In my opinion, one of the main issues is that this causes users to try modules form the Forge but either reject them, or fork them, due to namespace collisions. Fixing this issue would be a boon for the overall reusability of the module space in general.

This message was sent by Atlassian Jira (v8.5.2#805002-sha1:a66f935)
Atlassian logo

Josh Cooper (Jira)

unread,
May 3, 2021, 1:19:02 PM5/3/21
to puppe...@googlegroups.com
Josh Cooper updated an issue
Change By: Josh Cooper
Epic Link: PUP-11032
This message was sent by Atlassian Jira (v8.13.2#813002-sha1:c495a97)
Atlassian logo

Josh Cooper (Jira)

unread,
May 11, 2021, 12:27:04 PM5/11/21
to puppe...@googlegroups.com

Jesse Hathaway (Jira)

unread,
Mar 17, 2022, 12:27:02 PM3/17/22
to puppe...@googlegroups.com
Jesse Hathaway commented on Bug PUP-3922
 
Re: Preserve modulepath structure during pluginsync

Has this situation been improved since Puppet 5.5, the version we are currently running?

This message was sent by Atlassian Jira (v8.20.2#820002-sha1:829506d)
Atlassian logo

Josh Cooper (Jira)

unread,
Mar 17, 2022, 12:57:02 PM3/17/22
to puppe...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages