HTTP.get fails on julia 1.11.0-alpha1
Closed this issue · 3 comments
PerezHz commented
Versions:
- Julia 1.11.10-alpha1
- HTTP.jl 1.10.2
- MbedTLS.jl 1.1.9
As reported in PerezHz/HORIZONS.jl#37, we have some code which runs fine on julia1.10, but fails on julia1.11.0-alpha1. We managed to reproduce the issue with the following MWE:
julia> using HTTP
julia> HTTP.get("https://ssd.jpl.nasa.gov/api/horizons.api", query=Dict("COMMAND"=>"1"))
The produced error is:
ERROR: HTTP.RequestError:
HTTP.Request:
HTTP.Messages.Request:
"""
GET /api/horizons.api?COMMAND=1 HTTP/1.1
Host: ssd.jpl.nasa.gov
Accept: */*
User-Agent: HTTP.jl/1.11.0-alpha1
Content-Length: 0
Accept-Encoding: gzip
"""Underlying error:
MethodError: Cannot `convert` an object of type
SubArray{UInt8,1,Memory{UInt8},Tuple{UnitRange{Int64}},true} to an object of type
SubArray{UInt8,1,Vector{UInt8},Tuple{UnitRange{Int64}},true}
The function `convert` exists, but no method is defined for this combination of argument types.
Closest candidates are:
SubArray{T, N, P, I, L}(::Any, ::Any, ::Any, ::Any) where {T, N, P, I, L}
@ Base subarray.jl:19
convert(::Type{T}, ::LinearAlgebra.Factorization) where T<:AbstractArray
@ LinearAlgebra /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/LinearAlgebra/src/factorization.jl:104
convert(::Type{T}, ::T) where T
@ Base Base.jl:126
...
Stacktrace:
[1] (::HTTP.ConnectionRequest.var"#connections#4"{…})(req::HTTP.Messages.Request; proxy::Nothing, socket_type::Type, socket_type_tls::Type, readtimeout::Int64, connect_timeout::Int64, logerrors::Bool, logtag::Nothing, kw::@Kwargs{…})
@ HTTP.ConnectionRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/ConnectionRequest.jl:140
[2] (::Base.var"#103#105"{Base.var"#103#104#106"{…}})(args::HTTP.Messages.Request; kwargs::@Kwargs{iofunction::Nothing, decompress::Nothing, verbose::Int64})
@ Base ./error.jl:298
[3] (::HTTP.RetryRequest.var"#manageretries#3"{…})(req::HTTP.Messages.Request; retry::Bool, retries::Int64, retry_delays::ExponentialBackOff, retry_check::Function, retry_non_idempotent::Bool, kw::@Kwargs{…})
@ HTTP.RetryRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/RetryRequest.jl:75
[4] manageretries
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/RetryRequest.jl:30 [inlined]
[5] (::HTTP.CookieRequest.var"#managecookies#4"{…})(req::HTTP.Messages.Request; cookies::Bool, cookiejar::HTTP.Cookies.CookieJar, kw::@Kwargs{…})
@ HTTP.CookieRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/CookieRequest.jl:42
[6] managecookies
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/CookieRequest.jl:19 [inlined]
[7] (::HTTP.HeadersRequest.var"#defaultheaders#2"{…})(req::HTTP.Messages.Request; iofunction::Nothing, decompress::Nothing, basicauth::Bool, detect_content_type::Bool, canonicalize_headers::Bool, kw::@Kwargs{…})
@ HTTP.HeadersRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/HeadersRequest.jl:71
[8] defaultheaders
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/HeadersRequest.jl:14 [inlined]
[9] (::HTTP.RedirectRequest.var"#redirects#3"{…})(req::HTTP.Messages.Request; redirect::Bool, redirect_limit::Int64, redirect_method::Nothing, forwardheaders::Bool, response_stream::Nothing, kw::@Kwargs{…})
@ HTTP.RedirectRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/RedirectRequest.jl:25
[10] redirects
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/RedirectRequest.jl:14 [inlined]
[11] (::HTTP.MessageRequest.var"#makerequest#3"{…})(method::String, url::URIs.URI, headers::Nothing, body::Vector{…}; copyheaders::Bool, response_stream::Nothing, http_version::HTTP.Strings.HTTPVersion, verbose::Int64, kw::@Kwargs{})
@ HTTP.MessageRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/MessageRequest.jl:35
[12] makerequest
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/MessageRequest.jl:24 [inlined]
[13] request(stack::HTTP.MessageRequest.var"#makerequest#3"{…}, method::String, url::String, h::Nothing, b::Vector{…}, q::Dict{…}; headers::Nothing, body::Vector{…}, query::Dict{…}, kw::@Kwargs{})
@ HTTP ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:457
[14] request(stack::Function, method::String, url::String, h::Nothing, b::Vector{UInt8}, q::Dict{String, String})
@ HTTP ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:455
[15] #request#20
@ ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:315 [inlined]
[16] request (repeats 2 times)
@ ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:313 [inlined]
[17] #get#38
@ ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:518 [inlined]
[18] top-level scope
@ REPL[3]:1
caused by: TaskFailedException
nested task error: MethodError: Cannot `convert` an object of type
SubArray{UInt8,1,Memory{UInt8},Tuple{UnitRange{Int64}},true} to an object of type
SubArray{UInt8,1,Vector{UInt8},Tuple{UnitRange{Int64}},true}
The function `convert` exists, but no method is defined for this combination of argument types.
Closest candidates are:
SubArray{T, N, P, I, L}(::Any, ::Any, ::Any, ::Any) where {T, N, P, I, L}
@ Base subarray.jl:19
convert(::Type{T}, ::LinearAlgebra.Factorization) where T<:AbstractArray
@ LinearAlgebra /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/LinearAlgebra/src/factorization.jl:104
convert(::Type{T}, ::T) where T
@ Base Base.jl:126
...
Stacktrace:
[1] readuntil
@ ~/.julia/packages/HTTP/1EWL3/src/IOExtras.jl:125 [inlined]
[2] readuntil(c::HTTP.Connections.Connection{…}, f::typeof(HTTP.Parsers.find_end_of_header), sizehint::Int64)
@ HTTP.Connections ~/.julia/packages/HTTP/1EWL3/src/Connections.jl:242
[3] readuntil(c::HTTP.Connections.Connection{OpenSSL.SSLStream}, f::typeof(HTTP.Parsers.find_end_of_header))
@ HTTP.Connections ~/.julia/packages/HTTP/1EWL3/src/Connections.jl:238
[4] readheaders(io::HTTP.Connections.Connection{OpenSSL.SSLStream}, message::HTTP.Messages.Response)
@ HTTP.Messages ~/.julia/packages/HTTP/1EWL3/src/Messages.jl:533
[5] startread(http::HTTP.Streams.Stream{HTTP.Messages.Response, HTTP.Connections.Connection{OpenSSL.SSLStream}})
@ HTTP.Streams ~/.julia/packages/HTTP/1EWL3/src/Streams.jl:153
[6] eof
@ ~/.julia/packages/HTTP/1EWL3/src/Streams.jl:186 [inlined]
[7] macro expansion
@ ~/.julia/packages/HTTP/1EWL3/src/Exceptions.jl:19 [inlined]
[8] closeread(http::HTTP.Streams.Stream{HTTP.Messages.Response, HTTP.Connections.Connection{OpenSSL.SSLStream}})
@ HTTP.Streams ~/.julia/packages/HTTP/1EWL3/src/Streams.jl:375
[9] (::HTTP.StreamRequest.var"#3#5"{…})()
@ HTTP.StreamRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/StreamRequest.jl:60
caused by: MethodError: Cannot `convert` an object of type
SubArray{UInt8,1,Memory{UInt8},Tuple{UnitRange{Int64}},true} to an object of type
SubArray{UInt8,1,Vector{UInt8},Tuple{UnitRange{Int64}},true}
The function `convert` exists, but no method is defined for this combination of argument types.
Closest candidates are:
SubArray{T, N, P, I, L}(::Any, ::Any, ::Any, ::Any) where {T, N, P, I, L}
@ Base subarray.jl:19
convert(::Type{T}, ::LinearAlgebra.Factorization) where T<:AbstractArray
@ LinearAlgebra /Applications/Julia-1.11.app/Contents/Resources/julia/share/julia/stdlib/v1.11/LinearAlgebra/src/factorization.jl:104
convert(::Type{T}, ::T) where T
@ Base Base.jl:126
...
Stacktrace:
[1] readuntil
@ ~/.julia/packages/HTTP/1EWL3/src/IOExtras.jl:125 [inlined]
[2] readuntil(c::HTTP.Connections.Connection{…}, f::typeof(HTTP.Parsers.find_end_of_header), sizehint::Int64)
@ HTTP.Connections ~/.julia/packages/HTTP/1EWL3/src/Connections.jl:242
[3] readuntil(c::HTTP.Connections.Connection{OpenSSL.SSLStream}, f::typeof(HTTP.Parsers.find_end_of_header))
@ HTTP.Connections ~/.julia/packages/HTTP/1EWL3/src/Connections.jl:238
[4] readheaders(io::HTTP.Connections.Connection{OpenSSL.SSLStream}, message::HTTP.Messages.Response)
@ HTTP.Messages ~/.julia/packages/HTTP/1EWL3/src/Messages.jl:533
[5] startread(http::HTTP.Streams.Stream{HTTP.Messages.Response, HTTP.Connections.Connection{OpenSSL.SSLStream}})
@ HTTP.Streams ~/.julia/packages/HTTP/1EWL3/src/Streams.jl:153
[6] (::HTTP.StreamRequest.var"#3#5"{…})()
@ HTTP.StreamRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/StreamRequest.jl:51
Stacktrace:
[1] sync_end(c::Channel{Any})
@ Base ./task.jl:459
[2] macro expansion
@ ./task.jl:492 [inlined]
[3] streamlayer(stream::HTTP.Streams.Stream{…}; iofunction::Nothing, decompress::Nothing, logerrors::Bool, logtag::Nothing, timedout::Nothing, kw::@Kwargs{…})
@ HTTP.StreamRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/StreamRequest.jl:34
[4] streamlayer
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/StreamRequest.jl:20 [inlined]
[5] (::HTTP.ExceptionRequest.var"#exceptions#2"{…})(stream::HTTP.Streams.Stream{…}; status_exception::Bool, timedout::Nothing, logerrors::Bool, logtag::Nothing, kw::@Kwargs{…})
@ HTTP.ExceptionRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/ExceptionRequest.jl:14
[6] exceptions
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/ExceptionRequest.jl:13 [inlined]
[7] (::HTTP.TimeoutRequest.var"#timeouts#3"{…})(stream::HTTP.Streams.Stream{…}; readtimeout::Int64, logerrors::Bool, logtag::Nothing, kw::@Kwargs{…})
@ HTTP.TimeoutRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/TimeoutRequest.jl:18
[8] (::HTTP.ConnectionRequest.var"#connections#4"{…})(req::HTTP.Messages.Request; proxy::Nothing, socket_type::Type, socket_type_tls::Type, readtimeout::Int64, connect_timeout::Int64, logerrors::Bool, logtag::Nothing, kw::@Kwargs{…})
@ HTTP.ConnectionRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/ConnectionRequest.jl:119
[9] (::Base.var"#103#105"{Base.var"#103#104#106"{…}})(args::HTTP.Messages.Request; kwargs::@Kwargs{iofunction::Nothing, decompress::Nothing, verbose::Int64})
@ Base ./error.jl:298
[10] (::HTTP.RetryRequest.var"#manageretries#3"{…})(req::HTTP.Messages.Request; retry::Bool, retries::Int64, retry_delays::ExponentialBackOff, retry_check::Function, retry_non_idempotent::Bool, kw::@Kwargs{…})
@ HTTP.RetryRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/RetryRequest.jl:75
[11] manageretries
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/RetryRequest.jl:30 [inlined]
[12] (::HTTP.CookieRequest.var"#managecookies#4"{…})(req::HTTP.Messages.Request; cookies::Bool, cookiejar::HTTP.Cookies.CookieJar, kw::@Kwargs{…})
@ HTTP.CookieRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/CookieRequest.jl:42
[13] managecookies
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/CookieRequest.jl:19 [inlined]
[14] (::HTTP.HeadersRequest.var"#defaultheaders#2"{…})(req::HTTP.Messages.Request; iofunction::Nothing, decompress::Nothing, basicauth::Bool, detect_content_type::Bool, canonicalize_headers::Bool, kw::@Kwargs{…})
@ HTTP.HeadersRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/HeadersRequest.jl:71
[15] defaultheaders
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/HeadersRequest.jl:14 [inlined]
[16] (::HTTP.RedirectRequest.var"#redirects#3"{…})(req::HTTP.Messages.Request; redirect::Bool, redirect_limit::Int64, redirect_method::Nothing, forwardheaders::Bool, response_stream::Nothing, kw::@Kwargs{…})
@ HTTP.RedirectRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/RedirectRequest.jl:25
[17] redirects
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/RedirectRequest.jl:14 [inlined]
[18] (::HTTP.MessageRequest.var"#makerequest#3"{…})(method::String, url::URIs.URI, headers::Nothing, body::Vector{…}; copyheaders::Bool, response_stream::Nothing, http_version::HTTP.Strings.HTTPVersion, verbose::Int64, kw::@Kwargs{})
@ HTTP.MessageRequest ~/.julia/packages/HTTP/1EWL3/src/clientlayers/MessageRequest.jl:35
[19] makerequest
@ ~/.julia/packages/HTTP/1EWL3/src/clientlayers/MessageRequest.jl:24 [inlined]
[20] request(stack::HTTP.MessageRequest.var"#makerequest#3"{…}, method::String, url::String, h::Nothing, b::Vector{…}, q::Dict{…}; headers::Nothing, body::Vector{…}, query::Dict{…}, kw::@Kwargs{})
@ HTTP ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:457
[21] request(stack::Function, method::String, url::String, h::Nothing, b::Vector{UInt8}, q::Dict{String, String})
@ HTTP ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:455
[22] #request#20
@ ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:315 [inlined]
[23] request (repeats 2 times)
@ ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:313 [inlined]
[24] #get#38
@ ~/.julia/packages/HTTP/1EWL3/src/HTTP.jl:518 [inlined]
[25] top-level scope
@ REPL[3]:1
Some type information was truncated. Use `show(err)` to see complete types.
mortenpi commented
X-ref: JuliaLang/julia#53425
PerezHz commented
HTTP.jl v1.10.3 solves this issue, many thanks!