Skip to content

Commit 5008fcd

Browse files
committed
Add classesloaded.txt with a list of all loaded Java classes.
1 parent 9ff4abf commit 5008fcd

3 files changed

Lines changed: 7185 additions & 1 deletion

File tree

powertools-batch/pom.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@
6060
<artifactId>sdk-core</artifactId>
6161
<scope>provided</scope>
6262
</dependency>
63+
<dependency>
64+
<groupId>org.crac</groupId>
65+
<artifactId>crac</artifactId>
66+
</dependency>
6367

6468
<!-- Test dependencies -->
6569
<dependency>
@@ -94,4 +98,25 @@
9498
</dependency>
9599
</dependencies>
96100

101+
<profiles>
102+
<profile>
103+
<id>generate-classesloaded-file</id>
104+
<build>
105+
<plugins>
106+
<plugin>
107+
<groupId>org.apache.maven.plugins</groupId>
108+
<artifactId>maven-surefire-plugin</artifactId>
109+
<configuration>
110+
<argLine>
111+
-Xlog:class+load=info:classesloaded.txt
112+
--add-opens java.base/java.util=ALL-UNNAMED
113+
--add-opens java.base/java.lang=ALL-UNNAMED
114+
</argLine>
115+
</configuration>
116+
</plugin>
117+
</plugins>
118+
</build>
119+
</profile>
120+
</profiles>
121+
97122
</project>

powertools-batch/src/main/java/software/amazon/lambda/powertools/batch/BatchMessageHandlerBuilder.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,13 @@
1414

1515
package software.amazon.lambda.powertools.batch;
1616

17+
import org.crac.Context;
18+
import org.crac.Core;
19+
import org.crac.Resource;
1720
import software.amazon.lambda.powertools.batch.builder.DynamoDbBatchMessageHandlerBuilder;
1821
import software.amazon.lambda.powertools.batch.builder.KinesisBatchMessageHandlerBuilder;
1922
import software.amazon.lambda.powertools.batch.builder.SqsBatchMessageHandlerBuilder;
23+
import software.amazon.lambda.powertools.common.internal.ClassPreLoader;
2024

2125
/**
2226
* A builder-style interface we can use to build batch processing handlers for SQS, Kinesis Streams,
@@ -27,7 +31,15 @@
2731
*
2832
* @see <a href="https://docs.powertools.aws.dev/lambda/java/utilities/batch/">Powertools for AWS Lambda (Java) Batch Documentation</a>
2933
**/
30-
public class BatchMessageHandlerBuilder {
34+
public class BatchMessageHandlerBuilder implements Resource {
35+
36+
// Dummy instance to register BatchMessageHandlerBuilder with CRaC
37+
private static final BatchMessageHandlerBuilder INSTANCE = new BatchMessageHandlerBuilder();
38+
39+
// Static block to ensure CRaC registration happens at class loading time
40+
static {
41+
Core.getGlobalContext().register(INSTANCE);
42+
}
3143

3244
/**
3345
* Build an SQS-batch message handler.
@@ -55,4 +67,14 @@ public DynamoDbBatchMessageHandlerBuilder withDynamoDbBatchHandler() {
5567
public KinesisBatchMessageHandlerBuilder withKinesisBatchHandler() {
5668
return new KinesisBatchMessageHandlerBuilder();
5769
}
70+
71+
@Override
72+
public void beforeCheckpoint(Context<? extends Resource> context) throws Exception {
73+
ClassPreLoader.preloadClasses();
74+
}
75+
76+
@Override
77+
public void afterRestore(Context<? extends Resource> context) throws Exception {
78+
// No action needed after restore
79+
}
5880
}

0 commit comments

Comments
 (0)