| Index: impl/prod/info.go
 | 
| diff --git a/impl/prod/info.go b/impl/prod/info.go
 | 
| index c860bc0095bb03138b01a7f74981b5bdce385555..f513f3b04458cbc70720058561634d0b532a34da 100644
 | 
| --- a/impl/prod/info.go
 | 
| +++ b/impl/prod/info.go
 | 
| @@ -12,9 +12,15 @@ import (
 | 
|  	"google.golang.org/appengine"
 | 
|  )
 | 
|  
 | 
| +type key int
 | 
| +
 | 
| +var namespaceCopyKey key
 | 
| +
 | 
|  // useGI adds a gae.GlobalInfo implementation to context, accessible
 | 
|  // by gae.GetGI(c)
 | 
|  func useGI(c context.Context) context.Context {
 | 
| +	// TODO(iannucci): make a better way to get the initial namespace?
 | 
| +	c = context.WithValue(c, namespaceCopyKey, "")
 | 
|  	return info.SetFactory(c, func(ci context.Context) info.Interface {
 | 
|  		return giImpl{ci}
 | 
|  	})
 | 
| @@ -28,6 +34,9 @@ func (g giImpl) AccessToken(scopes ...string) (token string, expiry time.Time, e
 | 
|  func (g giImpl) AppID() string {
 | 
|  	return appengine.AppID(g)
 | 
|  }
 | 
| +func (g giImpl) GetNamespace() string {
 | 
| +	return g.Value(namespaceCopyKey).(string)
 | 
| +}
 | 
|  func (g giImpl) Datacenter() string {
 | 
|  	return appengine.Datacenter(g)
 | 
|  }
 | 
| @@ -53,7 +62,11 @@ func (g giImpl) ModuleName() (name string) {
 | 
|  	return appengine.ModuleName(g)
 | 
|  }
 | 
|  func (g giImpl) Namespace(namespace string) (context.Context, error) {
 | 
| -	return appengine.Namespace(g, namespace)
 | 
| +	c, err := appengine.Namespace(g, namespace)
 | 
| +	if err != nil {
 | 
| +		return c, err
 | 
| +	}
 | 
| +	return context.WithValue(c, namespaceCopyKey, namespace), nil
 | 
|  }
 | 
|  func (g giImpl) PublicCertificates() ([]info.Certificate, error) {
 | 
|  	certs, err := appengine.PublicCertificates(g)
 | 
| 
 |