diff --git a/router/java/src/net/i2p/router/InNetMessagePool.java b/router/java/src/net/i2p/router/InNetMessagePool.java index 018150f58..4a8eb6e74 100644 --- a/router/java/src/net/i2p/router/InNetMessagePool.java +++ b/router/java/src/net/i2p/router/InNetMessagePool.java @@ -186,11 +186,15 @@ public class InNetMessagePool implements Service { // was not handled via HandlerJobBuilder _context.messageHistory().droppedOtherMessage(messageBody, (fromRouter != null ? fromRouter.calculateHash() : fromRouterHash)); if (type == DeliveryStatusMessage.MESSAGE_TYPE) { - long timeSinceSent = _context.clock().now() - - ((DeliveryStatusMessage)messageBody).getArrival(); - if (_log.shouldLog(Log.WARN)) - _log.warn("Dropping unhandled delivery status message created " + timeSinceSent + "ms ago: " + messageBody); - _context.statManager().addRateData("inNetPool.droppedDeliveryStatusDelay", timeSinceSent, timeSinceSent); + // Avoid logging side effect from a horrible UDP EstablishmentManager hack + // We could set up a separate stat for it but don't bother for now + long arr = ((DeliveryStatusMessage)messageBody).getArrival(); + if (arr > 10) { + long timeSinceSent = _context.clock().now() - arr; + if (_log.shouldLog(Log.WARN)) + _log.warn("Dropping unhandled delivery status message created " + timeSinceSent + "ms ago: " + messageBody); + _context.statManager().addRateData("inNetPool.droppedDeliveryStatusDelay", timeSinceSent, timeSinceSent); + } } else if (type == TunnelCreateStatusMessage.MESSAGE_TYPE) { if (_log.shouldLog(Log.INFO)) _log.info("Dropping slow tunnel create request response: " + messageBody); diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index 5e46476e7..5f6d0ed3d 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -466,6 +466,8 @@ public class EstablishmentManager { _log.info("Completing to the peer after confirm: " + peer); DeliveryStatusMessage dsm = new DeliveryStatusMessage(_context); dsm.setArrival(Router.NETWORK_ID); // overloaded, sure, but future versions can check this + // This causes huge values in the inNetPool.droppedDeliveryStatusDelay stat + // so it needs to be caught in InNetMessagePool. dsm.setMessageExpiration(_context.clock().now()+10*1000); dsm.setMessageId(_context.random().nextLong(I2NPMessage.MAX_ID_VALUE)); _transport.send(dsm, peer);