When trying to pluginsync with default parameters, current HEAD ([8eecbe54c96cec0de492e7ae77211637b65057e8]) puppetmaster fails with this trace:
debug: mount[plugins]: Listing /plugins for ic.black.co.at
./lib/puppet/network/handler/fileserver.rb:797:in `join'
./lib/puppet/network/handler/fileserver.rb:797:in `file_path'
./lib/puppet/network/handler/fileserver.rb:807:in `reclist'
./lib/puppet/network/handler/fileserver.rb:730:in `list'
./lib/puppet/network/handler/fileserver.rb:152:in `list'
/usr/share/rails/activerecord/lib/../../activesupport/lib/active_support/dependencies.rb:147:in `to_proc'
./lib/puppet/network/xmlrpc/processor.rb:52:in `call'
./lib/puppet/network/xmlrpc/processor.rb:52:in `protect_service'
./lib/puppet/network/xmlrpc/processor.rb:85:in `setup_processor'
/usr/lib/ruby/1.8/xmlrpc/server.rb:336:in `call'
/usr/lib/ruby/1.8/xmlrpc/server.rb:336:in `dispatch'
/usr/lib/ruby/1.8/xmlrpc/server.rb:323:in `each'
/usr/lib/ruby/1.8/xmlrpc/server.rb:323:in `dispatch'
/usr/lib/ruby/1.8/xmlrpc/server.rb:366:in `call_method'
/usr/lib/ruby/1.8/xmlrpc/server.rb:378:in `handle'
./lib/puppet/network/xmlrpc/processor.rb:44:in `process'
./lib/puppet/network/xmlrpc/webrick_servlet.rb:68:in `service'
/usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
/usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
/usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
/usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
/usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
/usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
/usr/lib/ruby/1.8/webrick/server.rb:82:in `start'
./lib/puppet.rb:336:in `start'
./lib/puppet.rb:187:in `newthread'
./lib/puppet.rb:186:in `initialize'
./lib/puppet.rb:186:in `new'
./lib/puppet.rb:186:in `newthread'
./lib/puppet.rb:334:in `start'
./lib/puppet.rb:333:in `each'
./lib/puppet.rb:333:in `start'
./bin/puppetmasterd:281
err: Could not call: can't convert nil into String
I have prodded around the PluginMount class and I think the basic problem is that the data structure returned by Mount.list is *beep*. This amongst other things causes relpath = abspath.sub(%r{^#{basepath}}, '') in lib/puppet/network/handler/fileserver.rb:PluginMount:reclist() to not work in all cases, especially when the basepath changes from one module to the next.
I have created a little patch that cleans up the Plugin Mount? class by overriding list instead of reclist and calling the original reclist for each module in turn. This surely needs more love to remove duplicates, but it does work on my puppetmaster now. Please find the patch in the rest/fix-plugins-mount branch of my repo at git://git.black.co.at/puppet-bugfixes