You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by tl...@apache.org on 2021/03/04 11:46:29 UTC
[ignite] branch master updated: IGNITE-14008 SQL tracing: add tag
sql.query.id (#8682)
This is an automated email from the ASF dual-hosted git repository.
tledkov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 5269c15 IGNITE-14008 SQL tracing: add tag sql.query.id (#8682)
5269c15 is described below
commit 5269c159aab312b9772b1e42798a6ff98d52c0a4
Author: tledkov <tl...@gridgain.com>
AuthorDate: Thu Mar 4 14:46:12 2021 +0300
IGNITE-14008 SQL tracing: add tag sql.query.id (#8682)
---
.../processors/query/RunningQueryManager.java | 5 ++-
.../internal/processors/tracing/SpanTags.java | 3 ++
.../monitoring/opencensus/AbstractTracingTest.java | 51 ++++++++++++++++++++--
.../opencensus/OpenCensusSqlJdbcTracingTest.java | 9 +++-
.../opencensus/OpenCensusSqlNativeTracingTest.java | 11 ++++-
5 files changed, 73 insertions(+), 6 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java
index 36159f0..98af2dd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/RunningQueryManager.java
@@ -44,6 +44,7 @@ import static org.apache.ignite.internal.processors.cache.query.GridCacheQueryTy
import static org.apache.ignite.internal.processors.cache.query.GridCacheQueryType.SQL_FIELDS;
import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
import static org.apache.ignite.internal.processors.tracing.SpanTags.ERROR;
+import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_QRY_ID;
/**
* Keep information about all running queries.
@@ -147,7 +148,7 @@ public class RunningQueryManager {
@Nullable GridQueryCancel cancel) {
long qryId = qryIdGen.incrementAndGet();
- GridRunningQueryInfo run = new GridRunningQueryInfo(
+ final GridRunningQueryInfo run = new GridRunningQueryInfo(
qryId,
localNodeId,
qry,
@@ -166,6 +167,8 @@ public class RunningQueryManager {
assert preRun == null : "Running query already registered [prev_qry=" + preRun + ", newQry=" + run + ']';
+ run.span().addTag(SQL_QRY_ID, run::globalQueryId);
+
return qryId;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
index 38327f4..76d8100 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
@@ -111,6 +111,9 @@ public class SpanTags {
/** Whether parsing of the SQL query was skipped due to the cached result. */
public static final String SQL_PARSER_CACHE_HIT = "sql.parser.cache.hit";
+ /** Query identifier. */
+ public static final String SQL_QRY_ID = "sql.query.id";
+
/** */
private SpanTags() {}
diff --git a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/AbstractTracingTest.java b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/AbstractTracingTest.java
index 450ed81..2760362 100644
--- a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/AbstractTracingTest.java
+++ b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/AbstractTracingTest.java
@@ -208,6 +208,25 @@ public abstract class AbstractTracingTest extends GridCommonAbstractTest {
int expSpansCnt,
/* tagName: tagValue*/ Map<String, String> expAttrs
) {
+ return checkSpan(spanType, parentSpanId, expSpansCnt, expAttrs, CheckAttributes.EQUALS);
+ }
+
+ /**
+ * Check span.
+ *
+ * @param spanType Span type.
+ * @param parentSpanId Parent span id.
+ * @param expSpansCnt expected spans count.
+ * @param expAttrs Attributes to check.
+ * @return List of founded span ids.
+ */
+ java.util.List<SpanId> checkSpan(
+ SpanType spanType,
+ SpanId parentSpanId,
+ int expSpansCnt,
+ /* tagName: tagValue*/ Map<String, String> expAttrs,
+ CheckAttributes attrCheckType
+ ) {
java.util.List<SpanData> gotSpans = hnd.allSpans()
.filter(
span -> parentSpanId != null ?
@@ -222,7 +241,7 @@ public abstract class AbstractTracingTest extends GridCommonAbstractTest {
gotSpans.forEach(spanData -> {
spanIds.add(spanData.getContext().getSpanId());
- checkSpanAttributes(spanData, expAttrs);
+ checkSpanAttributes(spanData, expAttrs, attrCheckType);
});
return spanIds;
@@ -266,11 +285,28 @@ public abstract class AbstractTracingTest extends GridCommonAbstractTest {
* @param spanData Span data to check.
* @param expAttrs Attributes to check.
*/
- private void checkSpanAttributes(SpanData spanData, /* tagName: tagValue*/ Map<String, String> expAttrs) {
+ private void checkSpanAttributes(
+ SpanData spanData,
+ /* tagName: tagValue*/ Map<String, String> expAttrs,
+ CheckAttributes attrCheckType
+ ) {
Map<String, AttributeValue> attrs = spanData.getAttributes().getAttributeMap();
if (expAttrs != null) {
- assertEquals(expAttrs.size(), attrs.size());
+ switch (attrCheckType) {
+ case EQUALS:
+ assertEquals(expAttrs.size(), attrs.size());
+
+ break;
+
+ case CONTAINS:
+ assertTrue(expAttrs.size() <= attrs.size());
+
+ break;
+
+ default:
+ fail("Unexpected attributes check: " + attrCheckType);
+ }
for (Map.Entry<String, String> entry : expAttrs.entrySet())
assertEquals(entry.getValue(), attributeValueToString(attrs.get(entry.getKey())));
@@ -409,4 +445,13 @@ public abstract class AbstractTracingTest extends GridCommonAbstractTest {
collectedSpansByParents.clear();
}
}
+
+ /** */
+ public enum CheckAttributes {
+ /** */
+ EQUALS,
+
+ /** */
+ CONTAINS
+ }
}
diff --git a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlJdbcTracingTest.java b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlJdbcTracingTest.java
index d8adcaa..e0fe030 100644
--- a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlJdbcTracingTest.java
+++ b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlJdbcTracingTest.java
@@ -23,6 +23,8 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Objects;
+import java.util.UUID;
+
import io.opencensus.trace.SpanId;
import org.apache.ignite.client.Config;
import org.apache.ignite.internal.IgniteEx;
@@ -35,6 +37,7 @@ import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.cache.CacheMode.REPLICATED;
import static org.apache.ignite.internal.processors.query.QueryUtils.DFLT_SCHEMA;
import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_PAGE_ROWS;
+import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_QRY_ID;
import static org.apache.ignite.internal.processors.tracing.SpanType.SQL_BATCH_PROCESS;
import static org.apache.ignite.internal.processors.tracing.SpanType.SQL_CMD_QRY_EXECUTE;
import static org.apache.ignite.internal.processors.tracing.SpanType.SQL_CURSOR_CLOSE;
@@ -51,7 +54,7 @@ import static org.apache.ignite.spi.tracing.TracingConfigurationParameters.SAMPL
import static org.apache.ignite.spi.tracing.TracingConfigurationParameters.SAMPLING_RATE_NEVER;
/**
- * Tests tracing of SQL quries execution via JDBC.
+ * Tests tracing of SQL queries execution via JDBC.
*/
public class OpenCensusSqlJdbcTracingTest extends OpenCensusSqlNativeTracingTest {
/** JDBC URL prefix. */
@@ -75,6 +78,10 @@ public class OpenCensusSqlJdbcTracingTest extends OpenCensusSqlNativeTracingTest
SpanId rootSpan = executeAndCheckRootSpan("SELECT orgVal FROM " + orgTable, TEST_SCHEMA, false, false, true);
+ String qryId = getAttribute(rootSpan, SQL_QRY_ID);
+ assertTrue(Long.parseLong(qryId.substring(qryId.indexOf('_') + 1)) > 0);
+ UUID.fromString(qryId.substring(0, qryId.indexOf('_')));
+
checkChildSpan(SQL_QRY_PARSE, rootSpan);
checkChildSpan(SQL_CURSOR_OPEN, rootSpan);
checkChildSpan(SQL_ITER_OPEN, rootSpan);
diff --git a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlNativeTracingTest.java b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlNativeTracingTest.java
index 309b6f7..b5feb66 100644
--- a/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlNativeTracingTest.java
+++ b/modules/opencensus/src/test/java/org/apache/ignite/internal/processors/monitoring/opencensus/OpenCensusSqlNativeTracingTest.java
@@ -69,6 +69,7 @@ import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_CACHE_U
import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_IDX_RANGE_ROWS;
import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_PAGE_ROWS;
import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_PARSER_CACHE_HIT;
+import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_QRY_ID;
import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_QRY_TEXT;
import static org.apache.ignite.internal.processors.tracing.SpanTags.SQL_SCHEMA;
import static org.apache.ignite.internal.processors.tracing.SpanTags.tag;
@@ -285,6 +286,10 @@ public class OpenCensusSqlNativeTracingTest extends AbstractTracingTest {
"SELECT * FROM " + prsnTable + " AS p JOIN " + orgTable + " AS o ON o.orgId = p.prsnId",
TEST_SCHEMA, false, true, true);
+ String qryId = getAttribute(rootSpan, SQL_QRY_ID);
+ assertTrue(Long.parseLong(qryId.substring(qryId.indexOf('_') + 1)) > 0);
+ UUID.fromString(qryId.substring(0, qryId.indexOf('_')));
+
checkChildSpan(SQL_QRY_PARSE, rootSpan);
checkChildSpan(SQL_CURSOR_OPEN, rootSpan);
@@ -547,6 +552,9 @@ public class OpenCensusSqlNativeTracingTest extends AbstractTracingTest {
protected void checkBasicSelectQuerySpanTree(SpanId rootSpan, int expRows) {
int fetchedRows = 0;
+ String qryId = getAttribute(rootSpan, SQL_QRY_ID);
+ assertTrue(Long.parseLong(qryId.substring(qryId.indexOf('_') + 1)) > 0);
+
SpanId iterSpan = checkChildSpan(SQL_ITER_OPEN, rootSpan);
SpanId fetchSpan = checkChildSpan(SQL_PAGE_FETCH, iterSpan);
@@ -705,7 +713,8 @@ public class OpenCensusSqlNativeTracingTest extends AbstractTracingTest {
.put(tag(NODE, NAME), reducer().name())
.put(SQL_QRY_TEXT, sql)
.put(SQL_SCHEMA, schema)
- .build()
+ .build(),
+ CheckAttributes.CONTAINS
).get(0);
}