I see the following error report when athe first access to the content center admin page (/content/admin) is by concurrent users. If one user accesses the page first, there are no problems with subsequent concurrent access. -*-*-*-*-*- Begin Error Report -*-*-*-*-*- -*-*-*- ACS Error Report Code: 127.0.0.1:f1af842:faee2a6c82 -*-*-*- -*-*-*- Message 1: com.caucho.jsp.JspLineException: Form already set -*-*-*- -*-*-*- Message 2: java.lang.IllegalStateException: Form already set -*-*-*- -*-*-*- Section: HTTP headers -*-*-*- Accept: text/html, image/gif, image/jpeg, */* Accept-Language: en-us Connection: Keep-Alive Cookie: JSESSIONID=aDPzHsjvmkqf; ad_user_login=313227!1172345572416!n+CG0zIz8QnSdtXSJmUSsw== Host: 172.16.65.125 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win32) -*-*-*- Section: Cookies -*-*-*- JSESSIONID: aDPzHsjvmkqf (expires: -1) ad_user_login: 313227!1172345572416!n+CG0zIz8QnSdtXSJmUSsw== (expires: -1) -*-*-*- Section: CCM User -*-*-*- Party ID: 313227 Email address: cmsuser Family name: user Given name: cms Screen name: null -*-*-*- Section: Stack trace -*-*-*- java.lang.IllegalStateException: Form already set at com.arsdigita.bebop.form.Widget.setForm(Widget.java:272) at com.arsdigita.bebop.form.Widget.register(Widget.java:258) at com.arsdigita.bebop.Form$1.act(Form.java:487) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:95) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:104) at com.arsdigita.bebop.Form.traverse(Form.java:490) at com.arsdigita.bebop.Form.register(Form.java:501) at com.arsdigita.bebop.Page$2.act(Page.java:792) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:95) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:104) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:104) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:104) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:104) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:104) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:104) at com.arsdigita.bebop.util.Traversal.preorder(Traversal.java:104) at com.arsdigita.bebop.Page.finish(Page.java:795) at com.arsdigita.bebop.Page.lock(Page.java:813) at com.arsdigita.cms.dispatcher.CMSPage.init(CMSPage.java:159) at _packages._content_22dsection._www._admin._index__jsp._jspService(_index__jsp.java:53) at com.caucho.jsp.JavaPage.service(JavaPage.java:75) at com.caucho.jsp.Page.subservice(Page.java:506) at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182) at com.caucho.server.http.Invocation.service(Invocation.java:315) at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:222) at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:103) at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:80) at com.arsdigita.cms.ContentSectionServlet.doService(ContentSectionServlet.java:171) at com.arsdigita.web.BaseApplicationServlet$1.excurse(BaseApplicationServlet.java:111) at com.arsdigita.kernel.KernelExcursion.run(KernelExcursion.java:57) at com.arsdigita.web.BaseApplicationServlet.doService(BaseApplicationServlet.java:105) at com.arsdigita.web.BaseServlet$1.excurse(BaseServlet.java:176) at com.arsdigita.kernel.KernelExcursion.run(KernelExcursion.java:57) at com.arsdigita.web.BaseServlet.internalService(BaseServlet.java:147) at com.arsdigita.web.BaseServlet.doGet(BaseServlet.java:272) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96) at com.caucho.server.http.Invocation.service(Invocation.java:315) at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:222) at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:103) at com.caucho.server.http.QRequestDispatcher.forward(QRequestDispatcher.java:80) at com.arsdigita.web.BaseDispatcher.forward(BaseDispatcher.java:206) at com.arsdigita.web.BaseDispatcher.forward(BaseDispatcher.java:190) at com.arsdigita.web.BaseDispatcher.dispatch(BaseDispatcher.java:130) at com.arsdigita.web.DispatcherServlet.doService(DispatcherServlet.java:123) at com.arsdigita.web.BaseServlet$1.excurse(BaseServlet.java:176) at com.arsdigita.kernel.KernelExcursion.run(KernelExcursion.java:57) at com.arsdigita.web.BaseServlet.internalService(BaseServlet.java:147) at com.arsdigita.web.BaseServlet.doGet(BaseServlet.java:272) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at com.caucho.server.http.FilterChainServlet.doFilter(FilterChainServlet.java:96) at com.caucho.server.http.Invocation.service(Invocation.java:315) at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246) at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163) at com.caucho.server.TcpConnection.run(TcpConnection.java:139) at java.lang.Thread.run(Thread.java:513) -*-*-*- Section: Servlet attributes -*-*-*- com.arsdigita.cms.dispatcher.section: [com.arsdigita.cms.ContentSection:{id=69}] com.arsdigita.dispatcher.RequestContext: com.arsdigita.sitenode.SiteNodeRequestContext@ce2f86f com.arsdigita.dispatcher.RequestValue: {com.arsdigita.dispatcher.RequestValue@1f4b79b0=null} com.arsdigita.web.BaseApplicationServlet.application_id: 69 com.arsdigita.web.BaseDispatcher.dispatched: true com.arsdigita.web.BaseServlet.request_url: /ccm/content/admin/index.jsp xmlMode: false -*-*-*- Section: Request summary -*-*-*- Context path: Request URI: /__ccm__/servlet/content-section/admin/index.jsp Query string: app-id=69 Method: GET Remote user: null -*-*-*- Section: System properties -*-*-*- ccm.home: /var/ccm-devel/web/root/cms-dev com.arsdigita.util.Assert.enabled: false file.encoding: ISO-8859-1 file.encoding.pkg: sun.io file.separator: / invokedviajava: java.assistive: ON java.awt.fonts: java.awt.graphicsenv: sun.awt.X11GraphicsEnvironment java.awt.printerjob: sun.awt.motif.PSPrinterJob java.class.path: :/opt/apps/oracle/product/9.2.0/jdbc/lib/classes12.zip:/usr/share/java/servletapi4.jar:/opt/apps/oracle/product/9.2.0/jdbc/lib/classes12.zip:/opt/resin/2.1.12/lib/resin.jar:/opt/resin/2.1.12/lib/jdbc2_0-stdext.jar:/opt/resin/2.1.12/lib/jta_101.jar:/opt/resin/2.1.12/lib/jndi.jar:/opt/resin/2.1.12/lib/dom.jar:/opt/resin/2.1.12/lib/sax.jar:/opt/resin/2.1.12/lib/jaxp.jar:/opt/resin/2.1.12/lib/jmx.jar:/opt/resin/2.1.12/lib/webutil.jar:/opt/resin/2.1.12/lib/jdbc-mysql.jar:/opt/IBMJava2-131/lib/tools.jar:/opt/IBMJava2-131/jre/lib/rt.jar:/opt/resin/2.1.12/lib/jsdk23.jar java.class.version: 46.0 java.compiler: jitc java.ext.dirs: /opt/IBMJava2-131/jre/lib/ext:/opt/IBMJava2-131/lib/ext:/var/ccm-devel/web/root/cms-dev/webapps/WEB-INF/system:/usr/share/ccm-tools/lib/security java.fullversion: J2RE 1.3.1 IBM build cxia32131-20030618 (JIT enabled: jitc) java.home: /opt/IBMJava2-131/jre java.io.tmpdir: /tmp java.library.path: /opt/IBMJava2-131/jre/bin:/opt/IBMJava2-131/jre/bin/classic:/opt/apps/oracle/product/9.2.0/lib:/opt/apps/oracle/product/9.2.0/ctx/lib:/usr/lib:/usr/local/lib:/opt/apps/oracle/product/9.2.0/JRE/lib/linux/native_threads:/opt/resin/2.1.12/libexec:/usr/lib java.naming.factory.initial: com.caucho.naming.InitialContextFactoryImpl java.naming.factory.url.pkgs: com.caucho.naming java.runtime.name: Java(TM) 2 Runtime Environment, Standard Edition java.runtime.version: 1.3.1 java.specification.name: Java Platform API Specification java.specification.vendor: Sun Microsystems Inc. java.specification.version: 1.3 java.vendor: IBM Corporation java.vendor.url: http://www.ibm.com/ java.vendor.url.bug: java.version: 1.3.1 java.vm.info: J2RE 1.3.1 IBM build cxia32131-20030618 (JIT enabled: jitc) java.vm.name: Classic VM java.vm.specification.name: Java Virtual Machine Specification java.vm.specification.vendor: Sun Microsystems Inc. java.vm.specification.version: 1.0 java.vm.vendor: IBM Corporation java.vm.version: 1.3.1 javax.xml.parsers.DocumentBuilderFactory: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl javax.xml.parsers.SAXParserFactory: org.apache.xerces.jaxp.SAXParserFactoryImpl javax.xml.transform.TransformerFactory: com.icl.saxon.TransformerFactoryImpl line.separator: log4j.configuration: file:///var/ccm-devel/web/root/cms-dev/conf/log4j.properties org.xml.sax.driver: com.caucho.xml.Xml os.arch: x86 os.name: Linux os.version: 2.4.9-e.27smp path.separator: : resin.home: /opt/resin/2.1.12 sun.boot.class.path: /opt/IBMJava2-131/jre/lib/rt.jar:/opt/IBMJava2-131/jre/lib/i18n.jar:/opt/IBMJava2-131/jre/classes sun.boot.library.path: /opt/IBMJava2-131/jre/bin sun.io.unicode.encoding: UnicodeLittle user.dir: /var/local/resin/2.1.12 user.home: /root user.language: en user.name: root user.region: US user.timezone: America/New_York -*-*-*-*-*- End Error Report -*-*-*-*-*-
This is probably because 'init' method in CMSPage.java isn't marked synchronized, so two threads could easily enter the 'lock' method concurrently causing the Kaboom. public void init() { s_log.debug("Initializing the page"); if (!isLocked()) { s_log.debug("The page hasn't been locked; locking it now"); lock(); } }
fixed and tested at changelist 40797