Hi everyone
I’ve got a somewhat unique question on how to continue debugging, this is probably mainly interesting for the people who know the in- and outs of the bandit http server.
So the situation is as following: I’m using a Mac with the new ARM chips for development. Recently I wanted to have a closer look at containers using podman and check out if I can use them for local development as well. The idea here was to mount my local elixir project folder into the container, so that I could run my editor etc from my native machine and would only use the container for compiling and controlling the elixir version.
However given that using the native option of podman that runs a Fedora Linux using QEMU is just as slow as using docker with the same setup, I decided to try to use the podman remote feature, where you can basically use any Linux machine that you can access using ssh as your “local” podman backend. And in this case I wanted to use a Fedora server hosted in Paralles, given how fast access to the hosts file system is in Parallels.
Now basically this all works as expected (some more setup is required, but that is not really relevant here), with the notable exception that I cannot serve static files like app.js
at all. If I try to e.g. fetch the file using curl
, even from inside the container, the download never starts and curl gives me an error like this:
curl: (18) transfer closed with 783282 bytes remaining to read
So after some more testing I’ve found out that this only happens on shared folders from my Mac host, but not if I create a new project inside the container itself. In the latter case this works fine.
I’ve now tried to debug this, however I can’t seem to find what kind of debugging I can activate that will help me futher. I’ve tried using the Bandit.Logger.attach_logger()
functions, but those do not give any helpfull output. I’ve also tried to add dbg
statements in various parts of the Bandit
and ThousandIlands
packages, however the last place I could trace was the ThousandIsland.Handler.handle_continuation
function, which seems to return normally. So what ever happens must be happening later.
Can anyone give me a pointer if I can somehow check if mabye Erlang is unable to write the file to the socket, or something like that?
Thanks already for any help, it would be really nice if I could get this to work