CRL Publishing throws exception in the catalina.out and debug log after creation of CRL, fails to publish properly, and prevents any subsequent CRL generation from occurring until CA subsystem is restarted.
How reproducible:
Always
Steps to Reproduce:
1. Create CA with 2G of RAM 2. Stock CS.cfg config with the following changes: ca.crl.MasterCRL.dailyUpdates=0:00,6:00,12:00,18:00;0:00,6:00,12:00,18:00 ca.crl.MasterCRL.enableCRLCache=false ca.crl.MasterCRL.nextUpdateGracePeriod=6840 ca.crl.MasterCRL.signingAlgorithm=SHA1withRSA ca.crl.MasterCRL.extension.AuthorityKeyIdentifier.enable=true ca.crl.MasterCRL.extension.AuthorityKeyIdentifier.id=MasterCRL 3. Enroll 1.5M certificates 4. Revoke 1.5M certificates 5. Generate CRL
Actual results:
- Get trace in log and CRL fails to generate: - catalina.out trace: ~~~ Exception in thread "CertStatusUpdateThread" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2894) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:117) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:407) at java.lang.StringBuffer.append(StringBuffer.java:241) at java.text.MessageFormat.subformat(MessageFormat.java:1318) at java.text.MessageFormat.format(MessageFormat.java:853) at java.text.Format.format(Format.java:157) at java.text.MessageFormat.format(MessageFormat.java:829) at org.apache.naming.StringManager.getString(StringManager.java:121) at org.apache.naming.StringManager.getString(StringManager.java:144) at org.apache.naming.resources.FileDirContext.lookup(FileDirContext.java:215) at org.apache.naming.resources.ProxyDirContext.lookup(ProxyDirContext.java:294) at org.apache.catalina.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:1934) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1805) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:888) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1341) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1220) at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2402) at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1424) at java.util.ResourceBundle.findBundle(ResourceBundle.java:1383) at java.util.ResourceBundle.findBundle(ResourceBundle.java:1310) at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1252) at java.util.ResourceBundle.getBundle(ResourceBundle.java:730) at com.netscape.cmscore.apps.CMSEngine.getLogMessage(CMSEngine.java:1310) at com.netscape.cmscore.apps.CMSEngine.getLogMessage(CMSEngine.java:1377) at com.netscape.certsrv.apps.CMS.getLogMessage(CMS.java:616) at com.netscape.cmscore.dbs.CertificateRepository.updateCertStatus(CertificateRepository.java:267) at com.netscape.cmscore.dbs.CertStatusUpdateThread.run(CertificateRepository.java:1928) elegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:622) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:244) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAsPrivileged(Subject.java:537) at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:276) at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:218) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:171) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:542) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685) at java.lang.Thread.run(Thread.java:701) Version-Release number of selected component (if applicable): ~~~ - debug log trace: ~~~ [26/Aug/2014:14:28:12][CRLIssuingPoint-MasterCRL]: update CRL error Failed constructing CRL : java.lang.OutOfMemoryError: Java heap space Failed constructing CRL : java.lang.OutOfMemoryError: Java heap space at com.netscape.ca.CRLIssuingPoint.updateCRLNow(CRLIssuingPoint.java:2694) at com.netscape.ca.CRLIssuingPoint.updateCRLNow(CRLIssuingPoint.java:2270) at com.netscape.ca.CRLIssuingPoint.updateCRL(CRLIssuingPoint.java:1752) at com.netscape.ca.CRLIssuingPoint.run(CRLIssuingPoint.java:1703) at java.lang.Thread.run(Thread.java:701) ~~~
Expected results:
- CRL generates and publishes correctly without trace and next scheduled CRL is generated. OR - CA handles exception, cleans thread, and continues with next scheduled CRL generation.
Metadata Update from @mharmsen: - Issue set to the milestone: 10.2.2
Dogtag PKI is moving from Pagure issues to GitHub issues. This means that existing or new issues will be reported and tracked through Dogtag PKI's GitHub Issue tracker.
This issue has been cloned to GitHub and is available here: https://github.com/dogtagpki/pki/issues/1867
If you want to receive further updates on the issue, please navigate to the GitHub issue and click on Subscribe button.
Subscribe
Thank you for understanding, and we apologize for any inconvenience.