--- ./source/private_module/arb_kernel/arb_ccdb/arb_ccdb.c	2018-04-10 14:10:38.000000000 +0000
+++ ./source/private_module/arb_kernel/arb_ccdb/arb_ccdb.c.hotpatch	2019-07-12 02:13:52.000000000 +0000
@@ -1671,7 +1671,7 @@
 
     return cpsLinkNum;
 }
-
+extern int32_t arbGetLinkByExternLinkId(uint32_t externLinkId,uint32_t *innerLinkId,uint32_t *workCtrlId);
 extern int32_t arbGenTaskDeleteCpsLink(ARB_CPS_LINK_DB_S *linkDb, void *taskHead);
 static void arbDeleteCpsGetAllLinksFromDBCb(int32_t ret, CCDB_RES res, void* ctx)
 {
@@ -1680,6 +1680,8 @@
     uint32_t rowNum = 0;
     uint32_t idx = 0;
     uint32_t cpsId = INVALID_VALUE32;
+    uint32_t ctrlId = INVALID_VALUE32;
+    uint32_t innerLinkId = INVALID_VALUE32;    
     ARB_MANAGE_S *arbTaskMngs = NULL;
     ARB_CB_WITH_CTX_RET_PFN paramCb = NULL;
     void *paramCtx = NULL;
@@ -1695,16 +1697,12 @@
 
     ARB_PTR_ASSERT_NO_RET(param);
     ARB_PTR_ASSERT_NO_RET(param->cmptCallback);
-
     paramCb = param->cmptCallback;
-    paramCtx = param->ctx;
-    
+    paramCtx = param->ctx;    
     backAddRepAsynNum(REP_ASYNC_ARB_CCDB_OPS, ret, param->asyncFuncStartTime);
     ARB_PUT_FREE_NODE(param, ARB_DB_PARAM_PARTITION);
-
     arbTaskMngs = getArbTaskPara((RSS_TASK_HEAD_S*)paramCtx);
     cpsId = arbTaskMngs->op.cpsInfo.arbCpsCfg.cpsId;
-
     if (CCDB_OK != ret)
     {
         DBG_LogError(ARB_LOG_ID_0179,
@@ -1715,7 +1713,6 @@
         (void)releaseCcdbRes(res);
         return;
     }
-
     retVal = fetchCcdbRowNum(res, &rowNum);
     if (CCDB_OK != retVal)
     {
@@ -1724,7 +1721,6 @@
         (void)releaseCcdbRes(res);
         return;
     }
-
     cpsLinkNum = arbGetCpsLinkNum(res, rowNum, cpsId);
     if (0 == cpsLinkNum)
     {
@@ -1734,8 +1730,6 @@
 
         return;
     }
-
-    // cpsLink > 0, ǰѾһνҪα
     retVal = seekCcdbResRowFirst(res);
     if (CCDB_OK != retVal)
     {
@@ -1744,8 +1738,7 @@
         (void)releaseCcdbRes(res);
         
         return;
-    }
-    
+    }    
     retVal = RETURN_OK;
     arbTaskChildBegin(paramCtx);
     for (idx = 0; idx < rowNum; idx++)
@@ -1755,13 +1748,20 @@
         {
             continue;
         }
-
         (void)REP_memset_s(tmpCpsLink,sizeof(*tmpCpsLink),0,sizeof(*tmpCpsLink));
         arbDbParseCpsLinkRow(ccdbRow, tmpCpsLink);
         if ( cpsId != tmpCpsLink->cpsId )
         {
             continue;
         }
+        retVal=arbGetLinkByExternLinkId(tmpCpsLink->linkId,&innerLinkId,&ctrlId);
+        if( RETURN_OK != retVal )
+        {
+            DBG_LogError(ARB_LOG_ID_NEW, "Change LinkId(%u) to innerId failed.", tmpCpsLink->linkId);
+            break;
+        }
+        tmpCpsLink->linkId=innerLinkId;
+        tmpCpsLink->ctrlId=ctrlId;
     
         retVal = arbGenTaskDeleteCpsLink(tmpCpsLink, paramCtx);
         if ( RETURN_OK != retVal )
