+3484. [bug] Some statistics were incorrectly rendered in XML.
+ [RT #32587]
+
3483. [placeholder]
3482. [func] dig +nssearch now prints name servers that don't
</table>
<h2>Resolver Statistics (Common)</h2>
<table class="counters">
- <xsl:for-each select="server/counters[@type="restat"]/counter">
+ <xsl:for-each select="server/counters[@type="resstat"]/counter">
<xsl:sort select="." data-type="number" order="descending"/>
<xsl:variable name="css-class4">
<xsl:choose>
</xsl:for-each>
</table>
</xsl:for-each>
+
+
+ <xsl:for-each select="views/view">
+ <h3>ADB Statistics for View <xsl:value-of select="@name"/></h3>
+ <table class="counters">
+ <xsl:for-each select="counters[@type="adbstat"]/counter[.>0]">
+ <xsl:sort select="." data-type="number" order="descending"/>
+ <xsl:variable name="css-class5">
+ <xsl:choose>
+ <xsl:when test="position() mod 2 = 0">even</xsl:when>
+ <xsl:otherwise>odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <tr class="{$css-class5}">
+ <th>
+ <xsl:value-of select="@name"/>
+ </th>
+ <td>
+ <xsl:value-of select="."/>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:for-each>
+
+ <xsl:for-each select="views/view">
+ <h3>Cache Statistics for View <xsl:value-of select="@name"/></h3>
+ <table class="counters">
+ <xsl:for-each select="counters[@type="cachestats"]/counter[.>0]">
+ <xsl:sort select="." data-type="number" order="descending"/>
+ <xsl:variable name="css-class5">
+ <xsl:choose>
+ <xsl:when test="position() mod 2 = 0">even</xsl:when>
+ <xsl:otherwise>odd</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <tr class="{$css-class5}">
+ <th>
+ <xsl:value-of select="@name"/>
+ </th>
+ <td>
+ <xsl:value-of select="."/>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:for-each>
+
+
<h3>Cache DB RRsets for View <xsl:value-of select="@name"/></h3>
<xsl:for-each select="views/view">
<table class="counters">
<xsl:value-of select="taskmgr/thread-model/tasks-running"/>
</td>
</tr>
+ <tr class="odd">
+ <th>Tasks Ready</th>
+ <td>
+ <xsl:value-of select="taskmgr/thread-model/tasks-ready"/>
+ </td>
+ </tr>
</table>
<br/>
<h2>Tasks</h2>
<th>References</th>
<th>State</th>
<th>Quantum</th>
+ <th>Events</th>
</tr>
<xsl:for-each select="taskmgr/tasks/task">
<xsl:sort select="name"/>
<td>
<xsl:value-of select="quantum"/>
</td>
+ <td>
+ <xsl:value-of select="events"/>
+ </td>
</tr>
</xsl:for-each>
</table>
" </table>\n"
" <h2>Resolver Statistics (Common)</h2>\n"
" <table class=\"counters\">\n"
- " <xsl:for-each select=\"server/counters[@type="restat"]/counter\">\n"
+ " <xsl:for-each select=\"server/counters[@type="resstat"]/counter\">\n"
" <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
" <xsl:variable name=\"css-class4\">\n"
" <xsl:choose>\n"
" </xsl:for-each>\n"
" </table>\n"
" </xsl:for-each>\n"
+ "\n"
+ "\n"
+ " <xsl:for-each select=\"views/view\">\n"
+ " <h3>ADB Statistics for View <xsl:value-of select=\"@name\"/></h3>\n"
+ " <table class=\"counters\">\n"
+ " <xsl:for-each select=\"counters[@type="adbstat"]/counter[.>0]\">\n"
+ " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
+ " <xsl:variable name=\"css-class5\">\n"
+ " <xsl:choose>\n"
+ " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
+ " <xsl:otherwise>odd</xsl:otherwise>\n"
+ " </xsl:choose>\n"
+ " </xsl:variable>\n"
+ " <tr class=\"{$css-class5}\">\n"
+ " <th>\n"
+ " <xsl:value-of select=\"@name\"/>\n"
+ " </th>\n"
+ " <td>\n"
+ " <xsl:value-of select=\".\"/>\n"
+ " </td>\n"
+ " </tr>\n"
+ " </xsl:for-each>\n"
+ " </table>\n"
+ " </xsl:for-each>\n"
+ "\n"
+ " <xsl:for-each select=\"views/view\">\n"
+ " <h3>Cache Statistics for View <xsl:value-of select=\"@name\"/></h3>\n"
+ " <table class=\"counters\">\n"
+ " <xsl:for-each select=\"counters[@type="cachestats"]/counter[.>0]\">\n"
+ " <xsl:sort select=\".\" data-type=\"number\" order=\"descending\"/>\n"
+ " <xsl:variable name=\"css-class5\">\n"
+ " <xsl:choose>\n"
+ " <xsl:when test=\"position() mod 2 = 0\">even</xsl:when>\n"
+ " <xsl:otherwise>odd</xsl:otherwise>\n"
+ " </xsl:choose>\n"
+ " </xsl:variable>\n"
+ " <tr class=\"{$css-class5}\">\n"
+ " <th>\n"
+ " <xsl:value-of select=\"@name\"/>\n"
+ " </th>\n"
+ " <td>\n"
+ " <xsl:value-of select=\".\"/>\n"
+ " </td>\n"
+ " </tr>\n"
+ " </xsl:for-each>\n"
+ " </table>\n"
+ " </xsl:for-each>\n"
+ "\n"
+ "\n"
" <h3>Cache DB RRsets for View <xsl:value-of select=\"@name\"/></h3>\n"
" <xsl:for-each select=\"views/view\">\n"
" <table class=\"counters\">\n"
" <xsl:value-of select=\"taskmgr/thread-model/tasks-running\"/>\n"
" </td>\n"
" </tr>\n"
+ " <tr class=\"odd\">\n"
+ " <th>Tasks Ready</th>\n"
+ " <td>\n"
+ " <xsl:value-of select=\"taskmgr/thread-model/tasks-ready\"/>\n"
+ " </td>\n"
+ " </tr>\n"
" </table>\n"
" <br/>\n"
" <h2>Tasks</h2>\n"
" <th>References</th>\n"
" <th>State</th>\n"
" <th>Quantum</th>\n"
+ " <th>Events</th>\n"
" </tr>\n"
" <xsl:for-each select=\"taskmgr/tasks/task\">\n"
" <xsl:sort select=\"name\"/>\n"
" <td>\n"
" <xsl:value-of select=\"quantum\"/>\n"
" </td>\n"
+ " <td>\n"
+ " <xsl:value-of select=\"events\"/>\n"
+ " </td>\n"
" </tr>\n"
" </xsl:for-each>\n"
" </table>\n"
TRY0(xmlTextWriterEndElement(writer)); /* cache */
}
- TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR
- "cachestats"));
- TRY0(dns_cache_renderxml(view->cache, writer));
- TRY0(xmlTextWriterEndElement(writer)); /* cachestats */
-
- if (view->adbstats != NULL) {
+ /* <adbstats> */
+ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counters"));
+ TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "type",
+ ISC_XMLCHAR "adbstat"));
+ if (view->resstats != NULL) {
result = dump_counters(view->adbstats,
isc_statsformat_xml, writer,
- "adbstat", adbstats_xmldesc,
+ NULL, adbstats_xmldesc,
dns_adbstats_max,
adbstats_index, adbstat_values,
ISC_STATSDUMP_VERBOSE);
if (result != ISC_R_SUCCESS)
goto error;
}
+ TRY0(xmlTextWriterEndElement(writer)); /* </adbstats> */
+
+ /* <cachestats> */
+ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counters"));
+ TRY0(xmlTextWriterWriteAttribute(writer, ISC_XMLCHAR "type",
+ ISC_XMLCHAR "cachestats"));
+ TRY0(dns_cache_renderxml(view->cache, writer));
+ TRY0(xmlTextWriterEndElement(writer)); /* </cachestats> */
TRY0(xmlTextWriterEndElement(writer)); /* view */
resstat_values, 0);
if (result != ISC_R_SUCCESS)
goto error;
-
TRY0(xmlTextWriterEndElement(writer)); /* counters type=resstat */
TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counters"));
renderstat(const char *name, isc_uint64_t value, xmlTextWriterPtr writer) {
int xmlrc;
- TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "cachestat"));
- TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "name"));
- TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR name));
- TRY0(xmlTextWriterEndElement(writer)); /* name */
- TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "value"));
+ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter"));
+ TRY0(xmlTextWriterWriteAttribute(writer,
+ ISC_XMLCHAR "name", ISC_XMLCHAR name));
TRY0(xmlTextWriterWriteFormatString(writer,
- "%" ISC_PRINT_QUADFORMAT "u", value));
- TRY0(xmlTextWriterEndElement(writer)); /* value */
- TRY0(xmlTextWriterEndElement(writer)); /* cachestat */
+ "%" ISC_PRINT_QUADFORMAT "u",
+ value));
+ TRY0(xmlTextWriterEndElement(writer)); /* counter */
+
error:
return (xmlrc);
}