Changeset 8146f6f for router


Ignore:
Timestamp:
Nov 23, 2016 2:21:57 PM (4 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
8973325
Parents:
625e992
Message:

FFPeerSelector: Penalize new and slow peers

Location:
router/java/src/net/i2p/router
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • router/java/src/net/i2p/router/RouterVersion.java

    r625e992 r8146f6f  
    1919    public final static String ID = "Monotone";
    2020    public final static String VERSION = CoreVersion.VERSION;
    21     public final static long BUILD = 10;
     21    public final static long BUILD = 11;
    2222
    2323    /** for example "-test" */
  • router/java/src/net/i2p/router/networkdb/kademlia/FloodfillPeerSelector.java

    r625e992 r8146f6f  
    171171    private static final int NO_FAIL_LOOKUP_GOOD = NO_FAIL_LOOKUP_OK * 3;
    172172    private static final int MAX_GOOD_RESP_TIME = 5*1000;
     173    private static final long HEARD_AGE = 48*60*60*1000L;
     174    private static final long INSTALL_AGE = HEARD_AGE + (60*60*1000L);
    173175
    174176    /**
     
    207209        int found = 0;
    208210        long now = _context.clock().now();
     211        long installed = _context.getProperty("router.firstInstalled", 0L);
     212        boolean enforceHeard = installed > 0 && (now - installed) > INSTALL_AGE;
    209213
    210214        double maxFailRate = 100;
     
    250254                if (_log.shouldLog(Log.DEBUG))
    251255                    _log.debug("Bad country: " + entry);
     256            } else if (info != null && info.getBandwidthTier().equals("L")) {
     257                badff.add(entry);
     258                if (_log.shouldLog(Log.DEBUG))
     259                    _log.debug("Slow: " + entry);
    252260            } else {
    253261                PeerProfile prof = _context.profileOrganizer().getProfile(entry);
     
    259267                        maxGoodRespTime = 2 * tunnelTestTime.getAverageValue();
    260268                }
    261                 if (prof != null && prof.getDBHistory() != null
    262                     && prof.getDbResponseTime().getRate(10*60*1000).getAverageValue() < maxGoodRespTime
    263                     && prof.getDBHistory().getLastStoreFailed() < now - NO_FAIL_STORE_GOOD
    264                     && prof.getDBHistory().getLastLookupFailed() < now - NO_FAIL_LOOKUP_GOOD
    265                     && prof.getDBHistory().getFailedLookupRate().getRate(60*60*1000).getAverageValue() < maxFailRate) {
    266                     // good
     269                if (prof != null) {
     270                    if (enforceHeard && prof.getFirstHeardAbout() > now - HEARD_AGE) {
     271                        if (_log.shouldLog(Log.DEBUG))
     272                            _log.debug("Bad (new): " + entry);
     273                        badff.add(entry);
     274                    } else if (prof.getDBHistory() != null) {
     275                        if (prof.getDbResponseTime().getRate(10*60*1000).getAverageValue() < maxGoodRespTime
     276                            && prof.getDBHistory().getLastStoreFailed() < now - NO_FAIL_STORE_GOOD
     277                            && prof.getDBHistory().getLastLookupFailed() < now - NO_FAIL_LOOKUP_GOOD
     278                            && prof.getDBHistory().getFailedLookupRate().getRate(60*60*1000).getAverageValue() < maxFailRate) {
     279                            // good
     280                            if (_log.shouldLog(Log.DEBUG))
     281                                _log.debug("Good: " + entry);
     282                            rv.add(entry);
     283                            found++;
     284                        } else if (prof.getDBHistory().getLastStoreFailed() <= prof.getDBHistory().getLastStoreSuccessful()
     285                                   || prof.getDBHistory().getLastLookupFailed() <= prof.getDBHistory().getLastLookupSuccessful()
     286                                   || (prof.getDBHistory().getLastStoreFailed() < now - NO_FAIL_STORE_OK
     287                                       && prof.getDBHistory().getLastLookupFailed() < now - NO_FAIL_LOOKUP_OK)) {
     288                            if (_log.shouldLog(Log.DEBUG))
     289                                _log.debug("OK: " + entry);
     290                            okff.add(entry);
     291                        } else {
     292                            if (_log.shouldLog(Log.DEBUG))
     293                                _log.debug("Bad (DB): " + entry);
     294                            badff.add(entry);
     295                        }
     296                    } else {
     297                        // no DBHistory
     298                        if (_log.shouldLog(Log.DEBUG))
     299                            _log.debug("Bad (no hist): " + entry);
     300                        badff.add(entry);
     301                    }
     302                } else {
     303                    // no profile
    267304                    if (_log.shouldLog(Log.DEBUG))
    268                         _log.debug("Good: " + entry);
    269                     rv.add(entry);
    270                     found++;
    271                 } else if (prof != null && prof.getDBHistory() != null
    272                            && (prof.getDBHistory().getLastStoreFailed() <= prof.getDBHistory().getLastStoreSuccessful()
    273                                || prof.getDBHistory().getLastLookupFailed() <= prof.getDBHistory().getLastLookupSuccessful()
    274                                || (prof.getDBHistory().getLastStoreFailed() < now - NO_FAIL_STORE_OK
    275                                    && prof.getDBHistory().getLastLookupFailed() < now - NO_FAIL_LOOKUP_OK))) {
    276                     if (_log.shouldLog(Log.DEBUG))
    277                         _log.debug("OK: " + entry);
    278                     okff.add(entry);
    279                 } else {
    280                     if (_log.shouldLog(Log.DEBUG))
    281                         _log.debug("Bad: " + entry);
     305                        _log.debug("Bad (no prof): " + entry);
    282306                    badff.add(entry);
    283307                }
Note: See TracChangeset for help on using the changeset viewer.