Skip to content

Invocation can time out if incoming request contains "x-ms-invocation-id" header #10934

Open
@brettsam

Description

@brettsam

If you look at the DefaultHttpProxyService, we call TryAdd() to the x-ms-invocation-id header. This means that if it's already there, we do not add it.

This means that the header id is incorrect and the worker cannot find the corresponding grpc invocation, resulting in a timeout error on the worker side in dotnet-isolated.

This can happen if one dotnet-isolated function app is directly forwarding or cloning a request and sending it to a second dotnet-isolated function app. This carries the header from the original app over to the second app and causes a timeout. We've had one CRI on this.

The error is Timed out waiting for the function start call.

We should probably just be overwriting this header whenever we add it as it's really for host-worker communication. The fix should be fairly straightforward, but we'll need a test to protect against regressions.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions