--- ./source/private_module/rep_rm/db/reprm_db.c	2018-02-09 13:47:03.000000000 +0000
+++ ./source/private_module/rep_rm/db/reprm_db.c.hotpatch	2019-03-20 09:22:17.000000000 +0000
@@ -3862,3 +3862,64 @@
     return FALSE;
 }
 
+uint32_t repRmIsExistVstorePairSync(uint32_t remoteArrayId)
+{
+    CCDB_VALUE value;
+    CCDB_SCAN scan = NULL;
+    int32_t ret = RETURN_ERROR;
+    uint32_t pairNum = INVALID_VALUE32;
+    REPRM_PAIR_DB_PARM_S* param = NULL;
+    LVOS_SEMAPHORE_S repRmDbAsynFinish;
+    int8_t *searchId = "localPairId";
+    int8_t *matchId = "rmtArrayId";
+    int8_t *searchTable = "DB_REP_VSTORE_PAIR_S";
+    
+    DBG_LogInfo(REPRM_LOG_ID_NEW, "Get exist pair, arrayid %u.", remoteArrayId);
+    LVOS_sema_init(&repRmDbAsynFinish, 0);
+    scan = acquireCcdbScan(gRepRmDbCfg.dbId);
+    if (NULL == scan)
+    {
+        DBG_LogError(REPRM_LOG_ID_NEW, "Get ccdb scan failed.");
+        return pairNum;
+    }
+    
+    ret = setCcdbScanColumn(scan, searchTable, searchId);
+    if (CCDB_OK != ret)
+    {
+        DBG_LogError(REPRM_LOG_ID_NEW, "Set ccdb scan column failed.");
+        (void)releaseCcdbScan(scan);
+        return pairNum;
+    }
+    
+    /* ù,ѯԶ豸IDĹpair*/
+    value.type = CCDB_TYPE_UINT32;
+    value.val.uiv32 = remoteArrayId;
+    ret = setCcdbScanWhere(scan, searchTable, matchId, CCDB_LOGIC_EQ, &value);
+    if (CCDB_OK != ret)
+    {
+        DBG_LogError(REPRM_LOG_ID_NEW, "Set ccdb scan condition failed.");
+        (void)releaseCcdbScan(scan);
+        return pairNum;
+    }
+
+    param = (REPRM_PAIR_DB_PARM_S*)RSF_GET_FREE_NODE(REPRM_PAIR_DB_PARTITION, PID_REPRM);
+    if (NULL == param)
+    {
+        DBG_LogError(REPRM_LOG_ID_NEW, "Failed to alloc db context memory.");
+        (void)releaseCcdbScan(scan);
+        return pairNum;
+    }
+
+    param->voidValue = &repRmDbAsynFinish;
+    execCcdbScan(scan, repRmIsExistPairCallback, param);
+    (void)releaseCcdbScan(scan);
+    LVOS_sema_down(&repRmDbAsynFinish);
+
+    /*صغͷ*/
+    pairNum = param->u32Value;
+    RSF_PUT_FREE_NODE(param, REPRM_PAIR_DB_PARTITION);
+    
+    return pairNum;
+}
+
+
--- ./source/private_module/rep_rm/hook/reprm_hook.c	2018-04-26 09:50:01.000000000 +0000
+++ ./source/private_module/rep_rm/hook/reprm_hook.c.hotpatch	2019-03-20 09:22:17.000000000 +0000
@@ -8544,7 +8544,7 @@
     DBG_LogInfo(DBG_LOGID_NEW, "RepRm can update.");
     return TRUE;
 }
-
+extern uint32_t repRmIsExistVstorePairSync(uint32_t remoteArrayId);
 /************************************************************************
 *    ܣжǷļԶ̸
 * 
@@ -8555,9 +8555,10 @@
 bool isServiceExistInArrayRepRm(uint32_t rmtArrayId)
 {
     uint32_t pairNum;
-
+    uint32_t vstorePairNum = 0;
     pairNum = repRmIsExistPairSync(rmtArrayId);
-    if (0 == pairNum)
+    vstorePairNum = repRmIsExistVstorePairSync(rmtArrayId);
+    if (0 == pairNum && 0 == vstorePairNum)
     {
         DBG_LogInfo(DBG_LOGID_NEW, "There are no remote replications.");  
         return FALSE;
@@ -8568,7 +8569,6 @@
         return TRUE;
     }
 }
-
 /**********************************************************************
 *     : ģעԺ
 * : void
