luci/gae is a single package that describes all available services, yet each service has its own set of Context keys. This results in several (10+) values being added to Context just for a simple installation of a full luci/gae service set.
One thought is to collapse those into a single struct that is shared between all of the services and gets copied and derived each time a service mutation is applied. This has several benefits:
- Services don't have to look each other up internally. This happens quite a bit when using
info service from datastore, memcache, taskqueue, etc.
- Context is shallower, meaning that a dump will show one
luci/gae entry, making it more useful in general.
- Overhead of
Context lookups is reduced to one lookup per service call.
luci/gaeis a single package that describes all available services, yet each service has its own set ofContextkeys. This results in several (10+) values being added toContextjust for a simple installation of a fullluci/gaeservice set.One thought is to collapse those into a single struct that is shared between all of the services and gets copied and derived each time a service mutation is applied. This has several benefits:
infoservice fromdatastore,memcache,taskqueue, etc.luci/gaeentry, making it more useful in general.Contextlookups is reduced to one lookup per service call.