private Map<String, DataSourceMetaData> getDataSourceMetaDataMapForMasterSlave(final ShardingRule shardingRule, final Map<String, DataSourceMetaData> dataSourceMetaDataMap) { Map<String, DataSourceMetaData> result = new LinkedHashMap<>(dataSourceMetaDataMap); for (Entry<String, DataSourceMetaData> entry : dataSourceMetaDataMap.entrySet()) { Optional<MasterSlaveRule> masterSlaveRule = shardingRule.findMasterSlaveRule(entry.getKey()); if (masterSlaveRule.isPresent() && masterSlaveRule.get().getMasterDataSourceName().equals(entry.getKey())) { reviseMasterSlaveMetaData(result, entry.getValue(), masterSlaveRule.get()); } } return result; }