Patch release on top of v5.17.8. Removes two out-of-support / vulnerability-prone transitive dependencies (log4j-core and AWS SDK v1), fixes JGroups discovery-table growth and a LESS skin path bug, and adds a Gradle release-cut script.
Security
-
Drop transitive log4j-core, bridge log4j2 to slf4j (#2999)
grouperClientpulledorg.apache.logging.log4j:log4j-coreonto the runtime classpath transitively. uPortal logs through slf4j/logback, so log4j-core was unused and a standing CVE surface (the Log4Shell-family vulnerabilities all live in log4j-core). Excludes log4j-core globally and adds thelog4j-to-slf4jbridge so any log4j2 API calls (e.g. from grouperClient) still route to slf4j. -
Migrate dynamic-skin S3 storage to AWS SDK v2 (#3000)
The dynamic-skin S3 storage backend used AWS SDK v1 (
com.amazonaws:aws-java-sdk-s3), which AWS has placed out of security support. Migrates tosoftware.amazon.awssdk:s32.46.7 (v2 builder API,headObjectexistence check, try-with-resources client) with no change to stored object layout or returned URLs.
Fixes
-
Clear JDBC_PING table on view change (#3001)
The JGroups
JDBC_PINGdiscovery table accumulated stale rows: a node terminated abruptly (e.g.kill -9) never deregistered, so its row lingered across restarts. Setsclear_table_on_view_change="true"so the coordinator wipes the table on each view change and live members re-register. -
Use
@import (inline)for bootstrap.css in common.less (#2997)LESS treats
@import "x.css"as a passthrough, emitting a literal CSS@importwhose relative path resolves incorrectly at runtime (404). The(inline)keyword embeds the file at compile time, where the path resolves. Affects skins still on the LESS compilation path.
Tooling
-
Add
release-uportal.sh(#2986)A Gradle release preflight + cut script at the repo root, mirroring the Maven ecosystem release process: tree/upstream sync checks, signing-key + keyserver verification, license-header scan, non-interactive version flags, and the post-release upstream tag push.
Docs
- Trim
AGENTS.mdunder 200 lines (#2993)
Upgrade notes
- Drop-in for deployers on uPortal-start ≤ 5.17.8. No required action for the common case.
- log4j2: if your deployment relied on
log4j-corebeing on the classpath (e.g. a custom log4j2 appender config), note that log4j-core is now excluded; log4j2 API calls are routed to slf4j/logback via the bridge. - Dynamic-skin S3 backend (opt-in; off by default): AWS SDK v2 resolves the region strictly via the default provider chain (
AWS_REGION/ profile / instance metadata) and fails fast if none is set, whereas v1 sometimes defaulted tous-east-1. Deployers who enabled the S3 skin storage backend should set a region explicitly. Deployers on the default filesystem skin storage are unaffected.