[ https://issues.apache.org/jira/browse/GERONIMO-6096?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Shenghao Fang updated GERONIMO-6096: ------------------------------------ Attachment: GERONIMO-6096.patch Add a user friendly message if the server name already exists. > OpenJPA related error pops up when add two servers which just protocol different in Monitoring porlet on admin console > ---------------------------------------------------------------------------------------------------------------------- > > Key: GERONIMO-6096 > URL: https://issues.apache.org/jira/browse/GERONIMO-6096 > Project: Geronimo > Issue Type: Bug > Security Level: public(Regular issues) > Components: monitoring > Affects Versions: 3.0 > Environment: JRE 1.6.0 IBM J9 2.4 Windows XP x86-32 jvmwi3260sr9-20110203_74623 (JIT enabled, AOT enabled) > Reporter: Tina Li > Assignee: Shenghao Fang > Priority: Minor > Attachments: GERONIMO-6096.patch > > > 1. Use the July 26's build of geronimo-3.0 snapshot > 2. Go to the "Monitoring" porlet on admin console > 3. Click the "Add a new server" link under the servers category to add a new server successfully: > name:localhost > IP/hostname: 127.0.0.1 > Protocol:EJB > Port:4201 > username and password are system and manager > 4.Add another server follows step3, but the only difference is : protocol: JMX Port: 1099 > 5.Click "Add" button ,then error displayed on admin console: > An error encountered while adding server. > Unable to commit: transaction marked for rollback > 6.And warning message displayed on server console: > 2011-07-26 16:18:48,031 WARN [Transaction] Unexpected exception from beforeCompletion; transaction will roll back > org.apache.openjpa.persistence.EntityExistsException: The transaction has been rolled back. See the nested exceptions for details on the errors that occurred. > FailedObject: org.apache.geronimo.monitoring.console.data.Node@125f125f > at org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2321) > at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2158) > at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2056) > at org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1974) > at org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:520) > at org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:505) > at org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:407) > at org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:255) > at org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252) > at org.apache.geronimo.transaction.GeronimoUserTransaction.commit(GeronimoUserTransaction.java:70) > at org.apache.geronimo.monitoring.console.MonitoringPortlet.addServer(MonitoringPortlet.java:707) > at org.apache.geronimo.monitoring.console.MonitoringPortlet.processAction(MonitoringPortlet.java:179) > at org.apache.pluto.driver.services.container.FilterChainImpl.doFilter(FilterChainImpl.java:117) > at org.apache.pluto.driver.services.container.FilterChainImpl.processFilter(FilterChainImpl.java:84) > at org.apache.pluto.driver.services.container.FilterManagerImpl.processFilter(FilterManagerImpl.java:112) > at org.apache.pluto.container.driver.PortletServlet.dispatch(PortletServlet.java:359) > at org.apache.pluto.container.driver.PortletServlet.doPost(PortletServlet.java:267) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684) > at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:593) > at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:530) > at org.apache.pluto.driver.container.DefaultPortletInvokerService.invoke(DefaultPortletInvokerService.java:233) > at org.apache.pluto.driver.container.DefaultPortletInvokerService.action(DefaultPortletInvokerService.java:101) > at org.apache.pluto.container.impl.PortletContainerImpl.doAction(PortletContainerImpl.java:251) > at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:135) > at org.apache.pluto.driver.PortalDriverServlet.doPost(PortalDriverServlet.java:205) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:595) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at org.apache.geronimo.console.filter.RedirectByHashFilter.doFilter(RedirectByHashFilter.java:116) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at org.apache.geronimo.console.filter.PlutoURLRebuildFilter.doFilter(PlutoURLRebuildFilter.java:48) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at org.apache.geronimo.console.filter.XSSXSRFFilter.doFilter(XSSXSRFFilter.java:130) > at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) > at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) > at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) > at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) > at org.apache.geronimo.tomcat.security.SecurityValve.invoke(SecurityValve.java:87) > at org.apache.geronimo.tomcat.security.jacc.JACCSecurityValve.invoke(JACCSecurityValve.java:54) > at org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:701) > at org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:48) > at org.apache.geronimo.tomcat.valve.ProtectedTargetValve.invoke(ProtectedTargetValve.java:53) > at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) > at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) > at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:851) > at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) > at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) > at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:278) > at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) > at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) > at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:243) > at org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:373) > at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919) > at java.lang.Thread.run(Thread.java:736) > Caused by: org.apache.openjpa.persistence.EntityExistsException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL110726160207650' defined on 'NODE'. {prepstmnt 510205545 INSERT INTO node (name, enabled, host, local, password, port, protocol, urlPath, userName) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) [params=?, ?, ?, ?, ?, ?, ?, ?, ?]} [code=20000, state=23505] > FailedObject: org.apache.geronimo.monitoring.console.data.Node@125f125f > at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4856) > at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4831) > at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136) > at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:78) > at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:143) > at org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:79) > at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:99) > at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:87) > at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:550) > at org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:106) > at org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59) > at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:103) > at org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:76) > at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:742) > at org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:131) > ... 61 more > Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'SQL110726160207650' defined on 'NODE'. {prepstmnt 510205545 INSERT INTO node (name, enabled, host, local, password, port, protocol, urlPath, userName) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) [params=?, ?, ?, ?, ?, ?, ?, ?, ?]} [code=20000, state=23505] > at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:281) > at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:257) > at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$1000(LoggingConnectionDecorator.java:72) > at org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:1199) > at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:291) > at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1774) > at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.executeUpdate(PreparedStatementManagerImpl.java:267) > at org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:118) > ... 71 more -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira