From 95366c06ce9f26ddabb3f4f93252dd19314d74c7 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 7 Mar 2019 14:46:20 +0000 Subject: [PATCH] NetDB: Minor performance improvement in selectors log tweaks --- history.txt | 3 +++ .../src/net/i2p/router/RouterVersion.java | 4 ++-- .../kademlia/FloodOnlyLookupMatchJob.java | 2 +- .../kademlia/FloodOnlyLookupSelector.java | 5 +++-- .../FloodfillNetworkDatabaseFacade.java | 4 ++-- .../kademlia/FloodfillVerifyStoreJob.java | 5 +++-- .../kademlia/IterativeLookupSelector.java | 5 +++-- .../kademlia/SearchMessageSelector.java | 5 +++-- .../kademlia/SearchUpdateReplyFoundJob.java | 5 +++-- .../kademlia/StoreMessageSelector.java | 19 ++++++++++--------- 10 files changed, 33 insertions(+), 24 deletions(-) diff --git a/history.txt b/history.txt index 86521e8097..35ec410a52 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2019-03-06 zzz + * NetDB: Fix flood version check, add version check for RedDSA + 2019-03-05 zzz * Data: Update Encrypted LS2 blinding and encryption diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 7f4edb9752..affa6f41b1 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,10 +18,10 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 13; + public final static long BUILD = 14; /** for example "-test" */ - public final static String EXTRA = ""; + public final static String EXTRA = "-rc"; public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA; public static void main(String args[]) { System.out.println("I2P Router version: " + FULL_VERSION); diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupMatchJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupMatchJob.java index 9edc1e65f6..085305cd01 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupMatchJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupMatchJob.java @@ -36,7 +36,7 @@ class FloodOnlyLookupMatchJob extends JobImpl implements ReplyJob { public String getName() { return "NetDb flood search match"; } public void setMessage(I2NPMessage message) { - if (message instanceof DatabaseSearchReplyMessage) { + if (message.getType() == DatabaseSearchReplyMessage.MESSAGE_TYPE) { // DSRM processing now in FloodOnlyLookupSelector instead of here, // a dsrm is only passed in when there are no more lookups remaining // so that all DSRM's are processed, not just the last one. diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupSelector.java index f428bbafba..a587565a31 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodOnlyLookupSelector.java @@ -30,7 +30,8 @@ class FloodOnlyLookupSelector implements MessageSelector { public boolean isMatch(I2NPMessage message) { if (message == null) return false; - if (message instanceof DatabaseStoreMessage) { + int type = message.getType(); + if (type == DatabaseStoreMessage.MESSAGE_TYPE) { DatabaseStoreMessage dsm = (DatabaseStoreMessage)message; // is it worth making sure the reply came in on the right tunnel? if (_search.getKey().equals(dsm.getKey())) { @@ -38,7 +39,7 @@ class FloodOnlyLookupSelector implements MessageSelector { _matchFound = true; return true; } - } else if (message instanceof DatabaseSearchReplyMessage) { + } else if (type == DatabaseSearchReplyMessage.MESSAGE_TYPE) { DatabaseSearchReplyMessage dsrm = (DatabaseSearchReplyMessage)message; if (_search.getKey().equals(dsrm.getSearchKey())) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java index f6b08e8fcd..23d11bd113 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillNetworkDatabaseFacade.java @@ -569,8 +569,8 @@ public class FloodfillNetworkDatabaseFacade extends KademliaNetworkDatabaseFacad (getKBucketSetSize() < MIN_REMAINING_ROUTERS || _context.router().getUptime() < DONT_FAIL_PERIOD || _context.commSystem().countActivePeers() <= MIN_ACTIVE_PEERS)) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Not failing " + peer.toBase64() + " as we are just starting up or have problems"); + if (_log.shouldInfo()) + _log.info("Not failing " + peer.toBase64() + " as we are just starting up or have problems"); return; } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java index 8064d34fce..12a6b2cf34 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillVerifyStoreJob.java @@ -255,10 +255,11 @@ class FloodfillVerifyStoreJob extends JobImpl { public long getExpiration() { return _expiration; } public boolean isMatch(I2NPMessage message) { - if (message instanceof DatabaseStoreMessage) { + int type = message.getType(); + if (type == DatabaseStoreMessage.MESSAGE_TYPE) { DatabaseStoreMessage dsm = (DatabaseStoreMessage)message; return _key.equals(dsm.getKey()); - } else if (message instanceof DatabaseSearchReplyMessage) { + } else if (type == DatabaseSearchReplyMessage.MESSAGE_TYPE) { DatabaseSearchReplyMessage dsrm = (DatabaseSearchReplyMessage)message; return _key.equals(dsrm.getSearchKey()); } diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeLookupSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeLookupSelector.java index fc216f859a..781ef03ac7 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/IterativeLookupSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/IterativeLookupSelector.java @@ -38,14 +38,15 @@ class IterativeLookupSelector implements MessageSelector { */ public boolean isMatch(I2NPMessage message) { if (message == null) return false; - if (message instanceof DatabaseStoreMessage) { + int type = message.getType(); + if (type == DatabaseStoreMessage.MESSAGE_TYPE) { DatabaseStoreMessage dsm = (DatabaseStoreMessage)message; // is it worth making sure the reply came in on the right tunnel? if (_search.getKey().equals(dsm.getKey())) { _matchFound = true; return true; } - } else if (message instanceof DatabaseSearchReplyMessage) { + } else if (type == DatabaseSearchReplyMessage.MESSAGE_TYPE) { DatabaseSearchReplyMessage dsrm = (DatabaseSearchReplyMessage)message; if (_search.getKey().equals(dsrm.getSearchKey())) { // Got a netDb reply pointing us at other floodfills... diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchMessageSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchMessageSelector.java index 30e8e4b18a..43e732077b 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchMessageSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchMessageSelector.java @@ -69,7 +69,8 @@ class SearchMessageSelector implements MessageSelector { _log.debug("[" + _id + "] isMatch("+message.getClass().getName() + ") [want dbStore or dbSearchReply from " + _peer + " for " + _state.getTarget() + "]"); - if (message instanceof DatabaseStoreMessage) { + int type = message.getType(); + if (type == DatabaseStoreMessage.MESSAGE_TYPE) { DatabaseStoreMessage msg = (DatabaseStoreMessage)message; if (msg.getKey().equals(_state.getTarget())) { if (_log.shouldLog(Log.DEBUG)) @@ -83,7 +84,7 @@ class SearchMessageSelector implements MessageSelector { _log.debug("[" + _id + "] DBStore of a key we're not looking for"); return false; } - } else if (message instanceof DatabaseSearchReplyMessage) { + } else if (type == DatabaseSearchReplyMessage.MESSAGE_TYPE) { DatabaseSearchReplyMessage msg = (DatabaseSearchReplyMessage)message; if (_peer.equals(msg.getFromHash())) { if (msg.getSearchKey().equals(_state.getTarget())) { diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java index 881410c4a5..baf36f5e54 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/SearchUpdateReplyFoundJob.java @@ -79,7 +79,8 @@ class SearchUpdateReplyFoundJob extends JobImpl implements ReplyJob { _outTunnel.incrementVerifiedBytesTransferred(msgSize); } - if (message instanceof DatabaseStoreMessage) { + int type = message.getType(); + if (type == DatabaseStoreMessage.MESSAGE_TYPE) { long timeToReply = _state.dataFound(_peer); DatabaseStoreMessage msg = (DatabaseStoreMessage)message; DatabaseEntry entry = msg.getEntry(); @@ -97,7 +98,7 @@ class SearchUpdateReplyFoundJob extends JobImpl implements ReplyJob { // blame the peer getContext().profileManager().dbLookupReply(_peer, 0, 0, 1, 0, timeToReply); } - } else if (message instanceof DatabaseSearchReplyMessage) { + } else if (type == DatabaseSearchReplyMessage.MESSAGE_TYPE) { _job.replyFound((DatabaseSearchReplyMessage)message, _peer); } else { if (_log.shouldLog(Log.ERROR)) diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/StoreMessageSelector.java b/router/java/src/net/i2p/router/networkdb/kademlia/StoreMessageSelector.java index 352c19cd71..0fe67b5ec3 100644 --- a/router/java/src/net/i2p/router/networkdb/kademlia/StoreMessageSelector.java +++ b/router/java/src/net/i2p/router/networkdb/kademlia/StoreMessageSelector.java @@ -39,24 +39,25 @@ class StoreMessageSelector implements MessageSelector { public long getExpiration() { return _expiration; } public boolean isMatch(I2NPMessage message) { - if (_log.shouldLog(Log.DEBUG)) - _log.debug(_storeJobId + ": isMatch("+message.getClass().getName() + ") [want deliveryStatusMessage from " - + _peer + "]"); - if (message instanceof DeliveryStatusMessage) { + if (_log.shouldDebug()) + _log.debug(_storeJobId + ": isMatch(" + message.getClass().getSimpleName() + ") [want DSM from " + + _peer + ']'); + if (message.getType() == DeliveryStatusMessage.MESSAGE_TYPE) { DeliveryStatusMessage msg = (DeliveryStatusMessage)message; if (msg.getMessageId() == _waitingForId) { - if (_log.shouldLog(Log.INFO)) + if (_log.shouldInfo()) _log.info(_storeJobId + ": Found match for the key we're waiting for: " + _waitingForId); _found = true; return true; } else { - if (_log.shouldLog(Log.DEBUG)) - _log.debug(_storeJobId + ": DeliveryStatusMessage of a key we're not looking for"); + if (_log.shouldDebug()) + _log.debug(_storeJobId + ": DeliveryStatusMessage of " + msg.getMessageId() + + " but waiting for " + _waitingForId); return false; } } else { - if (_log.shouldLog(Log.DEBUG)) - _log.debug(_storeJobId + ": Not a DeliveryStatusMessage"); + //if (_log.shouldLog(Log.DEBUG)) + // _log.debug(_storeJobId + ": Not a DeliveryStatusMessage"); return false; } }