On Sat, Mar 20, 2010 at 3:45 AM, Brice Figureau
<[email protected]> wrote:
> On 20/03/10 02:51, Nigel Kersten wrote:
>> So this seemed worth another thread given the significant progress...
>> just about all done by Brice as usual.... :)
>>
>> With jruby 1.4.0 and jetty-rackup from
>> http://github.com/geekq/jetty-rackup and a simple config.ru file that
>> looks like:
>
> I'm using without issue:
> jruby 1.5.0.dev (ruby 1.8.7 patchlevel 174) (2010-03-08 1cc36d4)
>
>> -----------------
>> $0 = "puppetmasterd"
>> require 'puppet'
>>
>> ARGV << "--verbose"
>> #ARGV << "--debug"
>> #ARGV << "--trace"
>>  # I have a special config file for my servers
>> ARGV << "--config" << "/etc/puppet/puppetmasterd.conf"
>> ARGV << "--no-daemonize"
>> ARGV << "--user" << "puppet"
>> ARGV << "--no-ca"
>>
>> ARGV << "--rack"
>> require 'puppet/application/puppetmasterd'
>> # we're usually running inside a Rack::Builder.new {} block,
>> # therefore we need to call run *here*.
>> run Puppet::Application[:puppetmasterd].run
>> -----------------
>>
>> then this little modification to jetty-rackup
>> -----------------
>> jetty = org.mortbay.jetty.Server.new options[:Port]
>> # next 3 lines are new
>> jetty.get_connectors.each do |c|
>>   c.set_header_buffer_size 8192
>> end
>> -----------------
>
> I was about to send you this one :-) but you figured out it.
>
>> and we have something that almost works.
>>
>> err: Could not retrieve catalog: Uncaught exception fork is unsafe and
>> disabled by default on JRuby in method puppetmaster.getconfig
>
> It's strange I don't get that.
>
> Maybe we could rewrite Puppet::Util#execute for jruby to use the JVM
> execute instead of forking.
>
>> I've enabled forking.... -J-Djruby.fork.enabled=true and crossed my
>> fingers... oh look at all this...
>>
>> WARNING: fork is highly unlikely to be safe or stable on the JVM. Have fun!
>> WARNING: fork is highly unlikely to be safe or stable on the JVM. Have fun!
>> WARNING: fork is highly unlikely to be safe or stable on the JVM. Have fun!
>>
>> and we blow up earlier than we did before...  Tried the latest HEAD,
>> it was completely broken, so reverted to a few commits earlier, and
>> made some progress... but then the actual forking looks to fail.
>>
>> info: Autoloaded module base
>> debug: Puppet::Type::Package::ProviderRpm: Executing '/usr/bin/rpm --version'
>> Could not autoload rpm: No child processes - No child processes
>
> OK, in fact looking harder, I have this call to execute, but it fails in
> my JRuby version without impacting the compilation itself.
>
> In fact the issue comes from this code from the rpm provider:
>    if command('rpm')
>        confine :true => begin
>                rpm('--version')
>           rescue Puppet::ExecutionFailure
>               false
>           else
>               true
>           end
>    end
>
> This code is executed because each type when compiling is asked if it's
> a builtin type, which in turn autoload each provider, which in turn
> executes such "global" code (ie checking confine).
> I don't think it is necessary to autoload the providers (type should be
> enough for the master, isn't it?), but I'm afraid it isn't possible.

So when I thought about this more, I got more confused. I really
thought providers were pretty much ignored by the server. This seems
quite undesirable to have any of this come into play at all on the
server.

I take it you're saying that it isn't possible to just autoload the
type without the provider?

>
> Anyway if you checkout jruby 1cc36d4 and use the default option you get
> a nice stack trace but no failure of the compilation :-)

ahah ;) I'll give that a try.

>
>> It looks like we only fork in three places in Puppet for what it's worth.
>
> Yes, it's:
>  - when daemonizing which you and I are not doing
>  - when executing (or generate)
>  - in puppetrun
>
> I think execute should be rewritten to use the JVM Runtime.exe or
> ProcessBuilder for JRuby, instead of forking. I'll see if I can come
> with a patch later in the week-end.

I was thinking the same thing, I'll have a poke around too.



> --
> Brice Figureau
> My Blog: http://www.masterzen.fr/
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Puppet Developers" 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-dev?hl=en.
>
>



-- 
nigel

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" 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-dev?hl=en.

Reply via email to