# File lib/rack/session/pool.rb, line 59
59:       def set_session(env, session_id, new_session, options)
60:         @mutex.lock if env['rack.multithread']
61:         session = @pool[session_id]
62:         if options[:renew] or options[:drop]
63:           @pool.delete session_id
64:           return false if options[:drop]
65:           session_id = generate_sid
66:           @pool.store session_id, 0
67:         end
68:         old_session = new_session.instance_variable_get('@old') || {}
69:         session = merge_sessions session_id, old_session, new_session, session
70:         @pool.store session_id, session
71:         return session_id
72:       rescue
73:         warn "#{new_session.inspect} has been lost."
74:         warn $!.inspect
75:       ensure
76:         @mutex.unlock if env['rack.multithread']
77:       end