Partial Response received by Client from Apigee On Premise

Not applicable

Hi

The flow is SAP NWAS 7/Java AS ---> Apigee On Premise--->Apigee OnCloud -----> Backend. and back.

Backend is posting a response of appx 17 MB back. I have streaming enabled both on cloud and on premise Apigee. But the sap NWAS client states that only partial response is received .

When we invoke from POSTMAN however, we are getting complete response.

Please suggest where the problem can be?

0 18 851
18 REPLIES 18

Not applicable

When you say postman - you mean that also access Apigee On Premise not backend directly, right?

Yes Sri, we are also accessing Apigee On Premise via POSTMAN and not backend

Not applicable

Instead the SAP hosted Java application is getting SOAP:1.027 SRT: Serialization / Deserialization failed. error

Not applicable

To the best of my knowledge you will not be able to deserialize a streamed response without going through some additional steps on the NW Java client. Specifically I think you need to pull the streamed response into an intermediate file and then deserialize the file itself.

Hi David, thanks for reply. However another similarly implemented interface is working fine . The difference is that the interface which is not working is getting a huge 17 mb data ,in response. The other one which is working doesn't have such a large response. Was wondering is it because of any size limitation on Apigee (although i have enabled the streaming proxy/target req&resp) or any connection or network timeout related? Just to re-iterate , POSTMAN is able to receive the full response. What would generally cause partial response being sent back to client?

That you are getting the full response with a postman consumer leads me to look at the NW client. It has been some time since I worked with the NW client - is the other implementation able to handle the response in stream mode? The limit on cloud is 10 mb for nonstreamed responses - so dropping into stream mode is the correct config with such large responses.

Yes David , the other interface implementation is able to get the response even with streaming enabled/disabled.

We had a similar problem the other day in a cloud instance - the problem there was to do with incorrect content length calculation on target end.

I'd recommend checking/comparing the content-length header sent by the target.

Thanks Ozan, so basically you are suggesting that the Backend needs to send the correct Content length header value for SAP client/consumer to read the complete response?

Yep, that's it.

Hi @Ozan Seymen .Still the issue persists .We even tried setting the Content length in policy , but no difference at client end.

OK. Do you know which component is cutting the response off: is it the backend, onprem or cloud instance?

If it is the onprem component, can you please provide the version of Apigee you are using?

If it is the cloud instance, can you please provide the org name?

Hi @Ozan Seymen We have enabled the request & response streaming at On Cloud and On Premise ,so we cannot see the response . Without enabling streaming on Prem ,the on prem component registers a 502 Bad Gateway error while receiveing the response from On Cloud component . However we get the complete response when hit from POSTMAN.

Apigee On Prem version is 4.14.07 . On Cloud org is wipro.

Yes, but you should be able to plug postman in the middle of existing components to troubleshoot where the breakage is.

You have too many components to troubleshoot effectively in a community thread. You will need to segregate the components and hit them individually with POSTMAN.

E.g.

  1. Use postman and call onprem directly without getting cloud involved; POSTMAN -> ONPREM -> SAP
  2. If this works (i.e. you can get the full content using postman) then add the cloud component: POSTMAN -> CLOUD -> ONPREM -> SAP and see what changes.

Does anybody know whether 4.14.07 uses the original router implementation or the netty one?

Hi Ozan , POSTMAN-->OnPrem-->Backend is not possible because On Prem Apigee to Backend On Cloud cannot interact due to architectural constraints imposed by client.

However POSTMAN --> On Prem---> On Cloud----> Backend and POSTMAN --->On Cloud---> Backend works . Also note SAP NWAS is not allowed to call Apigee On Cloud directly .

Another observation: I made a pass through SOAP proxy in Apigee to hit the backend . When the SAP NWAS /Java applications makes a call , in trace we see a garbage like coming. However when we hit same request from POSTMAN , correct response is received. Any idea what is causing it. The headers like content type, accept all look similar.

BTW the version of the onpremise installation you are using is VERY old - nearly a year old.

I don't think you are using the new netty router in that release. The fix for the cloud incident I was talking about ealier was to upgrade the router from original to netty.

You might spend a lot of time debugging something that you will upgrade very soon. My recommendation is to at least do a quick installation of the latest release on a separate box - all components in one box - just to test this scenario. All-in-one installation should take ~10-15 mins so you should be ready to test in a very short time.