Does OESB support Expect: 100-continue

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Does OESB support Expect: 100-continue

OpenESB Community Forum mailing list

I have having some difficulties with REST requests that contain the Expect: 100-continue header.

 

Specifically, when dealing with a REST POST request, the headers are sent and the client waits for a 100-continue response. Monitoring with Wireshark shows that this response is not sent – the client times out after 3 seconds and continues, but every transaction will have a 3 second overhead.

 

The above leads me to believe that OpenESB does not support this pattern – is this correct?

 

Many thanks,

Dave.

Reply | Threaded
Open this post in threaded view
|

Re: Does OESB support Expect: 100-continue

Paul Perez
Administrator

Hello Dave,

 

Could you provide more detail about the pattern you describe and the service you provide.

At first glance, I would reply that OpenESB REST BC is based on the pattern request response (Mainly all the OE Bus) and does not support the code 100 yet.

I would like to understand your project to see if an upgrade of the REST BC is possible or if an alternative architecture is possible in your case.

 

Thank you for your reply

 

Best regards

 

Paul Perez Chief Architect

Pymma Consulting

--------------------------

Tel: +44 79 44 36 04 65

Skype ID : polperez

 

From: User <[hidden email]> On Behalf Of Dave Woodman via User
Sent: 09 December 2018 08:28
To: [hidden email]
Cc: Dave Woodman <[hidden email]>
Subject: [User] Does OESB support Expect: 100-continue

 

I have having some difficulties with REST requests that contain the Expect: 100-continue header.

 

Specifically, when dealing with a REST POST request, the headers are sent and the client waits for a 100-continue response. Monitoring with Wireshark shows that this response is not sent – the client times out after 3 seconds and continues, but every transaction will have a 3 second overhead.

 

The above leads me to believe that OpenESB does not support this pattern – is this correct?

 

Many thanks,

Dave.

www.pymma.com The best services on OpenESB
Reply | Threaded
Open this post in threaded view
|

Re: Does OESB support Expect: 100-continue

OpenESB Community Forum mailing list

Hi Paul,

The Expect: 100-continue is used as a way to prevent a large request being sent if it would be rejected by the server anyway - thus improving performance with larger payloads. To achieve this, the headers are sent, and the body only sent if the server permits.

Consider, for instance, a REST transaction (perhaps with a large body) being sent to an invalid path:-

Without Expect: 100-continue handling, the whole transaction, including the body, will be sent. 

With Expect: 100-continue, the server indicates that there is an error, and the HTTP transaction is terminated

This is documented in section 5.1.1 of RFC 7231 - "HTTP/1.1 Semantics and Content"

Since this is all done at the HTTP level, supporting it may be as simple as updating the Grizzly version in use.

As for the use-case - I have a reverse proxy that inserts this header and waits for a response - OpenESB does not respond (a 417 would be appropriate if not supported). In the event of no response, the proxy waits for 3 seconds before assuming that this pattern is not supported and continues. Clearly a 3 second delay on every transaction is a bit of a crimp on performance :-)

Dave. 


On 10/12/2018 08:42, Paul Perez wrote:

Hello Dave,

 

Could you provide more detail about the pattern you describe and the service you provide.

At first glance, I would reply that OpenESB REST BC is based on the pattern request response (Mainly all the OE Bus) and does not support the code 100 yet.

I would like to understand your project to see if an upgrade of the REST BC is possible or if an alternative architecture is possible in your case.

 

Thank you for your reply

 

Best regards

 

Paul Perez Chief Architect

Pymma Consulting

--------------------------

Tel: +44 79 44 36 04 65

Skype ID : polperez

 

From: User <[hidden email]> On Behalf Of Dave Woodman via User
Sent: 09 December 2018 08:28
To: [hidden email]
Cc: Dave Woodman <[hidden email]>
Subject: [User] Does OESB support Expect: 100-continue

 

I have having some difficulties with REST requests that contain the Expect: 100-continue header.

 

Specifically, when dealing with a REST POST request, the headers are sent and the client waits for a 100-continue response. Monitoring with Wireshark shows that this response is not sent – the client times out after 3 seconds and continues, but every transaction will have a 3 second overhead.

 

The above leads me to believe that OpenESB does not support this pattern – is this correct?

 

Many thanks,

Dave.


Reply | Threaded
Open this post in threaded view
|

Re: Does OESB support Expect: 100-continue

Paul Perez
Administrator

Hi Dave,

 

First, I would like to thank you for your report on this feature. The rest BC 3.1.x does not support this feature yet and as far as I understand it there are two ways to solve this issue. The first is to return a 417 and the second to implement this feature in the component. The latter solution requires reengineering of the REST BC, which is dedicated to the request-response communication. Returning 417 is simple and will certainly be implemented in the next version of the REST BC.   

We start thinking about complete support of this feature.

 

 

***************** For the geeks in our community *****************

Many of you required a simpler build process to help us improving the OpenESB code.

We worked a lot to design a very simple build process and today with version 3.1, you are glad to get it.

So now, Dave’s feedback is a good opportunity to demonstrate your involvement, So, we are expecting volunteers to help us.

Don’t say you haven’t been asked 😉

 

Paul

 

From: User <[hidden email]> On Behalf Of dave via User
Sent: 10 December 2018 09:54
To: OpenESB user list <[hidden email]>
Cc: dave <[hidden email]>
Subject: Re: [User] Does OESB support Expect: 100-continue

 

Hi Paul,

The Expect: 100-continue is used as a way to prevent a large request being sent if it would be rejected by the server anyway - thus improving performance with larger payloads. To achieve this, the headers are sent, and the body only sent if the server permits.

Consider, for instance, a REST transaction (perhaps with a large body) being sent to an invalid path:-

Without Expect: 100-continue handling, the whole transaction, including the body, will be sent. 

With Expect: 100-continue, the server indicates that there is an error, and the HTTP transaction is terminated

This is documented in section 5.1.1 of RFC 7231 - "HTTP/1.1 Semantics and Content"

Since this is all done at the HTTP level, supporting it may be as simple as updating the Grizzly version in use.

As for the use-case - I have a reverse proxy that inserts this header and waits for a response - OpenESB does not respond (a 417 would be appropriate if not supported). In the event of no response, the proxy waits for 3 seconds before assuming that this pattern is not supported and continues. Clearly a 3 second delay on every transaction is a bit of a crimp on performance :-)

Dave. 

 

On 10/12/2018 08:42, Paul Perez wrote:

Hello Dave,

 

Could you provide more detail about the pattern you describe and the service you provide.

At first glance, I would reply that OpenESB REST BC is based on the pattern request response (Mainly all the OE Bus) and does not support the code 100 yet.

I would like to understand your project to see if an upgrade of the REST BC is possible or if an alternative architecture is possible in your case.

 

Thank you for your reply

 

Best regards

 

Paul Perez Chief Architect

Pymma Consulting

--------------------------

Tel: +44 79 44 36 04 65

Skype ID : polperez

 

From: User <[hidden email]> On Behalf Of Dave Woodman via User
Sent: 09 December 2018 08:28
To: [hidden email]
Cc: Dave Woodman <[hidden email]>
Subject: [User] Does OESB support Expect: 100-continue

 

I have having some difficulties with REST requests that contain the Expect: 100-continue header.

 

Specifically, when dealing with a REST POST request, the headers are sent and the client waits for a 100-continue response. Monitoring with Wireshark shows that this response is not sent – the client times out after 3 seconds and continues, but every transaction will have a 3 second overhead.

 

The above leads me to believe that OpenESB does not support this pattern – is this correct?

 

Many thanks,

Dave.

 

www.pymma.com The best services on OpenESB
Reply | Threaded
Open this post in threaded view
|

Re: Does OESB support Expect: 100-continue

OpenESB Community Forum mailing list

Hi Paul,

 

Thank you for looking into this.

 

It is worth noting that the request/response flow is not affected by Expect: 100-continue since the request cannot be viewed as delivered until this has been processed, whether by timeout or action.

 

The change would be at the HTTP transport level rather than at the request level. Hopefully this will limit the scope of the change required.

 

Thank you again,

 

Dave.

 

From: User <[hidden email]> On Behalf Of Paul Perez
Sent: 11 December 2018 11:36
To: 'OpenESB user list' <[hidden email]>
Subject: Re: [User] Does OESB support Expect: 100-continue

 

Hi Dave,

 

First, I would like to thank you for your report on this feature. The rest BC 3.1.x does not support this feature yet and as far as I understand it there are two ways to solve this issue. The first is to return a 417 and the second to implement this feature in the component. The latter solution requires reengineering of the REST BC, which is dedicated to the request-response communication. Returning 417 is simple and will certainly be implemented in the next version of the REST BC.   

We start thinking about complete support of this feature.

 

 

***************** For the geeks in our community *****************

Many of you required a simpler build process to help us improving the OpenESB code.

We worked a lot to design a very simple build process and today with version 3.1, you are glad to get it.

So now, Dave’s feedback is a good opportunity to demonstrate your involvement, So, we are expecting volunteers to help us.

Don’t say you haven’t been asked 😉

 

Paul

 

From: User <[hidden email]> On Behalf Of dave via User
Sent: 10 December 2018 09:54
To: OpenESB user list <[hidden email]>
Cc: dave <[hidden email]>
Subject: Re: [User] Does OESB support Expect: 100-continue

 

Hi Paul,

The Expect: 100-continue is used as a way to prevent a large request being sent if it would be rejected by the server anyway - thus improving performance with larger payloads. To achieve this, the headers are sent, and the body only sent if the server permits.

Consider, for instance, a REST transaction (perhaps with a large body) being sent to an invalid path:-

Without Expect: 100-continue handling, the whole transaction, including the body, will be sent. 

With Expect: 100-continue, the server indicates that there is an error, and the HTTP transaction is terminated

This is documented in section 5.1.1 of RFC 7231 - "HTTP/1.1 Semantics and Content"

Since this is all done at the HTTP level, supporting it may be as simple as updating the Grizzly version in use.

As for the use-case - I have a reverse proxy that inserts this header and waits for a response - OpenESB does not respond (a 417 would be appropriate if not supported). In the event of no response, the proxy waits for 3 seconds before assuming that this pattern is not supported and continues. Clearly a 3 second delay on every transaction is a bit of a crimp on performance :-)

Dave. 

 

On 10/12/2018 08:42, Paul Perez wrote:

Hello Dave,

 

Could you provide more detail about the pattern you describe and the service you provide.

At first glance, I would reply that OpenESB REST BC is based on the pattern request response (Mainly all the OE Bus) and does not support the code 100 yet.

I would like to understand your project to see if an upgrade of the REST BC is possible or if an alternative architecture is possible in your case.

 

Thank you for your reply

 

Best regards

 

Paul Perez Chief Architect

Pymma Consulting

--------------------------

Tel: +44 79 44 36 04 65

Skype ID : polperez

 

From: User <[hidden email]> On Behalf Of Dave Woodman via User
Sent: 09 December 2018 08:28
To: [hidden email]
Cc: Dave Woodman <[hidden email]>
Subject: [User] Does OESB support Expect: 100-continue

 

I have having some difficulties with REST requests that contain the Expect: 100-continue header.

 

Specifically, when dealing with a REST POST request, the headers are sent and the client waits for a 100-continue response. Monitoring with Wireshark shows that this response is not sent – the client times out after 3 seconds and continues, but every transaction will have a 3 second overhead.

 

The above leads me to believe that OpenESB does not support this pattern – is this correct?

 

Many thanks,

Dave.