rob05c commented on issue #2199: Add Grove In-Place Upgrades
URL: 
https://github.com/apache/incubator-trafficcontrol/issues/2199#issuecomment-385796896
 
 
   Idea: serialize the cache to a file, using pointers to quickly lock and copy.
   
   So, the cache under the hood is a standard Go map.
   
   The map must be locked while copying. Copying the actual values takes a long 
time, but simply copying the pointers should be fast enough to globally lock 
while we do it.
   
   Currently, Cache Objects aren't changed, they're inserted, and if they're 
modified, a copy is made. This is probably necessary anyway, since concurrent 
requests for the same object may modify concurrently.
   
   As long as we guarantee CacheObj objects in the map are immutable, we can 
copy the pointers quickly, then serialize the actual objects to a file, which 
takes much longer, in a separate thread.
   
   Then, the upgraded binary can start, read the serialized cache to fill its 
own in memory.
   
   The problem with this, is that the cache can then only be half the size of 
memory, since we'll be briefly holding two copies of it.
   
   We really need a way to reuse the same memory, or to move objects out of the 
old and into the new one-at-a-time, while at the same time, making new requests 
for objects go to the right cache.

----------------------------------------------------------------
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