Release version
v7.0.1
Describe the bug
Summary
When an API policy references a logger via log-to-eventhub logger-id="...", the publisher can attempt to PUT the policy before the logger resource exists in APIM. This results in a 400 validation error such as:
Logger not found
Root cause
The publisher builds dependency edges from parsed policy XML for things like:
- named values
- policy fragments
- backend IDs
but it does not currently parse logger references used in:
- log-to-eventhub logger-id="..."
As a result, the policy has no predecessor relationship to the logger, so parallel resource processing can PUT the policy before the logger resource has been created.
Expected behavior
When an API policy references an APIM logger in the XML policy, the publisher should create a dependency edge from that logger resource to the policy resource and publish the logger before the policy
Actual behavior
The publisher does not detect logger references in policy XML. As a result, the policy can be published in parallel with the logger, and APIM rejects the request with a validation error like:
Reproduction Steps
- Create or include an APIM logger resource, for example azureeventhublogger.
- Update an API policy that references that logger in XML, such as:
<policies>
<inbound>
<log-to-eventhub logger-id="azureeventhublogger" />
<base />
</inbound>
</policies>
- Run the publisher against the target APIM environment with that logger and policy in the artifacts (last commit)
- Observe that the publisher may PUT the policy before the logger is created.
- APIM returns 400 Bad Request with Logger not found for the policy.
Release version
v7.0.1
Describe the bug
Summary
When an API policy references a logger via
log-to-eventhub logger-id="...",the publisher can attempt to PUT the policy before the logger resource exists in APIM. This results in a 400 validation error such as:Root cause
The publisher builds dependency edges from parsed policy XML for things like:
but it does not currently parse logger references used in:
As a result, the policy has no predecessor relationship to the logger, so parallel resource processing can PUT the policy before the logger resource has been created.
Expected behavior
When an API policy references an APIM logger in the XML policy, the publisher should create a dependency edge from that logger resource to the policy resource and publish the logger before the policy
Actual behavior
The publisher does not detect logger references in policy XML. As a result, the policy can be published in parallel with the logger, and APIM rejects the request with a validation error like:
Reproduction Steps