private void checkLocalConfigInfo() {
   for (Entry<String /* dataId */, ConcurrentHashMap<String /* group */, CacheData>>
       cacheDatasEntry : cache.entrySet()) {
     ConcurrentHashMap<String, CacheData> cacheDatas = cacheDatasEntry.getValue();
     if (null == cacheDatas) {
       continue;
     }
     for (Entry<String, CacheData> cacheDataEntry : cacheDatas.entrySet()) {
       final CacheData cacheData = cacheDataEntry.getValue();
       try {
         String configInfo = getLocalConfigureInfomation(cacheData);
         if (null != configInfo) {
           if (log.isInfoEnabled()) {
             log.info(
                 "Read local configure, dataId:"
                     + cacheData.getDataId()
                     + ", group:"
                     + cacheData.getGroup());
           }
           popConfigInfo(cacheData, configInfo);
           continue;
         }
         if (cacheData.isUseLocalConfigInfo()) {
           continue;
         }
       } catch (Exception e) {
         log.error("checkLocalConfigInfo error:", e);
       }
     }
   }
 }
 private void checkSnapshot() {
   for (Entry<String, ConcurrentHashMap<String, CacheData>> cacheDatasEntry : cache.entrySet()) {
     ConcurrentHashMap<String, CacheData> cacheDatas = cacheDatasEntry.getValue();
     if (null == cacheDatas) {
       continue;
     }
     for (Entry<String, CacheData> cacheDataEntry : cacheDatas.entrySet()) {
       final CacheData cacheData = cacheDataEntry.getValue();
       if (!cacheData.isUseLocalConfigInfo() && cacheData.getFetchCount() == 0) {
         String configInfo =
             getSnapshotConfigInformation(cacheData.getDataId(), cacheData.getGroup());
         if (configInfo != null) {
           popConfigInfo(cacheData, configInfo);
         }
       }
     }
   }
 }
 void popConfigInfo(final CacheData cacheData, final String configInfo) {
   final ConfigureInfomation configureInfomation = new ConfigureInfomation();
   configureInfomation.setConfigureInfomation(configInfo);
   final String dataId = cacheData.getDataId();
   final String group = cacheData.getGroup();
   configureInfomation.setDataId(dataId);
   configureInfomation.setGroup(group);
   cacheData.incrementFetchCountAndGet();
   if (null != this.subscriberListener.getExecutor()) {
     this.subscriberListener
         .getExecutor()
         .execute(
             new Runnable() {
               public void run() {
                 try {
                   subscriberListener.receiveConfigInfo(configureInfomation);
                   saveSnapshot(dataId, group, configInfo);
                 } catch (Throwable t) {
                   log.error(
                       "popConfigInfo listener receiveConfigInfo error: group="
                           + group
                           + ", dataId="
                           + dataId,
                       t);
                 }
               }
             });
   } else {
     try {
       subscriberListener.receiveConfigInfo(configureInfomation);
       saveSnapshot(dataId, group, configInfo);
     } catch (Throwable t) {
       log.error(
           "popConfigInfo listener receiveConfigInfo error: group=" + group + ", dataId=" + dataId,
           t);
     }
   }
 }