Get hands-on experience with 20+ free Google Cloud products and $300 in free credit for new customers.

revision is deployed, but traffic cannot flow

Not applicable

I am working on a shared flow that a couple of my API proxies use. All was working OK till around revision 10 or 11 when I started getting an inexplicable error when trying to deploy a new version:

The revision is deployed, but traffic cannot flow. com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}

In the new revision, I was trying to add a LookupCache operation to the flow. The associated PopulateCache was done and deployed OK.

When I got the error at first, I was on a sketchy WIFI, so I retried on a better connection. No change. Then, I thought it was something that would be "eventually consistent," so I tried waiting. That didn't help. Then, I searched and found this thread, and realized I was in trouble 😞

I tried the troubleshooting tips that @wwitman referred me to. Those didn't help. Specifically, I tried to force undeploy the shared flow and redeploy it. That didn't work. I checked the Apigee status page, but there didn't seem to be any indication of an outage. I then tried to create a new revision from the Project menu and deploy that; didn't work. I tried to make a new shared flow, downloaded the current revision (11) from the shared flow and uploaded that to the new shared flow. Got the same error. I then tried to upload revision 9, which I downloaded a couple days ago, to this new shared flow; that also produced the error above when I tried to deploy it. I could not see the history of the shared flow like the troubleshooting tips mention because that's not supported on shared flows, but I did delete the LookupCache operation (which is what I was working on before) and tried to deploy that; same error. I created a no-target API proxy and a shared flow, each that did nothing, and I could deploy those.

The username I'm using is the same as for this forum, the org is travis-eval, the name of the shared flow I'm having trouble with is called Introspection, the environment I'm trying to deploy to is prod.

It would be most appreciated to get some help unjamming this. Writing this policy has taken days and I need to use this in a POC we're conducting for a customer, so any help here would be most appreciated.

TIA!

Solved Solved
1 12 5,875
1 ACCEPTED SOLUTION

@Travis Spencer,

I figured out the issue in your API Proxy.

The condition has to be completely in a single line or if it goes to multiple lines then the condition i.e., either "and", "or" and the following expression has to be in the same line.

Here I will show the failing condition first:

<Condition>(introspectionResponse.header.content-Type =| "application/json") and
            introspectionPayload.jwt is null
</Condition>

In this example, the condition "and" and the expression "introspectionPayload.jwt is null" are in separate lines. So, I think this is not accepted and causes the failure.

I found the working conditions to be as follows:

Option #1

Have all the conditions in a single line as shown below:

<Condition>(introspectionResponse.header.content-Type =| "application/jwt") and introspectionPayload.jwt is null</Condition>

Option #2

If there are multiple conditions, then ensure that condition i.e., "and" in this example and expression in the same line

<Condition>(introspectionResponse.header.content-Type =| "application/json")
            and introspectionPayload.jwt is null
</Condition>

I have actually gone ahead and fixed the conditions in your SharedFlow "Introspection" and saved it as revision #13 and also deployed it in prod environment of your org successfully.

In summary, if you have multiple conditions it's better to use braces around each of the conditions and also have the condition and expression in the same line.

Please verify and let me know.

View solution in original post

12 REPLIES 12