Changeset 289c7d6
- Timestamp:
- Feb 13, 2011 9:23:16 PM (10 years ago)
- Branches:
- master
- Children:
- 581cd72
- Parents:
- d15f682 (diff), 8549988 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelConnectClient.java
rd15f682 r289c7d6 171 171 line = DataHelper.readLine(in); 172 172 if(line == null) { 173 line = ""; // prevent NPE, Is this what we need to do?173 break; 174 174 } 175 175 line = line.trim(); -
history.txt
rd15f682 r289c7d6 1 2011-02-13 zzz 2 * Connect Client: Minor NPE fix cleanup 3 * JobQueue: Prevet NPE at shutdown (thanks liberty) 4 * GeoIP: Prevent startup NPE (ticket #413, thanks RN) 5 * NetDB: Prevent ExpireLeaseJob NPE (thanks sponge) 6 1 7 2011-02-11 Mathiasdm 2 8 * routerconsole: fixed graphs using jrobin; and headless issue -
router/java/src/net/i2p/router/JobQueue.java
rd15f682 r289c7d6 228 228 229 229 public long getMaxLag() { 230 // first job is the one that has been waiting the longest 230 231 Job j = _readyJobs.peek(); 231 232 if (j == null) return 0; 232 // first job is the one that has been waiting the longest 233 long startAfter = j.getTiming().getStartAfter(); 233 JobTiming jt = j.getTiming(); 234 // PoisonJob timing is null, prevent NPE at shutdown 235 if (jt == null) 236 return 0; 237 long startAfter = jt.getStartAfter(); 234 238 return _context.clock().now() - startAfter; 235 239 } -
router/java/src/net/i2p/router/RouterContext.java
rd15f682 r289c7d6 7 7 import net.i2p.I2PAppContext; 8 8 import net.i2p.data.Hash; 9 import net.i2p.data.RouterInfo; 9 10 import net.i2p.internal.InternalClientManager; 10 11 import net.i2p.router.client.ClientManagerFacadeImpl; … … 171 172 /** what router is this context working for? */ 172 173 public Router router() { return _router; } 173 /** convenience method for querying the router's ident */ 174 public Hash routerHash() { return _router.getRouterInfo().getIdentity().getHash(); } 174 175 /** 176 * Convenience method for getting the router hash. 177 * Equivalent to context.router().getRouterInfo().getIdentity().getHash() 178 * @return may be null if called very early 179 */ 180 public Hash routerHash() { 181 if (_router == null) 182 return null; 183 RouterInfo ri = _router.getRouterInfo(); 184 if (ri == null) 185 return null; 186 return ri.getIdentity().getHash(); 187 } 175 188 176 189 /** -
router/java/src/net/i2p/router/RouterVersion.java
rd15f682 r289c7d6 19 19 public final static String ID = "Monotone"; 20 20 public final static String VERSION = CoreVersion.VERSION; 21 public final static long BUILD = 9;21 public final static long BUILD = 10; 22 22 23 23 /** for example "-test" */ -
router/java/src/net/i2p/router/networkdb/kademlia/ExpireLeasesJob.java
rd15f682 r289c7d6 10 10 11 11 import java.util.HashSet; 12 import java.util. Iterator;12 import java.util.Map; 13 13 import java.util.Set; 14 14 … … 28 28 */ 29 29 class ExpireLeasesJob extends JobImpl { 30 private Log _log;31 private KademliaNetworkDatabaseFacade _facade;30 private final Log _log; 31 private final KademliaNetworkDatabaseFacade _facade; 32 32 33 33 private final static long RERUN_DELAY_MS = 1*60*1000; … … 40 40 41 41 public String getName() { return "Expire Lease Sets Job"; } 42 42 43 public void runJob() { 43 Set toExpire = selectKeysToExpire();44 Set<Hash> toExpire = selectKeysToExpire(); 44 45 _log.info("Leases to expire: " + toExpire); 45 for (Iterator iter = toExpire.iterator(); iter.hasNext(); ) { 46 Hash key = (Hash)iter.next(); 46 for (Hash key : toExpire) { 47 47 _facade.fail(key); 48 48 //_log.info("Lease " + key + " is expiring, so lets look for it again", new Exception("Expire and search")); … … 58 58 * 59 59 */ 60 private Set selectKeysToExpire() { 61 Set keys = _facade.getDataStore().getKeys(); 62 Set toExpire = new HashSet(128); 63 for (Iterator iter = keys.iterator(); iter.hasNext(); ) { 64 Hash key = (Hash)iter.next(); 65 DatabaseEntry obj = _facade.getDataStore().get(key); 60 private Set<Hash> selectKeysToExpire() { 61 Set<Hash> toExpire = new HashSet(128); 62 for (Map.Entry<Hash, DatabaseEntry> entry : _facade.getDataStore().getMapEntries()) { 63 DatabaseEntry obj = entry.getValue(); 66 64 if (obj.getType() == DatabaseEntry.KEY_TYPE_LEASESET) { 67 65 LeaseSet ls = (LeaseSet)obj; 68 66 if (!ls.isCurrent(Router.CLOCK_FUDGE_FACTOR)) 69 toExpire.add( key);70 else 67 toExpire.add(entry.getKey()); 68 else if (_log.shouldLog(Log.DEBUG)) 71 69 _log.debug("Lease " + ls.getDestination().calculateHash() + " is current, no need to expire"); 72 70 } -
router/java/src/net/i2p/router/networkdb/kademlia/ExpireRoutersJob.java
rd15f682 r289c7d6 10 10 11 11 import java.util.Collections; 12 import java.util.Iterator;13 12 import java.util.Set; 14 13 … … 29 28 */ 30 29 class ExpireRoutersJob extends JobImpl { 31 private Log _log;32 private KademliaNetworkDatabaseFacade _facade;30 private final Log _log; 31 private final KademliaNetworkDatabaseFacade _facade; 33 32 34 33 /** rerun fairly often, so the fails don't queue up too many netdb searches at once */ … … 42 41 43 42 public String getName() { return "Expire Routers Job"; } 43 44 44 public void runJob() { 45 Set toExpire = selectKeysToExpire(); 46 _log.info("Routers to expire (drop and try to refetch): " + toExpire); 47 for (Iterator iter = toExpire.iterator(); iter.hasNext(); ) { 48 Hash key = (Hash)iter.next(); 45 // this always returns an empty set (see below) 46 Set<Hash> toExpire = selectKeysToExpire(); 47 if (_log.shouldLog(Log.INFO)) 48 _log.info("Routers to expire (drop and try to refetch): " + toExpire); 49 for (Hash key : toExpire) { 49 50 _facade.fail(key); 50 51 } … … 62 63 * @return nothing for now 63 64 */ 64 private Set selectKeysToExpire() { 65 for (Iterator iter = _facade.getAllRouters().iterator(); iter.hasNext(); ) { 66 Hash key = (Hash)iter.next(); 65 private Set<Hash> selectKeysToExpire() { 66 for (Hash key : _facade.getAllRouters()) { 67 67 // Don't expire anybody we are connected to 68 68 if (!getContext().commSystem().isEstablished(key)) { -
router/java/src/net/i2p/router/transport/GeoIP.java
rd15f682 r289c7d6 17 17 18 18 import net.i2p.data.DataHelper; 19 import net.i2p.data.Hash; 19 20 import net.i2p.router.RouterContext; 20 21 import net.i2p.util.ConcurrentHashSet; … … 252 253 private void updateOurCountry() { 253 254 String oldCountry = _context.router().getConfigSetting(PROP_IP_COUNTRY); 254 String country = _context.commSystem().getCountry(_context.routerHash()); 255 Hash ourHash = _context.routerHash(); 256 // we should always have a RouterInfo by now, but we had one report of an NPE here 257 if (ourHash == null) 258 return; 259 String country = _context.commSystem().getCountry(ourHash); 255 260 if (country != null && !country.equals(oldCountry)) { 256 261 _context.router().setConfigSetting(PROP_IP_COUNTRY, country);
Note: See TracChangeset
for help on using the changeset viewer.