Re: Weird "session-bug" when using multiple calls

Frederick Cheung
Tue, 26 Feb 2008 17:04:23 -0000

On 26 Feb 2008, at 16:50, cubiqsys-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
wrote:

>
> Hi!
>
> Can someone understand why this happens?
>
Yes - I ran into this and wrote it up a while back:
http://www.texperts.com/2007/05/01/race-conditions-in-rails-sessions-and-how-to-fix-them/

Fred
> http://pastebin.com/mde5f1b7
>
> -------
>
> #controller
> class StartController < ApplicationController
>        append_before_filter :get_page_settings
>        def get_page_settings()
>                session[:testlist] ||= Hash.new
>        end
>
>        def fillsession
>                render :update do |page|
>                        page.alert(session[:testlist].inspect)
>                        session[:testlist]["ken"] =
"man"
>                        session[:testlist]["barbie"] =
"woman"
>                        page.alert(session[:testlist].inspect)
>                end
>        end
>
>        def printstart
>                render :partial => "startnav"
>        end
> end
>
> #index.rhtml
>
>
>        new
Ajax.Updater(''startnav'',''/start/printstart'');
>
>
>
> <%=link_to_remote("Fill session", :url => { :action =>
> "fillsession" })
> %>
>
> #_startnav.rhtml
> <% sleep(5); %>
> Hello World!
>
> #1. I go to start/index
> #2. The printstart trigger but starts to sleep
> #3. Meanwhile I push the "Fill session"-link, which first alerts
an
> empty Hash, then {"barbie"=>"woman",
"ken"=>"man"}
> #4. The sleep is over and Hello World! displays
> #5. I push the "Fill session"-link again. It should now alert
> {"barbie"=>"woman",
"ken"=>"man"} two times, but instead the session
> is empty and alerts an empty hash the first time :( Why?
>
>
> --~--~---------~--~----~------------~-------~--~----~
> You received this message because you are subscribed to the Google
> Groups "Ruby on Rails: Talk" group.
> To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
> -~----------~----~----~----~------~----~------~--~---
>