Browse Source

Merge pull request #10335 from gyuho/release-3.3-patch

[Cherry pick 3.3] grpcproxy: fix memory leak
Gyuho Lee 7 years ago
parent
commit
e6b2f00047
2 changed files with 9 additions and 6 deletions
  1. 2 2
      .travis.yml
  2. 7 4
      proxy/grpcproxy/cache/store.go

+ 2 - 2
.travis.yml

@@ -6,7 +6,7 @@ sudo: required
 services: docker
 
 go:
-- 1.10.4
+- 1.10.7
 
 notifications:
   on_success: never
@@ -23,7 +23,7 @@ env:
 matrix:
   fast_finish: true
   allow_failures:
-  - go: 1.10.4
+  - go: 1.10.7
     env: TARGET=linux-386-unit
   exclude:
   - go: tip

+ 7 - 4
proxy/grpcproxy/cache/store.go

@@ -99,9 +99,12 @@ func (c *cache) Add(req *pb.RangeRequest, resp *pb.RangeResponse) {
 	iv = c.cachedRanges.Find(ivl)
 
 	if iv == nil {
-		c.cachedRanges.Insert(ivl, []string{key})
+		val := map[string]struct{}{key: {}}
+		c.cachedRanges.Insert(ivl, val)
 	} else {
-		iv.Val = append(iv.Val.([]string), key)
+		val := iv.Val.(map[string]struct{})
+		val[key] = struct{}{}
+		iv.Val = val
 	}
 }
 
@@ -141,8 +144,8 @@ func (c *cache) Invalidate(key, endkey []byte) {
 
 	ivs = c.cachedRanges.Stab(ivl)
 	for _, iv := range ivs {
-		keys := iv.Val.([]string)
-		for _, key := range keys {
+		keys := iv.Val.(map[string]struct{})
+		for key := range keys {
 			c.lru.Remove(key)
 		}
 	}