Bug #2238

Fileserver under Apache/Mongrel chokes on recursive directories

Added by Derek Whayman about 3 years ago. Updated about 2 years ago.

Status:Rejected Start date:05/11/2009
Priority:High Due date:
Assignee:Lawrence Ludwig % Done:

100%

Category:mongrel
Target version:0.25.0
Affected Puppet version:0.25.0 Branch:
Keywords:
Votes: 1

Description

E.g. manifest:

    $vardir = "/var/lib/puppet"
    file { "/var/lib/puppet/modularclientscripts":
        owner => root, group => root, mode => 0755,
        ensure => directory
    }
    file { scripts_bootloader:
        path => "$vardir/modularclientscripts/bootloader/",
        owner => root, group => root, mode => 0755,
        purge => true,
        ensure => directory, recurse => true,
        ignore => '.svn', force => true,
        source => "puppet:///modules/bootloader/scripts/",
        require => File["/var/lib/puppet/modularclientscripts"]
    }

The scripts directory in the module contains a single file under it.

In the puppetd output:

err: //Node[default]/bootloader::setup/File[scripts_bootloader]: Failed to generate additional resources using 'eval_generate': Server returned 502: Proxy Error
err: Reporting failed: Server returned 502: Proxy Error

In the Apache puppet_access_log:

[Mon May 11 16:44:52 2009] [error] [client 10.125.225.108] proxy: Error reading from remote server returned by /production/file_metadatas/bootloader/scripts
[Mon May 11 16:44:53 2009] [error] [client 10.125.225.108] (70014)End of file found: proxy: error reading status line from remote server 127.0.0.1

Let me know if you need more information.

Best regards, Derek

debug.txt - sample run (191.3 kB) Lawrence Ludwig, 08/31/2009 02:58 pm

debug.txt (182.1 kB) Lawrence Ludwig, 09/01/2009 12:12 am


Related issues

duplicated by Puppet - Bug #2372: eval_generate/to_sym error on checkin with 25b2 host to 2... Duplicate 06/29/2009

History

Updated by Derek Whayman about 3 years ago

  • Affected Puppet version changed from 0.24.8 to 0.25.0

Updated by Luke Kanies about 3 years ago

  • Status changed from Unreviewed to Accepted
  • Target version set to 0.25.0

Updated by Joe McDonagh almost 3 years ago

Still seeing this on b2.

Updated by James Turnbull almost 3 years ago

Was not fixed in beta2 so you’ll still see the error. If it was fixed in beta2 you’d see a commit message and the case would be closed.

Updated by Jordan Curzon almost 3 years ago

  • Category set to mongrel

This url was parsed by Mongrel::HttpRequest.query_parse into a params hash with a nil in it.

/production/file_metadatas/modules/bootloader/scripts?links=manage&ignore=.svn&=&recurse=true
{"recurse"=>"true", nil=>nil, "links"=>"manage", "ignore"=>".svn"}

The bug randomly disappeared before I could track down when the client was generating such a url. Below is the trace on the server side. I have a patch that I’ll send to the list.

/opt/puppet/lib/puppet/network/http/handler.rb:186:in `decode_params'
/opt/puppet/lib/puppet/util/autoload/file_cache.rb:46:in `inject'
/opt/puppet/lib/puppet/network/http/handler.rb:184:in `each'
/opt/puppet/lib/puppet/network/http/handler.rb:184:in `inject'
/opt/puppet/lib/puppet/network/http/handler.rb:184:in `decode_params'
/opt/puppet/lib/puppet/network/http/mongrel/rest.rb:27:in `params'
/opt/puppet/lib/puppet/network/http/handler.rb:43:in `process'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
/opt/puppet/lib/puppet/network/http/mongrel.rb:22:in `listen'
/opt/puppet/lib/puppet/network/server.rb:131:in `listen'
/opt/puppet/lib/puppet/network/server.rb:146:in `start'
/opt/puppet/lib/puppet/daemon.rb:128:in `start'
/opt/puppet/lib/puppet/application/puppetmasterd.rb:96:in `main'
/opt/puppet/lib/puppet/application.rb:226:in `send'
/opt/puppet/lib/puppet/application.rb:226:in `run_command'
/opt/puppet/lib/puppet/application.rb:217:in `run'
/opt/puppet/sbin/puppetmasterd:66
err: undefined method `to_sym' for nil:NilClass

Updated by James Turnbull almost 3 years ago

  • Status changed from Accepted to Closed

Pushed in commit:cdd166244ab55c9f3129bdbffd16bd55bd8ed10e in branch master.

Updated by Jordan Curzon almost 3 years ago

  • Status changed from Closed to Re-opened

It appears that blank? is not always a method of String. Would it be better to find out why String is missing this method in this case or to just deal with it and use “var.nil? || var == ‘’” ?

/opt/puppet/lib/puppet/network/http/handler.rb:185:in `decode_params'
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `inject'
/opt/puppet/lib/puppet/network/http/handler.rb:183:in `each'
/opt/puppet/lib/puppet/network/http/handler.rb:183:in `inject'
/opt/puppet/lib/puppet/network/http/handler.rb:183:in `decode_params'
/opt/puppet/lib/puppet/network/http/mongrel/rest.rb:27:in `params'
/opt/puppet/lib/puppet/network/http/handler.rb:43:in `process'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:in `process_client'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `each'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in `process_client'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `initialize'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `new'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in `run'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `initialize'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `new'
/usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in `run'
/opt/puppet/lib/puppet/network/http/mongrel.rb:22:in `listen'
/opt/puppet/lib/puppet/network/server.rb:131:in `listen'
/opt/puppet/lib/puppet/network/server.rb:146:in `start'
/opt/puppet/lib/puppet/daemon.rb:128:in `start'
/opt/puppet/lib/puppet/application/puppetmasterd.rb:96:in `main'
/opt/puppet/lib/puppet/application.rb:226:in `send'
/opt/puppet/lib/puppet/application.rb:226:in `run_command'
/opt/puppet/lib/puppet/application.rb:217:in `run'
/opt/puppet/sbin/puppetmasterd:66
err: undefined method `blank?' for "facts":String

Updated by Luke Kanies almost 3 years ago

  • Priority changed from Normal to High

This is a blocker for 0.25.

Updated by Jordan Curzon almost 3 years ago

  • Status changed from Re-opened to Closed
  • % Done changed from 0 to 100

Applied in changeset commit:cdd166244ab55c9f3129bdbffd16bd55bd8ed10e.

Updated by Jordan Curzon almost 3 years ago

  • Status changed from Closed to Re-opened
  • % Done changed from 100 to 0

Jordan Curzon wrote:

Applied in changeset commit:cdd166244ab55c9f3129bdbffd16bd55bd8ed10e.

I didn’t make this change. I didn’t touch the ticket. Do you know why it automatically closed it in my name?

Updated by James Turnbull almost 3 years ago

It’s an automatic feature when commits are added to the Repo. The previous commit is assumed to have fixed the issue. The commit is in your name so it closed it in your name.

Updated by Luke Kanies almost 3 years ago

  • Status changed from Re-opened to Accepted

Again, isn’t this actually done? It looks like James merged the code, which should imply the ticket is fixed, right?

Updated by Jordan Curzon almost 3 years ago

  • Status changed from Accepted to Closed
  • % Done changed from 0 to 100

Luke Kanies wrote:

Again, isn’t this actually done? It looks like James merged the code, which should imply the ticket is fixed, right?

It is, my bad for reopening it. I missed James merging my second patch into master. commit:46112daf979c71fb004d51289096ae37561d23bb was the final fix.

Updated by Lawrence Ludwig over 2 years ago

  • File debug.txt added
  • Status changed from Closed to Re-opened

If this is fixed in 0.25 RC 1 it is still occurring.

Attached is output from a sample run. Passenger is used on the puppetmaster and 0.25 RC1 is on both client and server.

Updated by Lawrence Ludwig over 2 years ago

Here is new debug output with —color false

Based upon an IM discussion with Luke the bug may not be related.

Updated by Markus Roberts over 2 years ago

  • Status changed from Re-opened to Needs More Information
  • Assignee set to Lawrence Ludwig

Larry —

I’m not seeing any connection between the log you posted and the original bug. Could you either clarify the relationship between them or open a new ticket with a clear description of the problem you are seeing and clean up and close this one? Thanks.

Updated by Luke Kanies over 2 years ago

  • Status changed from Needs More Information to Rejected

No one can seem to reproduce this, so I’m assuming it was run with an older server-side.

Updated by Dis Connect about 2 years ago

I’m having the issue unfortunately.

err: //apt/Modules_dir[apt]/File[/var/lib/puppet/modules/apt]: Failed to generate additional resources using ‘eval_generate’: Error 502 on SERVER: <!DOCTYPE HTML PUBLIC “–//IETF//DTD HTML 2.0//EN”> 502 Proxy Error

Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /production/file_metadatas/apt/modules_dir.

Reason: Corrupt status line returned by remote server: HTTP/1.1 404 Could not find instances in file_metadata with '{:ip=>" (truncated, I can produce the whole thing if needed but I'll have to anonymize it)

Updated by Joe McDonagh about 2 years ago

Yikes, this ticket turned into quite the cluster. I’m on .25.4 now with the same setup I tried with .25.0 so one of the commits in this ticket fixed that issue. I recommend you file a new ticket.

Also available in: Atom PDF