dubbo-cluster-extensions/dubbo-cluster-specify-address-dubbo2/src/main/java/org/apache/dubbo/rpc/cluster/specifyaddress/UserSpecifiedAddressRouter.java [311:330]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private class RemovalTask implements Runnable {
        @Override
        public void run() {
            cacheLock.lock();
            try {
                if (CollectionUtils.isEmptyMap(newInvokerCache)) {
                    return;
                }
                Iterator<Map.Entry<URL, InvokerCache<Invoker<T>>>> iterator = newInvokerCache.entrySet().iterator();
                while (iterator.hasNext()) {
                    Map.Entry<URL, InvokerCache<Invoker<T>>> entry = iterator.next();
                    if (System.currentTimeMillis() - entry.getValue().getLastAccess() > EXPIRE_TIME) {
                        iterator.remove();
                        entry.getValue().getInvoker().destroy();
                    } else {
                        break;
                    }
                }
            } finally {
                cacheLock.unlock();
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



dubbo-cluster-extensions/dubbo-cluster-specify-address-dubbo3/src/main/java/org/apache/dubbo/rpc/cluster/specifyaddress/UserSpecifiedAddressRouter.java [305:324]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private class RemovalTask implements Runnable {
        @Override
        public void run() {
            cacheLock.lock();
            try {
                if (CollectionUtils.isEmptyMap(newInvokerCache)) {
                    return;
                }
                Iterator<Map.Entry<URL, InvokerCache<Invoker<T>>>> iterator = newInvokerCache.entrySet().iterator();
                while (iterator.hasNext()) {
                    Map.Entry<URL, InvokerCache<Invoker<T>>> entry = iterator.next();
                    if (System.currentTimeMillis() - entry.getValue().getLastAccess() > EXPIRE_TIME) {
                        iterator.remove();
                        entry.getValue().getInvoker().destroy();
                    } else {
                        break;
                    }
                }
            } finally {
                cacheLock.unlock();
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



