Skip to content

Commit 87d12f8

Browse files
committed
Caffeine
1 parent af0008c commit 87d12f8

File tree

3 files changed

+120
-2
lines changed

3 files changed

+120
-2
lines changed

.github/unsafe/unsafe.patch renamed to .github/unsafe/armeria-remove-JCTools.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
From f371066409daaf55739eb60e1ef0d9f42b21ac2a Mon Sep 17 00:00:00 2001
22
From: Trask Stalnaker <[email protected]>
33
Date: Sat, 20 Sep 2025 15:36:51 -0700
4-
Subject: [PATCH] Remove Unsafe usage
4+
Subject: [PATCH] Remove JCTools
55

66
---
77
.../java/com/linecorp/armeria/common/ExceptionSampler.java | 5 ++---
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
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+

.github/unsafe/build-custom-armeria.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ git clone --depth 1 --branch "armeria-${VERSION}" https://github.com/line/armeri
1515
cd armeria
1616

1717
# Apply patch to remove unsafe access
18-
git apply "${SCRIPT_DIR}/unsafe.patch"
18+
git apply "${SCRIPT_DIR}/armeria-remove-JCTools.patch"
19+
git apply "${SCRIPT_DIR}/armeria-update-Caffeine.patch"
1920

2021
# Build the core module (shaded JAR includes all dependencies)
2122
./gradlew :core:shadedJar -x javadoc -x :docs-client:nodeSetup -x :docs-client:npmSetup -x :docs-client:npmInstall -x :docs-client:eslint -x :docs-client:lint -x :docs-client:buildWeb -x :docs-client:copyWeb

0 commit comments

Comments
 (0)