Skip to content

Commit

Permalink
Merge pull request #6540 from alvasw/move_all_executor_service_creati…
Browse files Browse the repository at this point in the history
…on_to_utilities

Centralize all ExecutorService creations in Utilities
  • Loading branch information
alejandrogarcia83 authored Jan 28, 2023
2 parents 74d0eaf + 6a8fb05 commit 5562b76
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 36 deletions.
14 changes: 14 additions & 0 deletions common/src/main/java/bisq/common/util/Utilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@
@Slf4j
public class Utilities {

public static ExecutorService getSingleThreadExecutor(Class<?> aClass) {
String name = aClass.getSimpleName();
return getSingleThreadExecutor(name);
}

public static ExecutorService getSingleThreadExecutor(String name) {
final ThreadFactory threadFactory = new ThreadFactoryBuilder()
.setNameFormat(name)
Expand All @@ -92,6 +97,15 @@ public static ExecutorService getSingleThreadExecutor(String name) {
return Executors.newSingleThreadExecutor(threadFactory);
}

public static ExecutorService getSingleThreadExecutor(ThreadFactory threadFactory) {
return Executors.newSingleThreadExecutor(threadFactory);
}

public static ExecutorService getFixedThreadPoolExecutor(int nThreads,
ThreadFactory threadFactory) {
return Executors.newFixedThreadPool(nThreads, threadFactory);
}

public static ListeningExecutorService getSingleThreadListeningExecutor(String name) {
return MoreExecutors.listeningDecorator(getSingleThreadExecutor(name));
}
Expand Down
13 changes: 4 additions & 9 deletions core/src/main/java/bisq/core/app/BisqHeadlessAppMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@
import bisq.common.UserThread;
import bisq.common.app.AppModule;
import bisq.common.app.Version;
import bisq.common.util.Utilities;

import com.google.common.util.concurrent.ThreadFactoryBuilder;

import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ExecutorService;

import lombok.extern.slf4j.Slf4j;

Expand Down Expand Up @@ -62,11 +60,8 @@ protected void doExecute() {

@Override
protected void configUserThread() {
final ThreadFactory threadFactory = new ThreadFactoryBuilder()
.setNameFormat(this.getClass().getSimpleName())
.setDaemon(true)
.build();
UserThread.setExecutor(Executors.newSingleThreadExecutor(threadFactory));
ExecutorService executorService = Utilities.getSingleThreadExecutor(this.getClass());
UserThread.setExecutor(executorService);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@
import bisq.common.persistence.PersistenceManager;
import bisq.common.setup.GracefulShutDownHandler;
import bisq.common.util.Profiler;

import com.google.common.util.concurrent.ThreadFactoryBuilder;
import bisq.common.util.Utilities;

import java.time.Instant;
import java.time.ZoneId;
Expand All @@ -50,8 +49,7 @@
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;

import lombok.extern.slf4j.Slf4j;
Expand All @@ -71,11 +69,8 @@ public ExecutableForAppWithP2p(String fullName, String scriptName, String appNam

@Override
protected void configUserThread() {
final ThreadFactory threadFactory = new ThreadFactoryBuilder()
.setNameFormat(this.getClass().getSimpleName())
.setDaemon(true)
.build();
UserThread.setExecutor(Executors.newSingleThreadExecutor(threadFactory));
ExecutorService executorService = Utilities.getSingleThreadExecutor(this.getClass());
UserThread.setExecutor(executorService);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import bisq.common.file.FileUtil;
import bisq.common.persistence.PersistenceManager;
import bisq.common.util.GcUtil;
import bisq.common.util.Utilities;

import javax.inject.Inject;
import javax.inject.Named;
Expand All @@ -42,7 +43,6 @@
import java.util.List;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

Expand All @@ -58,7 +58,7 @@ public class DaoStateStorageService extends StoreService<DaoStateStore> {
private final BsqBlocksStorageService bsqBlocksStorageService;
private final File storageDir;
private final LinkedList<Block> blocks = new LinkedList<>();
private final ExecutorService executorService = Executors.newSingleThreadExecutor();
private final ExecutorService executorService = Utilities.getSingleThreadExecutor(this.getClass());
private Optional<Future<?>> future = Optional.empty();


Expand Down
13 changes: 4 additions & 9 deletions daemon/src/main/java/bisq/daemon/app/BisqDaemonMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,9 @@
import bisq.common.UserThread;
import bisq.common.app.AppModule;
import bisq.common.handlers.ResultHandler;
import bisq.common.util.Utilities;

import com.google.common.util.concurrent.ThreadFactoryBuilder;

import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ExecutorService;

import lombok.extern.slf4j.Slf4j;

Expand All @@ -51,11 +49,8 @@ public static void main(String[] args) {

@Override
protected void configUserThread() {
final ThreadFactory threadFactory = new ThreadFactoryBuilder()
.setNameFormat(this.getClass().getSimpleName())
.setDaemon(true)
.build();
UserThread.setExecutor(Executors.newSingleThreadExecutor(threadFactory));
ExecutorService executorService = Utilities.getSingleThreadExecutor(this.getClass());
UserThread.setExecutor(executorService);
}

@Override
Expand Down
5 changes: 2 additions & 3 deletions p2p/src/main/java/bisq/network/Socks5DnsDiscovery.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

import lombok.extern.slf4j.Slf4j;
Expand Down Expand Up @@ -87,9 +86,9 @@ protected ExecutorService createExecutor() {
// Attempted workaround for reported bugs on Linux in which gethostbyname does not appear to be properly
// thread safe and can cause segfaults on some libc versions.
if (Utilities.isLinux())
return Executors.newSingleThreadExecutor(new ContextPropagatingThreadFactory("DNS seed lookups"));
return Utilities.getSingleThreadExecutor(new ContextPropagatingThreadFactory("DNS seed lookups"));
else
return Executors.newFixedThreadPool(seeds.size(), new DaemonThreadFactory("DNS seed lookups"));
return Utilities.getFixedThreadPoolExecutor(seeds.size(), new DaemonThreadFactory("DNS seed lookups"));
}

/**
Expand Down
3 changes: 1 addition & 2 deletions p2p/src/main/java/bisq/network/p2p/network/Connection.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -129,7 +128,7 @@ public static int getMaxPermittedMessageSize() {
private final NetworkFilter networkFilter;
@Getter
private final String uid;
private final ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(runnable -> new Thread(runnable, "Connection.java executor-service"));
private final ExecutorService singleThreadExecutor = Utilities.getSingleThreadExecutor(runnable -> new Thread(runnable, "Connection.java executor-service"));
@Getter
private final Statistic statistic;
@Getter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@
package bisq.network.p2p.network;

import bisq.common.proto.network.NetworkEnvelope;
import bisq.common.util.Utilities;

import java.io.OutputStream;

import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import org.slf4j.Logger;
Expand All @@ -39,7 +39,7 @@ class SynchronizedProtoOutputStream extends ProtoOutputStream {

SynchronizedProtoOutputStream(OutputStream delegate, Statistic statistic) {
super(delegate, statistic);
this.executorService = Executors.newSingleThreadExecutor();
this.executorService = Utilities.getSingleThreadExecutor(this.getClass());
}

@Override
Expand Down

0 comments on commit 5562b76

Please sign in to comment.