From 5d78ff5d9ddda7b76282120d64c05584a9a78a87 Mon Sep 17 00:00:00 2001 From: Pankaj Agrawal Date: Fri, 20 Nov 2020 13:52:35 +0100 Subject: [PATCH 1/5] upgrade example project to java 11 and AspectjGradlePlugin to latest --- docs/content/index.mdx | 8 +++++--- example/HelloWorldFunction/build.gradle | 5 ++++- example/HelloWorldFunction/pom.xml | 8 ++++---- example/template.yaml | 12 ++++++------ 4 files changed, 19 insertions(+), 14 deletions(-) diff --git a/docs/content/index.mdx b/docs/content/index.mdx index 3617340dd..df30d6cb4 100644 --- a/docs/content/index.mdx +++ b/docs/content/index.mdx @@ -79,7 +79,7 @@ And configure the aspectj-maven-plugin to compile-time weave (CTW) the aws-lambd ```groovy plugins{ id 'java' - id 'aspectj.AspectjGradlePlugin' version '0.0.3' + id 'aspectj.AspectjGradlePlugin' version '0.0.6' } repositories { jcenter() @@ -94,8 +94,10 @@ dependencies { } ``` -**Note:** Please add `aspectjVersion = '1.9.6'` to the `gradle.properties` file. The aspectj plugin works at the moment with gradle 5.x only. -Please refer to [open issue](https://github.com/awslabs/aws-lambda-powertools-java/issues/146) for more details. +**Note:** + +Please add `aspectjVersion = '1.9.6'` to the `gradle.properties` file. The aspectj plugin works at the moment with gradle 5.x only if +you are using `java 8` as runtime. Please refer to [open issue](https://github.com/awslabs/aws-lambda-powertools-java/issues/146) for more details. ## Environment variables diff --git a/example/HelloWorldFunction/build.gradle b/example/HelloWorldFunction/build.gradle index 328f9daf1..ace1860f5 100644 --- a/example/HelloWorldFunction/build.gradle +++ b/example/HelloWorldFunction/build.gradle @@ -1,6 +1,6 @@ plugins{ id 'java' - id 'aspectj.AspectjGradlePlugin' version '0.0.3' + id 'aspectj.AspectjGradlePlugin' version '0.0.6' } repositories { @@ -23,6 +23,9 @@ dependencies { implementation 'software.amazon.lambda:powertools-parameters:1.0.0' aspectpath 'software.amazon.lambda:powertools-parameters:1.0.0' + implementation 'software.amazon.lambda:powertools-validation:1.0.0' + aspectpath 'software.amazon.lambda:powertools-validation:1.0.0' + implementation 'com.amazonaws:aws-lambda-java-core:1.2.0' implementation 'com.amazonaws:aws-lambda-java-events:3.1.0' diff --git a/example/HelloWorldFunction/pom.xml b/example/HelloWorldFunction/pom.xml index da63ac2a6..af9705787 100644 --- a/example/HelloWorldFunction/pom.xml +++ b/example/HelloWorldFunction/pom.xml @@ -7,8 +7,8 @@ jar A sample Hello World created for SAM CLI. - 1.8 - 1.8 + 11 + 11 2.13.2 @@ -80,9 +80,9 @@ - org.codehaus.mojo + com.nickwongdev aspectj-maven-plugin - 1.11 + 1.12.6 ${maven.compiler.source} ${maven.compiler.target} diff --git a/example/template.yaml b/example/template.yaml index f9b6729f8..0833cfaaa 100644 --- a/example/template.yaml +++ b/example/template.yaml @@ -16,7 +16,7 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.App::handleRequest - Runtime: java8 + Runtime: java11 MemorySize: 512 Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object Variables: @@ -35,7 +35,7 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppValidation::handleRequest - Runtime: java8 + Runtime: java11 MemorySize: 512 Tracing: Active Events: @@ -50,7 +50,7 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppStream::handleRequest - Runtime: java8 + Runtime: java11 MemorySize: 512 Tracing: Active Environment: @@ -68,7 +68,7 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppParams::handleRequest - Runtime: java8 + Runtime: java11 MemorySize: 512 Tracing: Active Policies: @@ -148,7 +148,7 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppSqsEvent::handleRequest - Runtime: java8 + Runtime: java11 MemorySize: 512 Tracing: Active Policies: @@ -174,7 +174,7 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppSqsEventUtil::handleRequest - Runtime: java8 + Runtime: java11 MemorySize: 512 Tracing: Active Policies: From f8820b2b89be7a3946c79a1ad4ede93d657e9052 Mon Sep 17 00:00:00 2001 From: Pankaj Agrawal Date: Fri, 20 Nov 2020 14:17:57 +0100 Subject: [PATCH 2/5] fix: replace now deprecated set-env with new GitHub Env file --- .github/workflows/build-docs.yml | 5 ++--- .github/workflows/docs.yml | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index f2e5e5cb5..5bc64b43f 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -25,9 +25,8 @@ jobs: - name: Capture branch and tag id: branch_name run: | - echo ::set-env name=SOURCE_BRANCH::${GITHUB_REF#refs/heads/} - echo ::set-env name=SOURCE_TAG::${GITHUB_REF#refs/tags/} - + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: install dependencies run: make dev-docs - name: Build docs website diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5eb6d98bd..dfc0ce206 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -18,9 +18,8 @@ jobs: - name: Capture branch and tag id: branch_name run: | - echo ::set-env name=SOURCE_BRANCH::${GITHUB_REF#refs/heads/} - echo ::set-env name=SOURCE_TAG::${GITHUB_REF#refs/tags/} - + echo "SOURCE_BRANCH=${GITHUB_REF#refs/heads/}" >> $GITHUB_ENV + echo "SOURCE_TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: install dependencies run: make dev-docs - name: Build docs website From c0e74ee0d378c789f6c08905a30b17df1b358d7b Mon Sep 17 00:00:00 2001 From: Pankaj Agrawal Date: Fri, 20 Nov 2020 14:46:50 +0100 Subject: [PATCH 3/5] fix: donot capture traces for sam local --- .../powertools/core/internal/LambdaHandlerProcessor.java | 4 ++++ .../powertools/tracing/internal/LambdaTracingAspect.java | 5 ++++- .../tracing/internal/LambdaTracingAspectTest.java | 6 +++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java b/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java index 5475d89b6..467822f40 100644 --- a/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java +++ b/powertools-core/src/main/java/software/amazon/lambda/powertools/core/internal/LambdaHandlerProcessor.java @@ -78,4 +78,8 @@ public static boolean isColdStart() { public static void coldStartDone() { IS_COLD_START = false; } + + public static boolean isSamLocal() { + return "true".equals(System.getenv("AWS_SAM_LOCAL")); + } } diff --git a/powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java b/powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java index 9aafa0a94..ebc2829d7 100644 --- a/powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java +++ b/powertools-tracing/src/main/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspect.java @@ -24,6 +24,7 @@ import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.coldStartDone; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.isColdStart; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.isHandlerMethod; +import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.isSamLocal; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.placedOnRequestHandler; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.placedOnStreamHandler; import static software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor.serviceName; @@ -62,7 +63,9 @@ public Object around(ProceedingJoinPoint pjp, } throw e; } finally { - AWSXRay.endSubsegment(); + if (!isSamLocal()) { + AWSXRay.endSubsegment(); + } } } diff --git a/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java b/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java index 477ceddb4..58a9af4f2 100644 --- a/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java +++ b/powertools-tracing/src/test/java/software/amazon/lambda/powertools/tracing/internal/LambdaTracingAspectTest.java @@ -25,6 +25,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mock; +import software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor; import software.amazon.lambda.powertools.tracing.handlers.PowerToolDisabled; import software.amazon.lambda.powertools.tracing.handlers.PowerToolDisabledForStream; import software.amazon.lambda.powertools.tracing.handlers.PowerTracerToolEnabled; @@ -32,13 +33,12 @@ import software.amazon.lambda.powertools.tracing.handlers.PowerTracerToolEnabledForStreamWithNoMetaData; import software.amazon.lambda.powertools.tracing.handlers.PowerTracerToolEnabledWithException; import software.amazon.lambda.powertools.tracing.handlers.PowerTracerToolEnabledWithNoMetaData; -import software.amazon.lambda.powertools.core.internal.LambdaHandlerProcessor; import static org.apache.commons.lang3.reflect.FieldUtils.writeStaticField; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.catchThrowable; import static org.mockito.Mockito.when; -import static org.mockito.MockitoAnnotations.initMocks; +import static org.mockito.MockitoAnnotations.openMocks; class LambdaTracingAspectTest { private RequestHandler requestHandler; @@ -49,7 +49,7 @@ class LambdaTracingAspectTest { @BeforeEach void setUp() throws IllegalAccessException { - initMocks(this); + openMocks(this); writeStaticField(LambdaHandlerProcessor.class, "IS_COLD_START", null, true); setupContext(); requestHandler = new PowerTracerToolEnabled(); From d2abf168e3ab1c15d638800ac579d0f6304f909f Mon Sep 17 00:00:00 2001 From: Pankaj Agrawal Date: Thu, 26 Nov 2020 15:29:54 +0100 Subject: [PATCH 4/5] doc: link to issue for the use of forked repo of aspectj --- example/HelloWorldFunction/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/example/HelloWorldFunction/pom.xml b/example/HelloWorldFunction/pom.xml index af9705787..34bfcbba7 100644 --- a/example/HelloWorldFunction/pom.xml +++ b/example/HelloWorldFunction/pom.xml @@ -80,6 +80,7 @@ + com.nickwongdev aspectj-maven-plugin 1.12.6 From 7e77f7de2c759064d403d7786d0072b9610d033e Mon Sep 17 00:00:00 2001 From: Pankaj Agrawal Date: Thu, 26 Nov 2020 15:32:15 +0100 Subject: [PATCH 5/5] use global for java runtime --- example/template.yaml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/example/template.yaml b/example/template.yaml index 0833cfaaa..8ef57d12f 100644 --- a/example/template.yaml +++ b/example/template.yaml @@ -9,6 +9,7 @@ Description: > Globals: Function: Timeout: 20 + Runtime: java11 Resources: HelloWorldFunction: @@ -16,7 +17,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.App::handleRequest - Runtime: java11 MemorySize: 512 Environment: # More info about Env Vars: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#environment-object Variables: @@ -35,7 +35,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppValidation::handleRequest - Runtime: java11 MemorySize: 512 Tracing: Active Events: @@ -50,7 +49,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppStream::handleRequest - Runtime: java11 MemorySize: 512 Tracing: Active Environment: @@ -68,7 +66,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppParams::handleRequest - Runtime: java11 MemorySize: 512 Tracing: Active Policies: @@ -148,7 +145,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppSqsEvent::handleRequest - Runtime: java11 MemorySize: 512 Tracing: Active Policies: @@ -174,7 +170,6 @@ Resources: Properties: CodeUri: HelloWorldFunction Handler: helloworld.AppSqsEventUtil::handleRequest - Runtime: java11 MemorySize: 512 Tracing: Active Policies: