5 ms·
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
by RustyRussell 1y 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).
- sitkack 1y agohttps://man7.org/linux/man-pages/man2/pidfd_getfd.2.html https://man7.org/linux/man-pages/man2/pidfd_getfd.2.html https://gist.github.com/kentonv/bc7592af98c68ba2738f4436920868dc https://gist.github.com/kentonv/bc7592af98c68ba2738f44369208... For those curious research "SCM_RIGHTS" (Socket-Level Control Message) and sendmsg/recvmsg
- o11c 1y agoThe main disadvantage of this is that most encryption libraries don't support serializing their state.
- fao_ 1y agoEh, 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 https://www.bearssl.org/api1.html