This is an automated email from the ASF dual-hosted git repository. smolnar82 pushed a commit to branch knox_idf in repository https://gitbox.apache.org/repos/asf/knox.git
commit dfdd98f0d3710c26ab2740dd63f6f21e4ae1644b Author: hsheinblatt <[email protected]> AuthorDate: Thu Jul 23 02:48:43 2026 -0700 KNOX-3390 - Address comments in PR 1315 (#1320) --- .../JdbcTrustedOidcIssuerService.java | 1 + .../TrustedOidcIssuerDatabase.java | 10 ------ .../JdbcTrustedOidcIssuerServiceTest.java | 40 ++++++++++++++++++++++ pom.xml | 2 +- 4 files changed, 42 insertions(+), 11 deletions(-) diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/JdbcTrustedOidcIssuerService.java b/gateway-server/src/main/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/JdbcTrustedOidcIssuerService.java index 0b1e0a31e..95246c080 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/JdbcTrustedOidcIssuerService.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/JdbcTrustedOidcIssuerService.java @@ -195,6 +195,7 @@ public class JdbcTrustedOidcIssuerService implements TrustedOidcIssuerService { registrySnapshot.set(Collections.unmodifiableMap(fresh)); } catch (Exception e) { LOG.errorReloadingRegistrySnapshot(e.getMessage(), e); + throw new RuntimeException("Error reloading trusted OIDC issuer registry snapshot", e); } } } diff --git a/gateway-server/src/main/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/TrustedOidcIssuerDatabase.java b/gateway-server/src/main/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/TrustedOidcIssuerDatabase.java index 92d0fd5c5..05b9d4f72 100644 --- a/gateway-server/src/main/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/TrustedOidcIssuerDatabase.java +++ b/gateway-server/src/main/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/TrustedOidcIssuerDatabase.java @@ -44,8 +44,6 @@ class TrustedOidcIssuerDatabase extends KnoxDatabase { "DELETE FROM " + TABLE_NAME + " WHERE issuer_url = ?"; private static final String SELECT_ALL_SQL = "SELECT issuer_url, dynamic_jwks, cluster_name, registered_at, registered_by FROM " + TABLE_NAME; - private static final String COUNT_SQL = - "SELECT COUNT(*) FROM " + TABLE_NAME; TrustedOidcIssuerDatabase(DataSource dataSource, String dbType) throws Exception { super(dataSource); @@ -90,12 +88,4 @@ class TrustedOidcIssuerDatabase extends KnoxDatabase { } return result; } - - int count() throws SQLException { - try (Connection connection = dataSource.getConnection(); - PreparedStatement ps = connection.prepareStatement(COUNT_SQL); - ResultSet rs = ps.executeQuery()) { - return rs.next() ? rs.getInt(1) : 0; - } - } } diff --git a/gateway-server/src/test/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/JdbcTrustedOidcIssuerServiceTest.java b/gateway-server/src/test/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/JdbcTrustedOidcIssuerServiceTest.java index 03bc54f76..9a7a9673f 100644 --- a/gateway-server/src/test/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/JdbcTrustedOidcIssuerServiceTest.java +++ b/gateway-server/src/test/java/org/apache/knox/gateway/services/knoxidf/trustedoidcissuer/JdbcTrustedOidcIssuerServiceTest.java @@ -16,6 +16,7 @@ */ package org.apache.knox.gateway.services.knoxidf.trustedoidcissuer; +import org.apache.commons.lang3.reflect.FieldUtils; import org.apache.knox.gateway.config.GatewayConfig; import org.apache.knox.gateway.config.impl.GatewayConfigImpl; import org.apache.knox.gateway.database.AbstractDataSourceFactory; @@ -279,6 +280,45 @@ public class JdbcTrustedOidcIssuerServiceTest { service.refreshJwksUri("https://unknown.example.com"); // must not throw } + // ------------------------------------------------------------------ + // SQL exception error paths + // ------------------------------------------------------------------ + + @Test(expected = RuntimeException.class) + public void testDeregisterSqlExceptionOnDeleteThrowsRuntimeException() throws Exception { + final TrustedOidcIssuerDatabase mockDb = EasyMock.createMock(TrustedOidcIssuerDatabase.class); + mockDb.delete(EasyMock.anyString()); + EasyMock.expectLastCall().andThrow(new java.sql.SQLException("delete failed")); + EasyMock.replay(mockDb); + FieldUtils.writeField(service, "database", mockDb, true); + + service.deregister("https://any.example.com"); + } + + @Test(expected = RuntimeException.class) + public void testRegisterSqlExceptionOnSnapshotReloadPropagates() throws Exception { + final TrustedOidcIssuerDatabase mockDb = EasyMock.createMock(TrustedOidcIssuerDatabase.class); + mockDb.insert(EasyMock.anyObject(TrustedOidcIssuer.class)); + EasyMock.expectLastCall(); + EasyMock.expect(mockDb.selectAll()).andThrow(new java.sql.SQLException("selectAll failed")); + EasyMock.replay(mockDb); + FieldUtils.writeField(service, "database", mockDb, true); + + service.register(issuer("https://any.example.com", false)); + } + + @Test(expected = RuntimeException.class) + public void testDeregisterSqlExceptionOnSnapshotReloadPropagates() throws Exception { + final TrustedOidcIssuerDatabase mockDb = EasyMock.createMock(TrustedOidcIssuerDatabase.class); + mockDb.delete(EasyMock.anyString()); + EasyMock.expectLastCall(); + EasyMock.expect(mockDb.selectAll()).andThrow(new java.sql.SQLException("selectAll failed")); + EasyMock.replay(mockDb); + FieldUtils.writeField(service, "database", mockDb, true); + + service.deregister("https://any.example.com"); + } + // ------------------------------------------------------------------ // Init guard // ------------------------------------------------------------------ diff --git a/pom.xml b/pom.xml index 406496f18..c0cd5a64e 100644 --- a/pom.xml +++ b/pom.xml @@ -259,8 +259,8 @@ <mina.version>2.2.8</mina.version> <netty.version>4.1.135.Final</netty.version> <nimbus-jose-jwt.version>10.9.1</nimbus-jose-jwt.version> - <oauth2-oidc-sdk.version>11.37.2</oauth2-oidc-sdk.version> <nodejs.version>v22.20.0</nodejs.version> + <oauth2-oidc-sdk.version>11.37.2</oauth2-oidc-sdk.version> <okhttp.version>4.12.0</okhttp.version> <opensaml.version>5.2.2</opensaml.version> <pac4j.version>6.5.3</pac4j.version>
