Jira (PUP-7888) Pluginsync modules with deep directories fail on Windows

3 views
Skip to first unread message

Glenn Sarti (JIRA)

unread,
Aug 29, 2017, 5:18:03 PM8/29/17
to puppe...@googlegroups.com
Glenn Sarti created an issue
 
Puppet / Bug PUP-7888
Pluginsync modules with deep directories fail on Windows
Issue Type: Bug Bug
Affects Versions: PUP 5.1.0, PUP 4.7.1
Assignee: Unassigned
Components: Windows
Created: 2017/08/29 2:17 PM
Environment:

Node: Windows 2012R2
Master: Using 2016.4.2 but it is not master dependant
Puppet 4.7.1 but will affect Puppet 5.1.0 too

Priority: Normal Normal
Reporter: Glenn Sarti

After updating the Windows DSC module with the latest resources, the acceptance tests were failing setup due to plugin cache failing to synchronise files with deep directories

$ puppet agent -t --trace
Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Error: Could not set 'file' on ensure: No such file or directory @ dir_s_mkdir - C:/ProgramData/PuppetLabs/puppet/cache/lib/puppet_x/dsc_resources/xSQLServer/DSCResources/MSFT_xSQLServerAlwaysOnAvailabilityGroupDatabaseMembership/en-US/MSFT_xSQLServerAlwaysOnAvailabilityGroupDatabaseMembership.strings.psd120170829-2800-rxsfcz.lock
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:182:in `mkdir'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:182:in `mkdir'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:175:in `locking'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:38:in `block in initialize'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:134:in `create_tmpname'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/file_system/uniquefile.rb:28:in `initialize'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util.rb:453:in `new'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util.rb:453:in `replace_file'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/type/file.rb:854:in `write'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/type/file/data_sync.rb:87:in `contents_sync'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/type/file/content.rb:121:in `sync'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:66:in `block (2 levels) in <module:Puppet>'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/property.rb:487:in `set'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/property.rb:561:in `sync'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/type/file/ensure.rb:186:in `sync'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:236:in `sync'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:134:in `sync_if_needed'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:80:in `perform_changes'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction/resource_harness.rb:21:in `evaluate'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:224:in `apply'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:240:in `eval_resource'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:163:in `call'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:163:in `block (2 levels) in evaluate'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util.rb:386:in `block in thinmark'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util.rb:385:in `thinmark'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:163:in `block in evaluate'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/graph/relationship_graph.rb:118:in `traverse'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction.rb:154:in `evaluate'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:222:in `block in apply'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/util/log.rb:159:in `with_destination'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/transaction/report.rb:137:in `as_logging_destination'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/resource/catalog.rb:221:in `apply'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/configurer/downloader.rb:13:in `evaluate'
C:/Program Files/Puppet Labs/Puppet/sys/ruby/lib/ruby/vendor_ruby/puppet/configurer/plugin_handler.rb:20:in `download_plugins'

It appears that the ruby mkdir function is hitting the MAX_PATH limit (https://msdn.microsoft.com/en-us/library/aa365247.aspx#maxpath)

Due to this failure we cannot update the DSC module with the SQL Server resources and it's only a matter of time until another module hits this issue.

Instead perhaps puppet should use the UNC style naming which support 32,000 path lengths instead.

Add Comment Add Comment
 
This message was sent by Atlassian JIRA (v6.4.14#64029-sha1:ae256fe)
Atlassian logo

matthieu (JIRA)

unread,
Oct 13, 2017, 1:08:02 PM10/13/17
to puppe...@googlegroups.com
matthieu commented on Bug PUP-7888
 
Re: Pluginsync modules with deep directories fail on Windows

Problem solved in windows 2016 which removes the max_path using the "enable NTFS long path support" GPO parameter (https://www.saotn.org/ntfs-long-paths-windows-server-2016-gpo/) .

Successfully compiled the xSQLServer 8.2 dsc module in puppetlabs/dsc and downloaded the module through puppet agent in a windows 2016 vm.

Glenn Sarti (JIRA)

unread,
Oct 13, 2017, 1:12:02 PM10/13/17
to puppe...@googlegroups.com

Geoff Nichols (JIRA)

unread,
Nov 12, 2017, 12:14:05 PM11/12/17
to puppe...@googlegroups.com
Geoff Nichols updated an issue
 
Change By: Geoff Nichols
Team: Platform  OS  Core
This message was sent by Atlassian JIRA (v7.0.2#70111-sha1:88534db)
Atlassian logo

Owen Rodabaugh (JIRA)

unread,
Nov 14, 2017, 11:32:03 AM11/14/17
to puppe...@googlegroups.com
Owen Rodabaugh updated an issue
Change By: Owen Rodabaugh
CS Priority: Minor
CS Impact: It appears that there is a workaround for this by turning "NTFS long path support." Unfortunately the issue is on the windows side so short of pulling in resources to turn on this setting by default there doesn't seem to be much we can do other than try to limit path lengths in our modules.
CS Severity: 2 - Annoyance
CS Business Value: 3 - $$$$
CS Frequency: 2 - 5-25% of Customers

Owen Rodabaugh (JIRA)

unread,
Nov 14, 2017, 5:50:03 PM11/14/17
to puppe...@googlegroups.com
Owen Rodabaugh updated an issue
Change By: Owen Rodabaugh
CS Priority: Minor Normal
CS Impact: It appears that there is a workaround for this by turning "NTFS long path support."  in Server 2016.  Unfortunately  the issue  this  is  on the windows side so short of pulling  not an option  in  resources to turn on this setting by default  2008 or 2012.

In those older versions
 there  doesn't seem to be much we can do other than try to limit path lengths in our modules  is no workaround so this prevents functionality for users who have long paths .
CS Severity: 2 3  -  Annoyance  Serious
CS Business Value: 3 4  - $$$$ $

Josh Cooper (Jira)

unread,
Jun 5, 2020, 6:39:03 PM6/5/20
to puppe...@googlegroups.com
This message was sent by Atlassian Jira (v8.5.2#805002-sha1:a66f935)
Atlassian logo
Reply all
Reply to author
Forward
0 new messages