From 4888207eca1d566968c9301db605260ca75b805b Mon Sep 17 00:00:00 2001 From: jrandom Date: Sat, 10 Jul 2004 01:46:57 +0000 Subject: [PATCH] if a client reconnects, we always want to get a new leaseSet ASAP (even if the pool hadn't been marked as stopped yet) logging --- .../ClientLeaseSetManagerJob.java | 7 ++++-- .../tunnelmanager/ClientTunnelPool.java | 25 +++++++++++++------ .../PoolingTunnelManagerFacade.java | 4 +++ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/router/java/src/net/i2p/router/tunnelmanager/ClientLeaseSetManagerJob.java b/router/java/src/net/i2p/router/tunnelmanager/ClientLeaseSetManagerJob.java index 1905e29a9..c77642735 100644 --- a/router/java/src/net/i2p/router/tunnelmanager/ClientLeaseSetManagerJob.java +++ b/router/java/src/net/i2p/router/tunnelmanager/ClientLeaseSetManagerJob.java @@ -53,11 +53,14 @@ class ClientLeaseSetManagerJob extends JobImpl { _lastCreated = -1; } - public void forceRequestLease() { _forceRequestLease = true; } + public void forceRequestLease() { + _currentLeaseSet = null; + _forceRequestLease = true; + } public String getName() { return "Manage Client Lease Set"; } public void runJob() { - if (_pool.isStopped()) { + if ((!_forceRequestLease) && (_pool.isStopped()) ) { if ( (_pool.getInactiveInboundTunnelIds().size() <= 0) && (_pool.getInboundTunnelIds().size() <= 0) ) { if (_log.shouldLog(Log.INFO)) diff --git a/router/java/src/net/i2p/router/tunnelmanager/ClientTunnelPool.java b/router/java/src/net/i2p/router/tunnelmanager/ClientTunnelPool.java index 1882badba..e03a1dc64 100644 --- a/router/java/src/net/i2p/router/tunnelmanager/ClientTunnelPool.java +++ b/router/java/src/net/i2p/router/tunnelmanager/ClientTunnelPool.java @@ -43,32 +43,43 @@ class ClientTunnelPool { } public void startPool() { - if (!_isStopped) { - if (_log.shouldLog(Log.WARN)) - _log.warn("Pool " + _poolId +": Not starting the pool /again/ (its already running)"); - return; - } else { + //if (!_isStopped) { + // if (_log.shouldLog(Log.ERROR)) + // _log.error("Pool " + _poolId +": Not starting the pool /again/ (its already running)"); + // return; + //} else { if (_log.shouldLog(Log.INFO)) _log.info("Pool " + _poolId +": Starting up the pool "); - } + //} _isStopped = false; + if (_mgrJob == null) { _mgrJob = new ClientTunnelPoolManagerJob(_context, _pool, this); _context.jobQueue().addJob(_mgrJob); + } else { + _mgrJob.getTiming().setStartAfter(_context.clock().now()); + _context.jobQueue().addJob(_mgrJob); } + if (_leaseMgrJob == null) { _leaseMgrJob = new ClientLeaseSetManagerJob(_context, this); _context.jobQueue().addJob(_leaseMgrJob); } else { // we just restarted, so make sure we ask for a new leaseSet ASAP + if (_log.shouldLog(Log.DEBUG)) + _log.debug("restarting the client pool and requesting a new leaseSet"); _leaseMgrJob.forceRequestLease(); _leaseMgrJob.getTiming().setStartAfter(_context.clock().now()); _context.jobQueue().addJob(_leaseMgrJob); } + if (_tunnelExpirationJob == null) { _tunnelExpirationJob = new ClientTunnelPoolExpirationJob(_context, this, _pool); _context.jobQueue().addJob(_tunnelExpirationJob); - } + } else { + _tunnelExpirationJob.getTiming().setStartAfter(_context.clock().now()); + _context.jobQueue().addJob(_tunnelExpirationJob); + } } public void stopPool() { _isStopped = true; } public boolean isStopped() { return _isStopped; } diff --git a/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelManagerFacade.java b/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelManagerFacade.java index 8780c4c11..851a19656 100644 --- a/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelManagerFacade.java +++ b/router/java/src/net/i2p/router/tunnelmanager/PoolingTunnelManagerFacade.java @@ -130,8 +130,12 @@ public class PoolingTunnelManagerFacade implements TunnelManagerFacade { public void createTunnels(Destination destination, ClientTunnelSettings clientSettings, long timeoutMs) { ClientTunnelPool pool = _pool.getClientPool(destination); if (pool != null) { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("createTunnels for destination " + destination.calculateHash().toBase64() + " where the client pool exists"); pool.setClientSettings(clientSettings); } else { + if (_log.shouldLog(Log.DEBUG)) + _log.debug("createTunnels for destination " + destination.calculateHash().toBase64() + " where the client pool does NOT exist"); _pool.createClientPool(destination, clientSettings); } }