View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005361 | SymmetricDS Pro | Bug | public | 2022-07-12 18:18 | 2024-04-10 17:32 |
Reporter | jmckenziegenerali | Assigned To | josh-a-hicks | ||
Priority | high | ||||
Status | closed | Resolution | reopened | ||
Product Version | 3.13.5 | ||||
Target Version | 3.13.5 | Fixed in Version | 3.13.5 | ||
Summary | 0005361: JDBC connection fails when using Oracle DB in cloud | ||||
Description | I am using an always free instance of Oracle Autonomous DB in Oracle Cloud. It works fine in SQL Developer and in my custom Java applications that connect using either a jdbc string or using an Oracle Wallet. I need SymmetricDS Pro to replicate from one Oracle DB to another, however when trying to setup a master node it always fails to connect to DB. I cannot get pass the JDBC setup due to an exception in the Master Node setup wizard. The exception occurs right after filling DB details and clicking Test, and it is logged in symmetricds.log. | ||||
Steps To Reproduce | 1. Install a fresh copy of SymmetricDS Pro 3.13.5 using the installer (tried on my local Windows 10 and in Oracle Cloud with CentOS 8 Stream). 2. Open the SymmetricDS Pro console in your web browser 3. When you get the welcome screen, click "Setup New Replication" 4. Database: "Oracle" 5. Mode: "Trigger-based capture" or "Log-based capture" (the issue occurs regardless of the mode) 6. Url: jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-frankfurt-1.oraclecloud.com))(connect_data=(service_name=gd15676c9180a98_mytia_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) *** cloud.oracle.com offers an always free account where you create your oracle autonomous DB instances. Your db authentication can be either Oracle Wallet (mutual TLS) or a simple jdbc string (TLS). I have extensively tested both, without any success. Currently, for simplicity, I am keeping TLS authentication which does not require any wallet, so the above string should work for you in SQL Developer and in Symmetric DS Pro. 7. user id: ADMIN 8. user password: test123Test123 9. click "Test" The expected result is a successful connection. The actual result is an exception. *** note: the credentials I am sharing in this bug report are OK to share. The database is free, empty, and intended for testing. In CentOS, the actual result is WARN [gui] [cM] [qtp49969897-18] Unsuccessful attempt to connect to a database using url: jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-frankfurt-1.oraclecloud.com))(connect_data=(service_name=gd15676c9180a98_mytia_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) with driver: oracle.jdbc.driver.OracleDriver as user: ADMIN StackTraceKey.init [UnrecoverableKeyException:4233833294] java.security.UnrecoverableKeyException: Password verification failed at java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:793) at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:243) at java.base/java.security.KeyStore.load(KeyStore.java:1479) at oracle.net.nt.CustomSSLSocketFactory.loadFileBasedKeyStore(CustomSSLSocketFactory.java:922) at oracle.net.nt.CustomSSLSocketFactory.loadKeyStore(CustomSSLSocketFactory.java:906) at oracle.net.nt.CustomSSLSocketFactory.getTrustManagerArray(CustomSSLSocketFactory.java:646) at oracle.net.nt.CustomSSLSocketFactory.createSSLContext(CustomSSLSocketFactory.java:333) at oracle.net.nt.CustomSSLSocketFactory.getSSLContext(CustomSSLSocketFactory.java:305) at oracle.net.nt.CustomSSLSocketFactory.getSSLSocketEngine(CustomSSLSocketFactory.java:271) at oracle.net.nt.TcpsNTAdapter.connect(TcpsNTAdapter.java:170) at oracle.net.nt.ConnOption.connect(ConnOption.java:172) at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:508) at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521) at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660) at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1481) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:540) at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:782) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:704) at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52) at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:357) at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:103) at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:652) at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:534) at org.jumpmind.db.util.ResettableBasicDataSource.createDataSource(ResettableBasicDataSource.java:55) ... When trying with an Oracle Wallet, the exception in CentOS in symmetricds.log is: 2022-07-12 14:04:53,756 WARN [gui] [cM] [qtp981487964-14] Unsuccessful attempt to connect to a database using url: jdbc:oracle:thin:@mytia_high?TNS_ADMIN=/tmp/wallet_mytia with driver: oracle.jdbc.driver.OracleDriver as user: ADMIN StackTraceKey [UnrecoverableKeyException:1552847393] On my local Windows, I get [UnrecoverableKeyException:2616288946] java.security.UnrecoverableKeyException: Password verification failed and the relevant stack trace is in the log. | ||||
Additional Information | See the attached log files for the full strack traces. | ||||
Tags | No tags attached. | ||||
|
symmetric_log_windows_10.txt (10,651 bytes)
2022-07-12 16:14:13,940 INFO [startup] [AbstractCommandLauncher] [main] Option: name=max-idle-time, value={90000} 2022-07-12 16:14:13,944 INFO [startup] [AbstractCommandLauncher] [main] Option: name=no-log-console, value={} 2022-07-12 16:14:14,062 INFO [startup] [SymmetricUtils] [main] _____ __ _ ____ _____ / ___/ __ _____ __ ___ __ ___ _/ /_ ____(_)___ / __ | / ___/ \__ \ / / / / _ `_ \/ _ `_ \/ _ \/_ __// __/ / __/ / / / / \__ \ ___/ // /_/ / // // / // // / __// / / / / / /_ / /_/ / ___/ / /____/ \__ /_//_//_/_//_//_/\___/ \_/ /_/ /_/\__/ /_____/ /____/ /____/ +-----------------------------------------------------------------+ | Copyright (C) 2007-2022 JumpMind, Inc. | | | | Licensed under one or more agreements from JumpMind, Inc. | | See doc/license.html | +-----------------------------------------------------------------+ 2022-07-12 16:14:14,092 INFO [startup] [SymmetricWebServer] [main] About to start SymmetricDS web server on 0.0.0.0:31415:HTTP/1.1 2022-07-12 16:14:14,437 INFO [startup] [BouncyCastleSecurityService] [main] Installing a default SSL certificate: O=JumpMind,OU=SymmetricDS,CN=0.0.0.0 2022-07-12 16:14:14,500 INFO [startup] [BouncyCastleSecurityService] [main] Saving keystore security/keystore 2022-07-12 16:14:14,506 INFO [startup] [SymmetricWebServer] [main] About to start SymmetricDS web server on 0.0.0.0:31417:HTTPS/1.1 2022-07-12 16:14:15,352 INFO [startup] [SymmetricEngineHolder] [main] Current directory is C:\SymmetricDS-Pro 2022-07-12 16:14:15,352 INFO [startup] [SymmetricEngineHolder] [main] Starting in multi-server mode with engines directory at C:\SymmetricDS-Pro/engines 2022-07-12 16:14:15,352 INFO [startup] [SymmetricEngineHolder] [main] No engine *.properties files found 2022-07-12 16:14:15,425 INFO [startup] [ServletDeployer] [main] Skipping automatic servlet registration because there is already a Vaadin servlet with the name Console Application 2022-07-12 16:14:15,617 INFO [startup] [SymmetricWebServer] [main] Joining the web server main thread 2022-07-12 16:14:28,627 INFO [] [DefaultDeploymentConfiguration] [qtp1365197105-59] Vaadin is running in production mode. 2022-07-12 16:16:23,573 WARN [gui] [cM] [qtp1365197105-61] Unsuccessful attempt to connect to a database using url: jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-frankfurt-1.oraclecloud.com))(connect_data=(service_name=gd15676c9180a98_mytia_high.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adwc.eucom-central-1.oraclecloud.com, OU=Oracle BMCS FRANKFURT, O=Oracle Corporation, L=Redwood City, ST=California, C=US"))) with driver: oracle.jdbc.driver.OracleDriver as user: ADMIN StackTraceKey.init [UnrecoverableKeyException:2616288946] java.security.UnrecoverableKeyException: Password verification failed at java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:793) at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:243) at java.base/java.security.KeyStore.load(KeyStore.java:1479) at oracle.net.nt.CustomSSLSocketFactory.loadFileBasedKeyStore(CustomSSLSocketFactory.java:922) at oracle.net.nt.CustomSSLSocketFactory.loadKeyStore(CustomSSLSocketFactory.java:906) at oracle.net.nt.CustomSSLSocketFactory.getTrustManagerArray(CustomSSLSocketFactory.java:646) at oracle.net.nt.CustomSSLSocketFactory.createSSLContext(CustomSSLSocketFactory.java:333) at oracle.net.nt.CustomSSLSocketFactory.getSSLContext(CustomSSLSocketFactory.java:305) at oracle.net.nt.CustomSSLSocketFactory.getSSLSocketEngine(CustomSSLSocketFactory.java:271) at oracle.net.nt.TcpsNTAdapter.connect(TcpsNTAdapter.java:170) at oracle.net.nt.ConnOption.connect(ConnOption.java:172) at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:508) at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521) at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660) at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1481) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:540) at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:782) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:704) at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52) at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:357) at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:103) at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:652) at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:534) at org.jumpmind.db.util.ResettableBasicDataSource.createDataSource(ResettableBasicDataSource.java:55) at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:734) at com.jumpmind.symmetric.console.impl.cM.a(SetupDatabaseScreen.java:613) at com.jumpmind.symmetric.console.impl.cM.p(SetupDatabaseScreen.java:682) at com.jumpmind.symmetric.console.impl.cK.d(NodeSetupWizard.java:102) at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:205) at com.vaadin.flow.component.ComponentEventBus.handleDomEvent(ComponentEventBus.java:373) at com.vaadin.flow.component.ComponentEventBus.lambda$addDomTrigger$dd1b7957$1(ComponentEventBus.java:264) at com.vaadin.flow.internal.nodefeature.ElementListenerMap.lambda$fireEvent$2(ElementListenerMap.java:447) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at com.vaadin.flow.internal.nodefeature.ElementListenerMap.fireEvent(ElementListenerMap.java:447) at com.vaadin.flow.server.communication.rpc.EventRpcHandler.handleNode(EventRpcHandler.java:62) at com.vaadin.flow.server.communication.rpc.AbstractRpcInvocationHandler.handle(AbstractRpcInvocationHandler.java:66) at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocationData(ServerRpcHandler.java:438) at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$1(ServerRpcHandler.java:419) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:419) at com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:320) at com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92) at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1578) at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:252) at com.jumpmind.symmetric.console.ui.AppServlet.service(AppServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:228) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.jumpmind.symmetric.web.HttpMethodFilter.doFilter(HttpMethodFilter.java:60) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:400) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) at java.base/java.lang.Thread.run(Thread.java:834) symmetric_log_centos_8_stream.txt (9,891 bytes)
CentOS 8 stream 2022-07-12 18:04:22,190 INFO [startup] [SymmetricWebServer] [main] About to start SymmetricDS web server on 0.0.0.0:31415:HTTP/1.1 2022-07-12 18:04:22,980 INFO [startup] [SymmetricWebServer] [main] About to start SymmetricDS web server on 0.0.0.0:31417:HTTPS/2 2022-07-12 18:04:31,277 INFO [startup] [SymmetricEngineHolder] [main] Current directory is /opt/symmetric-ds 2022-07-12 18:04:31,277 INFO [startup] [SymmetricEngineHolder] [main] Starting in multi-server mode with engines directory at /opt/symmetric-ds/engines 2022-07-12 18:04:31,277 INFO [startup] [SymmetricEngineHolder] [main] No engine *.properties files found 2022-07-12 18:04:32,285 INFO [startup] [ServletDeployer] [main] Skipping automatic servlet registration because there is already a Vaadin servlet with the name Console Application 2022-07-12 18:04:34,073 INFO [startup] [SymmetricWebServer] [main] Joining the web server main thread 2022-07-12 18:04:34,485 INFO [] [DefaultDeploymentConfiguration] [qtp49969897-20] Vaadin is running in production mode. 2022-07-12 18:04:40,471 WARN [gui] [UidlRequestHandler] [qtp49969897-21] Invalid security key received from 77.78.82.226 2022-07-12 18:13:02,560 WARN [gui] [cM] [qtp49969897-18] Unsuccessful attempt to connect to a database using url: jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-frankfurt-1.oraclecloud.com))(connect_data=(service_name=gd15676c9180a98_mytia_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) with driver: oracle.jdbc.driver.OracleDriver as user: ADMIN StackTraceKey.init [UnrecoverableKeyException:4233833294] java.security.UnrecoverableKeyException: Password verification failed at java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:793) at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:243) at java.base/java.security.KeyStore.load(KeyStore.java:1479) at oracle.net.nt.CustomSSLSocketFactory.loadFileBasedKeyStore(CustomSSLSocketFactory.java:922) at oracle.net.nt.CustomSSLSocketFactory.loadKeyStore(CustomSSLSocketFactory.java:906) at oracle.net.nt.CustomSSLSocketFactory.getTrustManagerArray(CustomSSLSocketFactory.java:646) at oracle.net.nt.CustomSSLSocketFactory.createSSLContext(CustomSSLSocketFactory.java:333) at oracle.net.nt.CustomSSLSocketFactory.getSSLContext(CustomSSLSocketFactory.java:305) at oracle.net.nt.CustomSSLSocketFactory.getSSLSocketEngine(CustomSSLSocketFactory.java:271) at oracle.net.nt.TcpsNTAdapter.connect(TcpsNTAdapter.java:170) at oracle.net.nt.ConnOption.connect(ConnOption.java:172) at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:508) at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521) at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660) at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1481) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:540) at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:782) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:704) at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52) at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:357) at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:103) at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:652) at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:534) at org.jumpmind.db.util.ResettableBasicDataSource.createDataSource(ResettableBasicDataSource.java:55) at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:734) at com.jumpmind.symmetric.console.impl.cM.a(SetupDatabaseScreen.java:613) at com.jumpmind.symmetric.console.impl.cM.p(SetupDatabaseScreen.java:682) at com.jumpmind.symmetric.console.impl.cK.d(NodeSetupWizard.java:102) at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:205) at com.vaadin.flow.component.ComponentEventBus.handleDomEvent(ComponentEventBus.java:373) at com.vaadin.flow.component.ComponentEventBus.lambda$addDomTrigger$dd1b7957$1(ComponentEventBus.java:264) at com.vaadin.flow.internal.nodefeature.ElementListenerMap.lambda$fireEvent$2(ElementListenerMap.java:447) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at com.vaadin.flow.internal.nodefeature.ElementListenerMap.fireEvent(ElementListenerMap.java:447) at com.vaadin.flow.server.communication.rpc.EventRpcHandler.handleNode(EventRpcHandler.java:62) at com.vaadin.flow.server.communication.rpc.AbstractRpcInvocationHandler.handle(AbstractRpcInvocationHandler.java:66) at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocationData(ServerRpcHandler.java:438) at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$1(ServerRpcHandler.java:419) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:419) at com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:320) at com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92) at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1578) at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:252) at com.jumpmind.symmetric.console.ui.AppServlet.service(AppServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:228) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.jumpmind.symmetric.web.HttpMethodFilter.doFilter(HttpMethodFilter.java:60) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:400) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) at java.base/java.lang.Thread.run(Thread.java:829) |
|
Hello there, we are considering to purchase a SymmetricDS PRO license. We are insurance company with large number of clients in complete product portfolio. We would like to move part of our infrastructure to oracle cloud, this bug is a show showstopper considering you product as an option. Could you please have look on it? Thank you. Kind regards, Jan Marek IT Manager Generali CZ |
|
Can you provide client credentials .zip file to test the connection over JDBC without the wallet? |
|
Yes, attached. The DB was auto stopped due to a long inactivity. Apologies for any inconvenience while trying it. I have started it again, so it will run for at least a week. I have also attached a screenshot from SQL Developer with a successful connection test in addition to the credentials. |
|
Thank you for starting up again. I was using this documentation on the Oracle site. Using JDBC with Oracle 18 driver and not the wallet. On step 3 it refers to a client zip file with the trust store and keystore information that comes in a client zip. I did not see this in the file you attached. ... from the docs https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/connect-jdbc-thin-wallet.html#GUID-20656D84-4D79-4EE9-B55F-333053948966 3. Set JKS related connection properties: Add the JKS related connection properties to ojdbc.properties file. The keyStore and truststore password are the password specified when you downloading the client credentials .zip file |
|
I found a more specific document on just connecting with JDBC using TLS https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/connect-jdbc-thin-tls.html#GUID-9C4FBA97-C486-42E9-883F-13B9EB1DB160 This is not working for me either. |
|
Comment out javax.net.ssl.keyStorePassword from sym_service.conf and then remove the SymmetricDS keystore from the security directory. |
|
Oracle expects the keystore to be unprotected and SymmetricDS puts a password on the keystore to protect itself. |
|
@josh: you were reading a wrong page. That page you've posted is all about a wallet. Step 3 refers to the wallet zip file. https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/connect-jdbc-thin-wallet.html#GUID-BE543CFD-6FB4-4C5B-A2EA-9638EC30900D is all about connecting with a wallet. The wallet is for mTLS which requires a jdbc string pointing at the wallet zip or the keystore and truststore copied from inside the wallet. To connect without a wallet, you need only a jdbc string, username and password. This is what we have provided incl. a screenshot from Oracle Developer where we connect with the jdbc, username and password. @jake: is your advice a hypothesis or a solution that is verified to work? I have commented out the keystore password and deleted the keystore in sym_service.conf, however it's still the same error "Password verification failed" and an exception in the logs: 2022-08-12 12:36:57,543 WARN [gui] [cM] [qtp535352603-16] Unsuccessful attempt to connect to a database using url: jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1521)(host=adb.eu-frankfurt-1.oraclecloud.com))(connect_data=(service_name=gd15676c9180a98_mytia_high.adb.oraclecloud.com))(security=(ssl_server_dn_match=yes))) with driver: oracle.jdbc.driver.OracleDriver as user: ADMIN StackTraceKey.init [UnrecoverableKeyException:4233833294] java.security.UnrecoverableKeyException: Password verification failed at java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:793) at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:243) at java.base/java.security.KeyStore.load(KeyStore.java:1479) at oracle.net.nt.CustomSSLSocketFactory.loadFileBasedKeyStore(CustomSSLSocketFactory.java:922) at oracle.net.nt.CustomSSLSocketFactory.loadKeyStore(CustomSSLSocketFactory.java:906) at oracle.net.nt.CustomSSLSocketFactory.getTrustManagerArray(CustomSSLSocketFactory.java:646) at oracle.net.nt.CustomSSLSocketFactory.createSSLContext(CustomSSLSocketFactory.java:333) at oracle.net.nt.CustomSSLSocketFactory.getSSLContext(CustomSSLSocketFactory.java:305) at oracle.net.nt.CustomSSLSocketFactory.getSSLSocketEngine(CustomSSLSocketFactory.java:271) at oracle.net.nt.TcpsNTAdapter.connect(TcpsNTAdapter.java:170) at oracle.net.nt.ConnOption.connect(ConnOption.java:172) at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:508) at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521) at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660) at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287) at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1481) at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:540) at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:782) at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39) at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:704) at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52) at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:357) at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:103) at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:652) at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:534) at org.jumpmind.db.util.ResettableBasicDataSource.createDataSource(ResettableBasicDataSource.java:55) at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:734) at com.jumpmind.symmetric.console.impl.cM.a(SetupDatabaseScreen.java:613) at com.jumpmind.symmetric.console.impl.cM.p(SetupDatabaseScreen.java:682) at com.jumpmind.symmetric.console.impl.cK.d(NodeSetupWizard.java:102) at com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:205) at com.vaadin.flow.component.ComponentEventBus.handleDomEvent(ComponentEventBus.java:373) at com.vaadin.flow.component.ComponentEventBus.lambda$addDomTrigger$dd1b7957$1(ComponentEventBus.java:264) at com.vaadin.flow.internal.nodefeature.ElementListenerMap.lambda$fireEvent$2(ElementListenerMap.java:447) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at com.vaadin.flow.internal.nodefeature.ElementListenerMap.fireEvent(ElementListenerMap.java:447) at com.vaadin.flow.server.communication.rpc.EventRpcHandler.handleNode(EventRpcHandler.java:62) at com.vaadin.flow.server.communication.rpc.AbstractRpcInvocationHandler.handle(AbstractRpcInvocationHandler.java:66) at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocationData(ServerRpcHandler.java:438) at com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$1(ServerRpcHandler.java:419) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:419) at com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:320) at com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:92) at com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) at com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1578) at com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:252) at com.jumpmind.symmetric.console.ui.AppServlet.service(AppServlet.java:36) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631) at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:228) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.jumpmind.symmetric.web.HttpMethodFilter.doFilter(HttpMethodFilter.java:60) at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) at org.eclipse.jetty.server.Server.handle(Server.java:516) at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:400) at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:645) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:392) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131) at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034) at java.base/java.lang.Thread.run(Thread.java:829) Yes, https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/connect-jdbc-thin-tls.html#GUID-9C4FBA97-C486-42E9-883F-13B9EB1DB160 is the right documentation for connecting without a wallet. However, I wonder why you would read that since you already have the jdbc string, username, and password from us. Nothing more than these 3 information items is needed. You can try that with SQL developer (free) https://www.oracle.com/database/sqldeveloper/technologies/download/ or see the screenshot attached earlier in the zip to prove that Oracle SQL developer connects with the given jdbc string, username and password. After a few days of inactivity, the database is automatically stopped in Oracle Cloud. I have started it again today and I'm reopening this, hoping we find a solution to connect SymmetricDS with the given working and verified jdbc string, user, and password. There is nothing else needed, and there is nothing missing. We can provide you with a wallet if you would like to get that zip with keys. Oracle SQL Developer is working with both the wallet and the jdbc string (no wallet) options. |
|
Attached is the wallet ZIP. (not needed when connecting via jdbc string since that is protected only with a username and password. The wallet is for mTLS, giving an extra level of security). |
|
Guys, to support you in the troubleshooting the best I can, I'm also attaching a quick and easy oracle jdbc connection test. I've written this in Java and it connects to the DB. SymmetricDS Pro still doesn't. I've removed the keystore password, deleted the keystore and restarted sym_service as advised, however that did not help. Please retry this with the app vs. with symmetricds pro. |
|
I was able to connect to your Oracle Cloud database with just the url and credentials above following the steps below. 1. Stop SymmetricDS 2. Update conf/sym_service.conf to comment out the following properties. #wrapper.java.additional=-Djavax.net.ssl.keyStore= #wrapper.java.additional=-Djavax.net.ssl.trustStore= #wrapper.java.additional=-Djavax.net.ssl.keyStorePassword= 3. Delete the security/keystore file in SymmetricDS installation 4. Start up and reconnect |
|
I have commented out the 3 configuration keys in conf/sym_service.conf and deleted security/keystore as advised. The result is however an exception when trying to start sym_service. The exception says uninitialized keystore. It is probably caused by deleting the keystore file. sym_service does not start. It keeps getting restarted in a loop, after this exception. Hence, it never starts listening on its port. ./sym_service console Log output will be written to /opt/symmetric-ds/logs/symmetric.log [startup] - AbstractCommandLauncher - Option: name=max-idle-time, value={90000} [startup] - SymmetricUtils - _____ __ _ ____ _____ / ___/ __ _____ __ ___ __ ___ _/ /_ ____(_)___ / __ | / ___/ \__ \ / / / / _ `_ \/ _ `_ \/ _ \/_ __// __/ / __/ / / / / \__ \ ___/ // /_/ / // // / // // / __// / / / / / /_ / /_/ / ___/ / /____/ \__ /_//_//_/_//_//_/\___/ \_/ /_/ /_/\__/ /_____/ /____/ /____/ +-----------------------------------------------------------------+ | Copyright (C) 2007-2022 JumpMind, Inc. | | | | Licensed under one or more agreements from JumpMind, Inc. | | See doc/license.html | +-----------------------------------------------------------------+ [startup] - SymmetricWebServer - About to start SymmetricDS web server on 0.0.0.0:31415:HTTP/1.1 ------------------------------------------------------------------------------- An exception occurred. Please see the following for details: ------------------------------------------------------------------------------- java.security.KeyStoreException: Uninitialized keystore at java.base/java.security.KeyStore.getEntry(KeyStore.java:1553) at org.jumpmind.security.BouncyCastleSecurityService.installDefaultSslCert(BouncyCastleSecurityService.java:123) [wrapped] java.lang.RuntimeException: java.security.KeyStoreException: Uninitialized keystore at org.jumpmind.security.BouncyCastleSecurityService.installDefaultSslCert(BouncyCastleSecurityService.java:135) at org.jumpmind.symmetric.SymmetricWebServer.getConnectors(SymmetricWebServer.java:346) at org.jumpmind.symmetric.SymmetricWebServer.start(SymmetricWebServer.java:209) at org.jumpmind.symmetric.SymmetricWebServer.startMixed(SymmetricWebServer.java:200) at org.jumpmind.symmetric.SymmetricWebServer.start(SymmetricWebServer.java:181) at org.jumpmind.symmetric.SymmetricLauncher.executeWithOptions(SymmetricLauncher.java:183) at org.jumpmind.symmetric.AbstractCommandLauncher.execute(AbstractCommandLauncher.java:153) at org.jumpmind.symmetric.SymmetricLauncher.main(SymmetricLauncher.java:63) ------------------------------------------------------------------------------- |
|
|
|
|
|
I have reinstalled SymmetricDS Pro. This time, I have enabled only HTTP on port 31415 (I have disabled https during the install). Then, the suggested commenting out of the 3 keys and deleting the keystore works. Symmetricds boots and starts listening on its http port. So, the solution specifically works when installing SymmetricDS Pro with only an HTTP port enabled. When HTTPS is enabled as well, during the install, the solution does not work. |
|
If you leave the following uncommented it starts. There was never a need to comment this out it was a mistake and can remain. wrapper.java.additional=-Dsym.keystore.file=security/keystore |
Date Modified | Username | Field | Change |
---|---|---|---|
2022-07-12 18:18 | jmckenziegenerali | New Issue | |
2022-07-12 18:18 | jmckenziegenerali | File Added: symmetric_log_windows_10.txt | |
2022-07-12 18:18 | jmckenziegenerali | File Added: symmetric_log_centos_8_stream.txt | |
2022-07-15 07:10 | jan.marek | Note Added: 0002111 | |
2022-07-27 19:45 | josh-a-hicks | Note Added: 0002115 | |
2022-07-28 10:41 | jmckenziegenerali | Note Added: 0002117 | |
2022-07-28 10:41 | jmckenziegenerali | File Added: client_credentials.zip | |
2022-07-28 11:43 | josh-a-hicks | Note Added: 0002118 | |
2022-07-28 12:04 | josh-a-hicks | Note Added: 0002119 | |
2022-08-10 17:38 | jvanmeter | Note Added: 0002152 | |
2022-08-10 17:40 | jvanmeter | Assigned To | => jvanmeter |
2022-08-10 17:40 | jvanmeter | Status | new => closed |
2022-08-10 17:40 | jvanmeter | Resolution | open => no change required |
2022-08-10 17:40 | jvanmeter | Note Added: 0002153 | |
2022-08-12 13:01 | jmckenziegenerali | Status | closed => feedback |
2022-08-12 13:01 | jmckenziegenerali | Resolution | no change required => reopened |
2022-08-12 13:01 | jmckenziegenerali | Note Added: 0002160 | |
2022-08-12 13:06 | jmckenziegenerali | Note Added: 0002161 | |
2022-08-12 13:06 | jmckenziegenerali | File Added: wallet_mytia.zip | |
2022-08-12 13:06 | jmckenziegenerali | Status | feedback => assigned |
2022-08-12 13:43 | jmckenziegenerali | Note Added: 0002162 | |
2022-08-12 13:43 | jmckenziegenerali | File Added: oracle_jdbc_test.zip | |
2022-08-17 17:33 | jvanmeter | Assigned To | jvanmeter => |
2022-08-19 12:22 | josh-a-hicks | Note Added: 0002171 | |
2022-08-24 19:43 | elong | Assigned To | => josh-a-hicks |
2022-08-24 19:43 | elong | Status | assigned => feedback |
2022-09-02 12:14 | jmckenziegenerali | Note Added: 0002179 | |
2022-09-02 12:14 | jmckenziegenerali | Status | feedback => assigned |
2022-09-02 12:18 | jmckenziegenerali | Note Added: 0002180 | |
2022-09-02 12:18 | jmckenziegenerali | File Added: conf.png | |
2022-09-02 12:19 | jmckenziegenerali | Note Added: 0002181 | |
2022-09-02 12:19 | jmckenziegenerali | File Added: security_deleted_keystore.png | |
2022-09-02 12:19 | jmckenziegenerali | File Added: exception.png | |
2022-09-02 13:44 | jmckenziegenerali | Note Added: 0002182 | |
2022-09-02 15:19 | josh-a-hicks | Note Added: 0002183 | |
2024-04-10 17:32 | jvanmeter | Status | assigned => closed |
2024-04-10 17:32 | jvanmeter | Fixed in Version | => 3.13.5 |