dusanx
Understanding distillery upgrade process with low level tasks?
Hi,
Based on https://elixir-lang.org/getting-started/mix-otp/task-and-gen-tcp.html example, I am writing small websocket server. No Phoenix or Cowboy, just low level Elixir, Task.Supervisor and :gen_tcp. All the protocols are ready/tested so I have very lean and agile PubSub server without all the overlays.
When I use Distillery, generate 0.1.0, start the server, then generate 0.1.1 and upgrade, all the existing connection tasks are killed, which is not optimal with long living tasks/tcp connections with websocket protocol.
I am aware that GenServer offers some automation during upgrade but I don’t know yet if it kills the processes too and migrates data to new version or does some other magic – didn’t rewrite my connection tasks into GenServer and would love to avoid that, plus I am not sure if that would preserve existing connections.
It would save me some time if some kind soul can answer few questions ![]()
-
Using Distillery upgrade process, if I rewrite existing tasks into GenServers, would they retain existing websocket connections?
-
What happens (low level) during upgrade? Are there messages swishing around or processes just get killed?
-
Is there any chance to keep using tasks (not even Agents) to serve websockets and write them in a way to survive upgrade process? It is perfectly OK for existing tasks to keep running until user closes connection and use new version for all new connections – just no idea how to do it.
-
How do I pack or invoke :observer with production build using Distillery? Having observer to see what’s actually going on during update would help a lot.
Thank you!
Trending in Questions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #elixirconf-us
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









