2
votes

I have created Java azure function as given on following link:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-java-maven

Java Class:

package com.khan;

import java.util.*;
import com.microsoft.azure.serverless.functions.annotation.*;
import com.microsoft.azure.serverless.functions.*;

/**
 * Azure Functions with HTTP Trigger.
 */
public class Function {
    /**
     * This function listens at endpoint "/api/hello". Two ways to invoke it using "curl" command in bash:
     * 1. curl -d "HTTP Body" {your host}/api/hello
     * 2. curl {your host}/api/hello?name=HTTP%20Query
     */
    @FunctionName("hello")
    public HttpResponseMessage<String> hello(
            @HttpTrigger(name = "req", methods = {"get", "post"}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
                
        context.getLogger().info("Java HTTP trigger processed a request.");

        // Parse query parameter
        String query = request.getQueryParameters().get("name");
        String name = request.getBody().orElse(query);

        if (name == null) {
            return request.createResponse(400, "Please pass a name on the query string or in the request body");
        } else {
            return request.createResponse(200, "Hello, " + name);
        }
                
    }
}

Function created and deployed successfully

enter image description here

Now when i try to access using curl

curl -w '\n' https://sundaydemo-20180526141357482.azurewebsites.net -d AzureFunctions

or postman 

https://sundaydemo-20180526141357482.azurewebsites.net/api/hello

Then get following error , I am wonder if anyone getting same error.

502-Bad Gateway

The specified CGI application encountered an error and the server terminated the process.

Logs :

2018-05-31T02:02:50  Welcome, you are now connected to log-streaming service.
2018-05-31T02:03:50  No new trace in the past 1 min(s).
2018-05-31T02:04:50  No new trace in the past 2 min(s).
2018-05-31T02:05:50  No new trace in the past 3 min(s).
2018-05-31T02:06:50  No new trace in the past 4 min(s).
2018-05-31T02:07:50  No new trace in the past 5 min(s).
2018-05-31T02:08:50  No new trace in the past 6 min(s).
2018-05-31T02:09:17.161 [Information] Executing 'Functions.hello' (Reason='This function was programmatically called via the host APIs.', Id=b43d17c9-35c0-4c84-ab7e-26a8ec721fe9)
2018-05-31T02:10:50  No new trace in the past 1 min(s).
2018-05-31T02:11:50  No new trace in the past 2 min(s).
2018-05-31T02:12:50  No new trace in the past 3 min(s).
2018-05-31T02:13:50  No new trace in the past 4 min(s).
2018-05-31T02:14:17.183 [Error] Timeout value of 00:05:00 exceeded by function 'Functions.hello' (Id: 'b43d17c9-35c0-4c84-ab7e-26a8ec721fe9'). Initiating cancellation.
2018-05-31T02:14:17.451 [Error] Microsoft.Azure.WebJobs.Host: Timeout value of 00:05:00 was exceeded by function: Functions.hello.
2018-05-31T02:14:17.572 [Error] Executed 'Functions.hello' (Failed, Id=b43d17c9-35c0-4c84-ab7e-26a8ec721fe9)
2018-05-31T02:15:50  No new trace in the past 1 min(s).
2018-05-31T02:16:50  No new trace in the past 2 min(s).
2018-05-31T02:17:50  No new trace in the past 3 min(s).
2018-05-31T02:18:50  No new trace in the past 4 min(s).

enter image description here

enter image description here

enter image description here

enter image description here

Also tried to remove all and added CORS *

enter image description here

Storage :

enter image description here

enter image description here

1
Have you got any progress with that?Pavel S.
This problem should be fixed by new mvn plugin, you can have a try.Jerry Liu

1 Answers

4
votes

It seems you met Function Runtime 2.0 Preview Breaking Change.

On portal, function runtime has been updated to 2.0.11857.0(Check your Function app settings panel). While maven plugin has not been updated to catch up.

So the code built by old mvn plugin is not compatible with latest runtime.

Workaround is to pin your function runtime to previous one. Go to Application settings panel and change FUNCTIONS_EXTENSION_VERSION from beta to 2.0.11776-alpha.

See this issue discussion for more details, new plugin is coming soon.

Update-6/15

New plugin has been released. See notice for jave language worker.

  • Create new project using latest Maven Azure Functions Archetype

    mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype 
    
  • Update existing project to use latest Azure Function mvn plugin

    1. function code(*.java)

      Before

      import com.microsoft.azure.serverless.functions.annotation.*;
      import com.microsoft.azure.serverless.functions.*;
      

      After(remove serverless)

      import com.microsoft.azure.functions.annotation.*;
      import com.microsoft.azure.functions.*;
      
    2. pom.xml

      1)Before

      <dependency>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-functions-java-core</artifactId>
          <version>1.0.0-beta-2/3</version>
      </dependency>
      

      After

      <dependency>
          <groupId>com.microsoft.azure.functions</groupId>
          <artifactId>azure-functions-java-library</artifactId>
          <version>1.0.0-beta-4</version>
      </dependency>
      

      2)Find one more azure-functions-java-core of excludeArtifactIds, change to azure-functions-java-library.

      3)Find azure-functions-maven-plugin,change version to 1.0.0-beta-2. See Latest version on maven.