get_session (Rack::Session::Memcache)

    # File lib/rack/session/memcache.rb, line 44
          def get_session(env, sid)
            session = @pool.get(sid) if sid
            @mutex.lock if env['rack.multithread']
            unless sid and session
              env['rack.errors'].puts("Session '#{sid.inspect}' not found, initializing...") if $VERBOSE and not sid.nil?
              session = {}
              sid = generate_sid
              ret = @pool.add sid, session
              raise "Session collision on '#{sid.inspect}'" unless /^STORED/ =~ ret
            end
            session.instance_variable_set('@old', {}.merge(session))
            return [sid, session]
          rescue MemCache::MemCacheError, Errno::ECONNREFUSED # MemCache server cannot be contacted
            warn "#{self} is unable to find server."
            warn $!.inspect
            return [ nil, {} ]
          ensure
            @mutex.unlock if env['rack.multithread']
          end