Hacker News new | ask | show | jobs
by RustyRussell 325 days ago
Andrew Tridgell's KnightCap did this differently: it's a network chess server, and it would dump its data to a file and re-exec. The trick here is that it would keep the (network) fds open for zero downtime. IIRC he used a Perl script called datadumper to gen the code marshal/demarshal the structures.

This has the advantage that reboots can be handled fairly seemlessly too (though there will be reconnections then of).

2 comments

https://man7.org/linux/man-pages/man2/pidfd_getfd.2.html

https://gist.github.com/kentonv/bc7592af98c68ba2738f44369208...

For those curious research "SCM_RIGHTS" (Socket-Level Control Message) and sendmsg/recvmsg

The main disadvantage of this is that most encryption libraries don't support serializing their state.
Eh, you could probably get away with it if you use BearSSL[0]. The only difficulty would be:

    These elements can be allocated anywhere in (writable) memory, e.g.
    heap, data segment or stack. They must not be moved while in use
    (they may contain pointers to each other and to themselves).
Which you could probably get around with by just keeping track of offsets and using mmap

[0]: https://www.bearssl.org/api1.html