--- ./source/private_module/framework/core/core_ccdb.c	2018-12-02 02:40:58.000000000 +0800
+++ ./source/private_module/framework/core/core_ccdb.c.hotpatch	2018-12-02 02:40:58.000000000 +0800
@@ -5664,5 +5664,180 @@
 EXPORT_SYMBOL(dlmIsWorking);
 EXPORT_SYMBOL(dlmOnlineUpdateSet);
 
+DLM_ZONE_S* patchGetDefaultZone(void)
+{
+    DLM_ZONE_NAME_S zoneName;
+    DLM_ZONE_S *zone = NULL;
 
+    memset(&zoneName, 0, sizeof(DLM_ZONE_NAME_S));
+    dlmGetDZoneName(&zoneName);
+    zone = dlmGetZone(&zoneName);
+
+    return zone;
+}
+
+void patchPutDefaultZone(DLM_ZONE_S *zone)
+{
+    dlmPutZone(zone);
+}
+
+/* 1Ϊccdb汾Ϊ첽ѯͨȫֱ첽ӳٲѯ
+ * 2Ϊ˲򵥣ṩơÿִлȡ(get)汾
+ */
+uint64_t g_dlmPatchLastCCDBEventVersion = 0ULL;
+bool g_dlmPatchIsQueryingCCDBEventVersion = FALSE;
+
+void patchGetEventVersionComplete(int32_t nRet, CCDB_OBJ_MUTATOR mutator, void *ctx)
+{
+    DLM_CCDB_MANAGER_S *ccdbMgr = (DLM_CCDB_MANAGER_S*)ctx;
+    int32_t ret =  RETURN_ERROR;
+    uint64_t eventVersion = 0ULL;
+
+    switch(nRet)
+    {
+        case CCDB_OK:
+            ret = getCcdbObjVersion(mutator, (int64_t*)&eventVersion);
+            if(RETURN_OK != ret)
+            {
+                DLM_LOG(DBG_LOG_ERROR, 1, "DLM patch get event version end failed, return value(%d).", ret);
+                break;
+            }
+            g_dlmPatchLastCCDBEventVersion = eventVersion;
+            DLM_LOG(DBG_LOG_INFO, 1, "DLM patch get event version end success, version(%llu).", eventVersion);
+            break;
+        default:
+            DLM_LOG(DBG_LOG_ERROR, 1, "DLM patch get event information end failed, return value(%d).", nRet);
+            break;
+    }
+    
+    freeCcdbObjMutator(mutator);
+    dlmCcdbMgrPut(ccdbMgr->zone);
+    g_dlmPatchIsQueryingCCDBEventVersion = FALSE;
+}
+
+void patchCoreGetEventVersion(void)
+{
+    DLM_ZONE_S *zone = NULL;
+    DLM_CCDB_MANAGER_S *ccdbMgr = NULL;
+
+    if (g_dlmPatchIsQueryingCCDBEventVersion)
+    {
+        DBG_Print("Query event version task is already running.\n");
+        return;
+    }
+
+    zone = patchGetDefaultZone();
+    if (zone == NULL)
+    {
+        DLM_LOG(DBG_LOG_ERROR, 1, "DLM patch get event version end failed, zone is NULL.");
+        return;
+    }
+
+    ccdbMgr = dlmCcdbMgrGet(zone);
+    if(ccdbMgr == NULL)
+    {
+        DLM_LOG(DBG_LOG_ERROR, DLM_LOG_ID_CORE(1), "DLM patch get event version end failed, ccdbMgr is NULL.");
+        patchPutDefaultZone(zone);
+        return;
+    }
+
+    DLM_LOG(DBG_LOG_INFO, 1, "DLM patch get event version begin.");
+    //Ϊ˲򵥣ṩơÿִлȡ(get)汾
+    g_dlmPatchLastCCDBEventVersion = 0ULL;
+    g_dlmPatchIsQueryingCCDBEventVersion = TRUE;
+    getCcdbObj(ccdbMgr->dbID, DLM_CCDB_EVENT_TABLE, DLM_CCDB_ROWKEY, patchGetEventVersionComplete, ccdbMgr);
+    patchPutDefaultZone(zone);
+    DBG_Print("Get event version task startted.\n");
+}
+
+void patchCoreSetEventVersion(uint64_t newVersion)
+{
+    DLM_ZONE_S *zone = NULL;
+    DLM_CCDB_MANAGER_S *ccdbMgr = NULL;
+
+    if (g_dlmPatchIsQueryingCCDBEventVersion)
+    {
+        DBG_Print("WARNING:\n");
+        DBG_Print("Query event version task is running, please wait.\n");
+        return;
+    }
+
+    if (g_dlmPatchLastCCDBEventVersion != newVersion)
+    {
+        DBG_Print("WARNING:\n");
+        DBG_Print("Set event version to (%llu), but history event version is(%llu).\n",
+            newVersion, g_dlmPatchLastCCDBEventVersion);
+    }
+
+    zone = patchGetDefaultZone();
+    if (zone == NULL)
+    {
+        DLM_LOG(DBG_LOG_ERROR, 1, "DLM patch set event version end failed, zone is NULL.");
+        return;
+    }
+
+    ccdbMgr = dlmCcdbMgrGet(zone);
+    if(ccdbMgr == NULL)
+    {
+        DLM_LOG(DBG_LOG_ERROR, DLM_LOG_ID_CORE(1), "DLM patch set event version end failed, cdbMgr is NULL.");
+        patchPutDefaultZone(zone);
+        return;
+    }
+
+    spin_lock(&ccdbMgr->lock);
+    ccdbMgr->eventVersion = newVersion;
+    spin_unlock(&ccdbMgr->lock);
+
+    dlmCcdbMgrPut(ccdbMgr->zone);
+    patchPutDefaultZone(zone);
+
+    DLM_LOG(DBG_LOG_INFO, 1, "DLM patch set event version to (%llu) end.", newVersion);
+    DBG_Print("Set event version to (%llu) end.\n", newVersion);
+}
+
+void patchCoreShowEventVersion(void)
+{
+    DLM_ZONE_S *zone = NULL;
+    DLM_CCDB_MANAGER_S *ccdbMgr = NULL;
+    uint64_t versionInMemory = 0ULL;
+
+    if (g_dlmPatchIsQueryingCCDBEventVersion)
+    {
+        DBG_Print("WARNING:\n");
+        DBG_Print("Query event version task is running, please wait.\n");
+        return;
+    }
+
+    if (g_dlmPatchLastCCDBEventVersion == 0)
+    {
+        DBG_Print("WARNING:\n");
+        DBG_Print("Current event version is invalid, please query version first.\n");
+        return;
+    }
+
+    zone = patchGetDefaultZone();
+    if (zone == NULL)
+    {
+        DLM_LOG(DBG_LOG_ERROR, 1, "DLM patch show event version end failed, zone is NULL.");
+        return;
+    }
+
+    ccdbMgr = dlmCcdbMgrGet(zone);
+    if(ccdbMgr == NULL)
+    {
+        DLM_LOG(DBG_LOG_ERROR, DLM_LOG_ID_CORE(1), "DLM patch show event version end failed, cdbMgr is NULL.");
+        patchPutDefaultZone(zone);
+        return;
+    }
+
+    versionInMemory = ccdbMgr->eventVersion;
+
+    dlmCcdbMgrPut(ccdbMgr->zone);
+    patchPutDefaultZone(zone);
+
+    DLM_LOG(DBG_LOG_INFO, 1, "DLM patch event version in memory(%llu), in CCDB(%llu).", 
+        versionInMemory, g_dlmPatchLastCCDBEventVersion);
+    DBG_Print("Event version in memory(%llu), in CCDB(%llu).\n", 
+        versionInMemory, g_dlmPatchLastCCDBEventVersion);
+}
 
--- ./source/private_module/framework/lib/dlm_common.c	2018-12-02 02:40:58.000000000 +0800
+++ ./source/private_module/framework/lib/dlm_common.c.hotpatch	2018-12-02 02:40:58.000000000 +0800
@@ -594,11 +594,11 @@
 /**
 \brief ͳproxy
 \param[in] nameSpace: proxyԴռ
-\param[in] exceptTime: proxyԴڵjiffiesʱ
-\param[in] realTime: proxyԴʵʴڵjiffiesʱ
-\return 
-\notes
 */
+// GetڴCCDBѯSetڸڴ汾Showչʾ
+extern void patchCoreGetEventVersion(void);
+extern void patchCoreSetEventVersion(uint64_t new_version);
+extern void patchCoreShowEventVersion(void);
 void dlmStatisticsProxyLifecycle(DLM_RES_NAMESPACE_E nameSpace, uint64_t expectTime, uint64_t realTime)
 {
     DLM_PROXY_LIFECYCLE_STATISTICS_S *lifecycle = &g_lifecycle[nameSpace];
@@ -644,14 +644,14 @@
 
 void dlmCliDiagShowProxyStat(OSP_S32 argc, OSP_CHAR *argv[])
 {
-    uint32_t i = 0;
-    uint64_t average = 0;
-    uint64_t total = 0;
-    uint64_t max = 0;
-    uint64_t min = 0;
-    UNREFERENCE_PARAM(argc);
-    UNREFERENCE_PARAM(argv);
-
+    uint32_t i = 0; uint64_t average = 0; uint64_t total = 0; uint64_t max = 0; uint64_t min = 0;
+    uint32_t user_operation = 0; uint64_t user_value = 0ULL;
+    if (argc == 4) { // Ϊ򵥣֧4
+        user_operation = (uint32_t)LVOS_StrToU64(argv[2]); user_value = LVOS_StrToU64(argv[3]);
+        if (user_operation == 0) {patchCoreGetEventVersion();}              // [0 0]ѯ
+        if (user_operation == 1) {patchCoreShowEventVersion();}             // [1 0]չʾѯ
+        if (user_operation == 2) {patchCoreSetEventVersion(user_value);}    // [2 new_version]а汾Ÿ
+    }
     for (i = 0; i < DLM_RES_NAMESPACE_BUTT; i++)
     {
         spin_lock(&g_lifecycle[i].lock);
