mirror of https://github.com/halo-dev/halo
Fix putIfAbsent bug in InMemoryCacheStore
parent
58bf3c1d2a
commit
8d04bec3b2
|
@ -111,7 +111,6 @@ public abstract class AbstractCacheStore<K, V> implements CacheStore<K, V> {
|
|||
expireAt = DateUtils.addMilliseconds(now, Long.valueOf(millis).intValue());
|
||||
}
|
||||
|
||||
|
||||
// Build cache wrapper
|
||||
CacheWrapper<V> cacheWrapper = new CacheWrapper<>();
|
||||
cacheWrapper.setCreateAt(now);
|
||||
|
|
|
@ -2,6 +2,7 @@ package cc.ryanc.halo.cache;
|
|||
|
||||
import lombok.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
|
@ -10,11 +11,11 @@ import java.util.Date;
|
|||
* @author johnniang
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode
|
||||
@ToString
|
||||
@EqualsAndHashCode
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class CacheWrapper<V> {
|
||||
class CacheWrapper<V> implements Serializable {
|
||||
|
||||
/**
|
||||
* Cache data
|
||||
|
|
|
@ -42,10 +42,24 @@ public class InMemoryCacheStore extends StringCacheStore {
|
|||
Assert.hasText(key, "Cache key must not be blank");
|
||||
Assert.notNull(cacheWrapper, "Cache wrapper must not be null");
|
||||
|
||||
log.debug("Preparing to put key: [{}], value: [{}]", key, cacheWrapper);
|
||||
|
||||
// Put the cache wrapper
|
||||
CacheWrapper<String> putCacheWrapper = cacheContainer.putIfAbsent(key, cacheWrapper);
|
||||
|
||||
return cacheWrapper.equals(putCacheWrapper);
|
||||
if (putCacheWrapper == null) {
|
||||
putCacheWrapper = cacheWrapper;
|
||||
}
|
||||
|
||||
boolean isEqual = cacheWrapper.equals(putCacheWrapper);
|
||||
|
||||
if (isEqual) {
|
||||
log.debug("Put successfully");
|
||||
} else {
|
||||
log.warn("Failed to put the cache, because the key: [{}] has been present already", key);
|
||||
}
|
||||
|
||||
return isEqual;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -38,7 +38,7 @@ public class HaloConfiguration {
|
|||
* @return Cors filter registration bean
|
||||
*/
|
||||
@Bean
|
||||
FilterRegistrationBean<CorsFilter> corsFilter() {
|
||||
public FilterRegistrationBean<CorsFilter> corsFilter() {
|
||||
FilterRegistrationBean<CorsFilter> corsFilter = new FilterRegistrationBean<>();
|
||||
|
||||
corsFilter.setOrder(Ordered.HIGHEST_PRECEDENCE + 10);
|
||||
|
@ -54,7 +54,7 @@ public class HaloConfiguration {
|
|||
* @return Log filter registration bean
|
||||
*/
|
||||
@Bean
|
||||
FilterRegistrationBean<LogFilter> logFilter() {
|
||||
public FilterRegistrationBean<LogFilter> logFilter() {
|
||||
FilterRegistrationBean<LogFilter> logFilter = new FilterRegistrationBean<>();
|
||||
|
||||
logFilter.setOrder(Ordered.HIGHEST_PRECEDENCE + 9);
|
||||
|
|
Loading…
Reference in New Issue