- avoid memory leak in TransferLegacyJdOrder and TransferLegacyElmOrder.

This commit is contained in:
gazebo
2019-02-11 12:20:36 +08:00
parent dff3bf8316
commit 86f6d25849

View File

@@ -4,6 +4,7 @@ import (
"fmt" "fmt"
"math" "math"
"runtime" "runtime"
"strings"
"time" "time"
"git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/platformapi/jdapi"
@@ -289,23 +290,25 @@ func TransferLegacyJdOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError
var orderDetailList []*model.GoodsOrderOriginal var orderDetailList []*model.GoodsOrderOriginal
for _, v := range batchItemList { for _, v := range batchItemList {
jdOrder := v.(*legacymodel2.Jdorder) jdOrder := v.(*legacymodel2.Jdorder)
var detail map[string]interface{} if len(jdOrder.Data) > 10 {
if err = utils.UnmarshalUseNumber([]byte(jdOrder.Data), &detail); err != nil { var detail map[string]interface{}
return nil, err 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 { resultList := detail["result"].(map[string]interface{})["resultList"].([]interface{})
originalData := resultList[0].(map[string]interface{}) if len(resultList) > 0 {
orgCode := originalData["orgCode"].(string) originalData := resultList[0].(map[string]interface{})
if orgCode == "320406" { orgCode := originalData["orgCode"].(string)
orderDetail := &model.GoodsOrderOriginal{ if orgCode == "320406" {
VendorOrderID: jdOrder.VendorOrderID, orderDetail := &model.GoodsOrderOriginal{
VendorID: model.VendorIDJD, VendorOrderID: jdOrder.VendorOrderID,
AccountNo: orgCode, VendorID: model.VendorIDJD,
OrderCreatedAt: utils.Str2Time(originalData["orderPurchaseTime"].(string)), AccountNo: orgCode,
OriginalData: string(utils.MustMarshal(originalData)), 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 return nil, err
}, jdOrderList) }, jdOrderList)
rootTask.AddChild(task).Run() // rootTask.AddChild(task).Run()
task.Run()
_, err = task.GetResult(0) _, err = task.GetResult(0)
runtime.GC() runtime.GC()
} else { } else {
@@ -352,25 +356,28 @@ func TransferLegacyElmOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError
var orderDetailList []*model.GoodsOrderOriginal var orderDetailList []*model.GoodsOrderOriginal
for _, v := range batchItemList { for _, v := range batchItemList {
elmOrder := v.(*legacymodel2.Elemeorder) elmOrder := v.(*legacymodel2.Elemeorder)
var detail map[string]interface{} if len(elmOrder.Data) > 10 {
if err = utils.UnmarshalUseNumber([]byte(elmOrder.Data), &detail); err != nil { var detail map[string]interface{}
return nil, err 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 { if len(orderDetailList) > 0 {
err = dao.CreateMultiEntities(db, orderDetailList) err = dao.CreateMultiEntities(db, orderDetailList)
} }
return nil, err return nil, err
}, elmOrderList) }, elmOrderList)
rootTask.AddChild(task).Run() // rootTask.AddChild(task).Run()
task.Run()
_, err = task.GetResult(0) _, err = task.GetResult(0)
runtime.GC() runtime.GC()
} else { } else {