public
2019-12-24 17:25:32

@public has joined the channel


public
2019-12-24 17:26:52

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?


notjack
2019-12-24 19:01:58

Yup. Any change in the code invalidates all continuations.


notjack
2019-12-24 19:02:58

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


public
2019-12-24 19:03:05

Ah I see.


public
2019-12-24 19:03:54

Is there a way to lessen the effect?


public
2019-12-24 19:04:27

I really like the feel of using them.


notjack
2019-12-24 19:05:52

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.


public
2019-12-24 19:11:06

Ah I see. Thanks for the answer!


samdphillips
2019-12-24 23:55:14

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.


samdphillips
2019-12-24 23:57:17

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