Azure / Azure/azure-functions-java-worker

OutOfMemory exception when passing file larger than 4MB

Aperta
#254 1 commento 0 reazioni 1 assegnatario Rivendicata da @kamperiadis Vedi su GitHub
area:java-functions Bug needs-investigation reviewed
Lingua principale
Java
Stelle
103
Fork
74
Merge medio
4g 8h
PR unite (30g)
2

Descrizione

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);
}
```

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.