Hi, I had a issue not to start confluence.
When I install confluence it was success.
However it may be after connecting MSSQL, this issue was happened.
I'm using Windows Server2012 R2 and MSSQL 2016.
I referenced the following pages.
https://confluence.atlassian.com/confkb/confluence-does-not-start-due-to-spring-application-context-has-not-been-set-218278311.html?_ga=2.268920882.2122452707.1588413213-664445182.1588175076
1.The user running Confluence does not have write permissions to the home folder defined in <install>/confluence/WEB-INF/classes/confluence-init.properties
or the install directory.
->I confirmed the above folder has write permission.
2. You are running Confluence as the root
user or if you have an application firewall enabled (SeLinux or AppArmor).
-> I use Administrator account to install Confluence.
3.The database driver is not located in the <install>/confluence/WEB-INF/lib
folder or you are using a database version that is incompatible with the bundled driver.
->I confirmed mssql-jdbc-6.3.0jre8-preview.jar is placed on that folder.
4.The hostname of the server can not be resolved.
->I confirmed the hostname can be resolved by nslookup.
5.The server does not have enough memory during installation to set up the database, and restarts return this error.
->This server has 10GB memory and memory usage is 27%.
6.After upgrading the OS, the installation directory might become defective.
-> I didn't run Windows Upgrade. No upgrading OS.
7.The Confluence database is not configured correctly with permissions.
-> I confirmed if database is working good with sqlcmd -S 10.145.28.203,1434 -d confluencedb -U confluenceuser -P xxxxxxx.
8.The file confluence.cfg.xml
is corrupt.
-> I can open C:\Program Files\Atlassian\Application Data\Confluence\confluence.cfg.xml correctly.
9.When running a Data Center distribution and the network interface configured in the affected node is different than the one used in the other nodes.
-> I don't use Data Center distribution.
10.The Setup Wizard requires fulfilling a certain number of steps. By whatever reason the Confluence instance has been stopped or server has been restarted before finishing all the steps of the Setup Wizard.
-> I confirmed Atlassian Confluence Confluence030520153013 is working on Task Manager.
And also checked Atlassian Confluence Confluence030520153013 is working on Service dialog.
[Catalina-utility-1] [com.atlassian.confluence.lifecycle] init Confluence is ready to serve
This says that the confluence is running correctly.
What is displayed in the browser when you enter the confluence URL?
@repi san,
Thanks for your response.
I input the following URL but I saw the same System Error page.
http://localhost:8090
http://10.145.28.203:8090
http://113970-a8093.nsl.ad.nec.co.jp:8090
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It could be a file problem.
If there is still no content (since reinstallation), stop confluence, delete the confluence.cfg.xml file and restart confluence. Now you can carry out an initial configuration again.
It is also possible to restore an existing backup.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@repi san,
Thanks for your response.
I could solve this issue by the following step.
1.Erase confluence.cfg.xml
2.Restart confluence.
3.Chose Example Site, not Restore from Backup.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello @Hiroshi Sakamoto san,
Thank you for displaying your steps. I had the same issue and was able to fix it after performing those actions.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
What is output in the log files after starting confluence?
What's in the atlassian-confluence.log.
There are error messages?
Do you find the entry "ready to serve"
If there is no atlassian-confluence.log or if it is empty, check the log files catalina.out and catalina.yyyy-mm-dd.log for errors.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@repisan,
Thanks for your response.
What's in the atlassian-confluence.log.
There are error messages?
-> I also see the following error message.
2020-05-03 20:54:09,058 INFO [Catalina-utility-1] [com.atlassian.confluence.lifecycle] contextInitialized Starting Confluence 7.4.0 [build 8401 based on commit hash 0f22f74a0c673511e48ab1bc7ae6af4388aa8dbf] - synchrony version 3.1.0-master-022ca438
2020-05-03 20:54:35,551 INFO [Catalina-utility-1] [atlassian.plugin.manager.DefaultPluginManager] lambda$earlyStartup$3 Plugin system earlyStartup begun
2020-05-03 20:54:43,389 WARN [FelixStartLevel] [extender.internal.support.ExtenderConfiguration] addDefaultDependencyFactories Gemini Blueprint extensions bundle not present, annotation processing disabled.
2020-05-03 20:54:50,276 INFO [Catalina-utility-1] [atlassian.plugin.manager.DefaultPluginManager] logTime Plugin system earlyStartup ended
2020-05-03 20:54:50,292 INFO [Catalina-utility-1] [atlassian.plugin.manager.DefaultPluginManager] lambda$lateStartup$4 Plugin system lateStartup begun
2020-05-03 20:54:54,931 INFO [Catalina-utility-1] [atlassian.plugin.manager.DefaultPluginManager] logTime Plugin system lateStartup ended
2020-05-03 20:54:55,025 FATAL [Catalina-utility-1] [atlassian.spring.container.SpringContainerContext] getComponent Spring Application context has not been set
2020-05-03 20:54:55,025 ERROR [Catalina-utility-1] [atlassian.confluence.plugin.PluginFrameworkContextListener] contextInitialized Error initialising plugin manager: Spring Application context has not been set
java.lang.IllegalStateException: Spring Application context has not been set
at com.atlassian.spring.container.SpringContainerContext.getComponent(SpringContainerContext.java:48)
at com.atlassian.spring.container.ContainerManager.getComponent(ContainerManager.java:33)
at com.atlassian.confluence.plugin.PluginFrameworkContextListener.getPluginSystemLifecycle(PluginFrameworkContextListener.java:187)
at com.atlassian.confluence.plugin.PluginFrameworkContextListener.contextInitialized(PluginFrameworkContextListener.java:69)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4690)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5151)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Unknown Source)
2020-05-03 20:54:57,649 INFO [Catalina-utility-1] [com.atlassian.confluence.lifecycle] init Confluence is ready to serve
2020-05-04 00:02:22,696 FATAL [http-nio-8090-exec-4] [atlassian.spring.container.SpringContainerContext] getComponent Spring Application context has not been set
-- url: /bootstrap/selectsetupstep.action | traceId: 0043b3594ccec856 | userName: anonymous
2020-05-04 00:02:22,696 ERROR [http-nio-8090-exec-4] [atlassian.confluence.servlet.ConfluenceServletDispatcher] sendError Could not execute action
-- url: /bootstrap/selectsetupstep.action | traceId: 0043b3594ccec856 | userName: anonymous
com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.IllegalStateException: Spring Application context has not been set
at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149)
at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112)
at com.atlassian.confluence.setup.webwork.ConfluenceXWorkTransactionInterceptor.getTransactionManager(ConfluenceXWorkTransactionInterceptor.java:29)
Caused by: java.lang.IllegalStateException: Spring Application context has not been set
at com.atlassian.spring.container.SpringContainerContext.getComponent(SpringContainerContext.java:48)
at
... 214 more
2020-05-04 00:02:23,055 FATAL [http-nio-8090-exec-4] [atlassian.spring.container.SpringContainerContext] getComponent Spring Application context has not been set
-- traceId: 00987fce0a5b6ce9
2020-05-04 00:02:23,055 WARN [http-nio-8090-exec-4] [atlassian.confluence.status.SystemErrorInformationLogger] toString No SystemInformationService could be retrieved from the Container.
-- traceId: 00987fce0a5b6ce9
2020-05-04 00:02:23,055 INFO [http-nio-8090-exec-4] [atlassian.confluence.status.SystemErrorInformationLogger] writeToLog
Build Information: Can't retrieve build information - no SystemInformationService available.
--------------------------
Request Information
--------------------------
URL: http://10.145.28.203:8090/500page.jsp
Scheme: http
Server: 10.145.28.203
Port: 8090
URI: /500page.jsp
Context Path:
Servlet Path: /500page.jsp
Path Info: null
Query String: null
--------------------------
Attributes
--------------------------
javax.servlet.forward.request_uri: /bootstrap/selectsetupstep.action
javax.servlet.forward.context_path:
javax.servlet.forward.servlet_path: /bootstrap/selectsetupstep.action
javax.servlet.forward.mapping: org.apache.catalina.core.ApplicationMapping$MappingImpl@9779b
javax.servlet.error.status_code: 500
webwork.valueStack: com.opensymphony.xwork.util.OgnlValueStack@d24e59f
com.atlassian.confluence.impl.profiling.DecoratorTimings: com.atlassian.confluence.impl.profiling.DecoratorTimings@6a82d2b5
com.opensymphony.sitemesh.APPLIED_ONCE: true
__cleanup_recursion_counter: 0
javax.servlet.error.message:
javax.servlet.error.servlet_name: action
com.atlassian.confluence.util.message.MessagesDecoratorFilter__already_filtered__: true
com.atlassian.confluence.web.filter.validateparam.RequestParamValidationFilter_already_filtered: true
Confluence-Request-Time: 1588518142508
javax.servlet.jsp.jspException: com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.IllegalStateException: Spring Application context has not been set
javax.servlet.error.request_uri: /bootstrap/selectsetupstep.action
com.atlassian.core.filters.HeaderSanitisingFilter_already_filtered: true
javax.servlet.error.exception: com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.IllegalStateException: Spring Application context has not been set
--------------------------
Parameters
--------------------------
caused by: com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.IllegalStateException: Spring Application context has not been set
at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149)
caused by: java.lang.IllegalStateException: Spring Application context has not been set
at com.atlassian.spring.container.SpringContainerContext.getComponent(SpringContainerContext.java:48)
2020-05-04 00:02:23,055 FATAL [http-nio-8090-exec-4] [atlassian.spring.container.SpringContainerContext] getComponent Spring Application context has not been set
-- traceId: 00987fce0a5b6ce9
2020-05-04 00:02:23,602 ERROR [http-nio-8090-exec-4] [confluence.util.profiling.ConfluenceSitemeshErrorDecorator] renderInternal Failed to render error decorator. Falling back to using no decorator
-- traceId: 00987fce0a5b6ce9
javax.servlet.ServletException: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getUserHasBrowseUsersPermission' in class com.atlassian.confluence.core.ConfluenceActionSupport threw exception java.lang.NullPointerException at /decorators/includes/header.vm[line 54, column 69]
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshDecorator$ErrorThrowingErrorHandlingStrategy.handleException(ConfluenceSitemeshDecorator.java:231)
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshDecorator$StreamingResponseWritingStrategy.renderToResponse(ConfluenceSitemeshDecorator.java:280)
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshDecorator.applyDecoratorUsingVelocity(ConfluenceSitemeshDecorator.java:198)
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshDecorator.applyDecorator(ConfluenceSitemeshDecorator.java:138)
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshErrorDecorator.renderInternal(ConfluenceSitemeshErrorDecorator.java:44)
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshDecorator.render(ConfluenceSitemeshDecorator.java:108)
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshErrorDecorator.render(ConfluenceSitemeshErrorDecorator.java:36)
at com.opensymphony.sitemesh.webapp.decorator.BaseWebAppDecorator.render(BaseWebAppDecorator.java:33)
at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:84)
at com.atlassian.confluence.util.profiling.ProfilingSiteMeshFilter.doFilter(ProfilingSiteMeshFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:43)
at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.confluence.web.filter.HttpSessionRegistrarFilter.doFilter(HttpSessionRegistrarFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:88)
at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.applyFilter(ConfluenceSecurityFilter.java:40)
at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.doFilter(ConfluenceSecurityFilter.java:29)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:148)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:43)
at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:55)
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:43)
at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.confluence.util.RequestCacheThreadLocalFilter.doFilter(RequestCacheThreadLocalFilter.java:59)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.confluence.web.filter.ZipkinTracingFilter.doFilter(ZipkinTracingFilter.java:54)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.atlassian.confluence.web.filter.DebugFilter.doFilter(DebugFilter.java:46)
at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:712)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:384)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:394)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:253)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:348)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:173)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1594)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.apache.velocity.exception.MethodInvocationException: Invocation of method 'getUserHasBrowseUsersPermission' in class com.atlassian.confluence.core.ConfluenceActionSupport threw exception java.lang.NullPointerException at /decorators/includes/header.vm[line 54, column 69]
at org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:228)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262)
at org.apache.velocity.context.ProxyVMContext.get(ProxyVMContext.java:222)
at org.apache.velocity.runtime.parser.node.ASTReference.getVariableValue(ASTReference.java:843)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:222)
at org.apache.velocity.runtime.parser.node.ASTReference.render(ASTReference.java:342)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.apache.velocity.runtime.parser.node.ASTStringLiteral.value(ASTStringLiteral.java:290)
at org.apache.velocity.runtime.parser.node.ASTExpression.value(ASTExpression.java:71)
at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:142)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at org.apache.velocity.runtime.directive.VelocimacroProxy.render(VelocimacroProxy.java:212)
at org.apache.velocity.runtime.directive.RuntimeMacro.render(RuntimeMacro.java:247)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
at org.apache.velocity.runtime.parser.node.ASTBlock.render(ASTBlock.java:72)
at com.atlassian.confluence.setup.velocity.TrimDirective.render(TrimDirective.java:33)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.apache.velocity.runtime.directive.Parse.render(Parse.java:263)
at com.atlassian.confluence.setup.velocity.ProfilingParseDirective.render(ProfilingParseDirective.java:21)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.apache.velocity.Template.merge(Template.java:328)
at org.apache.velocity.Template.merge(Template.java:235)
at com.atlassian.confluence.util.velocity.VelocityUtils.renderTemplateWithoutSwallowingErrors(VelocityUtils.java:70)
at com.atlassian.confluence.util.velocity.VelocityUtils.renderTemplateWithoutSwallowingErrors(VelocityUtils.java:76)
at com.atlassian.confluence.util.profiling.ConfluenceSitemeshDecorator$StreamingResponseWritingStrategy.renderToResponse(ConfluenceSitemeshDecorator.java:271)
... 69 more
Caused by: java.lang.NullPointerException
at com.atlassian.confluence.core.ConfluenceActionSupport.getUserHasBrowseUsersPermission(ConfluenceActionSupport.java:596)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(PropertyExecutor.java:142)
at org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:529)
at org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:198)
... 95 more
Do you find the entry "ready to serve"
-> Yes, I can see "ready to serve" as following.
[Catalina-utility-1] [com.atlassian.confluence.lifecycle] init Confluence is ready to serve
If there is no atlassian-confluence.log or if it is empty, check the log files catalina.out
-> No, I have atlassian-confluence.log.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.