Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IOError: stream is closed or unusable #18

Open
drrmmng opened this issue Mar 19, 2020 · 6 comments
Open

IOError: stream is closed or unusable #18

drrmmng opened this issue Mar 19, 2020 · 6 comments

Comments

@drrmmng
Copy link

drrmmng commented Mar 19, 2020

When running the example app and refreshing it in the browser, I get the following error:

┌ Error: error handling request
│   exception =
│    IOError: stream is closed or unusable
│    Stacktrace:
│     [1] check_open at ./stream.jl:328 [inlined]
│     [2] uv_write_async(::Sockets.TCPSocket, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:961
│     [3] uv_write(::Sockets.TCPSocket, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:924
│     [4] unsafe_write(::Sockets.TCPSocket, ::Ptr{UInt8}, ::UInt64) at ./stream.jl:1007
│     [5] unsafe_write at /home/dario/.julia/packages/HTTP/facW7/src/ConnectionPool.jl:174 [inlined]
│     [6] macro expansion at ./gcutils.jl:91 [inlined]
│     [7] write at ./strings/io.jl:186 [inlined]
│     [8] writeheaders(::HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}, ::HTTP.Messages.Response) at /home/dario/.julia/packages/HTTP/facW7/src/Messages.jl:439
│     [9] startwrite(::HTTP.Streams.Stream{HTTP.Messages.Request,HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at /home/dario/.julia/packages/HTTP/facW7/src/Streams.jl:85
│     [10] handle(::HTTP.Handlers.RequestHandlerFunction{Dashboards.var"#630#631"{Bool,Dash}}, ::HTTP.Streams.Stream{HTTP.Messages.Request,HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}) at /home/dario/.julia/packages/HTTP/facW7/src/Handlers.jl:278
│     [11] #4 at /home/dario/.julia/packages/HTTP/facW7/src/Handlers.jl:345 [inlined]
│     [12] macro expansion at /home/dario/.julia/packages/HTTP/facW7/src/Servers.jl:367 [inlined]
│     [13] (::HTTP.Servers.var"#13#14"{HTTP.Handlers.var"#4#5"{HTTP.Handlers.RequestHandlerFunction{Dashboards.var"#630#631"{Bool,Dash}}},HTTP.ConnectionPool.Transaction{Sockets.TCPSocket},HTTP.Streams.Stream{HTTP.Messages.Request,HTTP.ConnectionPool.Transaction{Sockets.TCPSocket}}})() at ./task.jl:333
└ @ HTTP.Servers ~/.julia/packages/HTTP/facW7/src/Servers.jl:373

It seems like an error with HTTP.jl as seen here JuliaWeb/HTTP.jl#392 but maybe you have an idea @waralex ?

@waralex
Copy link
Owner

waralex commented Mar 19, 2020

Hi @federico can I get the example app where this error occurred? And what version of Julia are you using?
I can 't do anything if I don 't reproduce this error...

@drrmmng
Copy link
Author

drrmmng commented Mar 19, 2020

oh, I meant the example app in the documentation:

import HTTP
using Dashboards

app = Dash("Test app", external_stylesheets = ["https://codepen.io/chriddyp/pen/bWLwgP.css"]) do
    html_div() do
        html_h1("Hello Dashboards"),
        html_div("Dashboards: Julia interface for Dash"),
        dcc_graph(
            id = "example-graph",
            figure = (
                data = [
                    (x = [1, 2, 3], y = [4, 1, 2], type = "bar", name = "SF"),
                    (x = [1, 2, 3], y = [2, 4, 5], type = "bar", name = "Montréal"),
                ],
                layout = (title = "Dash Data Visualization",)
            )
        )
    end
end
handler = make_handler(app, debug = true)
HTTP.serve(handler, HTTP.Sockets.localhost, 8080)

I'm using Julia 1.3.1

@waralex
Copy link
Owner

waralex commented Mar 19, 2020

It does not reproduce on my computer. Can you show me a screenshot from the browser console with network tab when this happens?
In Google Chrome press Command+Option+J (Mac) or Control+Shift+J (Windows, Linux, Chrome OS), navigate to network tab and refresh the page:
Снимок экрана 2020-03-19 в 15 21 31

I'm interesting on time of loading _dash-layout and _dash-dependencies. If it's the timeout, then I try to reproduce that by adding sleep() to server response...

@drrmmng
Copy link
Author

drrmmng commented Mar 19, 2020

I can't reproduce this error with Chromium, only with Firefox.

Chromium recording:
image

Firefox recording:
image

Also, the error is only thrown the first time the page is requested after a change to the code. This makes me think it has something to do with the precompilation of Julia.
Interestingly, when I use Chromium to first load the page, no error is thrown, not even when I load the page with Firefox afterwards.

@waralex
Copy link
Owner

waralex commented Mar 20, 2020

I can't reproduce it yet :(

@drrmmng
Copy link
Author

drrmmng commented Mar 20, 2020

It's probably an issue with HTTP.jl and not Dashboards.jl anyway 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants