| 
 | 1 | +From d6276724f7f432af4693e9d786ecfcaddb73e505 Mon Sep 17 00:00:00 2001  | 
 | 2 | +From: Trask Stalnaker < [email protected]>  | 
 | 3 | +Date: Sat, 20 Sep 2025 21:48:43 -0700  | 
 | 4 | +Subject: [PATCH] Update Caffeine  | 
 | 5 | + | 
 | 6 | +---  | 
 | 7 | + .../src/main/java/com/linecorp/armeria/common/Flags.java | 2 +-  | 
 | 8 | + .../armeria/internal/common/util/CertificateUtil.java    | 9 ++++++---  | 
 | 9 | + .../linecorp/armeria/server/file/FileServiceConfig.java  | 2 +-  | 
 | 10 | + dependencies.toml                                        | 5 ++---  | 
 | 11 | + gradle.properties                                        | 4 ++--  | 
 | 12 | + 5 files changed, 12 insertions(+), 10 deletions(-)  | 
 | 13 | + | 
 | 14 | +diff --git a/core/src/main/java/com/linecorp/armeria/common/Flags.java b/core/src/main/java/com/linecorp/armeria/common/Flags.java  | 
 | 15 | +index 57671a686..e1dd6eb3b 100644  | 
 | 16 | +--- a/core/src/main/java/com/linecorp/armeria/common/Flags.java  | 
 | 17 | ++++ b/core/src/main/java/com/linecorp/armeria/common/Flags.java  | 
 | 18 | +@@ -1722,7 +1722,7 @@ public final class Flags {  | 
 | 19 | +                 if ("off".equals(value)) {  | 
 | 20 | +                     return allowOff;  | 
 | 21 | +                 }  | 
 | 22 | +-                CaffeineSpec.parse(value);  | 
 | 23 | ++                var unused = CaffeineSpec.parse(value);  | 
 | 24 | +                 return true;  | 
 | 25 | +             } catch (Exception e) {  | 
 | 26 | +                 return false;  | 
 | 27 | +diff --git a/core/src/main/java/com/linecorp/armeria/internal/common/util/CertificateUtil.java b/core/src/main/java/com/linecorp/armeria/internal/common/util/CertificateUtil.java  | 
 | 28 | +index a343428a3..48698e3ea 100644  | 
 | 29 | +--- a/core/src/main/java/com/linecorp/armeria/internal/common/util/CertificateUtil.java  | 
 | 30 | ++++ b/core/src/main/java/com/linecorp/armeria/internal/common/util/CertificateUtil.java  | 
 | 31 | +@@ -57,6 +57,8 @@ public final class CertificateUtil {  | 
 | 32 | +   | 
 | 33 | +     private static final Logger logger = LoggerFactory.getLogger(CertificateUtil.class);  | 
 | 34 | +   | 
 | 35 | ++    private static final String NO_HOSTNAME_FOUND = "<NO_HOSTNAME_FOUND>";  | 
 | 36 | ++  | 
 | 37 | +     private static final LoadingCache<X509Certificate, String> hostnameCache =  | 
 | 38 | +             Caffeine.newBuilder()  | 
 | 39 | +                     .weakKeys()  | 
 | 40 | +@@ -73,11 +75,11 @@ public final class CertificateUtil {  | 
 | 41 | +   | 
 | 42 | +                             logger.warn("No common name or subject alternative name found " +  | 
 | 43 | +                                         "in certificate: {}", cert);  | 
 | 44 | +-                            return null;  | 
 | 45 | ++                            return NO_HOSTNAME_FOUND;  | 
 | 46 | +                         } catch (Exception e) {  | 
 | 47 | +                             logger.warn("Failed to get the common name or subject alternative name name " +  | 
 | 48 | +                                         "from a certificate: {}", cert, e);  | 
 | 49 | +-                            return null;  | 
 | 50 | ++                            return NO_HOSTNAME_FOUND;  | 
 | 51 | +                         }  | 
 | 52 | +                     });  | 
 | 53 | +   | 
 | 54 | +@@ -136,7 +138,8 @@ public final class CertificateUtil {  | 
 | 55 | +         if (!(certificate instanceof X509Certificate)) {  | 
 | 56 | +             return null;  | 
 | 57 | +         }  | 
 | 58 | +-        return hostnameCache.get((X509Certificate) certificate);  | 
 | 59 | ++        final String hostname = hostnameCache.get((X509Certificate) certificate);  | 
 | 60 | ++        return NO_HOSTNAME_FOUND.equals(hostname) ? null : hostname;  | 
 | 61 | +     }  | 
 | 62 | +   | 
 | 63 | +     public static List<X509Certificate> toX509Certificates(File file) throws CertificateException {  | 
 | 64 | +diff --git a/core/src/main/java/com/linecorp/armeria/server/file/FileServiceConfig.java b/core/src/main/java/com/linecorp/armeria/server/file/FileServiceConfig.java  | 
 | 65 | +index 8766acd95..b6b8a1b62 100644  | 
 | 66 | +--- a/core/src/main/java/com/linecorp/armeria/server/file/FileServiceConfig.java  | 
 | 67 | ++++ b/core/src/main/java/com/linecorp/armeria/server/file/FileServiceConfig.java  | 
 | 68 | +@@ -72,7 +72,7 @@ public final class FileServiceConfig {  | 
 | 69 | +             return null;  | 
 | 70 | +         }  | 
 | 71 | +         try {  | 
 | 72 | +-            CaffeineSpec.parse(entryCacheSpec);  | 
 | 73 | ++            var unused = CaffeineSpec.parse(entryCacheSpec);  | 
 | 74 | +         } catch (Exception e) {  | 
 | 75 | +             throw new IllegalArgumentException("invalid cache spec: " + entryCacheSpec, e);  | 
 | 76 | +         }  | 
 | 77 | +diff --git a/dependencies.toml b/dependencies.toml  | 
 | 78 | +index 22c366f47..bfd54bcce 100644  | 
 | 79 | +--- a/dependencies.toml  | 
 | 80 | ++++ b/dependencies.toml  | 
 | 81 | +@@ -15,8 +15,7 @@ brave6 = "6.3.0"  | 
 | 82 | + brotli4j = "1.18.0"  | 
 | 83 | + # Don"t upgrade bucket4j to 7.6.1 or 8.x that requires Java 11. The module name also has been changed to "com.bucket4j"  | 
 | 84 | + bucket4j = "7.6.0"  | 
 | 85 | +-# Don"t upgrade Caffeine to 3.x that requires Java 11.  | 
 | 86 | +-caffeine = "2.9.3"  | 
 | 87 | ++caffeine = "3.2.2"  | 
 | 88 | + cglib = "3.3.0"  | 
 | 89 | + checkerframework = "2.5.6"  | 
 | 90 | + checkstyle = "10.3.2"  | 
 | 91 | +@@ -325,7 +324,7 @@ javadocs = "https://javadoc.io/doc/com.github.vladimir-bukhtoyarov/bucket4j-core  | 
 | 92 | + module = "com.github.ben-manes.caffeine:caffeine"  | 
 | 93 | + version.ref = "caffeine"  | 
 | 94 | + exclusions = "com.google.errorprone:error_prone_annotations"  | 
 | 95 | +-javadocs = "https://www.javadoc.io/doc/com.github.ben-manes.caffeine/caffeine/2.9.3/"  | 
 | 96 | ++javadocs = "https://www.javadoc.io/doc/com.github.ben-manes.caffeine/caffeine/3.2.2/"  | 
 | 97 | + relocations = { from = "com.github.benmanes.caffeine", to = "com.linecorp.armeria.internal.shaded.caffeine" }  | 
 | 98 | +   | 
 | 99 | + [libraries.cglib]  | 
 | 100 | +diff --git a/gradle.properties b/gradle.properties  | 
 | 101 | +index de5b05013..5ab06b436 100644  | 
 | 102 | +--- a/gradle.properties  | 
 | 103 | ++++ b/gradle.properties  | 
 | 104 | +@@ -12,8 +12,8 @@ licenseUrl=https://www.apache.org/license/LICENSE-2.0.txt  | 
 | 105 | + scmUrl=https://github.com/line/armeria  | 
 | 106 | + scmConnection=scm:git:https://github.com/line/armeria.git  | 
 | 107 | + scmDeveloperConnection=scm:git:ssh:// [email protected]/line/armeria.git  | 
 | 108 | +-javaSourceCompatibility=1.8  | 
 | 109 | +-javaTargetCompatibility=1.8  | 
 | 110 | ++javaSourceCompatibility=11  | 
 | 111 | ++javaTargetCompatibility=11  | 
 | 112 | + publishUrlForRelease=https://ossrh-staging-api.central.sonatype.com/service/local/staging/deploy/maven2/  | 
 | 113 | + publishUrlForSnapshot=https://central.sonatype.com/repository/maven-snapshots/  | 
 | 114 | + publishUsernameProperty=ossrhUsername  | 
 | 115 | +--   | 
 | 116 | +2.51.0.windows.1  | 
 | 117 | + | 
0 commit comments