From 8fcd87a6a588253a771d128310be6835f31a0031 Mon Sep 17 00:00:00 2001
From: Aliaksandr Valialkin <valyala@gmail.com>
Date: Wed, 25 Nov 2020 21:19:43 +0200
Subject: [PATCH] lib/mergeset: help GC by removing refereces to slices in
 inmemoryBlock.Reset

---
 lib/mergeset/encoding.go | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/lib/mergeset/encoding.go b/lib/mergeset/encoding.go
index 3c9561e5e1..9a48a8c02a 100644
--- a/lib/mergeset/encoding.go
+++ b/lib/mergeset/encoding.go
@@ -31,6 +31,12 @@ type inmemoryBlock struct {
 func (ib *inmemoryBlock) Reset() {
 	ib.commonPrefix = ib.commonPrefix[:0]
 	ib.data = ib.data[:0]
+
+	items := ib.items
+	for i := range items {
+		// Remove reference to by slice, so GC could free the byte slice.
+		items[i] = nil
+	}
 	ib.items = ib.items[:0]
 }