playground: differentiate cache key based on client JS version
Don't share a cache namespace between clients wanting vet (new) and
not wanting vet (old).
This was causing issues like:
https://github.com/golang/go/issues/31944#issuecomment-493094932
And unrelated: a README deploy fix, broken from my earlier Makefile
cleanup.
Change-Id: Ibed7f91c739ac65e33ee8d73eed066a7a81f938c
Reviewed-on: https://go-review.googlesource.com/c/playground/+/177617
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Andrew Bonventre <andybons@golang.org>
diff --git a/README.md b/README.md
index 6b8d71c..fe6ac19 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@
```bash
make docker
-docker tag playground:latest gcr.io/golang-org/playground:latest
+docker tag golang/playground:latest gcr.io/golang-org/playground:latest
docker push gcr.io/golang-org/playground:latest
gcloud --project=golang-org --account=you@google.com app deploy app.yaml --image-url=gcr.io/golang-org/playground:latest
```
diff --git a/sandbox.go b/sandbox.go
index 2050832..f43eb07 100644
--- a/sandbox.go
+++ b/sandbox.go
@@ -74,6 +74,7 @@
// The handler returned supports Cross-Origin Resource Sharing (CORS) from any domain.
func (s *server) commandHandler(cachePrefix string, cmdFunc func(*request) (*response, error)) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
+ cachePrefix := cachePrefix // so we can modify it below
w.Header().Set("Access-Control-Allow-Origin", "*")
if r.Method == "OPTIONS" {
// This is likely a pre-flight CORS request.
@@ -92,6 +93,10 @@
return
}
+ if req.WithVet {
+ cachePrefix += "_vet" // "prog" -> "prog_vet"
+ }
+
resp := &response{}
key := cacheKey(cachePrefix, req.Body)
if err := s.cache.Get(key, resp); err != nil {