mirror of
https://github.com/Qortal/qortal.git
synced 2025-02-19 05:35:48 +00:00
Changes to thread priority and executor service
This commit is contained in:
parent
ec8ddf2b1c
commit
881d9c9635
8
pom.xml
8
pom.xml
@ -22,12 +22,12 @@
|
|||||||
<dagger.version>1.2.2</dagger.version>
|
<dagger.version>1.2.2</dagger.version>
|
||||||
<extendedset.version>0.12.3</extendedset.version>
|
<extendedset.version>0.12.3</extendedset.version>
|
||||||
<git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version>
|
<git-commit-id-plugin.version>4.9.10</git-commit-id-plugin.version>
|
||||||
<grpc.version>1.66.0</grpc.version>
|
<grpc.version>1.68.1</grpc.version>
|
||||||
<guava.version>33.3.0-jre</guava.version>
|
<guava.version>33.3.1-jre</guava.version>
|
||||||
<hamcrest-library.version>2.2</hamcrest-library.version>
|
<hamcrest-library.version>2.2</hamcrest-library.version>
|
||||||
<homoglyph.version>1.2.1</homoglyph.version>
|
<homoglyph.version>1.2.1</homoglyph.version>
|
||||||
<hsqldb.version>2.5.1</hsqldb.version>
|
<hsqldb.version>2.5.1</hsqldb.version>
|
||||||
<icu4j.version>75.1</icu4j.version>
|
<icu4j.version>76.1</icu4j.version>
|
||||||
<java-diff-utils.version>4.12</java-diff-utils.version>
|
<java-diff-utils.version>4.12</java-diff-utils.version>
|
||||||
<javax.servlet-api.version>4.0.1</javax.servlet-api.version>
|
<javax.servlet-api.version>4.0.1</javax.servlet-api.version>
|
||||||
<jaxb-runtime.version>2.3.9</jaxb-runtime.version>
|
<jaxb-runtime.version>2.3.9</jaxb-runtime.version>
|
||||||
@ -49,7 +49,7 @@
|
|||||||
<maven-reproducible-build-plugin.version>0.17</maven-reproducible-build-plugin.version>
|
<maven-reproducible-build-plugin.version>0.17</maven-reproducible-build-plugin.version>
|
||||||
<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
|
<maven-resources-plugin.version>3.3.1</maven-resources-plugin.version>
|
||||||
<maven-shade-plugin.version>3.6.0</maven-shade-plugin.version>
|
<maven-shade-plugin.version>3.6.0</maven-shade-plugin.version>
|
||||||
<maven-surefire-plugin.version>3.5.0</maven-surefire-plugin.version>
|
<maven-surefire-plugin.version>3.5.1</maven-surefire-plugin.version>
|
||||||
<protobuf.version>3.25.3</protobuf.version>
|
<protobuf.version>3.25.3</protobuf.version>
|
||||||
<replacer.version>1.5.3</replacer.version>
|
<replacer.version>1.5.3</replacer.version>
|
||||||
<simplemagic.version>1.17</simplemagic.version>
|
<simplemagic.version>1.17</simplemagic.version>
|
||||||
|
@ -64,6 +64,7 @@ public class BlockMinter extends Thread {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("BlockMinter");
|
Thread.currentThread().setName("BlockMinter");
|
||||||
|
Thread.currentThread().setPriority(MAX_PRIORITY);
|
||||||
|
|
||||||
if (Settings.getInstance().isTopOnly() || Settings.getInstance().isLite()) {
|
if (Settings.getInstance().isTopOnly() || Settings.getInstance().isLite()) {
|
||||||
// Top only and lite nodes do not sign blocks
|
// Top only and lite nodes do not sign blocks
|
||||||
|
@ -99,7 +99,7 @@ public class Controller extends Thread {
|
|||||||
private final long buildTimestamp; // seconds
|
private final long buildTimestamp; // seconds
|
||||||
private final String[] savedArgs;
|
private final String[] savedArgs;
|
||||||
|
|
||||||
private ExecutorService callbackExecutor = Executors.newFixedThreadPool(3);
|
private ExecutorService callbackExecutor = Executors.newFixedThreadPool(4);
|
||||||
private volatile boolean notifyGroupMembershipChange = false;
|
private volatile boolean notifyGroupMembershipChange = false;
|
||||||
|
|
||||||
/** Latest blocks on our chain. Note: tail/last is the latest block. */
|
/** Latest blocks on our chain. Note: tail/last is the latest block. */
|
||||||
@ -406,7 +406,7 @@ public class Controller extends Thread {
|
|||||||
RepositoryManager.setRequestedCheckpoint(Boolean.TRUE);
|
RepositoryManager.setRequestedCheckpoint(Boolean.TRUE);
|
||||||
|
|
||||||
try (final Repository repository = RepositoryManager.getRepository()) {
|
try (final Repository repository = RepositoryManager.getRepository()) {
|
||||||
RepositoryManager.rebuildTransactionSequences(repository);
|
// RepositoryManager.rebuildTransactionSequences(repository);
|
||||||
ArbitraryDataCacheManager.getInstance().buildArbitraryResourcesCache(repository, false);
|
ArbitraryDataCacheManager.getInstance().buildArbitraryResourcesCache(repository, false);
|
||||||
}
|
}
|
||||||
} catch (DataException e) {
|
} catch (DataException e) {
|
||||||
|
@ -65,6 +65,7 @@ public class PirateChainWalletController extends Thread {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Pirate Chain Wallet Controller");
|
Thread.currentThread().setName("Pirate Chain Wallet Controller");
|
||||||
|
Thread.currentThread().setPriority(MIN_PRIORITY);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (running && !Controller.isStopping()) {
|
while (running && !Controller.isStopping()) {
|
||||||
|
@ -128,6 +128,7 @@ public class Synchronizer extends Thread {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Synchronizer");
|
Thread.currentThread().setName("Synchronizer");
|
||||||
|
Thread.currentThread().setPriority(MAX_PRIORITY);
|
||||||
|
|
||||||
if (Settings.getInstance().isLite()) {
|
if (Settings.getInstance().isLite()) {
|
||||||
// Lite nodes don't need to sync
|
// Lite nodes don't need to sync
|
||||||
|
@ -14,6 +14,7 @@ import java.io.IOException;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static java.lang.Thread.NORM_PRIORITY;
|
||||||
import static org.qortal.data.arbitrary.ArbitraryResourceStatus.Status.NOT_PUBLISHED;
|
import static org.qortal.data.arbitrary.ArbitraryResourceStatus.Status.NOT_PUBLISHED;
|
||||||
|
|
||||||
|
|
||||||
@ -28,6 +29,7 @@ public class ArbitraryDataBuilderThread implements Runnable {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Arbitrary Data Builder Thread");
|
Thread.currentThread().setName("Arbitrary Data Builder Thread");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
ArbitraryDataBuildManager buildManager = ArbitraryDataBuildManager.getInstance();
|
ArbitraryDataBuildManager buildManager = ArbitraryDataBuildManager.getInstance();
|
||||||
|
|
||||||
while (!Controller.isStopping()) {
|
while (!Controller.isStopping()) {
|
||||||
|
@ -41,6 +41,7 @@ public class ArbitraryDataCacheManager extends Thread {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Arbitrary Data Cache Manager");
|
Thread.currentThread().setName("Arbitrary Data Cache Manager");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (!Controller.isStopping()) {
|
while (!Controller.isStopping()) {
|
||||||
|
@ -71,6 +71,7 @@ public class ArbitraryDataCleanupManager extends Thread {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Arbitrary Data Cleanup Manager");
|
Thread.currentThread().setName("Arbitrary Data Cleanup Manager");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
// Paginate queries when fetching arbitrary transactions
|
// Paginate queries when fetching arbitrary transactions
|
||||||
final int limit = 100;
|
final int limit = 100;
|
||||||
|
@ -17,6 +17,8 @@ import java.util.Arrays;
|
|||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import static java.lang.Thread.NORM_PRIORITY;
|
||||||
|
|
||||||
public class ArbitraryDataFileRequestThread implements Runnable {
|
public class ArbitraryDataFileRequestThread implements Runnable {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(ArbitraryDataFileRequestThread.class);
|
private static final Logger LOGGER = LogManager.getLogger(ArbitraryDataFileRequestThread.class);
|
||||||
@ -28,6 +30,7 @@ public class ArbitraryDataFileRequestThread implements Runnable {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Arbitrary Data File Request Thread");
|
Thread.currentThread().setName("Arbitrary Data File Request Thread");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (!Controller.isStopping()) {
|
while (!Controller.isStopping()) {
|
||||||
|
@ -91,6 +91,7 @@ public class ArbitraryDataManager extends Thread {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Arbitrary Data Manager");
|
Thread.currentThread().setName("Arbitrary Data Manager");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
// Create data directory in case it doesn't exist yet
|
// Create data directory in case it doesn't exist yet
|
||||||
this.createDataDirectory();
|
this.createDataDirectory();
|
||||||
|
@ -36,6 +36,7 @@ public class ArbitraryDataRenderManager extends Thread {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Arbitrary Data Render Manager");
|
Thread.currentThread().setName("Arbitrary Data Render Manager");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (!isStopping) {
|
while (!isStopping) {
|
||||||
|
@ -72,6 +72,8 @@ public class ArbitraryDataStorageManager extends Thread {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Arbitrary Data Storage Manager");
|
Thread.currentThread().setName("Arbitrary Data Storage Manager");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (!isStopping) {
|
while (!isStopping) {
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
|
@ -11,6 +11,8 @@ import org.qortal.repository.RepositoryManager;
|
|||||||
import org.qortal.settings.Settings;
|
import org.qortal.settings.Settings;
|
||||||
import org.qortal.utils.NTP;
|
import org.qortal.utils.NTP;
|
||||||
|
|
||||||
|
import static java.lang.Thread.MIN_PRIORITY;
|
||||||
|
|
||||||
public class AtStatesPruner implements Runnable {
|
public class AtStatesPruner implements Runnable {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(AtStatesPruner.class);
|
private static final Logger LOGGER = LogManager.getLogger(AtStatesPruner.class);
|
||||||
@ -18,6 +20,7 @@ public class AtStatesPruner implements Runnable {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("AT States pruner");
|
Thread.currentThread().setName("AT States pruner");
|
||||||
|
Thread.currentThread().setPriority(MIN_PRIORITY);
|
||||||
|
|
||||||
if (Settings.getInstance().isLite()) {
|
if (Settings.getInstance().isLite()) {
|
||||||
// Nothing to prune in lite mode
|
// Nothing to prune in lite mode
|
||||||
|
@ -11,6 +11,8 @@ import org.qortal.repository.RepositoryManager;
|
|||||||
import org.qortal.settings.Settings;
|
import org.qortal.settings.Settings;
|
||||||
import org.qortal.utils.NTP;
|
import org.qortal.utils.NTP;
|
||||||
|
|
||||||
|
import static java.lang.Thread.MIN_PRIORITY;
|
||||||
|
|
||||||
public class AtStatesTrimmer implements Runnable {
|
public class AtStatesTrimmer implements Runnable {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(AtStatesTrimmer.class);
|
private static final Logger LOGGER = LogManager.getLogger(AtStatesTrimmer.class);
|
||||||
@ -18,6 +20,7 @@ public class AtStatesTrimmer implements Runnable {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("AT States trimmer");
|
Thread.currentThread().setName("AT States trimmer");
|
||||||
|
Thread.currentThread().setPriority(MIN_PRIORITY);
|
||||||
|
|
||||||
if (Settings.getInstance().isLite()) {
|
if (Settings.getInstance().isLite()) {
|
||||||
// Nothing to trim in lite mode
|
// Nothing to trim in lite mode
|
||||||
|
@ -15,6 +15,8 @@ import org.qortal.utils.NTP;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static java.lang.Thread.NORM_PRIORITY;
|
||||||
|
|
||||||
public class BlockArchiver implements Runnable {
|
public class BlockArchiver implements Runnable {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(BlockArchiver.class);
|
private static final Logger LOGGER = LogManager.getLogger(BlockArchiver.class);
|
||||||
@ -23,6 +25,7 @@ public class BlockArchiver implements Runnable {
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Block archiver");
|
Thread.currentThread().setName("Block archiver");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
if (!Settings.getInstance().isArchiveEnabled() || Settings.getInstance().isLite()) {
|
if (!Settings.getInstance().isArchiveEnabled() || Settings.getInstance().isLite()) {
|
||||||
return;
|
return;
|
||||||
|
@ -11,6 +11,8 @@ import org.qortal.repository.RepositoryManager;
|
|||||||
import org.qortal.settings.Settings;
|
import org.qortal.settings.Settings;
|
||||||
import org.qortal.utils.NTP;
|
import org.qortal.utils.NTP;
|
||||||
|
|
||||||
|
import static java.lang.Thread.NORM_PRIORITY;
|
||||||
|
|
||||||
public class BlockPruner implements Runnable {
|
public class BlockPruner implements Runnable {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(BlockPruner.class);
|
private static final Logger LOGGER = LogManager.getLogger(BlockPruner.class);
|
||||||
@ -18,6 +20,7 @@ public class BlockPruner implements Runnable {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Block pruner");
|
Thread.currentThread().setName("Block pruner");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
if (Settings.getInstance().isLite()) {
|
if (Settings.getInstance().isLite()) {
|
||||||
// Nothing to prune in lite mode
|
// Nothing to prune in lite mode
|
||||||
|
@ -12,6 +12,8 @@ import org.qortal.repository.RepositoryManager;
|
|||||||
import org.qortal.settings.Settings;
|
import org.qortal.settings.Settings;
|
||||||
import org.qortal.utils.NTP;
|
import org.qortal.utils.NTP;
|
||||||
|
|
||||||
|
import static java.lang.Thread.NORM_PRIORITY;
|
||||||
|
|
||||||
public class OnlineAccountsSignaturesTrimmer implements Runnable {
|
public class OnlineAccountsSignaturesTrimmer implements Runnable {
|
||||||
|
|
||||||
private static final Logger LOGGER = LogManager.getLogger(OnlineAccountsSignaturesTrimmer.class);
|
private static final Logger LOGGER = LogManager.getLogger(OnlineAccountsSignaturesTrimmer.class);
|
||||||
@ -20,6 +22,7 @@ public class OnlineAccountsSignaturesTrimmer implements Runnable {
|
|||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
Thread.currentThread().setName("Online Accounts trimmer");
|
Thread.currentThread().setName("Online Accounts trimmer");
|
||||||
|
Thread.currentThread().setPriority(NORM_PRIORITY);
|
||||||
|
|
||||||
if (Settings.getInstance().isLite()) {
|
if (Settings.getInstance().isLite()) {
|
||||||
// Nothing to trim in lite mode
|
// Nothing to trim in lite mode
|
||||||
|
@ -164,7 +164,7 @@ public class Network {
|
|||||||
maxPeers = Settings.getInstance().getMaxPeers();
|
maxPeers = Settings.getInstance().getMaxPeers();
|
||||||
|
|
||||||
// We'll use a cached thread pool but with more aggressive timeout.
|
// We'll use a cached thread pool but with more aggressive timeout.
|
||||||
ExecutorService networkExecutor = new ThreadPoolExecutor(1,
|
ExecutorService networkExecutor = new ThreadPoolExecutor(4,
|
||||||
Settings.getInstance().getMaxNetworkThreadPoolSize(),
|
Settings.getInstance().getMaxNetworkThreadPoolSize(),
|
||||||
NETWORK_EPC_KEEPALIVE, TimeUnit.SECONDS,
|
NETWORK_EPC_KEEPALIVE, TimeUnit.SECONDS,
|
||||||
new SynchronousQueue<Runnable>(),
|
new SynchronousQueue<Runnable>(),
|
||||||
|
@ -218,11 +218,11 @@ public class Settings {
|
|||||||
private boolean allowConnectionsWithOlderPeerVersions = true;
|
private boolean allowConnectionsWithOlderPeerVersions = true;
|
||||||
|
|
||||||
/** Minimum time (in seconds) that we should attempt to remain connected to a peer for */
|
/** Minimum time (in seconds) that we should attempt to remain connected to a peer for */
|
||||||
private int minPeerConnectionTime = 60 * 60; // seconds
|
private int minPeerConnectionTime = 2 * 60 * 60; // seconds
|
||||||
/** Maximum time (in seconds) that we should attempt to remain connected to a peer for */
|
/** Maximum time (in seconds) that we should attempt to remain connected to a peer for */
|
||||||
private int maxPeerConnectionTime = 4 * 60 * 60; // seconds
|
private int maxPeerConnectionTime = 4 * 60 * 60; // seconds
|
||||||
/** Maximum time (in seconds) that a peer should remain connected when requesting QDN data */
|
/** Maximum time (in seconds) that a peer should remain connected when requesting QDN data */
|
||||||
private int maxDataPeerConnectionTime = 2 * 60; // seconds
|
private int maxDataPeerConnectionTime = 30 * 60; // seconds
|
||||||
|
|
||||||
/** Whether to sync multiple blocks at once in normal operation */
|
/** Whether to sync multiple blocks at once in normal operation */
|
||||||
private boolean fastSyncEnabled = true;
|
private boolean fastSyncEnabled = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user