sentinel-tutorial icon indicating copy to clipboard operation
sentinel-tutorial copied to clipboard

多线程情况下,如果使用默认contextName的context访问同一个resource时,使用的是同一个DefaultNode

Open XiongMMaq opened this issue 4 years ago • 0 comments

image 图片中,这句话是不是描述的由问题?

没有认为设置contextName时,使用呢默认的:Constants.CONTEXT_DEFAULT_NAME(sentinel_default_context) if (context == null) { // Using default context. context = InternalContextUtil.internalEnter(Constants.CONTEXT_DEFAULT_NAME); }

如下图在NodeSelectorSlot中,通过context.getName()获取DefaultNode ` DefaultNode node = map.get(context.getName()); if (node == null) { synchronized (this) { node = map.get(context.getName()); if (node == null) { node = new DefaultNode(resourceWrapper, null); HashMap<String, DefaultNode> cacheMap = new HashMap<String, DefaultNode>(map.size()); cacheMap.putAll(map); cacheMap.put(context.getName(), node); map = cacheMap; // Build invocation tree ((DefaultNode) context.getLastNode()).addChild(node); }

        }
    }

    context.setCurNode(node);
    fireEntry(context, resourceWrapper, node, count, prioritized, args);`

XiongMMaq avatar Mar 25 '21 03:03 XiongMMaq