Details

    • Type: Improvement Improvement
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Complete
    • Affects Version/s: None
    • Fix Version/s: 2.4
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Similar issues:
      KULRICE-6306Upgrade Spring version to 3.1.0.RELEASE
      KULRICE-2735Split KSB ModuleConfiguration into a separate spring file, create config param to dictate loading of this spring bean file
      KULRICE-11436Default values not getting applied for multi-pages
      KULRICE-2516Updates to support KFS Spring context merge
      KULRICE-13070Pages load really slow after rice upgrade
      KULRICE-8594Set initial size of easyXDM iframe
      KULRICE-5991View/Page Loading fixes - indicator and visual appearance during load
      KULRICE-2474Fix EntityManagerFactory spring references and DAO PersistenceContexts
      KULRICE-4742Look into loading of data dictionary changes to prevent full restart
      KULRICE-7053spring expression error on refresh
    • Epic Link:
    • Rice Module:
      KRAD
    • KRAD Feature Area:
      UIF Component
    • Sprint:
      2.4.0-m3 KRAD UXI Sprint 4
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required
    • Code Review Status:
      Not Required
    • Include in Release Notes?:
      Yes

      Description

      When a view is created from Spring all of its pages are created as well. However we only display one page at a time and therefore it is a waste to load the other pages. This would greatly help the load time and clone time.

      The only issue is currently we assign all the page ids up front (if needed), and we would need a way to retrieve the current page after the view has been loaded (maybe using some sort of a proxy)

        Activity

        Hide
        Mark Fyffe (Inactive) added a comment -

        Continuing analysis initially started on KULRICE-10980 as a solution for this issue. Upon closer inspection of this issue, and more thorough analysis of using proxies to reduce copy overhead, the same proxy sounds like the right approach for addressing this issue. A description of this solution, from a recent email to Jerry, follows:

        What I'm thinking about for the last piece of KULRICE-10980 is to short-circuit copy on nested components that can be represented by an interface, replacing the deep copy with a simple proxy with a reference back to the original (cached) component. The first time the proxy component is used for anything other than to get the value of an atomic bean property not in the expression graph, the original will be copied - the call triggering the copy and all future calls to the proxy will then be sent to the copy component rather than the cached original. In addition to limiting copy(), the proxy should also be useful for facilitating fine-grained reuse of component instances. The main caveat I ran into on my first stab at this approach is that some components (Group, CollectionGroup, DataField, etc) don't have interfaces, but do have explicit casts from Component in several places. I tried to work around this creatively, but quickly recalled that proxies truly prefer interfaces to creative workarounds I decided to back out the workarounds and take a direct approach on the next pass.

        So far, I have restored the DelayedCopyHandler implementation from the analysis on KULRICE-10980, and removed ProxyBean piece. In order to support current lifecycle processing tasks and FreeMarker templates, I've extracted interfaces for the following component and layout manager classes and am working through unit testing:

        • Group
        • CollectionGroup
        • TextControl
        • DataField
        • InputField
        • GridLayoutManager
        • TableLayoutManager
        • StackedLayoutManager

        All of these classes have been renamed so that the interface carries the original class name, and the class has "Base" appended. Spring XML references have been updated. One unit testing and KRAD sampleapp regression testing is passing, I'll commit to the performance branch.

        In addition to the interface conversion and implementation of delayed copy proxy, I have added a "pre-process" step to view processing. Pre-processing takes pace on the newly created view directly after retrieval from Spring, and before caching in UifDictionaryIndex. This step currently generates all IDs and initial component states, so lifecycle initialize phase tasks that with results common to all instances of the same view are cached along with the meta-information from Spring. Other common processing tasks can be performed prior to caching as identified to both eliminate expensive lifecycle processing steps, and to limit the need to trigger copying when working with the delayed copy proxy.

        After establishing stability for the current phase, the next steps to directly address this issue are:

        1. Implement the filter on delayed copy to identify calls to property read methods for atomic bean properties not in the expression graph, and suppress copy for those calls.
        2. Convert PageGroup to an interface following the paradigm used for other classes.
        3. Confirm that pages are not copied immediately upon retrieving the view from cache, and work to eliminate events that trigger page copying. Since the page is added to the lifecycle via the currentPage property, rather than via items, this should fall into place.
        4. Cleanup and troubleshooting.
        Show
        Mark Fyffe (Inactive) added a comment - Continuing analysis initially started on KULRICE-10980 as a solution for this issue. Upon closer inspection of this issue, and more thorough analysis of using proxies to reduce copy overhead, the same proxy sounds like the right approach for addressing this issue. A description of this solution, from a recent email to Jerry, follows: What I'm thinking about for the last piece of KULRICE-10980 is to short-circuit copy on nested components that can be represented by an interface, replacing the deep copy with a simple proxy with a reference back to the original (cached) component. The first time the proxy component is used for anything other than to get the value of an atomic bean property not in the expression graph, the original will be copied - the call triggering the copy and all future calls to the proxy will then be sent to the copy component rather than the cached original. In addition to limiting copy(), the proxy should also be useful for facilitating fine-grained reuse of component instances. The main caveat I ran into on my first stab at this approach is that some components (Group, CollectionGroup, DataField, etc) don't have interfaces, but do have explicit casts from Component in several places. I tried to work around this creatively, but quickly recalled that proxies truly prefer interfaces to creative workarounds I decided to back out the workarounds and take a direct approach on the next pass. So far, I have restored the DelayedCopyHandler implementation from the analysis on KULRICE-10980 , and removed ProxyBean piece. In order to support current lifecycle processing tasks and FreeMarker templates, I've extracted interfaces for the following component and layout manager classes and am working through unit testing: Group CollectionGroup TextControl DataField InputField GridLayoutManager TableLayoutManager StackedLayoutManager All of these classes have been renamed so that the interface carries the original class name, and the class has "Base" appended. Spring XML references have been updated. One unit testing and KRAD sampleapp regression testing is passing, I'll commit to the performance branch. In addition to the interface conversion and implementation of delayed copy proxy, I have added a "pre-process" step to view processing. Pre-processing takes pace on the newly created view directly after retrieval from Spring, and before caching in UifDictionaryIndex. This step currently generates all IDs and initial component states, so lifecycle initialize phase tasks that with results common to all instances of the same view are cached along with the meta-information from Spring. Other common processing tasks can be performed prior to caching as identified to both eliminate expensive lifecycle processing steps, and to limit the need to trigger copying when working with the delayed copy proxy. After establishing stability for the current phase, the next steps to directly address this issue are: Implement the filter on delayed copy to identify calls to property read methods for atomic bean properties not in the expression graph, and suppress copy for those calls. Convert PageGroup to an interface following the paradigm used for other classes. Confirm that pages are not copied immediately upon retrieving the view from cache, and work to eliminate events that trigger page copying. Since the page is added to the lifecycle via the currentPage property, rather than via items, this should fall into place. Cleanup and troubleshooting.
        Hide
        Mark Fyffe (Inactive) added a comment -

        Committed work in progress on delayed copy proxy to performance branch. Unit tests are passing, but there is regression testing and quite a bit of final review and javadoc cleanup to do.

        Adjusted estimate to account for the volume of component conversion to extract interfaces for supporting proxy operation, and related debugging effort. At this point, the bulk of the conversion has been completed and most lifecycle phases are working as expected. To facilitate reversion and comparison to operation without the delayed proxy, I have added a config parameter "rice.krad.copyable.delay" to control whether or not the proxy is used.

        There are still a few odd cases where the proxy is adversely affecting behavior during rendering - these will take another 1-2 hours to track down and resolve, after which the remaining items for this issue can be addressed.

        Show
        Mark Fyffe (Inactive) added a comment - Committed work in progress on delayed copy proxy to performance branch. Unit tests are passing, but there is regression testing and quite a bit of final review and javadoc cleanup to do. Adjusted estimate to account for the volume of component conversion to extract interfaces for supporting proxy operation, and related debugging effort. At this point, the bulk of the conversion has been completed and most lifecycle phases are working as expected. To facilitate reversion and comparison to operation without the delayed proxy, I have added a config parameter "rice.krad.copyable.delay" to control whether or not the proxy is used. There are still a few odd cases where the proxy is adversely affecting behavior during rendering - these will take another 1-2 hours to track down and resolve, after which the remaining items for this issue can be addressed.
        Hide
        Mark Fyffe (Inactive) added a comment -

        Completed unit testing with delayed copy proxy enabled, and completed some initial regression testing with KRAD sample app. A few odd errors are present on the performance branch, but most pages are working as expected. To help control the use of the delayed copy proxy, I've added a new annotation @DelayedCopyRestriction - when found on a field, neither that field nor any elements in a collection or map the field refers to will be considered for delayed copy. Among resolving other issues, this can be used to prevent the proxy from being sent to a FreeMarker template that refers to bean properties not defined on an interface.

        The next step is to implement the call filter in DelayedCopyHandler to prevent atomic property reads from triggering a component copy, then to convert PageGroup to an interface.

        I expect to have tuning completed by this weekend, then will move on to cleanup and troubleshooting.

        Show
        Mark Fyffe (Inactive) added a comment - Completed unit testing with delayed copy proxy enabled, and completed some initial regression testing with KRAD sample app. A few odd errors are present on the performance branch, but most pages are working as expected. To help control the use of the delayed copy proxy, I've added a new annotation @DelayedCopyRestriction - when found on a field, neither that field nor any elements in a collection or map the field refers to will be considered for delayed copy. Among resolving other issues, this can be used to prevent the proxy from being sent to a FreeMarker template that refers to bean properties not defined on an interface. The next step is to implement the call filter in DelayedCopyHandler to prevent atomic property reads from triggering a component copy, then to convert PageGroup to an interface. I expect to have tuning completed by this weekend, then will move on to cleanup and troubleshooting.
        Hide
        Mark Fyffe (Inactive) added a comment -

        Converted PageGroup to interface, and implemented the call filter noted in previous comments. Work on KULRICE-10980 this weekend has improved generic type introspection for clone-based copy in support of this issue.

        I'm still working on tuning the behavior of the delayed copy proxy, in particular to prevent overuse and to prevent copying of unused components - in particular pages related to views. At present one unit test is failing, and operation is generally slower with the proxy enabled than without. Once the unit test is passing, I'll commit work in progress.

        Currently, view indexing is triggering copies beyond what is expected for the indexing activity. In particular, initial component states are being copied even though the instance in the index is cached. View cleaner is also triggering an unintended copy() right before blanking out most fields in the component. These areas are the next tuning indicators once unit tests are stable.

        I'll continue working to complete this effort throughout the week.

        Show
        Mark Fyffe (Inactive) added a comment - Converted PageGroup to interface, and implemented the call filter noted in previous comments. Work on KULRICE-10980 this weekend has improved generic type introspection for clone-based copy in support of this issue. I'm still working on tuning the behavior of the delayed copy proxy, in particular to prevent overuse and to prevent copying of unused components - in particular pages related to views. At present one unit test is failing, and operation is generally slower with the proxy enabled than without. Once the unit test is passing, I'll commit work in progress. Currently, view indexing is triggering copies beyond what is expected for the indexing activity. In particular, initial component states are being copied even though the instance in the index is cached. View cleaner is also triggering an unintended copy() right before blanking out most fields in the component. These areas are the next tuning indicators once unit tests are stable. I'll continue working to complete this effort throughout the week.
        Hide
        Mark Fyffe (Inactive) added a comment -

        Delayed copy proxy is now working to prevent all pages from being included in the initial copy. Work in progress has been committed - this update includes items noted in the previous comment plus:

        • Moved container item sort to the pre-process phase. Since the sort results should always be the same, this is done prior to caching to prevent automatic assignment of page sort during performInitialize on the view.
        • Modified applyDefaultValues to only apply defaults to the current page.
        • Removed @DelayedCopyRestriction annotation, and related with @DelayedCopy. Now copy will only be delayed where the annotation is found.

        The delayed copy work is now stable, but regression testing and cleanup are needed. Some items noted by Jerry related to this refactoring:

        • Getting lots of messages about unexpected component state. For example on maintenance edit, or KC proposal in labs
        • Ordering (classes should go at end, properties before methods (including statics), put simple methods (getters,setters) together and meaty methods before simple methods)
        • Javadocs (additional params in doc like view, no period at end of param doc, start parm doc with lower case, should have a standard param doc for the model parm and the view parm). Also lots of docs with ‘This overridden method ...’
        • Use single line comment // for parameter documentation (when there is not getter)
        • Extract ID assignment code (org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl#preprocessView) to helper method or class, along with Component State, Create helper methods to reduce nesting and duplicate code
        Show
        Mark Fyffe (Inactive) added a comment - Delayed copy proxy is now working to prevent all pages from being included in the initial copy. Work in progress has been committed - this update includes items noted in the previous comment plus: Moved container item sort to the pre-process phase. Since the sort results should always be the same, this is done prior to caching to prevent automatic assignment of page sort during performInitialize on the view. Modified applyDefaultValues to only apply defaults to the current page. Removed @DelayedCopyRestriction annotation, and related with @DelayedCopy. Now copy will only be delayed where the annotation is found. The delayed copy work is now stable, but regression testing and cleanup are needed. Some items noted by Jerry related to this refactoring: Getting lots of messages about unexpected component state. For example on maintenance edit, or KC proposal in labs Ordering (classes should go at end, properties before methods (including statics), put simple methods (getters,setters) together and meaty methods before simple methods) Javadocs (additional params in doc like view, no period at end of param doc, start parm doc with lower case, should have a standard param doc for the model parm and the view parm). Also lots of docs with ‘This overridden method ...’ Use single line comment // for parameter documentation (when there is not getter) Extract ID assignment code (org.kuali.rice.krad.uif.service.impl.ViewHelperServiceImpl#preprocessView) to helper method or class, along with Component State, Create helper methods to reduce nesting and duplicate code
        Hide
        Mark Fyffe (Inactive) added a comment -

        Lifecycle error: Demo / Travel Account Inquiry

        java.lang.IllegalStateException: Component is not in the expected status C at the start of this phase, found class org.kuali.rice.krad.uif.element.Message u1fbinlg X
        This phase: Model: InquiryForm
        Processed? false
        InitializeComponentPhase 382579760 propertyReplacerComponents[0] Message u1fbinlg -1
        Predecessor Phases:
            InitializeComponentPhase 451987202 null InquiryView org.kuali.rice.krad.demo.travel.dataobject.TravelAccount-InquiryView-default -1
        Phase: Model: InquiryForm
        Processed? false
        InitializeComponentPhase 382579760 propertyReplacerComponents[0] Message u1fbinlg -1
        Predecessor Phases:
            InitializeComponentPhase 451987202 null InquiryView org.kuali.rice.krad.demo.travel.dataobject.TravelAccount-InquiryView-default -1
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.reportIllegalState(ViewLifecycle.java:293)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.reportIllegalState(ViewLifecycle.java:277)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecyclePhaseBase.run(ViewLifecyclePhaseBase.java:249)
        at org.kuali.rice.krad.uif.lifecycle.SynchronousViewLifecycleProcessor.performPhase(SynchronousViewLifecycleProcessor.java:125)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycleFullBuild.run(ViewLifecycleFullBuild.java:76)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.encapsulateLifecycle(ViewLifecycle.java:567)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.buildView(ViewLifecycle.java:761)
        at org.kuali.rice.krad.web.controller.UifControllerHelper.prepareViewForRendering(UifControllerHelper.java:251)
        at org.kuali.rice.krad.web.controller.UifControllerHelper.postControllerHandle(UifControllerHelper.java:145)
        at org.kuali.rice.krad.web.controller.UifControllerHandlerInterceptor.postHandle(UifControllerHandlerInterceptor.java:89)
        at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:149)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:934)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.CharsetFilter.doFilter(CharsetFilter.java:58)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:89)
        at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:327)
        at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:82)
        at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62)
        at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:320)
        at org.kuali.rice.krad.web.filter.BootstrapFilter.doFilter(BootstrapFilter.java:199)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.UifSessionTimeoutFilter.doFilter(UifSessionTimeoutFilter.java:106)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.core.web.Log4JContextClearingFilter.doFilterInternal(Log4JContextClearingFilter.java:37)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:213)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:72)
        at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:69)
        at org.kuali.rice.krad.uif.util.ProcessLogger.follow(ProcessLogger.java:645)
        at org.kuali.rice.krad.uif.util.ProcessLoggingFilter.doFilter(ProcessLoggingFilter.java:69)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:744)
        
        Show
        Mark Fyffe (Inactive) added a comment - Lifecycle error: Demo / Travel Account Inquiry java.lang.IllegalStateException: Component is not in the expected status C at the start of this phase, found class org.kuali.rice.krad.uif.element.Message u1fbinlg X This phase: Model: InquiryForm Processed? false InitializeComponentPhase 382579760 propertyReplacerComponents[0] Message u1fbinlg -1 Predecessor Phases: InitializeComponentPhase 451987202 null InquiryView org.kuali.rice.krad.demo.travel.dataobject.TravelAccount-InquiryView-default -1 Phase: Model: InquiryForm Processed? false InitializeComponentPhase 382579760 propertyReplacerComponents[0] Message u1fbinlg -1 Predecessor Phases: InitializeComponentPhase 451987202 null InquiryView org.kuali.rice.krad.demo.travel.dataobject.TravelAccount-InquiryView-default -1 at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.reportIllegalState(ViewLifecycle.java:293) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.reportIllegalState(ViewLifecycle.java:277) at org.kuali.rice.krad.uif.lifecycle.ViewLifecyclePhaseBase.run(ViewLifecyclePhaseBase.java:249) at org.kuali.rice.krad.uif.lifecycle.SynchronousViewLifecycleProcessor.performPhase(SynchronousViewLifecycleProcessor.java:125) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycleFullBuild.run(ViewLifecycleFullBuild.java:76) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.encapsulateLifecycle(ViewLifecycle.java:567) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.buildView(ViewLifecycle.java:761) at org.kuali.rice.krad.web.controller.UifControllerHelper.prepareViewForRendering(UifControllerHelper.java:251) at org.kuali.rice.krad.web.controller.UifControllerHelper.postControllerHandle(UifControllerHelper.java:145) at org.kuali.rice.krad.web.controller.UifControllerHandlerInterceptor.postHandle(UifControllerHandlerInterceptor.java:89) at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:149) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:934) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.CharsetFilter.doFilter(CharsetFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:89) at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:327) at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:82) at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62) at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:320) at org.kuali.rice.krad.web.filter.BootstrapFilter.doFilter(BootstrapFilter.java:199) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.UifSessionTimeoutFilter.doFilter(UifSessionTimeoutFilter.java:106) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.core.web.Log4JContextClearingFilter.doFilterInternal(Log4JContextClearingFilter.java:37) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:213) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:72) at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:69) at org.kuali.rice.krad.uif.util.ProcessLogger.follow(ProcessLogger.java:645) at org.kuali.rice.krad.uif.util.ProcessLoggingFilter.doFilter(ProcessLoggingFilter.java:69) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:744)
        Hide
        Mark Fyffe (Inactive) added a comment -

        Lifecycle error: Labs KC Proposal

        java.lang.IllegalStateException: Component is not in the expected status C at the start of this phase, found class org.kuali.rice.krad.uif.element.Action uqx6v01 I
        This phase: Model: UifComponentsTestForm
        Processed? false
        InitializeComponentPhase 71100053 navigation.items[0].menuGroup.items[0] Action uqx6v01 -1
        Predecessor Phases:
            InitializeComponentPhase 977683039 navigation.items[0].menuGroup GroupBase uybzq7t -1
            InitializeComponentPhase 1521453276 navigation.items[0] ToggleMenu u1vw4loj -1
            InitializeComponentPhase 977424903 navigation SidebarNavigationGroup LabsProposal-Menu -1
            InitializeComponentPhase 1477928818 null FormView LabsProposal -1
        Phase: Model: UifComponentsTestForm
        Processed? false
        InitializeComponentPhase 71100053 navigation.items[0].menuGroup.items[0] Action uqx6v01 -1
        Predecessor Phases:
            InitializeComponentPhase 977683039 navigation.items[0].menuGroup GroupBase uybzq7t -1
            InitializeComponentPhase 1521453276 navigation.items[0] ToggleMenu u1vw4loj -1
            InitializeComponentPhase 977424903 navigation SidebarNavigationGroup LabsProposal-Menu -1
            InitializeComponentPhase 1477928818 null FormView LabsProposal -1
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.reportIllegalState(ViewLifecycle.java:293)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.reportIllegalState(ViewLifecycle.java:277)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecyclePhaseBase.run(ViewLifecyclePhaseBase.java:249)
        at org.kuali.rice.krad.uif.lifecycle.SynchronousViewLifecycleProcessor.performPhase(SynchronousViewLifecycleProcessor.java:125)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycleFullBuild.run(ViewLifecycleFullBuild.java:76)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.encapsulateLifecycle(ViewLifecycle.java:567)
        at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.buildView(ViewLifecycle.java:761)
        at org.kuali.rice.krad.web.controller.UifControllerHelper.prepareViewForRendering(UifControllerHelper.java:251)
        at org.kuali.rice.krad.web.controller.UifControllerHelper.postControllerHandle(UifControllerHelper.java:145)
        at org.kuali.rice.krad.web.controller.UifControllerHandlerInterceptor.postHandle(UifControllerHandlerInterceptor.java:89)
        at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:149)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:934)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.CharsetFilter.doFilter(CharsetFilter.java:58)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:89)
        at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:77)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:327)
        at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:82)
        at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62)
        at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:320)
        at org.kuali.rice.krad.web.filter.BootstrapFilter.doFilter(BootstrapFilter.java:199)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.UifSessionTimeoutFilter.doFilter(UifSessionTimeoutFilter.java:128)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.core.web.Log4JContextClearingFilter.doFilterInternal(Log4JContextClearingFilter.java:37)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:213)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:72)
        at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:69)
        at org.kuali.rice.krad.uif.util.ProcessLogger.follow(ProcessLogger.java:645)
        at org.kuali.rice.krad.uif.util.ProcessLoggingFilter.doFilter(ProcessLoggingFilter.java:69)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:744)
        
        Show
        Mark Fyffe (Inactive) added a comment - Lifecycle error: Labs KC Proposal java.lang.IllegalStateException: Component is not in the expected status C at the start of this phase, found class org.kuali.rice.krad.uif.element.Action uqx6v01 I This phase: Model: UifComponentsTestForm Processed? false InitializeComponentPhase 71100053 navigation.items[0].menuGroup.items[0] Action uqx6v01 -1 Predecessor Phases: InitializeComponentPhase 977683039 navigation.items[0].menuGroup GroupBase uybzq7t -1 InitializeComponentPhase 1521453276 navigation.items[0] ToggleMenu u1vw4loj -1 InitializeComponentPhase 977424903 navigation SidebarNavigationGroup LabsProposal-Menu -1 InitializeComponentPhase 1477928818 null FormView LabsProposal -1 Phase: Model: UifComponentsTestForm Processed? false InitializeComponentPhase 71100053 navigation.items[0].menuGroup.items[0] Action uqx6v01 -1 Predecessor Phases: InitializeComponentPhase 977683039 navigation.items[0].menuGroup GroupBase uybzq7t -1 InitializeComponentPhase 1521453276 navigation.items[0] ToggleMenu u1vw4loj -1 InitializeComponentPhase 977424903 navigation SidebarNavigationGroup LabsProposal-Menu -1 InitializeComponentPhase 1477928818 null FormView LabsProposal -1 at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.reportIllegalState(ViewLifecycle.java:293) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.reportIllegalState(ViewLifecycle.java:277) at org.kuali.rice.krad.uif.lifecycle.ViewLifecyclePhaseBase.run(ViewLifecyclePhaseBase.java:249) at org.kuali.rice.krad.uif.lifecycle.SynchronousViewLifecycleProcessor.performPhase(SynchronousViewLifecycleProcessor.java:125) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycleFullBuild.run(ViewLifecycleFullBuild.java:76) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.encapsulateLifecycle(ViewLifecycle.java:567) at org.kuali.rice.krad.uif.lifecycle.ViewLifecycle.buildView(ViewLifecycle.java:761) at org.kuali.rice.krad.web.controller.UifControllerHelper.prepareViewForRendering(UifControllerHelper.java:251) at org.kuali.rice.krad.web.controller.UifControllerHelper.postControllerHandle(UifControllerHelper.java:145) at org.kuali.rice.krad.web.controller.UifControllerHandlerInterceptor.postHandle(UifControllerHandlerInterceptor.java:89) at org.springframework.web.servlet.HandlerExecutionChain.applyPostHandle(HandlerExecutionChain.java:149) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:934) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.CharsetFilter.doFilter(CharsetFilter.java:58) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:89) at org.kuali.rice.krad.web.filter.UserLoginFilter.doFilter(UserLoginFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:327) at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:82) at org.kuali.rice.krad.web.filter.DummyLoginFilter.doFilter(DummyLoginFilter.java:62) at org.kuali.rice.krad.web.filter.BootstrapFilterChain.doFilter(BootstrapFilter.java:320) at org.kuali.rice.krad.web.filter.BootstrapFilter.doFilter(BootstrapFilter.java:199) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.UifSessionTimeoutFilter.doFilter(UifSessionTimeoutFilter.java:128) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.core.web.Log4JContextClearingFilter.doFilterInternal(Log4JContextClearingFilter.java:37) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.web.filter.HideWebInfFilter.doFilter(HideWebInfFilter.java:68) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:213) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:72) at org.kuali.rice.krad.uif.util.ProcessLoggingFilter$1.call(ProcessLoggingFilter.java:69) at org.kuali.rice.krad.uif.util.ProcessLogger.follow(ProcessLogger.java:645) at org.kuali.rice.krad.uif.util.ProcessLoggingFilter.doFilter(ProcessLoggingFilter.java:69) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:744)
        Hide
        Mark Fyffe (Inactive) added a comment -

        Both the KC proposal error and Travel Account inquiry error have been corrected on KULRICE-10980. These were due to missing @ViewLifecycleRestriction annotations, and not related to the delayed copy proxy.

        Show
        Mark Fyffe (Inactive) added a comment - Both the KC proposal error and Travel Account inquiry error have been corrected on KULRICE-10980 . These were due to missing @ViewLifecycleRestriction annotations, and not related to the delayed copy proxy.
        Hide
        Mark Fyffe (Inactive) added a comment -

        Merged latest work from trunk to the performance branch and performed regression testing in both KRAD sampleapp and Rice sampleapp with delayed proxy enabled.

        I have been unable to uncover any further errors related to this update in either app, so am marking this issue as resolved.

        I've created KULRICE-11529 to cover the issue related to ID generated noted in an earlier comment on this issue.

        Show
        Mark Fyffe (Inactive) added a comment - Merged latest work from trunk to the performance branch and performed regression testing in both KRAD sampleapp and Rice sampleapp with delayed proxy enabled. I have been unable to uncover any further errors related to this update in either app, so am marking this issue as resolved. I've created KULRICE-11529 to cover the issue related to ID generated noted in an earlier comment on this issue.

          People

          • Assignee:
            Mark Fyffe (Inactive)
            Reporter:
            Jerry Neal (Inactive)
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Time Tracking

              Estimated:
              Original Estimate - 2 days Original Estimate - 2 days
              2d
              Remaining:
              Remaining Estimate - 0 minutes
              0m
              Logged:
              Time Spent - 2 days, 7 hours
              2d 7h

                Agile

                  Structure Helper Panel