@Override
    @TpsControl(pointName = "ConfigRemove")
    @Secured(action = ActionTypes.WRITE, signType = SignType.CONFIG)
    @ExtractorManager.Extractor(rpcExtractor = ConfigRequestParamExtractor.class)
    public ConfigRemoveResponse handle(ConfigRemoveRequest configRemoveRequest, RequestMeta meta)
            throws NacosException {
        // check tenant
        String tenant = configRemoveRequest.getTenant();
        String dataId = configRemoveRequest.getDataId();
        String group = configRemoveRequest.getGroup();
        String tag = configRemoveRequest.getTag();
        
        try {
            ParamUtils.checkTenant(tenant);
            ParamUtils.checkParam(dataId, group, "datumId", "rm");
            ParamUtils.checkParam(tag);
            String persistEvent = ConfigTraceService.PERSISTENCE_EVENT;
            
            String clientIp = meta.getClientIp();
            if (StringUtils.isBlank(tag)) {
                configInfoPersistService.removeConfigInfo(dataId, group, tenant, clientIp, null);
            } else {
                persistEvent = ConfigTraceService.PERSISTENCE_EVENT_TAG + "-" + tag;
                
                configInfoTagPersistService.removeConfigInfoTag(dataId, group, tenant, tag, clientIp, null);
            }
            final Timestamp time = TimeUtils.getCurrentTime();
            ConfigTraceService.logPersistenceEvent(dataId, group, tenant, null, time.getTime(), clientIp, persistEvent,
                    ConfigTraceService.PERSISTENCE_TYPE_REMOVE, null);
            ConfigChangePublisher.notifyConfigChange(
                    new ConfigDataChangeEvent(false, dataId, group, tenant, tag, time.getTime()));
            return ConfigRemoveResponse.buildSuccessResponse();
            
        } catch (Exception e) {
            Loggers.REMOTE_DIGEST.error("remove config error,error msg is {}", e.getMessage(), e);
            return ConfigRemoveResponse.buildFailResponse(e.getMessage());
        }
    }
@Test
    void testHandle() {
        ConfigRemoveRequest configRemoveRequest = new ConfigRemoveRequest();
        configRemoveRequest.setRequestId("requestId");
        configRemoveRequest.setGroup("group");
        configRemoveRequest.setDataId("dataId");
        configRemoveRequest.setTenant("tenant");
        RequestMeta meta = new RequestMeta();
        meta.setClientIp("1.1.1.1");
        try {
            ConfigRemoveResponse configRemoveResponse = configRemoveRequestHandler.handle(configRemoveRequest, meta);
            assertEquals(ResponseCode.SUCCESS.getCode(), configRemoveResponse.getResultCode());
        } catch (NacosException e) {
            e.printStackTrace();
            assertTrue(false);
        }
    }