public static RequestContext getThreadLocalContext(String name) {
        Map<String, RequestContext> contextMap = THREAD_LOCAL_CONTEXT_MAP.get();
        if (contextMap == null) {
            contextMap = new ConcurrentHashMap<>(MAX_SIZE);
            THREAD_LOCAL_CONTEXT_MAP.set(contextMap);
        }
        if (contextMap.size() >= MAX_SIZE) {
            throw new IllegalArgumentException("Can not create context in current thread!");
        }
        return contextMap.computeIfAbsent(name, sourceName -> new RequestContext(THREAD_LOCAL_CONTEXT_MAP, sourceName));
    }
@Test(expected = IllegalArgumentException.class)
    public void getThreadLocalContext() {
        ChainContext.getThreadLocalContext("test");
        ChainContext.getThreadLocalContext("test1");
        ChainContext.getThreadLocalContext("test12");
        ChainContext.getThreadLocalContext("test123");
        ChainContext.getThreadLocalContext("test124");
        ChainContext.getThreadLocalContext("test125");
        ChainContext.getThreadLocalContext("test126");
        ChainContext.getThreadLocalContext("test127");
        try {
            ChainContext.getThreadLocalContext("test5");
        } finally {
            ChainContext.remove();
        }
    }