Skip to content

# Report rendering timeout setting

The report rendering timeout value controls how many minutes AyaNova will wait for a report or Export Data operation to complete rendering.

This avoids a situation where a report generation is frozen due to a bug in a report template script or simply selecting too many records to report in a practical amount of time and consuming excessive resources at the server.

## Exporting data

Export features in AyaNova share the same data gathering functionality as report rendering and so exporting data is also affected by this timeout setting.

## Performance implications

Note that increasing report rendering settings too high can result in the server running out of physical memory or CPU capacity. When increasing the limits be mindful of this potential and monitor the server carefully to ensure it's not "bottlenecking". The reporting capacity scales directly with the amount of memory and CPU capacity available to the server.

## What to do if running into timeout issues

Report rendering performance is directly tied to the resources available to both the AyaNova server and the PostgreSQL server (often the same machine).

Before increasing this timeout or filtering down the number of records in a report, check if the server has enough resources or is running into performance issues such as the CPU hitting 100% regularly, available memory running out or slow disk speed.

If the server is not running out of resources then reports with too many records that cause them to timeout even when increased to the maximum should be broken down into multiple smaller reports by filtering the data table used to generate the report. For example, instead of printing multiple years worth of records at once, filter by shorter time periods using the data table filters and print separately.

## How timeouts work

When a report is requested to be rendered AyaNova first adds this timeout value to the current date and time, makes a note of it as the expiry time and starts the reporting process. Throughout the reporting process the expiry time will be checked periodically and if it is ever reached the report rendering process will be stopped and an error returned.

The value is specified in minutes.

## Default

If no override is specified AyaNova will use the following default value:

`5`

This means AyaNova will wait for a prior report to complete for no longer than 5 minutes before it will stop and return an error.

Specifying a value less than 1 minute will be automatically changed to 1 minute as the minimum allowed value.

## Overriding

AyaNova expects this value to be provided by a config.json property, environment variable or command line parameter named

`AYANOVA_REPORT_RENDERING_TIMEOUT`

The value specified should be a string specifying the timeout in minutes, for example: `10`

Example config.json entry

    {
      ...other properties...
      "AYANOVA_REPORT_RENDERING_TIMEOUT": "10"
    }

Example command line parameter

`ayanova.exe --AYANOVA_REPORT_RENDERING_TIMEOUT="10`

Example environment variable

Windows

`set "AYANOVA_REPORT_RENDERING_TIMEOUT=10"`

Linux

`export AYANOVA_REPORT_RENDERING_TIMEOUT="10"`