public abstract TraceState begin(String request, InetAddress client, Map<String, String> parameters);
/** This method is intended to be overridden in tracing implementations that need access to the customPayload */ protected UUID newSession(UUID sessionId, TraceType traceType, Map<String,ByteBuffer> customPayload) { assert get() == null; TraceState ts = newTraceState(localAddress, sessionId, traceType); set(ts); sessions.put(sessionId, ts); return sessionId; }
public Map<String, byte[]> getTraceHeaders() { assert isTracing(); return ImmutableMap.of( TRACE_HEADER, UUIDGen.decompose(Tracing.instance.getSessionId()), TRACE_TYPE, new byte[] { Tracing.TraceType.serialize(Tracing.instance.getTraceType()) }); }
Tracing.instance.begin("atomic_batch_mutate", traceParameters); Tracing.instance.stopSession();
TraceState state = Tracing.instance.get(sessionId); String message = String.format("Sending %s message to %s", qm.message.verb, poolReference.endPoint()); Tracing.instance.trace(ByteBuffer.wrap(sessionBytes), message, traceType.getTTL()); Tracing.instance.doneWithNonLocalSession(state);
/** * Stop the session and record its complete. Called by coodinator when request is complete. */ public void stopSession() { TraceState state = get(); if (state == null) // inline isTracing to avoid implicit two calls to state.get() { logger.trace("request complete"); } else { stopSessionImpl(); state.stop(); sessions.remove(state.sessionId); set(null); } }
private void repairComplete() { String duration = DurationFormatUtils.formatDurationWords(System.currentTimeMillis() - startTime, true, true); String message = String.format("Repair command #%d finished in %s", cmd, duration); fireProgressEvent(tag, new ProgressEvent(ProgressEventType.COMPLETE, progress.get(), totalProgress, message)); logger.info(message); if (options.isTraced() && traceState != null) { for (ProgressListener listener : listeners) traceState.removeProgressListener(listener); // Because DebuggableThreadPoolExecutor#afterExecute and this callback // run in a nondeterministic order (within the same thread), the // TraceState may have been nulled out at this point. The TraceState // should be traceState, so just set it without bothering to check if it // actually was nulled out. Tracing.instance.set(traceState); Tracing.traceRepair(message); Tracing.instance.stopSession(); } executor.shutdownNow(); } });
private void failed() { Tracing.trace("Payload application resulted in WriteTimeout, not replying"); }
cfsb.append(", ").append(cfs.keyspace.getName()).append(".").append(cfs.name); UUID sessionId = Tracing.instance.newSession(Tracing.TraceType.REPAIR); traceState = Tracing.instance.begin("repair", ImmutableMap.of("keyspace", keyspace, "columnFamilies", cfsb.substring(2))); message = message + " tracing with " + sessionId; fireProgressEvent(tag, new ProgressEvent(ProgressEventType.START, 0, 100, message)); Tracing.traceRepair(message); traceState.enableActivityNotification(tag); for (ProgressListener listener : listeners)
/** * Indicates if the current thread's execution is being traced. */ public static boolean isTracing() { return instance.get() != null; }
public void createTracingSession(Map<String,ByteBuffer> customPayload) { UUID session = this.preparedTracingSession; if (session == null) { Tracing.instance.newSession(customPayload); } else { Tracing.instance.newSession(session, customPayload); this.preparedTracingSession = null; } }
public UUID getSessionId() { assert isTracing(); return state.get().sessionId; }
public MessageOut(MessagingService.Verb verb, T payload, IVersionedSerializer<T> serializer) { this(verb, payload, serializer, isTracing() ? ImmutableMap.of(TRACE_HEADER, UUIDGen.decompose(Tracing.instance.getSessionId())) : Collections.<String, byte[]>emptyMap()); }
TraceState state = Tracing.instance.get(sessionId); String message = String.format("Sending %s message to %s", qm.message.verb, poolReference.endPoint()); Tracing.instance.doneWithNonLocalSession(state);
public void receive(MessageIn message, int id) { TraceState state = Tracing.instance.initializeFromMessage(message); if (state != null) state.trace("{} message received from {}", message.verb, message.from); // message sinks are a testing hook for (IMessageSink ms : messageSinks) if (!ms.allowIncomingMessage(message, id)) return; Runnable runnable = new MessageDeliveryTask(message, id); LocalAwareExecutorService stage = StageManager.getStage(message.getMessageType()); assert stage != null : "No stage for message type " + message.verb; stage.execute(runnable, ExecutorLocals.create(state)); }
private void reset() { Tracing.instance.set(null); } }
Tracing.instance.begin("batch_mutate", traceParameters); Tracing.instance.stopSession();
TraceState state = Tracing.instance.get(sessionId); String message = String.format("Sending %s message to %s", qm.message.verb, poolReference.endPoint()); Tracing.instance.trace(ByteBuffer.wrap(sessionBytes), message, traceType.getTTL()); Tracing.instance.doneWithNonLocalSession(state);
/** * Stop the session and record its complete. Called by coodinator when request is complete. */ public void stopSession() { TraceState state = get(); if (state == null) // inline isTracing to avoid implicit two calls to state.get() { logger.trace("request complete"); } else { stopSessionImpl(); state.stop(); sessions.remove(state.sessionId); set(null); } }