Skip to content

Commit f96d054

Browse files
Merge pull request #163 from pagopa/release-uat
chore: promote to MAIN
2 parents ffc2a92 + e0e5c65 commit f96d054

File tree

8 files changed

+54
-93
lines changed

8 files changed

+54
-93
lines changed

.grype.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ ignore:
1515
- vulnerability: CVE-2022-24823 # solved in netty 4.1.77
1616
- vulnerability: CVE-2022-41881 # solved in netty 4.1.86
1717
- vulnerability: CVE-2023-34462 # solved in netty 4.1.94
18-
- vulnerability: CVE-2023-44487 # solved in netty 4.1.100
18+
- vulnerability: CVE-2023-44487 # solved in netty 4.1.100

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ RUN mvn clean package -DskipTests
1111
#
1212
# Docker RUNTIME
1313
#
14-
FROM amazoncorretto:17-alpine3.20@sha256:b6e5aab53c360dd5f9843b18b397dee2ceed3211ac9be6cf36a51606d6ec015e AS runtime
14+
FROM amazoncorretto:17-alpine3.20@sha256:1b1d0653d890ff313a1f7afadd1fd81f5ea742c9c48670d483b1bbccef98bb8b AS runtime
1515

1616
RUN apk --no-cache add shadow
1717
RUN useradd --uid 10000 runner

helm/values-dev.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ microservice-chart:
99

1010
resources:
1111
requests:
12-
memory: "256Mi"
13-
cpu: "100m"
12+
memory: "768Mi"
13+
cpu: "150m"
1414
limits:
15-
memory: "4Gi"
16-
cpu: "300m"
15+
memory: "768Mi"
16+
cpu: "600m"
1717

1818
autoscaling:
1919
enable: true
@@ -41,4 +41,4 @@ microservice-chart:
4141
# affinity: {}
4242

4343
envConfig:
44-
JAVA_TOOL_OPTIONS: "-Xms128m -Xmx4g -Djava.util.concurrent.ForkJoinPool.common.parallelism=7 -Dio.netty.eventLoopThreads=100 -javaagent:/app/applicationinsights-agent.jar -Dapplicationinsights.configuration.file=/mnt/file-config-external/appinsights-config/applicationinsights.json -agentlib:jdwp=transport=dt_socket,server=y,address=8001,suspend=n -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=3002 -Dcom.sun.management.jmxremote.rmi.port=3003 -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
44+
JAVA_TOOL_OPTIONS: "-Xms256m -Xmx512m -Djava.util.concurrent.ForkJoinPool.common.parallelism=7 -Dio.netty.eventLoopThreads=100 -javaagent:/app/applicationinsights-agent.jar -Dapplicationinsights.configuration.file=/mnt/file-config-external/appinsights-config/applicationinsights.json -agentlib:jdwp=transport=dt_socket,server=y,address=8001,suspend=n -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=3002 -Dcom.sun.management.jmxremote.rmi.port=3003 -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

helm/values-prod.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ microservice-chart:
99

1010
resources:
1111
requests:
12-
memory: "256Mi"
13-
cpu: "100m"
12+
memory: "768Mi"
13+
cpu: "150m"
1414
limits:
15-
memory: "4Gi"
16-
cpu: "300m"
15+
memory: "768Mi"
16+
cpu: "600m"
1717

1818
autoscaling:
1919
enable: true
@@ -42,4 +42,4 @@ microservice-chart:
4242
# affinity: {}
4343

4444
envConfig:
45-
JAVA_TOOL_OPTIONS: "-Xms128m -Xmx4g -Djava.util.concurrent.ForkJoinPool.common.parallelism=7 -Dio.netty.eventLoopThreads=100 -javaagent:/app/applicationinsights-agent.jar -Dapplicationinsights.configuration.file=/mnt/file-config-external/appinsights-config/applicationinsights.json"
45+
JAVA_TOOL_OPTIONS: "-Xms256m -Xmx512m -Djava.util.concurrent.ForkJoinPool.common.parallelism=7 -Dio.netty.eventLoopThreads=100 -javaagent:/app/applicationinsights-agent.jar -Dapplicationinsights.configuration.file=/mnt/file-config-external/appinsights-config/applicationinsights.json"

helm/values-uat.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ microservice-chart:
99

1010
resources:
1111
requests:
12-
memory: "256Mi"
13-
cpu: "100m"
12+
memory: "768Mi"
13+
cpu: "150m"
1414
limits:
15-
memory: "4Gi"
16-
cpu: "300m"
15+
memory: "768Mi"
16+
cpu: "600m"
1717

1818
autoscaling:
1919
enable: true
@@ -42,4 +42,4 @@ microservice-chart:
4242
# affinity: {}
4343

4444
envConfig:
45-
JAVA_TOOL_OPTIONS: '-Xms128m -Xmx4g -javaagent:/app/applicationinsights-agent.jar -Dapplicationinsights.configuration.file=/mnt/file-config-external/appinsights-config/applicationinsights.json'
45+
JAVA_TOOL_OPTIONS: '-Xms256m -Xmx512m -javaagent:/app/applicationinsights-agent.jar -Dapplicationinsights.configuration.file=/mnt/file-config-external/appinsights-config/applicationinsights.json'

helm/values.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ microservice-chart:
6161
KAFKA_NOTIFICATION_GROUP_ID: "idpay-commands-transactions-consumer-group"
6262
DELETE_PAGINATION_SIZE: "45"
6363
DELETE_DELAY_TIME: "1000"
64+
HEALTH_MONGO_ENABLED: "false"
6465

6566
externalConfigMapValues:
6667
idpay-common:

pom.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.springframework.boot</groupId>
77
<artifactId>spring-boot-starter-parent</artifactId>
8-
<version>3.1.8</version>
8+
<version>3.3.3</version>
99
</parent>
1010

1111
<groupId>it.gov.pagopa</groupId>
@@ -136,7 +136,7 @@
136136
<dependency>
137137
<groupId>org.springframework.cloud</groupId>
138138
<artifactId>spring-cloud-dependencies</artifactId>
139-
<version>2022.0.2</version>
139+
<version>2023.0.2</version>
140140
<type>pom</type>
141141
<scope>import</scope>
142142
</dependency>
@@ -145,10 +145,11 @@
145145
<groupId>io.netty</groupId>
146146
<artifactId>netty-bom</artifactId>
147147
<!-- Forced to >= 4.1.104 due to https://nvd.nist.gov/vuln/detail/CVE-2023-44487 -->
148-
<version>4.1.104.Final</version>
148+
<version>4.1.113.Final</version>
149149
<type>pom</type>
150150
<scope>import</scope>
151151
</dependency>
152+
152153
</dependencies>
153154
</dependencyManagement>
154155

src/test/java/it/gov/pagopa/common/kafka/KafkaTestUtilitiesService.java

Lines changed: 32 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package it.gov.pagopa.common.kafka;
22

3-
import ch.qos.logback.classic.LoggerContext;
4-
import ch.qos.logback.classic.spi.ILoggingEvent;
53
import com.fasterxml.jackson.core.JsonProcessingException;
64
import com.fasterxml.jackson.databind.ObjectMapper;
75
import it.gov.pagopa.common.kafka.utils.KafkaConstants;
8-
import it.gov.pagopa.common.reactive.kafka.consumer.BaseKafkaConsumer;
9-
import it.gov.pagopa.common.utils.MemoryAppender;
106
import it.gov.pagopa.common.utils.TestUtils;
7+
import org.apache.kafka.clients.admin.AdminClient;
118
import org.apache.kafka.clients.admin.OffsetSpec;
129
import org.apache.kafka.clients.admin.RecordsToDelete;
1310
import org.apache.kafka.clients.admin.TopicListing;
@@ -20,7 +17,6 @@
2017
import org.apache.kafka.common.serialization.ByteArraySerializer;
2118
import org.apache.kafka.common.serialization.StringDeserializer;
2219
import org.junit.jupiter.api.Assertions;
23-
import org.slf4j.LoggerFactory;
2420
import org.springframework.beans.factory.annotation.Autowired;
2521
import org.springframework.beans.factory.annotation.Value;
2622
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -83,28 +79,30 @@ public KafkaTemplate<byte[], byte[]> testPublisher(ProducerFactory<byte[], byte[
8379

8480
@AfterTestClass
8581
void clearTopics() {
86-
kafkaBroker.doWithAdmin(admin -> {
87-
try {
88-
Collection<TopicListing> topics = admin.listTopics().listings().get();
89-
admin.deleteRecords(
90-
admin.listOffsets(
91-
topics.stream()
92-
.filter(topicListing -> !topicListing.isInternal())
93-
.flatMap(t -> IntStream.range(0, kafkaBroker.getPartitionsPerTopic())
94-
.boxed()
95-
.map(p -> new TopicPartition(t.name(), p)))
96-
.collect(Collectors.toMap(tp -> tp,
97-
tp -> OffsetSpec.latest()))
98-
).all().get().entrySet().stream()
99-
.filter(e -> e.getValue().offset() > 0)
100-
.collect(Collectors.toMap(Map.Entry::getKey,
101-
e -> RecordsToDelete.beforeOffset(e.getValue().offset()))))
102-
.all().get();
103-
104-
} catch (InterruptedException | ExecutionException e) {
105-
throw new IllegalStateException("Something gone wrong while emptying topics", e);
106-
}
107-
});
82+
Map<String, Object> brokerConfig = Map.of(
83+
"bootstrap.servers", kafkaBroker.getBrokersAsString()
84+
);
85+
86+
try (AdminClient admin = AdminClient.create(brokerConfig)) {
87+
Collection<TopicListing> topics = admin.listTopics().listings().get();
88+
admin.deleteRecords(
89+
admin.listOffsets(
90+
topics.stream()
91+
.filter(topicListing -> !topicListing.isInternal())
92+
.flatMap(t -> IntStream.range(0, kafkaBroker.getPartitionsPerTopic())
93+
.boxed()
94+
.map(p -> new TopicPartition(t.name(), p)))
95+
.collect(Collectors.toMap(tp -> tp,
96+
tp -> OffsetSpec.latest()))
97+
).all().get().entrySet().stream()
98+
.filter(e -> e.getValue().offset() > 0)
99+
.collect(Collectors.toMap(Map.Entry::getKey,
100+
e -> RecordsToDelete.beforeOffset(e.getValue().offset()))))
101+
.all().get();
102+
103+
} catch (InterruptedException | ExecutionException e) {
104+
throw new IllegalStateException("Something went wrong while clearing topics", e);
105+
}
108106
}
109107

110108
/** It will return usefull URLs related to embedded kafka */
@@ -223,10 +221,10 @@ public void publishIntoEmbeddedKafka(String topic, Integer partition, Iterable<H
223221
headers = Stream.concat(
224222
Arrays.stream(additionalHeaders),
225223
StreamSupport.stream(headers.spliterator(), false))
226-
.collect(Collectors.toList());
224+
.toList();
227225
}
228-
ProducerRecord<byte[], byte[]> record = new ProducerRecord<>(topic, partition, key == null ? null : key.getBytes(StandardCharsets.UTF_8), payload.getBytes(StandardCharsets.UTF_8), headers);
229-
template.send(record);
226+
ProducerRecord<byte[], byte[]> rec = new ProducerRecord<>(topic, partition, key == null ? null : key.getBytes(StandardCharsets.UTF_8), payload.getBytes(StandardCharsets.UTF_8), headers);
227+
template.send(rec);
230228
}
231229
//endregion
232230

@@ -279,55 +277,16 @@ public Map<TopicPartition, Long> checkPublishedOffsets(String topic, long expect
279277
}
280278
//endregion
281279

282-
//region check commit by logs
283-
protected MemoryAppender commitLogMemoryAppender;
284-
/** To be called before each test in order to perform the asserts on {@link #assertCommitOrder(String, int)} */
285-
public void setupCommitLogMemoryAppender() {
286-
ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(BaseKafkaConsumer.class.getName());
287-
commitLogMemoryAppender = new MemoryAppender();
288-
commitLogMemoryAppender.setContext((LoggerContext) LoggerFactory.getILoggerFactory());
289-
logger.setLevel(ch.qos.logback.classic.Level.INFO);
290-
logger.addAppender(commitLogMemoryAppender);
291-
commitLogMemoryAppender.start();
292-
}
293-
294-
private final Pattern partitionCommitsPattern = Pattern.compile("partition (\\d+): (\\d+) - (\\d+)");
295-
/** It will assert the right offset commit and the total messages by the provided {@link BaseKafkaConsumer#getFlowName()}.<br />
296-
* In order to be used, you have to call {@link #setupCommitLogMemoryAppender()} before each test */
297-
public void assertCommitOrder(String flowName, int totalSendMessages) {
298-
Map<Integer, Integer> partition2last = new HashMap<>(Map.of(0, -1, 1, -1));
299-
for (ILoggingEvent loggedEvent : commitLogMemoryAppender.getLoggedEvents()) {
300-
if(loggedEvent.getMessage().equals("[KAFKA_COMMIT][{}] Committing {} messages: {}") && flowName.equals(loggedEvent.getArgumentArray()[0])){
301-
Arrays.stream(((String)loggedEvent.getArgumentArray()[2]).split(";"))
302-
.forEach(s -> {
303-
Matcher matcher = partitionCommitsPattern.matcher(s);
304-
Assertions.assertTrue(matcher.matches(), "Unexpected partition commit string: " + s);
305-
int partition = Integer.parseInt(matcher.group(1));
306-
int startOffset = Integer.parseInt(matcher.group(2));
307-
int endOffset = Integer.parseInt(matcher.group(3));
308-
Assertions.assertTrue(endOffset>=startOffset, "EndOffset less than StartOffset!: " + s);
309-
310-
Integer lastCommittedOffset = partition2last.get(partition);
311-
Assertions.assertEquals(lastCommittedOffset, startOffset-1);
312-
partition2last.put(partition, endOffset);
313-
});
314-
}
315-
}
316-
317-
Assertions.assertEquals(totalSendMessages, partition2last.values().stream().mapToInt(x->x+1).sum());
318-
}
319-
//endregion
320-
321280
//region error topic
322281
public void checkErrorsPublished(String topicErrors, Pattern errorUseCaseIdPatternMatch, int expectedErrorMessagesNumber, long maxWaitingMs, List<Pair<Supplier<String>, java.util.function.Consumer<ConsumerRecord<String, String>>>> errorUseCases) {
323282
final List<ConsumerRecord<String, String>> errors = consumeMessages(topicErrors, expectedErrorMessagesNumber, maxWaitingMs);
324-
for (final ConsumerRecord<String, String> record : errors) {
325-
final Matcher matcher = errorUseCaseIdPatternMatch.matcher(record.value());
283+
for (final ConsumerRecord<String, String> rec : errors) {
284+
final Matcher matcher = errorUseCaseIdPatternMatch.matcher(rec.value());
326285
int useCaseId = matcher.find() ? Integer.parseInt(matcher.group(1)) : -1;
327286
if (useCaseId == -1) {
328-
throw new IllegalStateException("UseCaseId not recognized! " + record.value());
287+
throw new IllegalStateException("UseCaseId not recognized! " + rec.value());
329288
}
330-
errorUseCases.get(useCaseId).getSecond().accept(record);
289+
errorUseCases.get(useCaseId).getSecond().accept(rec);
331290
}
332291
}
333292

0 commit comments

Comments
 (0)