Troubleshooting
Problem
A DataPower binary transform action or call action may fail with "missing input on action" if the input to the action is empty.
Symptom
The input context to a binary transform in a service processing policy may be empty in several scenarios, including:
- The service has an HTTP or HTTPS front side handler, and the client sends an HTTP GET request, not an HTTP POST request
- The service has an FTP Server front side handler, and the client sends a LIST request, not a PUT request
In these cases, if the service processing policy contains a binary transform with an input context INPUT, the binary transform will fail with message:
Transforming (possibly binary) INPUT with mystylesheet.xsl failed: Missing input on action
Similarly, if a Call action with an input context as "INPUT" is the first action defined on a Processing Rule, a GET request method will fail with a parser error: "missing input on action". In this case the error message indicates that an "empty input is not allowed for this action"
Cause
The message "missing input on action" is meant to convey "empty input is not allowed for this action". A binary transform needs non-blank input to work properly.
This error may occur intermittently in a development or test environment. Note that when the DataPower probe is on, this error might not occur. The debug capabilities in the probe can affect how the input is treated. Be sure to test services without the probe prior to deploying them in production, where best practices suggest that the probe always be disabled.
Diagnosing The Problem
The error message will include the name of the binary transform action that was invoked with empty input.
Resolving The Problem
If a service must support empty requests (requests with no payload) such as HTTP GETs or FTP LIST commands, modify the processing policy so that the binary transform is not invoked with an empty input context.
Option to consider include:
- The Convert Query Params to XML action can transform HTTP GET request parameters into an XML document that can be used as the input context to a binary transform.
- The match action for processing rules can be based on the HTTP method.
- DataPower context variables that describe the input request can be interrogated in a stylesheet to determine if the input context is empty.
- Defining a dummy transform action at the beginning of the processing rule with an input context as "INPUT" and output context as "NULL" has been used as a workaround to allow a policy that formerly began with a call action to support empty requests such as HTTP GETs. Once the dummy transform action has completed, the call action does not try to parse the INPUT again.
Was this topic helpful?
Document Information
Modified date:
15 June 2018
UID
swg21566838