From 86f6d258493d6d7e49fe2a50b97b0f14343a2d40 Mon Sep 17 00:00:00 2001 From: gazebo Date: Mon, 11 Feb 2019 12:20:36 +0800 Subject: [PATCH] - avoid memory leak in TransferLegacyJdOrder and TransferLegacyElmOrder. --- business/jxstore/tempop/tempop.go | 65 +++++++++++++++++-------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 960df02b2..fa15055cb 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -4,6 +4,7 @@ import ( "fmt" "math" "runtime" + "strings" "time" "git.rosy.net.cn/baseapi/platformapi/jdapi" @@ -289,23 +290,25 @@ func TransferLegacyJdOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError var orderDetailList []*model.GoodsOrderOriginal for _, v := range batchItemList { jdOrder := v.(*legacymodel2.Jdorder) - var detail map[string]interface{} - if err = utils.UnmarshalUseNumber([]byte(jdOrder.Data), &detail); err != nil { - return nil, err - } - resultList := detail["result"].(map[string]interface{})["resultList"].([]interface{}) - if len(resultList) > 0 { - originalData := resultList[0].(map[string]interface{}) - orgCode := originalData["orgCode"].(string) - if orgCode == "320406" { - orderDetail := &model.GoodsOrderOriginal{ - VendorOrderID: jdOrder.VendorOrderID, - VendorID: model.VendorIDJD, - AccountNo: orgCode, - OrderCreatedAt: utils.Str2Time(originalData["orderPurchaseTime"].(string)), - OriginalData: string(utils.MustMarshal(originalData)), + if len(jdOrder.Data) > 10 { + var detail map[string]interface{} + if err = utils.UnmarshalUseNumber([]byte(strings.Replace(strings.Replace(jdOrder.Data, "\n", "", -1), "\r", "", -1)), &detail); err != nil { + return nil, err + } + resultList := detail["result"].(map[string]interface{})["resultList"].([]interface{}) + if len(resultList) > 0 { + originalData := resultList[0].(map[string]interface{}) + orgCode := originalData["orgCode"].(string) + if orgCode == "320406" { + orderDetail := &model.GoodsOrderOriginal{ + VendorOrderID: jdOrder.VendorOrderID, + VendorID: model.VendorIDJD, + AccountNo: orgCode, + OrderCreatedAt: utils.Str2Time(originalData["orderPurchaseTime"].(string)), + OriginalData: string(utils.MustMarshal(originalData)), + } + orderDetailList = append(orderDetailList, orderDetail) } - orderDetailList = append(orderDetailList, orderDetail) } } } @@ -314,7 +317,8 @@ func TransferLegacyJdOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError } return nil, err }, jdOrderList) - rootTask.AddChild(task).Run() + // rootTask.AddChild(task).Run() + task.Run() _, err = task.GetResult(0) runtime.GC() } else { @@ -352,25 +356,28 @@ func TransferLegacyElmOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError var orderDetailList []*model.GoodsOrderOriginal for _, v := range batchItemList { elmOrder := v.(*legacymodel2.Elemeorder) - var detail map[string]interface{} - if err = utils.UnmarshalUseNumber([]byte(elmOrder.Data), &detail); err != nil { - return nil, err + if len(elmOrder.Data) > 10 { + var detail map[string]interface{} + if err = utils.UnmarshalUseNumber([]byte(strings.Replace(strings.Replace(elmOrder.Data, "\n", "", -1), "\r", "", -1)), &detail); err != nil { + return nil, err + } + orderDetail := &model.GoodsOrderOriginal{ + VendorOrderID: elmOrder.Orderid, + VendorID: model.VendorIDELM, + AccountNo: "fakeelm", + OrderCreatedAt: utils.Str2Time(detail["activeAt"].(string)), + OriginalData: elmOrder.Data, + } + orderDetailList = append(orderDetailList, orderDetail) } - orderDetail := &model.GoodsOrderOriginal{ - VendorOrderID: elmOrder.Orderid, - VendorID: model.VendorIDELM, - AccountNo: "fakeelm", - OrderCreatedAt: utils.Str2Time(detail["activeAt"].(string)), - OriginalData: elmOrder.Data, - } - orderDetailList = append(orderDetailList, orderDetail) } if len(orderDetailList) > 0 { err = dao.CreateMultiEntities(db, orderDetailList) } return nil, err }, elmOrderList) - rootTask.AddChild(task).Run() + // rootTask.AddChild(task).Run() + task.Run() _, err = task.GetResult(0) runtime.GC() } else {