<document>
  <header>
    <product>resin</product>
    <title>Resin 4.0.20 Release Notes</title>
  </header>

<body>

<localtoc/>

<s1 title="Summary">

<p>4.0.20 continues focus on bug fixes and stability. 4.0.20 includes
significant reworking of the networking state machine for comet/async
timing issues.</p>

<p>Thanks to everyone who reported bugs in 4.0.19. We encourage people to
report 4.0.20 bugs at
<a href="http://bugs.caucho.com">http://bugs.caucho.com</a>.</p>

</s1>

<s1 title="Health PDF Reports">

<p>PDF reports are now available from the /resin-admin summary page and
the postmortem. The PDF gathers the summary graphs into a single document.
</p>

</s1>

<s1 title="Weekly PDF Reports">

<p>PDF reports can now be generated on a timed basic (daily or weekly).
The new PdfReport health action creates a summary pdf in the resin/log
directory for an overview of the server operation.
</p>

<example title="Example: resin.xml configuration for PdfReport">
&lt;resin xmlns="http://caucho.com/ns/resin"
       xmlns:resin="urn:java:com.caucho.resin"
       xmlns:health="urn:java:com.caucho.health">

  ...     
  &lt;resin:import path="${__DIR__}/health.xml" optional="true"/>

  &lt;health:PdfReport>
    &lt;report>Summary&lt;/report>
    &lt;health:IfCron value="0 0 * * 0"/>
  &lt;/health:PdfReport>
  
  ...
&lt;/resin>  
</example>

</s1>

<s1 title="Custom Graph Pages">

<p>The graphs in the /resin-admin "meters" section can be configured
by adding &lt;health:MeterGraphPage> definitions to the health.xml or the
resin.xml. The graph values are defined by &lt;health:JmxMeter> and
&lt;health:JmxMeter> and allow any JMX value to be metered and displayed.
</p>

<p>The custom graph pages can also be used for the PDF reports.</p>


<example title="Example: Thread Graphs in resin.xml">
&lt;resin ...>

  ...
  
  &lt;health:MeterGraphPage>
    &lt;name>Threads&lt;/name>
    &lt;period>6h&lt;/period>
    &lt;columns>3&lt;/columns>
      
    &lt;graph name="Threads">
      &lt;meter>JVM|Thread|JVM Thread Count&lt;/meter>
      &lt;meter>Resin|Thread|Thread Count&lt;/meter>
      &lt;meter>Resin|Thread|Thread Idle Count&lt;/meter>
      &lt;meter>JVM|Thread|JVM Runnable Count&lt;/meter>
      &lt;meter>JVM|Thread|JVM Blocked Count&lt;/meter>
      &lt;meter>JVM|Thread|JVM Native Count&lt;/meter>
      &lt;meter>JVM|Thread|JVM Waiting Count&lt;/meter>
    &lt;/graph>
  &lt;/health:MeterGraphPage>

&lt;/resin>
</example>

</s1>

</body>
</document>
