Open
Description
When an exception occurs in a static initialization, it is not logged in AppInsights.
Investigative information
Please provide the following:
- Timestamp: 2019-06-21T17:48:38.384
- Invocation ID:
48d86a7c24b1354196e9c0c9b6ee7d19
- Region: Central US
Repro steps
Here's a sample function to reproduce:
package com.yevster;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Optional;
import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
public class ProtoFunction {
static {
//Puke!
Optional.empty().orElseThrow(()->new RuntimeException("Life isn't fair!"));
}
@FunctionName("prototype")
public HttpResponseMessage run(@HttpTrigger(name = "req", methods = {
HttpMethod.GET }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<byte[]>> request,
final ExecutionContext context) throws MalformedURLException, IOException {
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "text/html").body("<html><body><h1>Rejoice! All is well!</h1></body></html>").build();
}
}
And here's what AppInsights shows when queried for all exceptions and trace messages after invocation of that function:
Expected behavior
Provide a description of the expected behavior.
The exception thrown from the static block is recorded in App Insights.
Actual behavior
The exception thrown from the static block is not recorded in App Insights.
Known workarounds
Do not use any static code.