Java Code Examples for com.alibaba.csp.sentinel.Tracer#traceEntry()
The following examples show how to use
com.alibaba.csp.sentinel.Tracer#traceEntry() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SentinelZuulOutboundFilter.java From Sentinel with Apache License 2.0 | 6 votes |
public HttpResponseMessage apply(HttpResponseMessage response) { SessionContext context = response.getContext(); if (context.get(SentinelZuul2Constants.ZUUL_CTX_SENTINEL_ENTRIES_KEY) == null) { return response; } boolean previousBlocked = context.getFilterErrors().stream() .anyMatch(e -> BlockException.isBlockException(e.getException())); Deque<EntryHolder> holders = (Deque<EntryHolder>) context.get(SentinelZuul2Constants.ZUUL_CTX_SENTINEL_ENTRIES_KEY); while (!holders.isEmpty()) { EntryHolder holder = holders.pop(); if (!previousBlocked) { Tracer.traceEntry(context.getError(), holder.getEntry()); holder.getEntry().exit(1, holder.getParams()); } } return response; }
Example 2
Source File: SentinelEntryUtils.java From Sentinel-Dashboard-Nacos with Apache License 2.0 | 5 votes |
@SuppressWarnings("unchecked") static void tryTraceExceptionThenExitFromCurrentContext(Throwable t) { RequestContext ctx = RequestContext.getCurrentContext(); if (ctx.containsKey(ZuulConstant.ZUUL_CTX_SENTINEL_ENTRIES_KEY)) { Deque<AsyncEntry> asyncEntries = (Deque<AsyncEntry>) ctx.get(ZuulConstant.ZUUL_CTX_SENTINEL_ENTRIES_KEY); AsyncEntry entry; while (!asyncEntries.isEmpty()) { entry = asyncEntries.pop(); Tracer.traceEntry(t, entry); entry.exit(); } ctx.remove(ZuulConstant.ZUUL_CTX_SENTINEL_ENTRIES_KEY); } ContextUtil.exit(); }
Example 3
Source File: SentinelEntryUtils.java From Sentinel with Apache License 2.0 | 5 votes |
@SuppressWarnings("unchecked") static void tryTraceExceptionThenExitFromCurrentContext(Throwable t) { RequestContext ctx = RequestContext.getCurrentContext(); if (ctx.containsKey(ZuulConstant.ZUUL_CTX_SENTINEL_ENTRIES_KEY)) { Deque<EntryHolder> holders = (Deque<EntryHolder>) ctx.get(ZuulConstant.ZUUL_CTX_SENTINEL_ENTRIES_KEY); EntryHolder holder; while (!holders.isEmpty()) { holder = holders.pop(); Tracer.traceEntry(t, holder.getEntry()); exit(holder); } ctx.remove(ZuulConstant.ZUUL_CTX_SENTINEL_ENTRIES_KEY); } ContextUtil.exit(); }
Example 4
Source File: AbstractSentinelInterceptor.java From Sentinel with Apache License 2.0 | 5 votes |
protected void traceExceptionAndExit(Entry entry, Exception ex) { if (entry != null) { if (ex != null) { Tracer.traceEntry(ex, entry); } entry.exit(); } }
Example 5
Source File: AbstractSofaRpcFilter.java From Sentinel with Apache License 2.0 | 5 votes |
protected void traceResponseException(SofaResponse response, Entry interfaceEntry, Entry methodEntry) { if (response.isError()) { SofaRpcException rpcException = new SofaRpcException(RpcErrorType.SERVER_FILTER, response.getErrorMsg()); Tracer.traceEntry(rpcException, interfaceEntry); Tracer.traceEntry(rpcException, methodEntry); } else { Object appResponse = response.getAppResponse(); if (appResponse instanceof Throwable) { Tracer.traceEntry((Throwable) appResponse, interfaceEntry); Tracer.traceEntry((Throwable) appResponse, methodEntry); } } }
Example 6
Source File: CommonFilter.java From Sentinel with Apache License 2.0 | 4 votes |
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest sRequest = (HttpServletRequest) request; Entry urlEntry = null; try { String target = FilterUtil.filterTarget(sRequest); // Clean and unify the URL. // For REST APIs, you have to clean the URL (e.g. `/foo/1` and `/foo/2` -> `/foo/:id`), or // the amount of context and resources will exceed the threshold. UrlCleaner urlCleaner = WebCallbackManager.getUrlCleaner(); if (urlCleaner != null) { target = urlCleaner.clean(target); } // If you intend to exclude some URLs, you can convert the URLs to the empty string "" // in the UrlCleaner implementation. if (!StringUtil.isEmpty(target)) { // Parse the request origin using registered origin parser. String origin = parseOrigin(sRequest); String contextName = webContextUnify ? WebServletConfig.WEB_SERVLET_CONTEXT_NAME : target; ContextUtil.enter(contextName, origin); if (httpMethodSpecify) { // Add HTTP method prefix if necessary. String pathWithHttpMethod = sRequest.getMethod().toUpperCase() + COLON + target; urlEntry = SphU.entry(pathWithHttpMethod, ResourceTypeConstants.COMMON_WEB, EntryType.IN); } else { urlEntry = SphU.entry(target, ResourceTypeConstants.COMMON_WEB, EntryType.IN); } } chain.doFilter(request, response); } catch (BlockException e) { HttpServletResponse sResponse = (HttpServletResponse) response; // Return the block page, or redirect to another URL. WebCallbackManager.getUrlBlockHandler().blocked(sRequest, sResponse, e); } catch (IOException | ServletException | RuntimeException e2) { Tracer.traceEntry(e2, urlEntry); throw e2; } finally { if (urlEntry != null) { urlEntry.exit(); } ContextUtil.exit(); } }