diff --git a/internal/core/src/indexbuilder/index_c.cpp b/internal/core/src/indexbuilder/index_c.cpp
index 43cb596273c6e03ab2d5f34661c820cd29cdffae..e97ea26cc41b3981b37f4515961ba1003a081912 100644
--- a/internal/core/src/indexbuilder/index_c.cpp
+++ b/internal/core/src/indexbuilder/index_c.cpp
@@ -90,6 +90,8 @@ SerializeToSlicedBuffer(CIndex index, CBinary* c_binary) {
     try {
         auto cIndex = (milvus::indexbuilder::IndexWrapper*)index;
         auto binary = cIndex->Serialize();
+        std::cout << "[SerializeToSlicedBuffer] binary data size: " << binary->data.size() << std::endl;
+        std::cout << "[SerializeToSlicedBuffer] binary data[0]: " << binary->data[0] << std::endl;
         *c_binary = binary.release();
         status.error_code = Success;
         status.error_msg = "";
@@ -103,6 +105,8 @@ SerializeToSlicedBuffer(CIndex index, CBinary* c_binary) {
 int64_t
 GetCBinarySize(CBinary c_binary) {
     auto cBinary = (milvus::indexbuilder::IndexWrapper::Binary*)c_binary;
+    std::cout << "[GetCBinarySize] binary data size: " << cBinary->data.size() << std::endl;
+    std::cout << "[GetCBinarySize] binary data[0]: " << cBinary->data[0] << std::endl;
     return cBinary->data.size();
 }
 
@@ -110,12 +114,18 @@ GetCBinarySize(CBinary c_binary) {
 void
 GetCBinaryData(CBinary c_binary, void* data) {
     auto cBinary = (milvus::indexbuilder::IndexWrapper::Binary*)c_binary;
+    std::cout << "[GetCBinaryData] binary data size: " << cBinary->data.size() << std::endl;
+    std::cout << "[GetCBinaryData] binary data[0]: " << cBinary->data[0] << std::endl;
     memcpy(data, cBinary->data.data(), cBinary->data.size());
 }
 
 void
 DeleteCBinary(CBinary c_binary) {
+    std::cout << "[DeleteCBinary] enter here ......" << std::endl;
     auto cBinary = (milvus::indexbuilder::IndexWrapper::Binary*)c_binary;
+    std::cout << "[DeleteCBinary] pointer cast done ........" << std::endl;
+    std::cout << "[DeleteCBinary] binary data size: " << cBinary->data.size() << std::endl;
+    std::cout << "[DeleteCBinary] binary data[0]: " << cBinary->data[0] << std::endl;
     delete cBinary;
 }
 
diff --git a/internal/core/unittest/CMakeLists.txt b/internal/core/unittest/CMakeLists.txt
index 8229c30e4b039ec491d925c0400eb22fda86efd4..bfc06eea7670f1d30cfebf47e7325ea54ec8537c 100644
--- a/internal/core/unittest/CMakeLists.txt
+++ b/internal/core/unittest/CMakeLists.txt
@@ -25,19 +25,19 @@ add_executable(all_tests
         )
 
 # check if memory leak exists in index builder
-# set(INDEX_BUILDER_TEST_FILES
-#         test_index_wrapper.cpp)
-# add_executable(index_builder_test
-#         ${INDEX_BUILDER_TEST_FILES}
-#         )
-# target_link_libraries(index_builder_test
-#         gtest
-#         gtest_main
-#         milvus_segcore
-#         milvus_indexbuilder
-#         log
-#         pthread
-#         )
+set(INDEX_BUILDER_TEST_FILES
+        test_index_wrapper.cpp)
+add_executable(index_builder_test
+        ${INDEX_BUILDER_TEST_FILES}
+        )
+target_link_libraries(index_builder_test
+        gtest
+        gtest_main
+        milvus_segcore
+        milvus_indexbuilder
+        log
+        pthread
+        )
 
 target_link_libraries(all_tests
         gtest
diff --git a/internal/indexnode/index.go b/internal/indexnode/index.go
index c70f05d024e23ebc5b2353446ae6bcc453027788..e677d0ab515cd4bf54924f77622ea0cc56bac72f 100644
--- a/internal/indexnode/index.go
+++ b/internal/indexnode/index.go
@@ -131,9 +131,9 @@ type CIndex struct {
 
 func (index *CIndex) Serialize() ([]*Blob, error) {
 	var cBinary C.CBinary
-	defer C.DeleteCBinary(cBinary)
 
 	status := C.SerializeToSlicedBuffer(index.indexPtr, &cBinary)
+	defer C.DeleteCBinary(cBinary)
 	errorCode := status.error_code
 	if errorCode != 0 {
 		errorMsg := C.GoString(status.error_msg)
diff --git a/internal/indexnode/task.go b/internal/indexnode/task.go
index 34a35035821fe40902796d65aae2379413f8343b..cce59b1c055de5e5e0094a20136919a4f4080289 100644
--- a/internal/indexnode/task.go
+++ b/internal/indexnode/task.go
@@ -233,6 +233,7 @@ func (it *IndexBuildTask) Execute(ctx context.Context) error {
 
 	storageBlobs := getStorageBlobs(blobs)
 	var insertCodec storage.InsertCodec
+	defer insertCodec.Close()
 	partitionID, segmentID, insertData, err2 := insertCodec.Deserialize(storageBlobs)
 	//fmt.Println("IndexBuilder for segmentID,", segmentID)
 	if err2 != nil {