Skip to content

Commit 0603783

Browse files
committed
[bugfix] Allow previously collected Performance Stats to be serialized
1 parent 519e35a commit 0603783

File tree

1 file changed

+38
-39
lines changed

1 file changed

+38
-39
lines changed

exist-core/src/main/java/org/exist/xquery/PerformanceStatsImpl.java

Lines changed: 38 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -385,48 +385,47 @@ private FunctionStats[] sort() {
385385

386386
@Override
387387
public void serialize(final MemTreeBuilder builder) {
388-
builder.startElement(new QName(XML_ELEMENT_CALLS, XML_NAMESPACE, XML_PREFIX), null);
389-
if (isEnabled()) {
390-
final AttributesImpl attrs = new AttributesImpl();
391-
for (final QueryStats stats : queries.values()) {
392-
attrs.clear();
388+
final AttributesImpl attrs = new AttributesImpl();
389+
attrs.addAttribute("", "tracing-enabled", "tracing-enabled", "CDATA", Boolean.toString(isEnabled()));
390+
builder.startElement(new QName(XML_ELEMENT_CALLS, XML_NAMESPACE, XML_PREFIX), attrs);
391+
for (final QueryStats stats : queries.values()) {
392+
attrs.clear();
393+
attrs.addAttribute("", "source", "source", "CDATA", stats.source);
394+
attrs.addAttribute("", "elapsed", "elapsed", "CDATA", Double.toString(stats.executionTime / 1000.0));
395+
attrs.addAttribute("", "calls", "calls", "CDATA", Integer.toString(stats.callCount));
396+
builder.startElement(new QName("query", XML_NAMESPACE, XML_PREFIX), attrs);
397+
builder.endElement();
398+
}
399+
for (final FunctionStats stats : functions.values()) {
400+
attrs.clear();
401+
attrs.addAttribute("", "name", "name", "CDATA", stats.qname.getStringValue());
402+
attrs.addAttribute("", "elapsed", "elapsed", "CDATA", Double.toString(stats.executionTime / 1000.0));
403+
attrs.addAttribute("", "calls", "calls", "CDATA", Integer.toString(stats.callCount));
404+
if (stats.source != null) {
393405
attrs.addAttribute("", "source", "source", "CDATA", stats.source);
394-
attrs.addAttribute("", "elapsed", "elapsed", "CDATA", Double.toString(stats.executionTime / 1000.0));
395-
attrs.addAttribute("", "calls", "calls", "CDATA", Integer.toString(stats.callCount));
396-
builder.startElement(new QName("query", XML_NAMESPACE, XML_PREFIX), attrs);
397-
builder.endElement();
398406
}
399-
for (final FunctionStats stats : functions.values()) {
400-
attrs.clear();
401-
attrs.addAttribute("", "name", "name", "CDATA", stats.qname.getStringValue());
402-
attrs.addAttribute("", "elapsed", "elapsed", "CDATA", Double.toString(stats.executionTime / 1000.0));
403-
attrs.addAttribute("", "calls", "calls", "CDATA", Integer.toString(stats.callCount));
404-
if (stats.source != null) {
405-
attrs.addAttribute("", "source", "source", "CDATA", stats.source);
406-
}
407-
builder.startElement(new QName("function", XML_NAMESPACE, XML_PREFIX), attrs);
408-
builder.endElement();
409-
}
410-
for (final IndexStats stats : indexStats.values()) {
411-
attrs.clear();
412-
attrs.addAttribute("", "type", "type", "CDATA", stats.indexType);
413-
attrs.addAttribute("", "source", "source", "CDATA", stats.source + " [" + stats.line + ":" +
414-
stats.column + "]");
415-
attrs.addAttribute("", "elapsed", "elapsed", "CDATA", Double.toString(stats.executionTime / 1000.0));
416-
attrs.addAttribute("", "calls", "calls", "CDATA", Integer.toString(stats.usageCount));
417-
attrs.addAttribute("", "optimization-level", "optimization", "CDATA", stats.indexOptimizationLevel.name());
418-
builder.startElement(new QName("index", XML_NAMESPACE, XML_PREFIX), attrs);
419-
builder.endElement();
420-
}
421-
for (final OptimizationStats stats : optimizations) {
422-
attrs.clear();
423-
attrs.addAttribute("", "type", "type", "CDATA", stats.type.toString());
424-
if (stats.source != null) {
425-
attrs.addAttribute("", "source", "source", "CDATA", stats.source + " [" + stats.line + ":" + stats.column + "]");
426-
}
427-
builder.startElement(new QName("optimization", XML_NAMESPACE, XML_PREFIX), attrs);
428-
builder.endElement();
407+
builder.startElement(new QName("function", XML_NAMESPACE, XML_PREFIX), attrs);
408+
builder.endElement();
409+
}
410+
for (final IndexStats stats : indexStats.values()) {
411+
attrs.clear();
412+
attrs.addAttribute("", "type", "type", "CDATA", stats.indexType);
413+
attrs.addAttribute("", "source", "source", "CDATA", stats.source + " [" + stats.line + ":" +
414+
stats.column + "]");
415+
attrs.addAttribute("", "elapsed", "elapsed", "CDATA", Double.toString(stats.executionTime / 1000.0));
416+
attrs.addAttribute("", "calls", "calls", "CDATA", Integer.toString(stats.usageCount));
417+
attrs.addAttribute("", "optimization-level", "optimization", "CDATA", stats.indexOptimizationLevel.name());
418+
builder.startElement(new QName("index", XML_NAMESPACE, XML_PREFIX), attrs);
419+
builder.endElement();
420+
}
421+
for (final OptimizationStats stats : optimizations) {
422+
attrs.clear();
423+
attrs.addAttribute("", "type", "type", "CDATA", stats.type.toString());
424+
if (stats.source != null) {
425+
attrs.addAttribute("", "source", "source", "CDATA", stats.source + " [" + stats.line + ":" + stats.column + "]");
429426
}
427+
builder.startElement(new QName("optimization", XML_NAMESPACE, XML_PREFIX), attrs);
428+
builder.endElement();
430429
}
431430
builder.endElement();
432431
}

0 commit comments

Comments
 (0)