
@public has joined the channel

I’m considering Racket for a web app I’m wanting to build. One question I have is, how do people deploy new versions of a web app that uses continuations. Does a new deploy break existing sessions?

Yup. Any change in the code invalidates all continuations.

Rolling deployments and zero-downtime deployments are, AFAIK, not possible with a continuation-based web server.

Ah I see.

Is there a way to lessen the effect?

I really like the feel of using them.

I don’t know. In general I don’t care for the continuation-based approach, honestly. It doesn’t fit well with the kinds of servers I make.

Ah I see. Thanks for the answer!

If you are running a cluster with a load balancer, and your the continuation portion of your app has a well defined end, you could deploy by starting servers with the new code and have the LB only dispatch new requests to the new hosts. Once all of the sessions running the old code have completed restart them with the new code.

I haven’t done this specifically with the Racket server, but have had to deal with other kinds of server upgrades operationally.