7 Replies Latest reply on Jun 24, 2009 8:21 PM by Vinicius Carvalho

    Operations History (2.2.0)

    Vinicius Carvalho Apprentice

      Hello there! Whenever I try to access the operation's history page I got an exception:

      HTTP Status 500 -
      
      type Exception report
      
      message
      
      description The server encountered an internal error () that prevented it from fulfilling this request.
      
      exception
      
      javax.servlet.ServletException: Servlet execution threw an exception
       org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
       org.rhq.enterprise.gui.legacy.WebUserTrackingFilter.doFilter(WebUserTrackingFilter.java:47)
       org.rhq.enterprise.gui.legacy.AuthenticationFilter.doFilter(AuthenticationFilter.java:129)
       org.rhq.enterprise.gui.common.upload.MultipartFilter.doFilter(MultipartFilter.java:63)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
       org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
       org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
       org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
       org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
       org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
       org.rhq.helpers.rtfilter.filter.RtFilter.doFilter(RtFilter.java:124)
       org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      
      root cause
      
      java.lang.NoClassDefFoundError: org/rhq/enterprise/gui/operation/history/resource/ResourceOperationPendingHistoryUIBean$ListResourceOperationPendingHistoryDataModel
       java.lang.Class.getDeclaredConstructors0(Native Method)
       java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
       java.lang.Class.getConstructor0(Class.java:2699)
       java.lang.Class.newInstance0(Class.java:326)
       java.lang.Class.newInstance(Class.java:308)
       com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:186)
       com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:106)
       com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:368)
       com.sun.faces.mgbean.BeanManager.create(BeanManager.java:230)
       com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
       javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
       com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
       org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
       org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
       org.jboss.seam.jsf.UnifiedELValueBinding.getValue(UnifiedELValueBinding.java:46)
       org.ajax4jsf.taglib.html.facelets.KeepAliveHandler.apply(KeepAliveHandler.java:76)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
       com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
       com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
       com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
       com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:310)
       com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:280)
       com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
       com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:310)
       com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:280)
       com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
       com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
       com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
       com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
       com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
       com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
       com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
       com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
       com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
       com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
       com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
       com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:524)
       com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
       org.rhq.enterprise.gui.common.framework.FaceletRedirectionViewHandler.renderView(FaceletRedirectionViewHandler.java:64)
       org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
       org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
       com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
       com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
       com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
       javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
       org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
       org.rhq.enterprise.gui.legacy.WebUserTrackingFilter.doFilter(WebUserTrackingFilter.java:47)
       org.rhq.enterprise.gui.legacy.AuthenticationFilter.doFilter(AuthenticationFilter.java:129)
       org.rhq.enterprise.gui.common.upload.MultipartFilter.doFilter(MultipartFilter.java:63)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
       org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
       org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
       org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
       org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
       org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
       org.rhq.helpers.rtfilter.filter.RtFilter.doFilter(RtFilter.java:124)
       org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      
      root cause
      
      java.lang.ClassNotFoundException: org.rhq.enterprise.gui.operation.history.resource.ResourceOperationPendingHistoryUIBean$ListResourceOperationPendingHistoryDataModel
       org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358)
       org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
       java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
       java.lang.Class.getDeclaredConstructors0(Native Method)
       java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
       java.lang.Class.getConstructor0(Class.java:2699)
       java.lang.Class.newInstance0(Class.java:326)
       java.lang.Class.newInstance(Class.java:308)
       com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:186)
       com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:106)
       com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:368)
       com.sun.faces.mgbean.BeanManager.create(BeanManager.java:230)
       com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:86)
       javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
       com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72)
       org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
       org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
       org.jboss.seam.jsf.UnifiedELValueBinding.getValue(UnifiedELValueBinding.java:46)
       org.ajax4jsf.taglib.html.facelets.KeepAliveHandler.apply(KeepAliveHandler.java:76)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
       com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
       com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
       com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
       com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:310)
       com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:280)
       com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
       com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:310)
       com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:280)
       com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
       com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
       com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
       com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
       com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
       com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
       com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
       com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
       com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
       com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
       com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:144)
       com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
       com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
       com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
       com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
       com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:524)
       com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
       org.rhq.enterprise.gui.common.framework.FaceletRedirectionViewHandler.renderView(FaceletRedirectionViewHandler.java:64)
       org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
       org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
       com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
       com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
       com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
       javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
       org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
       org.rhq.enterprise.gui.legacy.WebUserTrackingFilter.doFilter(WebUserTrackingFilter.java:47)
       org.rhq.enterprise.gui.legacy.AuthenticationFilter.doFilter(AuthenticationFilter.java:129)
       org.rhq.enterprise.gui.common.upload.MultipartFilter.doFilter(MultipartFilter.java:63)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
       org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:38)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
       org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
       org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
       org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
       org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:58)
       org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
       org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
       org.rhq.helpers.rtfilter.filter.RtFilter.doFilter(RtFilter.java:124)
       org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      
      note The full stack trace of the root cause is available in the JBossWeb/2.0.0.GA logs.
      JBossWeb/2.0.0.GA
      


      We are thinking about changing to 2.2.1, would a simple replace of my server suffice? Or did the DB-Schema/Agent binaries changed?

      Regards

        • 1. Re: Operations History (2.2.0)
          mazz Master

          Has this always happened or just start to happen?

          I know we've seen this kind of thing before, but I can't say if we definitively figured out what caused it.

          I know one thing that might have caused it was if you installed the Jopr Server in some long-path directory name on Windows.

          Is the server deployed on windows and what is the server installation directory path?

          See: http://jopr.org/confluence/display/JOPR2/Running+The+Installer#RunningTheInstaller-StartingtheInstaller - in the yellow box.

          • 2. Re: Operations History (2.2.0)
            Vinicius Carvalho Apprentice

            Can't really tell if it just started happening. It was the first time we tried the feature. The server is been running for 4 days now.
            Our path is: e:\softwares\jopr-server-2.2.0

            Regarding the upgradt to 2.2.1, I'm only asking without trying first, is cause we are short on time to get jopr running, and if it is as simple as replacing the server files I would do it, otherwise we would leave for another opportunity.

            Regards

            • 3. Re: Operations History (2.2.0)
              mazz Master

              Upgrading is pretty simple. Just blow away the old install directory and install a new copy. When you do so, try a smaller-lengthed directory name (just in case).

              See here for upgrade docs: http://jopr.org/confluence/display/JOPR2/Upgrading+the+Jopr+Server

              The installer will provide a drop-down option to "Overwrite" existing schema or to "Keep existing data" - sounds like you don't care about keeping your DB data from the past 4 days - so picking "overwrite" is fine for your demo/testing purposes. At that point, the schema will be updated as appropriate.

              Note: sounds like you are just demoing. You could just install a new copy and use the embedded mode (that uses the embedded H2 database and embedded agent) - its basically a one-click install after you unzip and run "rhq-server.bat". (well, you click the "embedded mode" button, then click the "install" button). You won't need a database in that case, we'll use the embedded H2 DB. This 2.2.1 is the first release that uses H2, but we think it works :) Haven't done alot of testing on it - but its only supported for demoing so it should be good enough for that. But if you already have a database ready for Jopr, feel free to continue to use that and ignore this H2 talk. :}

              • 4. Re: Operations History (2.2.0)
                Vinicius Carvalho Apprentice

                 

                "mazz" wrote:
                Upgrading is pretty simple. Just blow away the old install directory and install a new copy. When you do so, try a smaller-lengthed directory name (just in case).

                See here for upgrade docs: http://jopr.org/confluence/display/JOPR2/Upgrading+the+Jopr+Server

                The installer will provide a drop-down option to "Overwrite" existing schema or to "Keep existing data" - sounds like you don't care about keeping your DB data from the past 4 days - so picking "overwrite" is fine for your demo/testing purposes. At that point, the schema will be updated as appropriate.

                Note: sounds like you are just demoing. You could just install a new copy and use the embedded mode (that uses the embedded H2 database and embedded agent) - its basically a one-click install after you unzip and run "rhq-server.bat". (well, you click the "embedded mode" button, then click the "install" button). You won't need a database in that case, we'll use the embedded H2 DB. This 2.2.1 is the first release that uses H2, but we think it works :) Haven't done alot of testing on it - but its only supported for demoing so it should be good enough for that. But if you already have a database ready for Jopr, feel free to continue to use that and ignore this H2 talk. :}



                Well, just upgraded to 2.2.1 and now the history is working. thanks.

                Actually this is a test for JON, the customer asked for a period of monitoring his env using JOPR before acquiring a JON license.

                Just one final question: do you plan to support other databases (mysql and mssql for instance) ?

                Regards

                • 5. Re: Operations History (2.2.0)
                  mazz Master

                   

                  Just one final question: do you plan to support other databases (mysql and mssql for instance) ?


                  Are you asking if it will support MySQL and/or MS SQL as Jopr/JON's backend database?

                  Or are you asking if it will support MONITORING those databases (as managed resources)?

                  Currently, JON only supports Oracle and Postgres as its backend databases. H2 is only for demo'ing/testing. However, recently, Joe added MS SQL support as another option for the backend database. This is experimental right now - no formal testing has been performed on it (Joe can give particulars - he's seen some hiccups due to MS SQL's implementation). MySQL probably has no shot :) Joe looked at it and, well, I'll let him explain the problems with MySQL :)

                  If you are asking about monitoring those database, we have a prototype MySQL plugin today (currently unsupported in JON - we haven't tested it or built out the plugin much more from its prototype phase). We have no MS SQL plugin yet at all. However, writing the plugins aren't that hard and anyone out in the community is welcome to write something and contribute it back. We can assist you in writing it - giving you tips/pointers and help along the way. Anyone willing to do so, contact us at our jopr-dev mailing list or on freenode #jopr.


                  • 6. Re: Operations History (2.2.0)
                    Newbie

                    MS SQL Sever has two methods (introduced in SQL Server 2005) for implementing MVCC-like semantics - read committed with row versioning (statement-level isolation) and snapshot isolation (transaction-level isolation). These offer non-locking, non-blocking reads, which removes lock contention in reader-reader and reader-writer scenarios. However, from my experience porting Jopr to run on SQL Server, I've found that it's implementation falls short of what Oracle and Postgres provide as far as MVCC is concerned.

                    Where Oracle and Postgres succeed naturally, SQL Server still has locking issues in writer-writer scenarios. And this is AFTER I rewrote about a dozen hot spots across the application to reduce transaction times as well as acquire the update locks as later as possible and hold them for as little time as possible...unfortunately, I still see the occasional deadlock message in the log, which chooses the least cost victim and rolls him back. Heck, I've even tried to mitigate these issues by restarting the SQL Server service with specific hints so that it DOES NOT escalate row locks to range locks or table locks (which produce deadlock scenarios even quicker), but even that doesn't solve every issue.

                    Nonetheless, I'm confident that with enough tweaking / rewriting of backend services, that it should be possible to eliminate the points of contention that cause these sporadic deadlocks.

                    -----

                    As for MySQL, the primary issues there were the restrictions on subqueries:

                    http://dev.mysql.com/doc/refman/5.1/en/subquery-restrictions.html

                    Granted, Jopr is built on top of Hibernate, but for performance reasons we often *could not* load objects into memory, manipulate them, and merge them. Instead, for performance reasons, we had to use UPDATE / DELETE / INSERT statements in JPQL NamedQuery definitions to efficiently change thousands of pieces of data, and the syntax for that followed the general pattern of:

                    UPDATE SomeDomainEntity sde
                    SET someProperty = 'someValue'
                    WHERE sde.id IN ( some_complex_subquery )

                    However, the MySQL documentation says:

                    "In general, you cannot modify a table and select from the same table in a subquery. For example, this limitation applies to statements of the following forms:

                    DELETE FROM t WHERE ... (SELECT ... FROM t ...);
                    UPDATE t ... WHERE col = (SELECT ... FROM t ...);
                    {INSERT|REPLACE} INTO t (SELECT ... FROM t ...);"

                    The interesting part of that discussion is the fact that MySQL documents exceptions to this rule:

                    "Exception: The preceding prohibition does not apply if you are using a subquery for the modified table in the FROM clause. Example:

                    UPDATE t ... WHERE col = (SELECT * FROM (SELECT ... FROM t...) AS _t ...);

                    Here the prohibition does not apply because the result from a subquery in the FROM clause is stored as a temporary table, so the relevant rows in t have already been selected by the time the update to t takes place."

                    Unfortunately, the last time I tried the MySQL dialect it did not generate queries of this modified / exceptional form (that was about 1 yr ago). So, it's probably possible to fork and support our own MySQL dialect, but I really don't want to go there. ; )

                    • 7. Re: Operations History (2.2.0)
                      Vinicius Carvalho Apprentice

                      Thanks for the great explanation Joe.