Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: impl/prod/info.go

Issue 1490243004: Make appengine connection explicitly owned by impl/prod. (Closed) Base URL: https://github.com/luci/gae.git@master
Patch Set: fix other services too Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: impl/prod/info.go
diff --git a/impl/prod/info.go b/impl/prod/info.go
index 8611c9095e8f707681211004fd9ddf07de0eaf51..f1235585e3e26ae11c52c4d75007ca22d855224c 100644
--- a/impl/prod/info.go
+++ b/impl/prod/info.go
@@ -13,42 +13,41 @@ import (
"google.golang.org/appengine/datastore"
)
-type key int
-
-var probeCacheKey key
-
// useGI adds a gae.GlobalInfo implementation to context, accessible
// by gae.GetGI(c)
-func useGI(c context.Context) context.Context {
- probeCache := getProbeCache(c)
+func useGI(usrCtx context.Context) context.Context {
+ probeCache := getProbeCache(usrCtx)
if probeCache == nil {
- c = withProbeCache(c, probe(c))
+ usrCtx = withProbeCache(usrCtx, probe(AEContext(usrCtx)))
}
- return info.SetFactory(c, func(ci context.Context) info.Interface {
- return giImpl{ci}
+ return info.SetFactory(usrCtx, func(ci context.Context) info.Interface {
+ return giImpl{ci, AEContext(ci)}
})
}
-type giImpl struct{ context.Context }
+type giImpl struct {
+ usrCtx context.Context
+ aeCtx context.Context
+}
func (g giImpl) AccessToken(scopes ...string) (token string, expiry time.Time, err error) {
- return appengine.AccessToken(g, scopes...)
+ return appengine.AccessToken(g.aeCtx, scopes...)
}
func (g giImpl) AppID() string {
- return appengine.AppID(g)
+ return appengine.AppID(g.aeCtx)
}
func (g giImpl) FullyQualifiedAppID() string {
- return getProbeCache(g).fqaid
+ return getProbeCache(g.usrCtx).fqaid
}
func (g giImpl) GetNamespace() string {
- return getProbeCache(g).namespace
+ return getProbeCache(g.usrCtx).namespace
}
func (g giImpl) Datacenter() string {
- return appengine.Datacenter(g)
+ return appengine.Datacenter(g.aeCtx)
}
func (g giImpl) DefaultVersionHostname() string {
- return appengine.DefaultVersionHostname(g)
+ return appengine.DefaultVersionHostname(g.aeCtx)
}
func (g giImpl) InstanceID() string {
return appengine.InstanceID()
@@ -63,22 +62,23 @@ func (g giImpl) IsTimeoutError(err error) bool {
return appengine.IsTimeoutError(err)
}
func (g giImpl) ModuleHostname(module, version, instance string) (string, error) {
- return appengine.ModuleHostname(g, module, version, instance)
+ return appengine.ModuleHostname(g.aeCtx, module, version, instance)
}
func (g giImpl) ModuleName() (name string) {
- return appengine.ModuleName(g)
+ return appengine.ModuleName(g.aeCtx)
}
func (g giImpl) Namespace(namespace string) (context.Context, error) {
- c, err := appengine.Namespace(g, namespace)
+ aeCtx, err := appengine.Namespace(g.aeCtx, namespace)
if err != nil {
- return c, err
+ return g.usrCtx, err
}
- pc := *getProbeCache(g)
+ usrCtx := context.WithValue(g.usrCtx, prodContextKey, aeCtx)
+ pc := *getProbeCache(usrCtx)
pc.namespace = namespace
- return withProbeCache(c, &pc), nil
+ return withProbeCache(usrCtx, &pc), nil
}
func (g giImpl) PublicCertificates() ([]info.Certificate, error) {
- certs, err := appengine.PublicCertificates(g)
+ certs, err := appengine.PublicCertificates(g.aeCtx)
if err != nil {
return nil, err
}
@@ -89,19 +89,19 @@ func (g giImpl) PublicCertificates() ([]info.Certificate, error) {
return ret, nil
}
func (g giImpl) RequestID() string {
- return appengine.RequestID(g)
+ return appengine.RequestID(g.aeCtx)
}
func (g giImpl) ServerSoftware() string {
return appengine.ServerSoftware()
}
func (g giImpl) ServiceAccount() (string, error) {
- return appengine.ServiceAccount(g)
+ return appengine.ServiceAccount(g.aeCtx)
}
func (g giImpl) SignBytes(bytes []byte) (keyName string, signature []byte, err error) {
- return appengine.SignBytes(g, bytes)
+ return appengine.SignBytes(g.aeCtx, bytes)
}
func (g giImpl) VersionID() string {
- return appengine.VersionID(g)
+ return appengine.VersionID(g.aeCtx)
}
type infoProbeCache struct {
@@ -109,8 +109,8 @@ type infoProbeCache struct {
fqaid string
}
-func probe(c context.Context) *infoProbeCache {
- probeKey := datastore.NewKey(c, "Kind", "id", 0, nil)
+func probe(aeCtx context.Context) *infoProbeCache {
+ probeKey := datastore.NewKey(aeCtx, "Kind", "id", 0, nil)
return &infoProbeCache{
namespace: probeKey.Namespace(),
fqaid: probeKey.AppID(),

Powered by Google App Engine
This is Rietveld 408576698