Problem
Unable to Retrieve Node Info - Empty or Invalid response received from server when selecting the Analysis & Review tab.
Error Message
An error message dialog popup windows shows in the GUI (as seen in Figure 1) after clicking Analysis & Review tab for a case that is homed on a different server. This can also occur if the user only has the Case User role, because when they select a case, eDiscovery Platform (eDP) will try to redirect the user to Analysis & Review for that case which resides on a different case home server. NOTE: All error logs and image(s) below are from an internal Arctera lab.
Figure 1:
Seen within the access_<date>.log file in the <edp home folder>\logs folder:
192.168.10.121 - - [08/May/2025:08:35:59 -0400] "GET /esa/rest/v1/cases/0.6.14.1280041782/redirectNodeInfo?_dc=1746707757320&CWfp=-978916403781866639 HTTP/1.1" 500 136
Seen within the server.<date>.log file in the <edp home folder>\logs folder:
2025-05-08 14:34:28,606 ERROR [matter.reports.CaseReviewedStatsRESTConnector] (https-jsse-nio2-443-exec-2-superuser:[]) CaseName:[] UserName:[superuser-737394453] [#550215] An unexpected Matter Report exception has occurred. PKIX path building failed: java.security.cert.CertPathBuilderException: Unable to find certificate chain.
javax.net.ssl.SSLHandshakeException: PKIX path building failed: java.security.cert.CertPathBuilderException: Unable to find certificate chain.
at sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[?:1.8.0_432]
at sun.security.ssl.TransportContext.fatal(TransportContext.java:331) ~[?:1.8.0_432]
at sun.security.ssl.TransportContext.fatal(TransportContext.java:274) ~[?:1.8.0_432]
at sun.security.ssl.TransportContext.fatal(TransportContext.java:269) ~[?:1.8.0_432]
at sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1356) ~[?:1.8.0_432]
at sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1231) ~[?:1.8.0_432]
at sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1174) ~[?:1.8.0_432]
at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:377) ~[?:1.8.0_432]
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444) ~[?:1.8.0_432]
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422) ~[?:1.8.0_432]
at sun.security.ssl.TransportContext.dispatch(TransportContext.java:182) ~[?:1.8.0_432]
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:152) ~[?:1.8.0_432]
at sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1401) ~[?:1.8.0_432]
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1309) ~[?:1.8.0_432]
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:440) ~[?:1.8.0_432]
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:436) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.13.jar:4.5.13]
at com.teneo.esa.matter.reports.rest.ReportsRestServiceHelper.authenticateUser(ReportsRestServiceHelper.java:320) ~[testclasses/:?]
at com.teneo.esa.matter.reports.rest.ReportsRestServiceHelper.initServiceHelper(ReportsRestServiceHelper.java:188) ~[testclasses/:?]
at com.teneo.esa.matter.reports.CaseReviewedStatsClusterConnector.getRestHelper(CaseReviewedStatsClusterConnector.java:58) ~[testclasses/:?]
at com.teneo.esa.matter.reports.CaseReviewedStatsRESTConnector.getStatus(CaseReviewedStatsRESTConnector.java:275) [testclasses/:?]
at com.teneo.esa.matter.reports.MatterReportConnector.getReport(MatterReportConnector.java:68) [testclasses/:?]
at com.teneo.esa.matter.reports.CaseReviewedStatsConnector.getReport(CaseReviewedStatsConnector.java:82) [testclasses/:?]
at com.teneo.esa.matter.reports.MatterReportManagerImpl.getReport(MatterReportManagerImpl.java:58) [testclasses/:?]
at com.teneo.esa.ui.ajax.admin.matter.MatterDashHandler.getReviewedReport(MatterDashHandler.java:617) [testclasses/:?]
at com.teneo.esa.ui.ajax.admin.matter.MatterDashHandler.getReviewedByTag(MatterDashHandler.java:399) [testclasses/:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_432]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_432]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_432]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_432]
at com.teneo.esa.ui.servlet.AjaxServlet.doGet(AjaxServlet.java:128) [testclasses/:?]
at com.teneo.esa.ui.servlet.AjaxServlet.doPost(AjaxServlet.java:80) [testclasses/:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:555) [servlet-api.jar:4.0.FR]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) [servlet-api.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:199) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) [tomcat-websocket.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.servlet.XSSFilter.doFilter(XSSFilter.java:242) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.servlet.CSRFDetectionFilter.doFilter(CSRFDetectionFilter.java:317) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.auth.SecurityFilter.doFilter(SecurityFilter.java:406) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:129) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.session.SessionTrackingFilter.doFilter(SessionTrackingFilter.java:139) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.servlet.ErrorHandlingFilter.doFilter(ErrorHandlingFilter.java:75) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.servlet.CacheDisablingFilter.doFilter(CacheDisablingFilter.java:72) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.servlet.SessionLoggingFilter.doFilter(SessionLoggingFilter.java:55) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.servlet.RequestAndResponseLoggingFilter.doFilter(RequestAndResponseLoggingFilter.java:661) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at com.teneo.esa.ui.servlet.ContextSetupFilter.doFilter(ContextSetupFilter.java:84) [testclasses/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144) [catalina.jar:9.0.97]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) [catalina.jar:9.0.97]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) [catalina.jar:9.0.97]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:597) [catalina.jar:9.0.97]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) [catalina.jar:9.0.97]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660) [catalina.jar:9.0.97]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) [catalina.jar:9.0.97]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.97]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) [catalina.jar:9.0.97]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:396) [tomcat-coyote.jar:9.0.97]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) [tomcat-coyote.jar:9.0.97]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:937) [tomcat-coyote.jar:9.0.97]
at org.apache.tomcat.util.net.Nio2Endpoint$SocketProcessor.doRun(Nio2Endpoint.java:1734) [tomcat-coyote.jar:9.0.97]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) [tomcat-coyote.jar:9.0.97]
at org.apache.tomcat.util.net.AbstractEndpoint.processSocket(AbstractEndpoint.java:1335) [tomcat-coyote.jar:9.0.97]
at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:645) [tomcat-coyote.jar:9.0.97]
at org.apache.tomcat.util.net.Nio2Endpoint$Nio2SocketWrapper$2.completed(Nio2Endpoint.java:621) [tomcat-coyote.jar:9.0.97]
at org.apache.tomcat.util.net.SecureNio2Channel$1.completed(SecureNio2Channel.java:1026) [tomcat-coyote.jar:9.0.97]
at org.apache.tomcat.util.net.SecureNio2Channel$1.completed(SecureNio2Channel.java:949) [tomcat-coyote.jar:9.0.97]
at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) [?:1.8.0_432]
at sun.nio.ch.Invoker$2.run(Invoker.java:218) [?:1.8.0_432]
at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) [?:1.8.0_432]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) [tomcat-util.jar:9.0.97]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) [tomcat-util.jar:9.0.97]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) [tomcat-util.jar:9.0.97]
at java.lang.Thread.run(Thread.java:750) [?:1.8.0_432]
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: java.security.cert.CertPathBuilderException: Unable to find certificate chain.
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:456) ~[?:1.8.0_432]
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:323) ~[?:1.8.0_432]
at sun.security.validator.Validator.validate(Validator.java:271) ~[?:1.8.0_432]
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:315) ~[?:1.8.0_432]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:234) ~[?:1.8.0_432]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:110) ~[?:1.8.0_432]
at com.teneo.esa.matter.reports.rest.SSLProtocolSocketFactory$SavingTrustManager.checkServerTrusted(SSLProtocolSocketFactory.java:170) ~[testclasses/:?]
at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1258) ~[?:1.8.0_432]
at sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1340) ~[?:1.8.0_432]
... 99 more
Caused by: java.security.cert.CertPathBuilderException: Unable to find certificate chain.
at com.safelogic.cryptocomply.jcajce.provider.PKIXCertPathBuilderSpi_8.engineBuild(Unknown Source) ~[ccj-4.0.0.jar:4.0.0]
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) ~[?:1.8.0_432]
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:451) ~[?:1.8.0_432]
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:323) ~[?:1.8.0_432]
at sun.security.validator.Validator.validate(Validator.java:271) ~[?:1.8.0_432]
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:315) ~[?:1.8.0_432]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:234) ~[?:1.8.0_432]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:110) ~[?:1.8.0_432]
at com.teneo.esa.matter.reports.rest.SSLProtocolSocketFactory$SavingTrustManager.checkServerTrusted(SSLProtocolSocketFactory.java:170) ~[testclasses/:?]
at sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1258) ~[?:1.8.0_432]
at sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1340) ~[?:1.8.0_432]
... 99 more
2025-05-08 14:34:30,535 INFO [util.redirection.RedirectionHelper] (https-jsse-nio2-443-exec-2-superuser:[]) CaseName:[] UserName:[superuser-737394453] Redirecting user superuser to eDP-CH1.edp.lab
2025-05-08 14:34:30,650 ERROR [handler.redirection.RedirectionHandler] (https-jsse-nio2-443-exec-2-superuser:[]) CaseName:[] UserName:[superuser-737394453] [71001] Error while getting redirection information:
2025-05-08 14:34:30,650 ERROR [resource.redirection.RedirectionResource] (https-jsse-nio2-443-exec-2-superuser:[]) CaseName:[] UserName:[superuser-737394453] [71001] [71001] Internal server error.
If using Developer Tools on the browser we can see the following error:
redirectNodeInfo?_dc=174670775732 500
Cause
This occurs when going directly to Analysis & Review of a case which is homed on a different server. This requires a web server redirect action to a different server that is using a different certificate.
Solution
The following solution is an example for servers named eDP-App1, eDP-App2, and eDP-App3 and all three are on the domain edp.lab.
Solution 1 - Create a new wildcard certificate and server keystore to be used by all the eDP servers:
NOTE: For more information, details, and commands in regards to creating a new certificate/server.keystore files please read the related article below titled "How to install or renew an SSL Certificate in the eDiscovery Platform"
1. Create a new server.keystore file
2. Create a new wildcard certificate request for *.edp.lab
3. Get the new wildcard certificate
4. Import the new wild card certificate into the server.keystore
5. Deploy the server.keystore to the <eDP Home Folder>\config\templates\tomcat folder for all the eDP servers (eDP-App1, eDP-App2, and eDP-App3)
6. Run Clearwell Utility option 7
Solution 2 - Create a new certificate and server keystore to be used by all the eDP servers:
1. Create a new server.keystore file
2. Create a new certificate request with an extension Subject Alternative Name (SAN) as such:
SAN=dns:eDP-app1.edp.lab,dns:edp-app2.edp.lab,dns:edp-app3.edp.lab
and if would like to include hostnames along with the Fully qualified Domain Names in the above SAN, can be similar to the following:
SAN=dns:eDP-app1,dns:eDP-app1.edp.lab,dns:edp-app2,dns:edp-app2.edp.lab,dns:edp-app3,dns:edp-app3.edp.lab
3. Get the new certificate
4. Import the new certificate into the server.keystore
5. Deploy the server.keystore to the <eDP Home Folder>\config\templates\tomcat folder for all the eDP servers (eDP-App1, eDP-App2, and eDP-App3)
6. Run Clearwell Utility option 7
Workaround:
If the Processing tab is available, press this before going into the Analysis & Review tab. This uses javascript instead of the REST api to setup the appropriate information to allow the server to redirect without throwing the error.
This issue is presently under investigation by our Engineering Team. Depending on the results of this investigation, it may be addressed through a patch or hotfix in current or future software releases. However, this specific issue is not currently scheduled for inclusion in any upcoming release. If this issue has a significant business impact on your continued use of the product, please contact your Sales representative or the Sales team to discuss your concerns.
Note: Customers experiencing this issue are encouraged to contact Veritas Technical Support as data is still being collected to assist in resolving this issue.