rob05c opened a new issue #2199: Add Grove In-Place Upgrades
URL: https://github.com/apache/incubator-trafficcontrol/issues/2199
 
 
   In-place upgrades would be a great feature, to continue serving clients, and 
keep the same cache, without dropping connections or cached content.
   
   The two biggest requirements of this are setting the socket option on the 
serving port to allow multiple processes to bind (SO_REUSEPORT), and somehow 
transferring the cache.
   
   To reuse the port, the socket option could be manually set, or via a library 
like https://github.com/kavu/go_reuseport . We'll also probably need a script 
to read the log from the new binary, and once it indicates it's accepting 
connections, then terminate the old.
   
   To transfer the cache, there are several methods we could use. We could look 
into operating system shared memory. That's likely to be faster, but painful in 
Go, figuring out how to map allocated shared memory to a Go object, or 
alternatively using Cgo and writing the object in C. We could also create a way 
to signal the running cache to serialize to disk, and make the new binary 
populate its cache from the serialized file before startup.
   
   This isn't a high priority at the moment, this case mostly exists to 
document the idea right now.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to