fix 修复 OssClient 实例多租户相同key缓存覆盖问题

2.X
疯狂的狮子li 2 years ago
parent b2855cb5ec
commit a6b9224935

@ -45,15 +45,17 @@ public class OssFactory {
throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
}
OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
OssClient client = CLIENT_CACHE.get(configKey);
// 使用租户标识避免多个租户相同key实例覆盖
String key = properties.getTenantId() + ":" + configKey;
OssClient client = CLIENT_CACHE.get(key);
if (client == null) {
CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));
CLIENT_CACHE.put(key, new OssClient(configKey, properties));
log.info("创建OSS实例 key => {}", configKey);
return CLIENT_CACHE.get(configKey);
}
// 配置不相同则重新构建
if (!client.checkPropertiesSame(properties)) {
CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));
CLIENT_CACHE.put(key, new OssClient(configKey, properties));
log.info("重载OSS实例 key => {}", configKey);
return CLIENT_CACHE.get(configKey);
}

@ -10,6 +10,11 @@ import lombok.Data;
@Data
public class OssProperties {
/**
* id
*/
private String tenantId;
/**
*
*/

Loading…
Cancel
Save