RejectedSoftware Forums

Sign up

vibe.d 0.8.3 released

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.

Change log:
https://vibed.org/blog/posts/vibe-release-0.8.3

DUB package:
https://code.dlang.org/packages/vibe-d/0.8.3

Re: vibe.d 0.8.3 released

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:

Using 0.8.2:

  • 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 requestHTTP.

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.

Change log:
https://vibed.org/blog/posts/vibe-release-0.8.3

DUB package:
https://code.dlang.org/packages/vibe-d/0.8.3

Re: vibe.d 0.8.3 released

On Fri, 09 Mar 2018 23:41:51 GMT, Justin Whear wrote:

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:

Using 0.8.2:

  • 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 requestHTTP.

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.

I'll try to investigate this directly. It's possible that this is related to the issues that occurred on code.dlang.org when it got upgraded to 0.8.3/vibe-core, although the issues there appeared only after a few thousand requests.

BTW, can you try to switch to libevent to see whether the issue is within vibe-core or vibe.d? (described at the end of http://vibed.org/blog/posts/vibe-release-0.8.3)

So far, there is one known issue with a more specific code location that may be related: vibe-core#69 - I'll have a look at that ASAP

Re: vibe.d 0.8.3 released

Using

dependency "vibe-d" version="0.8.3"
subConfiguration "vibe-d:core" "libevent"

causes everything to work normally again.

On Sat, 10 Mar 2018 09:28:28 GMT, Sönke Ludwig wrote:

BTW, can you try to switch to libevent to see whether the issue is within vibe-core or vibe.d? (described at the end of http://vibed.org/blog/posts/vibe-release-0.8.3)