It looks like somewhere @session['flash'] is getting set to a
regular hash.  That is causing the error.  FlashHash when explcitly set
then works...

-Tom

On Fri, 16 Jun 2006, Ola Bini defenestrated me:
> Wow, goodie!
> 
> I checked that flash implementation, and it's really strange. I trried to 
> extract it (just taking out FlashHash and FlashNow) and using it from irb 
> in regular C Ruby,
> and both keep and sweep result in infinite recursion. I can't really 
> understand how it works in Rails..
> 
> /O
> 
> At 15:08 2006-06-16, you wrote:
> >  HEH...Well that didn't take long.  StringIO.sync= was expecting
> >the wrong type.  Now the cool part. Cookbook is running using jdbc
> >and webrick!   Well that is if I comment out flash.sweep in flash.rb
> >in actionpack.  I will look at that next.
> >
> >-Tom
> >
> >On Fri, 16 Jun 2006, Thomas E Enebo defenestrated me:
> >
> >>   I added your two patches to the tree where I already have Ola's fixes.
> >> I gave this a run against webrick running rails and we now get an
> >> java exception versus a deadlock, so things look better.  I am home sick
> >> today so I will investigate.  I will be applying Ola's patches today
> >> and I can apply the two you sent if you want.
> >>
> >> Here is the stack trace from webrick+rails on a simple request:
> >> Exception in thread "Ruby Thread19552406" java.lang.AssertionError: 
> >java.lang.IllegalArgumentException: argument type mismatch
> >>
> >>       at 
> >org.jruby.runtime.callback.ReflectionCallback.execute(ReflectionCallback.java:183)
> >>
> >>       at 
> >org.jruby.internal.runtime.methods.CallbackMethod.internalCall(CallbackMethod.java:79)
> >>
> >>       at 
> >org.jruby.internal.runtime.methods.AbstractMethod.call(AbstractMethod.java:51)
> >>
> >>       at org.jruby.RubyObject.callMethod(RubyObject.java:362)
> >>
> >>       at org.jruby.RubyObject.callMethod(RubyObject.java:316)
> >>
> >>       at 
> >org.jruby.evaluator.EvaluateVisitor$CallNodeVisitor.execute(EvaluateVisitor.java:555)
> >>
> >>       at 
> >org.jruby.evaluator.EvaluationState.executeNext(EvaluationState.java:262)
> >>
> >>       at 
> >org.jruby.evaluator.EvaluationState.begin(EvaluationState.java:297)
> >>
> >>       at org.jruby.RubyObject.eval(RubyObject.java:440)
> >>
> >>       at 
> >org.jruby.internal.runtime.methods.DefaultMethod.internalCall(DefaultMethod.java:110)
> >>
> >>       at 
> >org.jruby.internal.runtime.methods.AbstractMethod.call(AbstractMethod.java:51)
> >>
> >>       at org.jruby.RubyObject.callMethod(RubyObject.java:362)
> >>
> >>       at org.jruby.RubyObject.callMethod(RubyObject.java:316)
> >>
> >>       at 
> >org.jruby.evaluator.EvaluateVisitor$CallNodeVisitor.execute(EvaluateVisitor.java:555)
> >>
> >>       at 
> >org.jruby.evaluator.EvaluationState.executeNext(EvaluationState.java:262)
> >>
> >>       at 
> >org.jruby.evaluator.EvaluationState.begin(EvaluationState.java:297)
> >>
> >>       at 
> >org.jruby.internal.runtime.methods.EvaluateCallable.internalCall(EvaluateCallable.java:67)
> >>
> >>       at 
> >org.jruby.internal.runtime.methods.AbstractCallable.call(AbstractCallable.java:64)
> >>
> >>       at org.jruby.runtime.ThreadContext.yield(ThreadContext.java:347)
> >>
> >>       at 
> >org.jruby.evaluator.EvaluateVisitor$Yield2.execute(EvaluateVisitor.java:2020)
> >>
> >>       at 
> >org.jruby.evaluator.EvaluationState.executeNext(EvaluationState.java:262)
> >>
> >>         ...
> >>
> >> On Fri, 16 Jun 2006, Charles O Nutter defenestrated me:
> >>
> >> >
> >> >    So we all know our friend Ola has contributed some great pieces of
> >> >    work over the past several months. As another JRubyist put it, "Ola 
> >is
> >> >    a f'n machine". StringIO, YAML, and Zlib are now mostly Java and 
> >far,
> >> >    far faster than they were. These contributions have made RubyGems 
> >far,
> >> >    far faster. From the original install time on this Opteron 2.6G of
> >> >    almost an hour (sans rdoc, mind you), we get this:
> >> >    real    5m35.341s
> >> >    user    0m36.379s
> >> >    sys     0m5.195s
> >> >    Impressive, by any measure. Ok, so I don't remember whether it was
> >> >    exactly an hour to install before, but it was bloody long enough to
> >> >    hit the drive-in for lunch. Grotesquely slow. Ola's changes alone
> >> >    dropped that time down to comparatively nothing. I went through the
> >> >    pains this evening of applying all his patches, cleaning up 
> >conflicts
> >> >    between them (since I didn't have a complete picture), and tidying 
> >up
> >> >    a few minor things. Then I ran a full Rails install. The time was
> >> >    impressive, no doubt about it. However, something really, really
> >> >    bothered me. In the time between gem download and gem install, the
> >> >    machine was sitting there, doing *nothing*. No network traffic, 0% 
> >CPU
> >> >    utilization. Zippo.
> >> >    Then it hit me.
> >> >    You've all heard the story about the timeout library. net/http calls
> >> >    net/protocol which reads in 1024-byte chunks from the stream with a
> >> >    timeout thread for each one. I cried about this on my blog too, 
> >since
> >> >    it seemed to be the source of a terrible performance problem. It 
> >turns
> >> >    out that once again, Java has already optimized our troubles away, 
> >in
> >> >    this case the cost of spinning up hundreds of threads.
> >> >    Our NIO-based IO handler had a tiny flaw when it came to Socket IO: 
> >it
> >> >    was blocking. That meant that for the last read from the stream, the
> >> >    last few bytes of a gem file, it would sit and wait to fill up
> >> >    net/protocol's 1024-byte buffer. I am no NIO expert, but channels
> >> >    appear to behave somewhat differently when doing File versus Socket
> >> >    IO. At the end of a File, the stream is empty and read(ByteBuffer)
> >> >    will immediately return -1. With a Socket, however, if there are not
> >> >    enough bytes to fill the buffer and the socket is still open, it 
> >will
> >> >    block. Such is the case here. The HTTP get of a gem seems to leave 
> >the
> >> >    channel open. I'm not sure if this is intentional in RubyGems (for
> >> >    retrieving multiple gems) or a bug (potentially in JRuby) but 
> >leaving
> >> >    the Socket in blocking mode resulted in that last chunk of bytes
> >> >    waiting until timeout kicked in.
> >> >    My fix (in the form of a patch to IOHandlerNIO) may or may not be
> >> >    correct; like I said, I'm no NIO expert. However, it seems to work
> >> >    well enough:
> >> >    Attempting local installation of 'rails'
> >> >    Local gem file not found: rails*.gem
> >> >    Attempting remote installation of 'rails'
> >> >    Updating Gem source index for: [1]http://gems.rubyforge.org
> >> >    Successfully installed rails-1.1.2
> >> >    Successfully installed rake-0.7.1
> >> >    Successfully installed activesupport-1.3.1
> >> >    Successfully installed activerecord-1.14.2
> >> >    Successfully installed actionpack-1.12.1
> >> >    Successfully installed actionmailer-1.2.1
> >> >    Successfully installed actionwebservice-1.1.2
> >> >    real    1m3.751s
> >> >    user    0m53.817s
> >> >    sys     0m5.722s
> >> >    For sake of comparison, Ruby installs Rails and its dependencies in
> >> >    about 25 seconds on my system. It's probably safe to say that we're
> >> >    only 2x slower for non-rdoc gem installations, which seems pretty 
> >good
> >> >    to me.
> >> >    The NIO patch alone is attached, as is a complete patch with
> >> >    everything changed on my system, including:
> >> >    - All Ola's stuff (stringio, zlib, and signal)
> >> >    - My unrelated simplifications to Thread.critical= (not as
> >> >    deterministic as before but less likely or unlikely to
> >> >    deadlock...needs a bit more testing)
> >> >    - My NIO fix
> >> >    It will be nice to say that not only have we gotten RubyGems 
> >working,
> >> >    but it's been sped up by perhaps an order of magnitude since we 
> >first
> >> >    started.
> >> >    --
> >> >    Charles Oliver Nutter @ [2]headius.blogspot.com
> >> >    JRuby Developer @ [3]jruby.sourceforge.net
> >> >    Application Architect @ [4]www.ventera.com
> >> >
> >> > References
> >> >
> >> >    1. http://gems.rubyforge.org/
> >> >    2. http://headius.blogspot.com/
> >> >    3. http://jruby.sourceforge.net/
> >> >    4. http://www.ventera.com/
> >>
> >>
> >>
> >>
> >>
> >> > _______________________________________________
> >> > Jruby-devel mailing list
> >> > Jruby-devel@lists.sourceforge.net
> >> > https://lists.sourceforge.net/lists/listinfo/jruby-devel
> >>
> >>
> >> --
> >> + http://www.tc.umn.edu/~enebo +---- mailto:[EMAIL PROTECTED] ----+
> >> | Thomas E Enebo, Protagonist  | "Luck favors the prepared    |
> >> |                              |  mind." -Louis Pasteur       |
> >>
> >>
> >> _______________________________________________
> >> Jruby-devel mailing list
> >> Jruby-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/jruby-devel
> >
> >--
> >+ http://www.tc.umn.edu/~enebo +---- mailto:[EMAIL PROTECTED] ----+
> >| Thomas E Enebo, Protagonist  | "Luck favors the prepared    |
> >|                              |  mind." -Louis Pasteur       |
> >
> >
> >_______________________________________________
> >Jruby-devel mailing list
> >Jruby-devel@lists.sourceforge.net
> >https://lists.sourceforge.net/lists/listinfo/jruby-devel
> 
> 
> 

-- 
+ http://www.tc.umn.edu/~enebo +---- mailto:[EMAIL PROTECTED] ----+
| Thomas E Enebo, Protagonist  | "Luck favors the prepared    |
|                              |  mind." -Louis Pasteur       |


_______________________________________________
Jruby-devel mailing list
Jruby-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jruby-devel

Reply via email to