Azure / Azure/azure-functions-java-worker

OutOfMemory exception when passing file larger than 4MB

Open
#254 1 comment 0 reactions 1 assignee Claimed by @kamperiadis View on GitHub
area:java-functions Bug needs-investigation reviewed
Dominant language
Java
Stars
103
Forks
74
Avg merge
4d 8h
Merged PRs (30d)
2

Description

I have an HttpTrigger function that receives multipart/form-data content. When a file greater than 4MB is passed to the function it errors out with `502 - Web server received an invalid response while acting as a gateway or proxy server`. In the Azure logs I see `Exception of type 'System.OutOfMemoryException' was thrown.` When I run the function locally I don't have any problems processing a larger file. I have only see the error occur when I run the deployed function. I found a closed issue that seems related https://github.com/Azure/azure-functions-java-worker/issues/70

#### Investigative information

- Timestamp: 2018-12-14T16:19:00.832
- Invocation ID: Id=99214fd3-9aff-4238-9dba-f50bc77b6128
- Region: West US
- Function Runtime Version: 2.0.12210.0
- azure-functions-java-library version: 1.2.0
- azure-functions-maven-plugin version: 1.2.0

#### Repro steps

1. Run the function with a file that is larger than 4 MB.

#### Expected behavior

Function does not timeout on larger files.

#### Actual behavior

Deployed function is not executed and error out with an OutOfMemory exception and returns `502 - Web server received an invalid response while acting as a gateway or proxy server.`

#### Known workarounds

None.

#### Related information
Here is a snippet of the function having the issue:

Source

```java
@FunctionName("BitSplit")
public HttpResponseMessage bitSplit(
@HttpTrigger(name = "content", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION, dataType = "binary") HttpRequestMessage> request,
final ExecutionContext context
) {
try {
RequestContextWrapper requestContext = new RequestContextWrapper(request);
MultipartProcessor multipartProcessor = new MultipartProcessor();
List formItems = multipartProcessor.readFormData(requestContext);
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.