Skip to content

Commit

Permalink
priority block feeder option added
Browse files Browse the repository at this point in the history
  • Loading branch information
f committed Jul 24, 2017
1 parent 653ab43 commit cc51e67
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/java/nxt/BlockchainProcessorImpl.java
Expand Up @@ -270,7 +270,8 @@ public void run() {
return;

peerHasMore = true;
Peer peer = Peers.getAnyPeer(Peer.State.CONNECTED, true);
//Peer peer = Peers.getAnyPeer(Peer.State.CONNECTED, true);
Peer peer = Peers.getBlockFeederPeer();
if (peer == null) {
return;
}
Expand Down
28 changes: 28 additions & 0 deletions src/java/nxt/peer/Peers.java
Expand Up @@ -62,6 +62,8 @@ public static enum Event {
private static boolean connectWellKnownFinished;

static final Set<String> rebroadcastPeers;
private static final Map<String, Integer> priorityBlockFeeders = new ConcurrentHashMap<>();
private static final int priorityFeederInterval = Nxt.getIntProperty("burst.priorityFeederInterval") != 0 ? Nxt.getIntProperty("burst.priorityFeederInterval") : 300;

static final int connectTimeout;
static final int readTimeout;
Expand Down Expand Up @@ -162,13 +164,24 @@ public static enum Event {

rebroadcastPeers = Collections.unmodifiableSet(new HashSet<>(Nxt.getStringListProperty("burst.rebroadcastPeers")));

List<String> priorityFeederAddresses = Nxt.getStringListProperty("burst.priorityBlockFeeders");
for(String address : priorityFeederAddresses) {
priorityBlockFeeders.put(address, 0);
}

List<String> wellKnownPeersList = Constants.isTestnet ? Nxt.getStringListProperty("nxt.testnetPeers")
: Nxt.getStringListProperty("nxt.wellKnownPeers");
for(String rePeer : rebroadcastPeers) {
if(!wellKnownPeersList.contains(rePeer)) {
wellKnownPeersList.add(rePeer);
}
}
for(String pPeer : priorityFeederAddresses) {
if(!wellKnownPeersList.contains(pPeer)) {
wellKnownPeersList.add(pPeer);
}
}

if (wellKnownPeersList.isEmpty() || Constants.isOffline) {
wellKnownPeers = Collections.emptySet();
} else {
Expand Down Expand Up @@ -758,6 +771,21 @@ public JSONObject call() {
sendToSomePeers(request); // send to some normal peers too
}

public static Peer getBlockFeederPeer() {
Peer peer = null;
int curTime = Nxt.getEpochTime();

Set<Map.Entry<String, Integer>> entries = priorityBlockFeeders.entrySet();
for(Map.Entry<String, Integer> e : entries) {
if(curTime - e.getValue() > priorityFeederInterval) {
e.setValue(curTime);
peer = addPeer(e.getKey());
break;
}
}

return peer != null ? peer : getAnyPeer(Peer.State.CONNECTED, true);
}

public static Peer getAnyPeer(Peer.State state, boolean applyPullThreshold) {

Expand Down

0 comments on commit cc51e67

Please sign in to comment.