@Test public void testTracing() { TeiidTracingUtil ttu = new TeiidTracingUtil(); MockTracer tracer = new MockTracer(); ttu.setTracer(tracer); assertNotNull(ttu.extractSpanContext("{\"spanid\":\"1\",\"traceid\":\"2\"}")); SpanContext spanContext = ttu.extractSpanContext("corrupted"); assertNull(spanContext); assertNull(tracer.activeSpan()); //should be null, no side effect just from extract Span span = ttu.buildSpan(new Options().tracingWithActiveSpanOnly(false), new CommandLogMessage(0, "", null, null, null, null, null, null, "", null), null); assertNotNull(span); span = ttu.buildSpan(new Options().tracingWithActiveSpanOnly(false), new CommandLogMessage(0, "", null, null, null, null, null, null, "", null), "{\"spanid\":\"1\",\"traceid\":\"2\"}"); assertNotNull(span); }
@Test public void testTracingEnabled() { TeiidTracingUtil ttu = new TeiidTracingUtil(); MockTracer tracer = new MockTracer(); ttu.setTracer(tracer); assertFalse(ttu.isTracingEnabled(new Options().tracingWithActiveSpanOnly(true), null)); }
timer.start(); if (span != null) { scope = TeiidTracingUtil.getInstance().activateSpan(span);
if (!isTracingEnabled(options, spanContextJson)) { return null; Tracer.SpanBuilder spanBuilder = getTracer() .buildSpan("USER COMMAND") //$NON-NLS-1$ .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER); SpanContext parent = extractSpanContext(spanContextJson); if (parent != null) { spanBuilder.asChildOf(parent);
void logMMCommand(RequestWorkItem workItem, Event status, Long rowCount, Long cpuTime) { if ((status != Event.PLAN && !LogManager.isMessageToBeRecorded(LogConstants.CTX_COMMANDLOGGING, MessageLevel.DETAIL)) || (status == Event.PLAN && !LogManager.isMessageToBeRecorded(LogConstants.CTX_COMMANDLOGGING, MessageLevel.TRACE))) { if (!TeiidTracingUtil.getInstance().isTracingEnabled(options, workItem.requestMsg.getSpanContext())) { return; if (status == Event.NEW) { message = new CommandLogMessage(System.currentTimeMillis(), rID.toString(), txnID, workContext.getSessionId(), appName, workContext.getUserName(), workContext.getVdbName(), workContext.getVdbVersion(), msg.getCommandString(), cpuTime); workItem.setTracingSpan(TeiidTracingUtil.getInstance().buildSpan(options, message, msg.getSpanContext())); } else { QueryProcessor qp = workItem.getProcessor();
&& !TeiidTracingUtil.getInstance().isTracingEnabled(null, null)) { return; if (cmdStatus == Event.NEW) { message = new CommandLogMessage(System.currentTimeMillis(), qr.getRequestID().toString(), sid.getNodeID(), transactionID, modelName, translatorName, qr.getWorkContext().getSessionId(), principal, sqlStr, context); Span span = TeiidTracingUtil.getInstance().buildSourceSpan(message, translatorType); cwi.setTracingSpan(span);
/** * Return true if tracing is enabled. * * Both arguments may be null, in which case true will be returned only if there is an active span * @param options * @param spanContextJson * @return */ public boolean isTracingEnabled(Options options, String spanContextJson) { boolean withActiveSpanOnly = options == null?true:options.isTracingWithActiveSpanOnly(); return !withActiveSpanOnly || getTracer().activeSpan() != null || spanContextJson != null; }
if (!isTracingEnabled(options, spanContextJson)) { return null; Tracer.SpanBuilder spanBuilder = getTracer() .buildSpan("USER COMMAND") //$NON-NLS-1$ .withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_SERVER); SpanContext parent = extractSpanContext(spanContextJson); if (parent != null) { spanBuilder.asChildOf(parent);
void logMMCommand(RequestWorkItem workItem, Event status, Long rowCount, Long cpuTime) { if ((status != Event.PLAN && !LogManager.isMessageToBeRecorded(LogConstants.CTX_COMMANDLOGGING, MessageLevel.DETAIL)) || (status == Event.PLAN && !LogManager.isMessageToBeRecorded(LogConstants.CTX_COMMANDLOGGING, MessageLevel.TRACE))) { if (!TeiidTracingUtil.getInstance().isTracingEnabled(options, workItem.requestMsg.getSpanContext())) { return; if (status == Event.NEW) { message = new CommandLogMessage(System.currentTimeMillis(), rID.toString(), txnID, workContext.getSessionId(), appName, workContext.getUserName(), workContext.getVdbName(), workContext.getVdbVersion(), msg.getCommandString(), cpuTime); workItem.setTracingSpan(TeiidTracingUtil.getInstance().buildSpan(options, message, msg.getSpanContext())); } else { QueryProcessor qp = workItem.getProcessor();
&& !TeiidTracingUtil.getInstance().isTracingEnabled(null, null)) { return; if (cmdStatus == Event.NEW) { message = new CommandLogMessage(System.currentTimeMillis(), qr.getRequestID().toString(), sid.getNodeID(), transactionID, modelName, translatorName, qr.getWorkContext().getSessionId(), principal, sqlStr, context); Span span = TeiidTracingUtil.getInstance().buildSourceSpan(message, translatorType); cwi.setTracingSpan(span);
/** * Return true if tracing is enabled. * * Both arguments may be null, in which case true will be returned only if there is an active span * @param options * @param spanContextJson * @return */ public boolean isTracingEnabled(Options options, String spanContextJson) { boolean withActiveSpanOnly = options == null?true:options.isTracingWithActiveSpanOnly(); return !withActiveSpanOnly || getTracer().activeSpan() != null || spanContextJson != null; }
timer.start(); if (span != null) { scope = TeiidTracingUtil.getInstance().activateSpan(span);
public Scope activateSpan(Span span) { Tracer tr = getTracer(); if (tr.activeSpan() == span) { //when a workitem adds itself to a queue the span will already be active return null; } return tr.scopeManager().activate(span, false); }
io.opentracing.Scope scope = null; if (this.span != null) { scope = TeiidTracingUtil.getInstance().activateSpan(this.span);
public Scope activateSpan(Span span) { Tracer tr = getTracer(); if (tr.activeSpan() == span) { //when a workitem adds itself to a queue the span will already be active return null; } return tr.scopeManager().activate(span, false); }
io.opentracing.Scope scope = null; if (this.span != null) { scope = TeiidTracingUtil.getInstance().activateSpan(this.span);
protected SpanContext extractSpanContext(String spanContextJson) { try { JSONParser parser = new JSONParser(); SimpleContentHandler sch = new SimpleContentHandler(); parser.parse(spanContextJson, sch); Map<String, String> result = (Map<String, String>) sch.getResult(); return getTracer().extract(Builtin.TEXT_MAP, new TextMapExtractAdapter(result)); } catch (IllegalArgumentException | ClassCastException | ParseException e) { LogManager.logDetail(LogConstants.CTX_DQP, e, "Could not extract the span context"); //$NON-NLS-1$ return null; } }
timer.start(); if (this.span != null) { scope = TeiidTracingUtil.getInstance().activateSpan(this.span);
protected SpanContext extractSpanContext(String spanContextJson) { try { JSONParser parser = new JSONParser(); SimpleContentHandler sch = new SimpleContentHandler(); parser.parse(spanContextJson, sch); Map<String, String> result = (Map<String, String>) sch.getResult(); return getTracer().extract(Builtin.TEXT_MAP, new TextMapExtractAdapter(result)); } catch (IllegalArgumentException | ClassCastException | ParseException e) { LogManager.logDetail(LogConstants.CTX_DQP, e, "Could not extract the span context"); //$NON-NLS-1$ return null; } }
timer.start(); if (this.span != null) { scope = TeiidTracingUtil.getInstance().activateSpan(this.span);