-
Notifications
You must be signed in to change notification settings - Fork 183
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Soft error the precompile workload (#1205)
* soft error precompile workload * Update precompile.jl * Update precompile.jl
- Loading branch information
1 parent
c3bcd19
commit dd4069f
Showing
1 changed file
with
34 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,44 @@ | ||
using PrecompileTools: @setup_workload, @compile_workload | ||
|
||
@setup_workload begin | ||
# These need to be safe to call here and bake into the pkgimage, i.e. called twice. | ||
Connections.__init__() | ||
MultiPartParsing.__init__() | ||
Parsers.__init__() | ||
try | ||
@setup_workload begin | ||
# These need to be safe to call here and bake into the pkgimage, i.e. called twice. | ||
Connections.__init__() | ||
MultiPartParsing.__init__() | ||
Parsers.__init__() | ||
|
||
# Doesn't seem to be needed here, and might not be safe to call twice (here and during runtime) | ||
# ConnectionRequest.__init__() | ||
# Doesn't seem to be needed here, and might not be safe to call twice (here and during runtime) | ||
# ConnectionRequest.__init__() | ||
|
||
gzip_data(data::String) = read(GzipCompressorStream(IOBuffer(data))) | ||
gzip_data(data::String) = read(GzipCompressorStream(IOBuffer(data))) | ||
|
||
# random port in the dynamic/private range (49152–65535) which are are | ||
# least likely to be used by well-known services | ||
_port = 57813 | ||
# random port in the dynamic/private range (49152–65535) which are are | ||
# least likely to be used by well-known services | ||
_port = 57813 | ||
|
||
cert, key = joinpath.(@__DIR__, "../test", "resources", ("cert.pem", "key.pem")) | ||
sslconfig = MbedTLS.SSLConfig(cert, key) | ||
cert, key = joinpath.(@__DIR__, "../test", "resources", ("cert.pem", "key.pem")) | ||
sslconfig = MbedTLS.SSLConfig(cert, key) | ||
|
||
server = HTTP.serve!("0.0.0.0", _port; verbose = -1, listenany=true, sslconfig=sslconfig) do req | ||
HTTP.Response(200, ["Content-Encoding" => "gzip"], gzip_data("dummy response")) | ||
end | ||
# listenany allows changing port if that one is already in use, so check the actual port | ||
_port = HTTP.port(server) | ||
url = "https://localhost:$_port" | ||
|
||
env = ["JULIA_NO_VERIFY_HOSTS" => "localhost", | ||
"JULIA_SSL_NO_VERIFY_HOSTS" => nothing, | ||
"JULIA_ALWAYS_VERIFY_HOSTS" => nothing] | ||
withenv(env...) do | ||
@compile_workload begin | ||
HTTP.get(url); | ||
server = HTTP.serve!("0.0.0.0", _port; verbose = -1, listenany=true, sslconfig=sslconfig) do req | ||
HTTP.Response(200, ["Content-Encoding" => "gzip"], gzip_data("dummy response")) | ||
end | ||
# listenany allows changing port if that one is already in use, so check the actual port | ||
_port = HTTP.port(server) | ||
url = "https://localhost:$_port" | ||
|
||
env = ["JULIA_NO_VERIFY_HOSTS" => "localhost", | ||
"JULIA_SSL_NO_VERIFY_HOSTS" => nothing, | ||
"JULIA_ALWAYS_VERIFY_HOSTS" => nothing] | ||
withenv(env...) do | ||
@compile_workload begin | ||
HTTP.get(url); | ||
end | ||
end | ||
end | ||
|
||
HTTP.forceclose(server) | ||
yield() # needed on 1.9 to avoid some issue where it seems a task doesn't stop before serialization | ||
server = nothing | ||
HTTP.forceclose(server) | ||
yield() # needed on 1.9 to avoid some issue where it seems a task doesn't stop before serialization | ||
server = nothing | ||
end | ||
catch e | ||
@info "Ignoring an error that occurred during the precompilation workload" exception=(e, catch_backtrace()) | ||
end |