Skip to content

Commit d8e5923

Browse files
authored
Fix intermittent ConcurrentModificationException thrown from codegen (#5812)
1 parent 67bf542 commit d8e5923

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

Diff for: codegen/src/main/java/software/amazon/awssdk/codegen/CodeGenerator.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@
2626
import software.amazon.awssdk.codegen.internal.Jackson;
2727
import software.amazon.awssdk.codegen.internal.Utils;
2828
import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
29+
import software.amazon.awssdk.utils.Logger;
2930

3031
public class CodeGenerator {
31-
32+
private static final Logger log = Logger.loggerFor(CodeGenerator.class);
3233
private static final String MODEL_DIR_NAME = "models";
3334

3435
private final C2jModels models;
@@ -85,6 +86,7 @@ public void execute() {
8586
emitCode(intermediateModel);
8687

8788
} catch (Exception e) {
89+
log.error(() -> "Failed to generate code. ", e);
8890
throw new RuntimeException(
8991
"Failed to generate code. Exception message : " + e.getMessage(), e);
9092

Diff for: codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/traits/HttpChecksumTrait.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.Locale;
2323
import java.util.Map;
2424
import java.util.function.Predicate;
25+
import java.util.stream.Collectors;
2526
import software.amazon.awssdk.checksums.DefaultChecksumAlgorithm;
2627
import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
2728
import software.amazon.awssdk.codegen.model.intermediate.MemberModel;
@@ -141,11 +142,12 @@ private static void configureRequestChecksumCalculation(OperationModel operation
141142
* with the fastest-to-calculate algorithms first.
142143
*/
143144
private static void addResponseAlgorithmsCodeBlock(List<String> responseAlgorithms, CodeBlock.Builder codeBuilder) {
144-
responseAlgorithms.sort(Comparator.comparingInt(o -> CHECKSUM_ALGORITHM_PRIORITY.getOrDefault(
145-
o.toUpperCase(Locale.US), Integer.MAX_VALUE)));
145+
List<String> sortedResponseAlgorithms =
146+
responseAlgorithms.stream().sorted(Comparator.comparingInt(o -> CHECKSUM_ALGORITHM_PRIORITY.getOrDefault(
147+
o.toUpperCase(Locale.US), Integer.MAX_VALUE))).collect(Collectors.toList());
146148

147149
codeBuilder.add(CodeBlock.of(".responseAlgorithmsV2("));
148-
List<CodeBlock> responseAlgorithmsCodeBlocks = responseAlgorithmsCodeBlocks(responseAlgorithms);
150+
List<CodeBlock> responseAlgorithmsCodeBlocks = responseAlgorithmsCodeBlocks(sortedResponseAlgorithms);
149151
for (int i = 0; i < responseAlgorithmsCodeBlocks.size(); i++) {
150152
CodeBlock code = responseAlgorithmsCodeBlocks.get(i);
151153
codeBuilder.add(code);

0 commit comments

Comments
 (0)