Changeset 939dcee


Ignore:
Timestamp:
Oct 2, 2010 2:48:50 PM (10 years ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
ed4c09b
Parents:
7424fdd
Message:
  • GeoIP: Fix locking bug causing lookups to stop
File:
1 edited

Legend:

Unmodified
Added
Removed
  • router/java/src/net/i2p/router/transport/GeoIP.java

    r7424fdd r939dcee  
    9999            if (_lock.getAndSet(true))
    100100                return;
    101             // clear the negative cache every few runs, to prevent it from getting too big
    102             if (((++_lookupRunCount) % CLEAR) == 0)
    103                 _notFound.clear();
    104             Long[] search = _pendingSearch.toArray(new Long[_pendingSearch.size()]);
    105             if (search.length <= 0)
    106                 return;
    107             _pendingSearch.clear();
    108             Arrays.sort(search);
    109             String[] countries = readGeoIPFile(search);
    110 
    111             for (int i = 0; i < countries.length; i++) {
    112                 if (countries[i] != null)
    113                     _IPToCountry.put(search[i], countries[i]);
    114                 else
    115                     _notFound.add(search[i]);
     101            try {
     102                // clear the negative cache every few runs, to prevent it from getting too big
     103                if (((++_lookupRunCount) % CLEAR) == 0)
     104                    _notFound.clear();
     105                Long[] search = _pendingSearch.toArray(new Long[_pendingSearch.size()]);
     106                if (search.length <= 0)
     107                    return;
     108                _pendingSearch.clear();
     109                Arrays.sort(search);
     110                String[] countries = readGeoIPFile(search);
     111   
     112                for (int i = 0; i < countries.length; i++) {
     113                    if (countries[i] != null)
     114                        _IPToCountry.put(search[i], countries[i]);
     115                    else
     116                        _notFound.add(search[i]);
     117                }
     118            } finally {
     119                _lock.set(false);
    116120            }
    117             _lock.set(false);
    118121        }
    119122    }
Note: See TracChangeset for help on using the changeset viewer.