mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-24 12:46:45 +00:00
tune batch page size for better performance over tor
This commit is contained in:
parent
20a99e3236
commit
3820b9838d
4 changed files with 24 additions and 6 deletions
|
@ -60,7 +60,7 @@ public class Config {
|
||||||
private boolean useProxy;
|
private boolean useProxy;
|
||||||
private String proxyServer;
|
private String proxyServer;
|
||||||
private int maxServerTimeout = DEFAULT_MAX_TIMEOUT;
|
private int maxServerTimeout = DEFAULT_MAX_TIMEOUT;
|
||||||
private int batchPageSize = DEFAULT_PAGE_SIZE;
|
private int maxPageSize = DEFAULT_PAGE_SIZE;
|
||||||
private boolean usePayNym;
|
private boolean usePayNym;
|
||||||
private boolean sameAppMixing;
|
private boolean sameAppMixing;
|
||||||
private Double appWidth;
|
private Double appWidth;
|
||||||
|
@ -503,8 +503,8 @@ public class Config {
|
||||||
return maxServerTimeout;
|
return maxServerTimeout;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getBatchPageSize() {
|
public int getMaxPageSize() {
|
||||||
return batchPageSize;
|
return maxPageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isUsePayNym() {
|
public boolean isUsePayNym() {
|
||||||
|
|
|
@ -17,7 +17,7 @@ import static com.sparrowwallet.sparrow.net.BatchedElectrumServerRpc.DEFAULT_MAX
|
||||||
import static com.sparrowwallet.sparrow.net.BatchedElectrumServerRpc.RETRY_DELAY_SECS;
|
import static com.sparrowwallet.sparrow.net.BatchedElectrumServerRpc.RETRY_DELAY_SECS;
|
||||||
|
|
||||||
public class PagedBatchRequestBuilder<K, V> extends AbstractBuilder {
|
public class PagedBatchRequestBuilder<K, V> extends AbstractBuilder {
|
||||||
public static final int DEFAULT_PAGE_SIZE = 500;
|
public static final int DEFAULT_PAGE_SIZE = 100;
|
||||||
|
|
||||||
private final AtomicLong counter;
|
private final AtomicLong counter;
|
||||||
|
|
||||||
|
@ -147,11 +147,19 @@ public class PagedBatchRequestBuilder<K, V> extends AbstractBuilder {
|
||||||
}
|
}
|
||||||
|
|
||||||
private int getPageSize() {
|
private int getPageSize() {
|
||||||
int pageSize = Config.get().getBatchPageSize();
|
int pageSize = Config.get().getMaxPageSize();
|
||||||
if(pageSize < 1) {
|
if(pageSize < 1) {
|
||||||
pageSize = DEFAULT_PAGE_SIZE;
|
pageSize = DEFAULT_PAGE_SIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Halve the page size if there have been timeouts
|
||||||
|
if(transport instanceof TimeoutCounter timeoutCounter) {
|
||||||
|
int timeouts = timeoutCounter.getTimeoutCount();
|
||||||
|
if(timeouts > 0) {
|
||||||
|
return pageSize / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return pageSize;
|
return pageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.locks.Condition;
|
import java.util.concurrent.locks.Condition;
|
||||||
import java.util.concurrent.locks.ReentrantLock;
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
public class TcpTransport implements Transport, Closeable {
|
public class TcpTransport implements Transport, Closeable, TimeoutCounter {
|
||||||
private static final Logger log = LoggerFactory.getLogger(TcpTransport.class);
|
private static final Logger log = LoggerFactory.getLogger(TcpTransport.class);
|
||||||
|
|
||||||
public static final int DEFAULT_PORT = 50001;
|
public static final int DEFAULT_PORT = 50001;
|
||||||
|
@ -251,6 +251,11 @@ public class TcpTransport implements Transport, Closeable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getTimeoutCount() {
|
||||||
|
return readTimeoutIndex;
|
||||||
|
}
|
||||||
|
|
||||||
private static class Rpc {
|
private static class Rpc {
|
||||||
public String id;
|
public String id;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.sparrowwallet.sparrow.net;
|
||||||
|
|
||||||
|
public interface TimeoutCounter {
|
||||||
|
int getTimeoutCount();
|
||||||
|
}
|
Loading…
Reference in a new issue