diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index f0aa3b38b..97e0dac98 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 + - uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 with: distribution: 'temurin' java-version: '21' diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml index de6b248ec..dab79cd07 100644 --- a/.github/workflows/integration-tests.yml +++ b/.github/workflows/integration-tests.yml @@ -14,12 +14,12 @@ jobs: contents: read steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 + - uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 with: distribution: 'temurin' java-version: '21' cache: 'maven' - - uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 + - uses: aws-actions/configure-aws-credentials@ececac1a45f3b08a01d2dd070d28d111c5fe6722 # v4.1.0 name: Configure AWS credentials from Test account with: role-to-assume: ${{ vars.AWS_ROLE }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 69250a14c..da48a5cf6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: Set up JDK 21 - uses: actions/setup-java@7a6d8a8234af8eb26422e24e3006232cccaa061b # v4.6.0 + uses: actions/setup-java@3a4f6e1af504cf6a31855fa899c6aa5355ba6c12 # v4.7.0 with: distribution: 'temurin' java-version: 21 diff --git a/pom.xml b/pom.xml index cf555451e..f1255a543 100644 --- a/pom.xml +++ b/pom.xml @@ -37,43 +37,48 @@ - 2.31.7 - 3.37.0 - 1.12.0 + 2.31.9 + 3.40.0 + 1.14.0 2.18.0 - 4.0.11 - 1.1.13 + 4.0.12 + 1.1.14 2.2.1 - 26.52.0 + 26.57.0 1.69.0 - 2.11.0 + 2.12.1 4.4.16 4.5.14 - 2.18.2 + 2.18.3 2.3.0 3.0.2 - 1.9.25 - 6.5.1.RELEASE - 8.13.52 + 2.1.20 + + 1.5.13 + 2.0.5 + 6.5.5.RELEASE + 9.0.2 7.3 2.24.3 3.5.0 - 1.14.2 - 4.1.116.Final - 3.25.5 + 1.14.5 + 4.1.119.Final + + 3.25.5 0.15.4 1.2.4 - 2024.0.1 - 2.2.0 + 2024.0.4 + 2.3.0 3.1.0 - 2.0.16 + 2.0.17 23.10.0 2.2.27 - - 5f8358c9d5615c18e95728e8b8528bda7ff40a7a5da2ac9a35b7a01f5d9b231a + + 02fc89fa8766a9ba221e69225f8d1c10bb91885ddbd3c112448e23488ba40ab6 UTF-8 @@ -121,7 +126,7 @@ com.google.cloud - libraries-bom + libraries-bom-protobuf3 ${google-cloud-libraries.version} pom import @@ -223,12 +228,12 @@ commons-logging commons-logging - 1.2 + 1.3.5 org.ow2.asm asm - 9.5 + 9.7.1 test @@ -260,7 +265,7 @@ org.signal libsignal-server - 0.60.0 + 0.67.6 org.signal.forks @@ -290,6 +295,21 @@ ${dynamodblocal.version} test + + ch.qos.logback + logback-core + ${logback.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + ch.qos.logback.access + logback-access-common + ${logback-access.version} + @@ -307,7 +327,7 @@ org.wiremock wiremock - 3.9.1 + 3.12.1 test diff --git a/service/pom.xml b/service/pom.xml index 734818562..1e9bbf132 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -11,14 +11,20 @@ service - 9.4.2 + 9.4.3 5.1.0 - v3-rev20250102-2.0.0 - 3.2.0 - 0.28.4.RELEASE + v3-rev20250318-2.0.0 + 3.4.0 + 0.28.6.RELEASE + 4.5.0 + + com.auth0 + java-jwt + ${java-jwt.version} + com.google.apis google-api-services-androidpublisher @@ -137,8 +143,8 @@ logback-core - ch.qos.logback - logback-access + ch.qos.logback.access + logback-access-common ch.qos.logback @@ -233,21 +239,26 @@ google-cloud-pubsub + com.google.firebase firebase-admin ${firebase-admin.version} + + + io.opentelemetry.semconv + opentelemetry-semconv + + io.opentelemetry.semconv opentelemetry-semconv - 1.27.0-alpha + 1.30.0 - com.google.cloud google-cloud-firestore - 3.30.2 io.opentelemetry.semconv @@ -400,7 +411,7 @@ com.googlecode.libphonenumber geocoder - 2.246 + 3.2 diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java index b593321bd..af2a31606 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/configuration/CircuitBreakerConfiguration.java @@ -116,7 +116,8 @@ public class CircuitBreakerConfiguration { .permittedNumberOfCallsInHalfOpenState(getPermittedNumberOfCallsInHalfOpenState()) .waitDurationInOpenState(getWaitDurationInOpenState()) .slidingWindow(getSlidingWindowSize(), getSlidingWindowMinimumNumberOfCalls(), - CircuitBreakerConfig.SlidingWindowType.COUNT_BASED) + CircuitBreakerConfig.SlidingWindowType.COUNT_BASED, + CircuitBreakerConfig.SlidingWindowSynchronizationStrategy.SYNCHRONIZED) .build(); } } diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/util/logging/RequestLogEnabledFilterFactory.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/logging/RequestLogEnabledFilterFactory.java index 6371d9ec4..612592463 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/util/logging/RequestLogEnabledFilterFactory.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/util/logging/RequestLogEnabledFilterFactory.java @@ -5,7 +5,7 @@ package org.whispersystems.textsecuregcm.util.logging; -import ch.qos.logback.access.spi.IAccessEvent; +import ch.qos.logback.access.common.spi.IAccessEvent; import ch.qos.logback.core.filter.Filter; import com.fasterxml.jackson.annotation.JsonTypeName; import io.dropwizard.logging.common.filter.FilterFactory; diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/util/logging/RequestLogManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/util/logging/RequestLogManager.java index 1fc38fa49..b82fbe21f 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/util/logging/RequestLogManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/util/logging/RequestLogManager.java @@ -5,7 +5,7 @@ package org.whispersystems.textsecuregcm.util.logging; -import ch.qos.logback.access.spi.IAccessEvent; +import ch.qos.logback.access.common.spi.IAccessEvent; import ch.qos.logback.core.filter.Filter; public class RequestLogManager { diff --git a/websocket-resources/src/main/java/org/whispersystems/websocket/logging/layout/WebsocketEventLayout.java b/websocket-resources/src/main/java/org/whispersystems/websocket/logging/layout/WebsocketEventLayout.java index d42916b98..7c807ae46 100644 --- a/websocket-resources/src/main/java/org/whispersystems/websocket/logging/layout/WebsocketEventLayout.java +++ b/websocket-resources/src/main/java/org/whispersystems/websocket/logging/layout/WebsocketEventLayout.java @@ -5,6 +5,7 @@ package org.whispersystems.websocket.logging.layout; import ch.qos.logback.core.Context; +import ch.qos.logback.core.pattern.DynamicConverter; import ch.qos.logback.core.pattern.PatternLayoutBase; import org.whispersystems.websocket.logging.WebsocketEvent; import org.whispersystems.websocket.logging.layout.converters.ContentLengthConverter; @@ -18,9 +19,25 @@ import org.whispersystems.websocket.logging.layout.converters.StatusCodeConverte import java.util.HashMap; import java.util.Map; +import java.util.function.Supplier; public class WebsocketEventLayout extends PatternLayoutBase { + // Provides a mapping of conversion words to converter classes; + // required for extending PatternLayoutBase. + // See https://logback.qos.ch/manual/layouts.html#ClassicPatternLayout for more details. + private static final Map> DEFAULT_CONVERTER_SUPPLIERS = Map.of( + "h", RemoteHostConverter::new, + "l", NAConverter::new, + "u", NAConverter::new, + "t", DateConverter::new, + "r", RequestUrlConverter::new, + "s", StatusCodeConverter::new, + "b", ContentLengthConverter::new, + "i", RequestHeaderConverter::new + ); + + // Provided for backwards compatibility private static final Map DEFAULT_CONVERTERS = new HashMap<>() {{ put("h", RemoteHostConverter.class.getName()); put("l", NAConverter.class.getName()); @@ -47,6 +64,11 @@ public class WebsocketEventLayout extends PatternLayoutBase { this.postCompileProcessor = new EnsureLineSeparation(); } + @Override + protected Map> getDefaultConverterSupplierMap() { + return DEFAULT_CONVERTER_SUPPLIERS; + } + @Override public Map getDefaultConverterMap() { return DEFAULT_CONVERTERS;