Skip to content

Commit 2a0aa55

Browse files
committed
Update module 'cells' to use Caffeine.
Signed-off-by: Lukas Mansour <lukas.mansour@desy.de>
1 parent 2a01b13 commit 2a0aa55

5 files changed

Lines changed: 54 additions & 32 deletions

File tree

modules/cells/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@
7373
<groupId>com.google.guava</groupId>
7474
<artifactId>guava</artifactId>
7575
</dependency>
76+
<dependency>
77+
<groupId>com.github.ben-manes.caffeine</groupId>
78+
<artifactId>caffeine</artifactId>
79+
</dependency>
7680

7781
</dependencies>
7882

modules/cells/src/main/java/dmg/cells/services/CoreRoutingManager.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@
2323

2424
import com.google.common.collect.HashMultimap;
2525
import com.google.common.collect.Iterables;
26-
import com.google.common.collect.Lists;
2726
import com.google.common.collect.Multimap;
28-
import com.google.common.collect.Sets;
2927
import com.google.common.util.concurrent.Futures;
3028
import com.google.common.util.concurrent.ListenableFuture;
3129
import com.google.common.util.concurrent.MoreExecutors;
@@ -329,7 +327,7 @@ public void messageArrived(CellMessage msg) {
329327
.map(CellDomainInfo::getCellDomainName)
330328
.forEach(domain -> domains.put(domain, new ArrayList<>()));
331329
queueRoutes.asMap().forEach(
332-
(domain, cells) -> domains.put(domain, Lists.newArrayList(cells)));
330+
(domain, cells) -> domains.put(domain, new ArrayList<>(cells)));
333331
}
334332
msg.revertDirection();
335333
msg.setMessageObject(new GetAllDomainsReply(domains));
@@ -504,9 +502,9 @@ private Optional<CellTunnelInfo> getTunnelInfo(CellAddressCore tunnel) {
504502
public synchronized Object ac_ls_$_0(Args args) {
505503
return new Object[]{
506504
getCellDomainName(),
507-
Sets.newHashSet(localConsumers.values()),
505+
new HashSet<>(localConsumers.values()),
508506
queueRoutes.asMap().entrySet().stream().collect(
509-
toMap(Map.Entry::getKey, e -> Sets.newHashSet(e.getValue())))
507+
toMap(Map.Entry::getKey, e -> new HashSet<>(e.getValue())))
510508
};
511509
}
512510
}

modules/cells/src/main/java/dmg/cells/zookeeper/CellCuratorFramework.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
*/
1818
package dmg.cells.zookeeper;
1919

20-
import com.google.common.cache.CacheBuilder;
21-
import com.google.common.cache.CacheLoader;
22-
import com.google.common.cache.LoadingCache;
20+
import com.github.benmanes.caffeine.cache.CacheLoader;
21+
import com.github.benmanes.caffeine.cache.Caffeine;
22+
import com.github.benmanes.caffeine.cache.LoadingCache;
2323
import dmg.cells.nucleus.CDC;
2424
import java.util.Collection;
2525
import java.util.List;
@@ -115,9 +115,9 @@ public class CellCuratorFramework implements CuratorFramework {
115115
private final BoundedExecutor executor;
116116

117117
private final LoadingCache<Watcher, Watcher> watchers =
118-
CacheBuilder.newBuilder().build(new CacheLoader<Watcher, Watcher>() {
118+
Caffeine.newBuilder().build(new CacheLoader<>() {
119119
@Override
120-
public Watcher load(Watcher watcher) throws Exception {
120+
public Watcher load(Watcher watcher) {
121121
CDC cdc = new CDC();
122122
return event -> executor.execute(() -> {
123123
try (CDC ignore = cdc.restore()) {
@@ -128,9 +128,9 @@ public Watcher load(Watcher watcher) throws Exception {
128128
});
129129

130130
private final LoadingCache<CuratorWatcher, CuratorWatcher> curatorWatchers =
131-
CacheBuilder.newBuilder().build(new CacheLoader<CuratorWatcher, CuratorWatcher>() {
131+
Caffeine.newBuilder().build(new CacheLoader<>() {
132132
@Override
133-
public CuratorWatcher load(CuratorWatcher watcher) throws Exception {
133+
public CuratorWatcher load(CuratorWatcher watcher) {
134134
CDC cdc = new CDC();
135135
return event -> executor.execute(() -> {
136136
try (CDC ignore = cdc.restore()) {
@@ -175,11 +175,11 @@ protected static BackgroundCallback wrap(BackgroundCallback callback) {
175175
}
176176

177177
protected Watcher wrap(Watcher watcher) {
178-
return watchers.getUnchecked(watcher);
178+
return watchers.get(watcher);
179179
}
180180

181181
protected CuratorWatcher wrap(CuratorWatcher watcher) {
182-
return curatorWatchers.getUnchecked(watcher);
182+
return curatorWatchers.get(watcher);
183183
}
184184

185185
@Override

modules/cells/src/main/java/dmg/util/logback/FilterThresholdSet.java

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,24 @@
44
import static java.util.Objects.requireNonNull;
55

66
import ch.qos.logback.classic.Level;
7+
import com.github.benmanes.caffeine.cache.CacheLoader;
8+
import com.github.benmanes.caffeine.cache.Caffeine;
9+
import com.github.benmanes.caffeine.cache.LoadingCache;
710
import com.google.common.base.Throwables;
8-
import com.google.common.cache.CacheBuilder;
9-
import com.google.common.cache.CacheLoader;
10-
import com.google.common.cache.LoadingCache;
1111
import com.google.common.collect.HashBasedTable;
12-
import com.google.common.collect.Lists;
13-
import com.google.common.collect.Maps;
14-
import com.google.common.collect.Sets;
1512
import com.google.common.collect.Table;
13+
import java.io.Serializable;
14+
import java.util.ArrayList;
1615
import java.util.Collection;
1716
import java.util.Collections;
1817
import java.util.Comparator;
18+
import java.util.HashMap;
1919
import java.util.HashSet;
2020
import java.util.Map;
2121
import java.util.Optional;
2222
import java.util.Set;
23-
import java.util.concurrent.ExecutionException;
23+
import java.util.concurrent.CompletionException;
24+
import java.util.function.Function;
2425
import org.slf4j.Logger;
2526

2627
/**
@@ -41,7 +42,7 @@ public class FilterThresholdSet {
4142

4243
private final FilterThresholdSet _parent;
4344

44-
private final Set<String> _appenders = Sets.newHashSet();
45+
private final Set<String> _appenders = new HashSet<>();
4546

4647
private final Set<LoggerName> _roots = new HashSet<>();
4748

@@ -50,26 +51,25 @@ public class FilterThresholdSet {
5051

5152
/* Logger -> (Appender -> Level) */
5253
private final LoadingCache<String, Map<String, Level>> _effectiveMaps =
53-
CacheBuilder.newBuilder().build(CacheLoader.from(
54+
Caffeine.newBuilder().build(new FunctionToCacheLoader<>(
5455
logger -> computeEffectiveMap(LoggerName.getInstance(logger))));
5556

5657
/* Logger -> Level */
5758
private final LoadingCache<Logger, Optional<Level>> _effectiveLevels =
58-
CacheBuilder.newBuilder().build(CacheLoader.from(
59+
Caffeine.newBuilder().build(new FunctionToCacheLoader<>(
5960
logger -> {
6061
try {
6162
Map<String, Level> map = _effectiveMaps.get(logger.getName());
6263
return map.isEmpty()
6364
? Optional.empty()
6465
: Optional.of(Collections.min(map.values(), LEVEL_ORDER));
65-
} catch (ExecutionException e) {
66+
} catch (CompletionException e) {
6667
Throwables.throwIfUnchecked(e.getCause());
6768
throw new RuntimeException(e.getCause());
6869
}
6970
}));
7071

71-
private static final Comparator<Level> LEVEL_ORDER =
72-
(o1, o2) -> Integer.compare(o1.toInt(), o2.toInt());
72+
private static final Comparator<Level> LEVEL_ORDER = Comparator.comparingInt(Level::toInt);
7373

7474
public FilterThresholdSet() {
7575
this(null);
@@ -93,7 +93,7 @@ public synchronized void addAppender(String name) {
9393
*/
9494
public synchronized Collection<String> getAppenders() {
9595
if (_parent == null) {
96-
return Lists.newArrayList(_appenders);
96+
return new ArrayList<>(_appenders);
9797
} else {
9898
Collection<String> appenders = _parent.getAppenders();
9999
appenders.addAll(_appenders);
@@ -182,7 +182,7 @@ private void clearCache() {
182182
*/
183183
public synchronized Map<String, Level> getInheritedMap(LoggerName logger) {
184184
if (_parent == null) {
185-
return Maps.newHashMap(_rules.row(logger));
185+
return new HashMap<>(_rules.row(logger));
186186
} else {
187187
Map<String, Level> map = _parent.getInheritedMap(logger);
188188
map.putAll(_rules.row(logger));
@@ -222,7 +222,7 @@ public Level getThreshold(LoggerName logger, String appender) {
222222
public Level getThreshold(String logger, String appender) {
223223
try {
224224
return _effectiveMaps.get(logger).get(appender);
225-
} catch (ExecutionException e) {
225+
} catch (CompletionException e) {
226226
Throwables.throwIfUnchecked(e.getCause());
227227
throw new RuntimeException(e.getCause());
228228
}
@@ -234,9 +234,24 @@ public Level getThreshold(String logger, String appender) {
234234
public Level getThreshold(Logger logger) {
235235
try {
236236
return _effectiveLevels.get(logger).orElse(null);
237-
} catch (ExecutionException e) {
237+
} catch (CompletionException e) {
238238
Throwables.throwIfUnchecked(e.getCause());
239239
throw new RuntimeException(e.getCause());
240240
}
241241
}
242+
243+
private static final class FunctionToCacheLoader<K, V> implements
244+
CacheLoader<K, V>, Serializable {
245+
246+
private final Function<K, V> computingFunction;
247+
private static final long serialVersionUID = 0L;
248+
249+
public FunctionToCacheLoader(Function<K, V> computingFunction) {
250+
this.computingFunction = requireNonNull(computingFunction);
251+
}
252+
253+
public V load(K key) {
254+
return this.computingFunction.apply(requireNonNull(key));
255+
}
256+
}
242257
}

pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,12 @@
254254
<dependency>
255255
<groupId>com.google.guava</groupId>
256256
<artifactId>guava</artifactId>
257-
<version>32.0.0-jre</version>
257+
<version>32.1.2-jre</version>
258+
</dependency>
259+
<dependency>
260+
<groupId>com.github.ben-manes.caffeine</groupId>
261+
<artifactId>caffeine</artifactId>
262+
<version>3.1.8</version>
258263
</dependency>
259264
<dependency>
260265
<groupId>eu.eu-emi.security</groupId>

0 commit comments

Comments
 (0)