private void serializeDbContext(final Db db) { writeFieldName("db"); jw.writeByte(OBJECT_START); writeField("instance", db.getInstance()); if (db.getStatement() != null) { writeLongStringField("statement", db.getStatement()); } else { final CharBuffer statementBuffer = db.getStatementBuffer(); if (statementBuffer != null && statementBuffer.length() > 0) { writeFieldName("statement"); jw.writeString(statementBuffer); jw.writeByte(COMMA); } } writeField("type", db.getType()); writeLastField("user", db.getUser()); jw.writeByte(OBJECT_END); }
public boolean hasContent() { return super.hasContent() || db.hasContent() || http.hasContent(); } }
@Override public void resetState() { super.resetState(); db.resetState(); http.resetState(); }
@Test void resetState() { Span span = new Span(mock(ElasticApmTracer.class)) .withName("SELECT FROM product_types") .withType("db") .withSubtype("postgresql") .withAction("query"); span.getContext().getDb() .withInstance("customers") .withStatement("SELECT * FROM product_types WHERE user_id=?") .withType("sql") .withUser("readonly_user"); span.resetState(); assertThat(span.getContext().hasContent()).isFalse(); assertThat((CharSequence) span.getName()).isNullOrEmpty(); assertThat(span.getType()).isNull(); assertThat(span.getSubtype()).isNull(); assertThat(span.getAction()).isNull(); } }
.withAction("query"); span.getContext().getDb() .withInstance("customers") .withStatement("SELECT * FROM product_types WHERE user_id=?") .withType("sql") .withUser("readonly_user"); span.addTag("monitored_by", "ACME"); span.addTag("framework", "some-framework");
private void serializeSpanContext(SpanContext context) { writeFieldName("context"); jw.writeByte(OBJECT_START); boolean spanContextWritten = false; Db db = context.getDb(); if (db.hasContent()) { serializeDbContext(db); spanContextWritten = true; } Http http = context.getHttp(); if (http.hasContent()) { if (spanContextWritten) { jw.writeByte(COMMA); } serializeHttpContext(http); spanContextWritten = true; } Map<String, String> tags = context.getTags(); if (!tags.isEmpty()) { if (spanContextWritten) { jw.writeByte(COMMA); } writeFieldName("tags"); serializeTags(tags); } jw.writeByte(OBJECT_END); jw.writeByte(COMMA); }