dubbo-cluster-extensions/dubbo-cluster-specify-address-dubbo2/src/main/java/org/apache/dubbo/rpc/cluster/specifyaddress/UserSpecifiedAddressRouter.java [270:288]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private Invoker<T> getOrBuildInvokerCache(URL url) {
        logger.info("Unable to find a proper invoker from directory. Try to create new invoker. New URL: " + url);

        InvokerCache<Invoker<T>> cache;
        cacheLock.lock();
        try {
            cache = newInvokerCache.get(url);
        } finally {
            cacheLock.unlock();
        }
        if (cache == null) {
            Invoker<T> invoker = refer(url);
            cacheLock.lock();
            try {
                cache = newInvokerCache.get(url);
                if (cache == null) {
                    cache = new InvokerCache<>(invoker);
                    newInvokerCache.put(url, cache);
                    if (launchRemovalTask.compareAndSet(false, true)) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



dubbo-cluster-extensions/dubbo-cluster-specify-address-dubbo3/src/main/java/org/apache/dubbo/rpc/cluster/specifyaddress/UserSpecifiedAddressRouter.java [172:190]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    private Invoker<T> getOrBuildInvokerCache(URL url) {
        logger.info("Unable to find a proper invoker from directory. Try to create new invoker. New URL: " + url);

        InvokerCache<Invoker<T>> cache;
        cacheLock.lock();
        try {
            cache = newInvokerCache.get(url);
        } finally {
            cacheLock.unlock();
        }
        if (cache == null) {
            Invoker<T> invoker = refer(url);
            cacheLock.lock();
            try {
                cache = newInvokerCache.get(url);
                if (cache == null) {
                    cache = new InvokerCache<>(invoker);
                    newInvokerCache.put(url, cache);
                    if (launchRemovalTask.compareAndSet(false, true)) {
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



