diff --git a/integration/v3_watch_test.go b/integration/v3_watch_test.go
index <HASH>..<HASH> 100644
--- a/integration/v3_watch_test.go
+++ b/integration/v3_watch_test.go
@@ -1128,9 +1128,13 @@ func TestV3WatchWithFilter(t *testing.T) {
 }
 
 func TestV3WatchWithPrevKV(t *testing.T) {
+	defer testutil.AfterTest(t)
 	clus := NewClusterV3(t, &ClusterConfig{Size: 1})
 	defer clus.Terminate(t)
 
+	wctx, wcancel := context.WithCancel(context.Background())
+	defer wcancel()
+
 	tests := []struct {
 		key  string
 		end  string
@@ -1150,7 +1154,7 @@ func TestV3WatchWithPrevKV(t *testing.T) {
 			t.Fatal(err)
 		}
 
-		ws, werr := toGRPC(clus.RandClient()).Watch.Watch(context.TODO())
+		ws, werr := toGRPC(clus.RandClient()).Watch.Watch(wctx)
 		if werr != nil {
 			t.Fatal(werr)
 		}
integration: cancel Watch when TestV3WatchWithPrevKV exits

Missing ctx cancel was causing goroutine leaks for the proxy tests.