athens
athens copied to clipboard
Document our various caching and persistence levels
"7 layer burrito of the athens cache"
- go cli on a worker caches to the filesystem in the GOPATH/pkg/mod
- in-memory storage
- filesystem storage
- redis storage
- mongo storage
- the go cli on the client end
What is the lifecycle for each layer? If I restart the proxy, what do I expect to see when the cache is full vs. empty? We will see different behavior depending on how it's run (i.e. in a container with ephemeral storage, or on a host with just a single worker, where the go cli disk cache comes into play).
This will help operators (and the curious) know when the caches come into play and what they should expect on cache misses, or where to monitor for storage concerns.
There are two caches that we should definitely document:
- The local cache at
$GOPATH/pkg/mod
- The not-a-cache in Athens (i.e. the database)
And we should mention that you will only be hitting Athens for dependencies if it's not already in your local cache