Posted Fri, 09 Mar 2018 23:41:51 GMT in reply to Sönke Ludwig
A web service that we run based on Vibe doesn't work under this new release. It's really hard to repro consistently and it causes GDB itself to hang, so I can't get a backtrace. Here's a description of behavior:
- Application starts as expected
- Makes a few HTTP requests to acquire some initialization data
- Responds very quickly to /status requests (this endpoint makes GET requests to the /status endpoints of the three services that this one depends on)
Using 0.8.3 with no changes:
- Application starts
- Makes a few HTTP requests very slowly. Sometimes the process hangs here.
- Responds, very slowly, to /status requests. After a few successes, hangs during a call to an upstream service. Which service is random.
The HTTP requests that are hanging are all using
Running inside of strace, the application is making regular calls to epoll_wait during the hang. I've let it go for several minutes and it doesn't timeout or otherwise break out of being unresponsive. CPU usage is effectively zero during this time. While which HTTP request will hang is random, it happens very consistently within the first dozen or so.
Altering my dub.sdl back to 0.8.2, running dub upgrade, and rebuilding brings things back to normal.
I'm on Debian Linux 9 and not doing anything crazy, just using
versions "VibeDefaultMain". Apologies for the sparse report, I'm not really sure how to get a good trace at this point.
On Fri, 9 Mar 2018 11:08:13 +0100, Sönke Ludwig wrote:
The deprecation phase of the legacy "vibe-d:core" module starts with
this release by defaulting to the new "vibe-core" package. Additionally,
DMD 2.079.0 is finally supported, and some notable improvements have
been made to the HTTP implementation.
URLRouter in particular has
received memory optimizations (to avoid fragmentation) that can result
in a heavy reduction of memory use.
See the change log for instructions to opt for the legacy vibe-d:core
module in case of any issues with vibe-core.