如果服务方法抛出异常,则Span不会传播到控制器异常处理程序

时间:2019-05-24 04:43:48

标签: spring-cloud-sleuth zipkin

我们正在开发spring boot应用程序。 在控制器中创建父范围,随后的服务方法为单个流创建子范围。 每当服务或DAO方法抛出覆盖整个流最终调用后关闭的异常范围时,我们都面临一个问题。 这也将父控制器跨度标记为已完成。 由于我们正在尝试在控制器异常处理程序方法中访问父范围,因此不可用

我们需要控制器父范围来继续直到异常处理程序。 控制器代码:

    @ContinueSpan(log="handleAllExceptions") 
    public final ResponseEntity<Exception> 
    handleAllExceptions(@SpanTag("ApplicationError") RuntimeException ex) 
    {    
     LOGGER.error(ex.toString());  
     return new 
     ResponseEntity<Exception(ex,HttpStatus.INTERNAL_SERVER_ERROR);
    }  

Span code which is causing span to finish in case exception is thrown: 
 finally { 
    after(span, startNewSpan, log, hasLog);
    }

0 个答案:

没有答案