Azure / azure-relay-dotnet

☁️ .NET Standard client library for Azure Relay Hybrid Connections

Home Page:https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-what-is-it

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HybridConnectionListener.RequestHandler GateWayTimeout on requests that don't respond in 60 seconds

nickeeex opened this issue · comments

I'm not sure if this is a limitation in the protocol or something that could be implement to the library.
Currently if a long running process that does not return anything to the sender in 60 seconds the request fails in a 504 GatewayTimeout

We can work around this 60 second timeout by manually sending keep alive bytes to the response.OutputStream every x seconds but this feels like a hacky solution.

Versions

  • OS platform and version: Windows 10 1803 (OS Build 17134.590)
  • .NET Version: 4.7.1
  • NuGet package version or commit ID: v2.0.0-preview1-20180523

https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-hybrid-connections-protocol (Thanks @nickeeex for pointing out this public location)

The protocol spec states:

each request must be responded to within 60 seconds or the delivery will be reported as having failed. The 60 second deadline is counted until the response frame has been received by the service. An ongoing response with multiple binary frames cannot become idle for more than 60 seconds or it is terminated.

Thanks for the reply.

Here it was https://docs.microsoft.com/en-us/azure/service-bus-relay/relay-hybrid-connections-protocol#responding-to-requests

I guess we'll just have to live with that and strip away the extra keep alive bytes on the sender before returning the response to the caller.