Debugging and Troubleshooting Upkeeps
Given an upkeep ID, this page contains different methods of understanding and fixing issues with Upkeeps.
In the Chainlink Automation app, you can see the registration details of the upkeep, alongside the balance required and
performUpkeep history. If the upkeep is underfunded, you’ll see a warning on top of the page. Underfunded upkeeps will not be performed.
If your performGasLimit is too low, the Automation Network will not execute your upkeep as it will fail in simulation. Consider increasing your perform upkeep gas limit in the UI. See supported Blockchain Networks for limits.
If the amount of computation in your checkUpkeep exceeds our checkGasLimit, your upkeep will not be performed. You will have to reduce the amount of compute in checkUpkeep to bring the gas below the applicable limits. See supported Blockchain Networks for limits.
If your upkeep is paused, your upkeep will not be performed. Please unpause it via the UI..
Once you registered your upkeep, you need to ask the Data Streams team to allowlist your upkeepID and specify the feeds you will need to access. If your upkeepID has not been added to the allow list it will not perform an upkeep.
It is possible to request multiple feeds by specifying the feeds in a string array. However, if one of the reports is invalid or not available then Automation will not return any values to your
checkCallback function. This is to ensure correct execution of your contract.
You can view the registry/user's upkeep address on Etherscan to view transaction history. There are three types of information you can find on Ehterscan:
- All transactions on registry: This shows all the perform upkeeps on the registry. You can view a specific
perfomUpkeeptransaction to debug more.
performUpkeeptransaction: By diving deep in the logs, you can check the upkeep ID within UpkeepPerformed log.
- Target's internal transactions: For a particular target contract, you can view its internal transactions which contains
performUpkeeptransactions for that contract by using the registry address as the filter for from address. Note: internal transactions are only visible on Etherscan.
You can use Tenderly to simulate
performUpkeep on different blocks. Before following the steps below, make sure you have a Tenderly account.
- Enter the address of your selected registry. You can find this on the Supported Networks page.
- Select your network.
- Click Fetch ABI to automatically fetch the registry ABI.
- Select the
- Enter the ID of your Upkeep. You can find this in the Chainlink Automation app.
- You can either enter a block number to simulate a past action or use a pending block number to view the current state of an action and view the end result of an of an action.
- Once the simulation is complete, you will see the result. This will be either a success or an error. To understand errors, view information under the Debug tab. Note: if the
performUpkeepis failing while the check is succeeding, Chainlink Automation will not broadcast transactions.