Uploaded image for project: 'ERM Platform'
  1. ERM Platform
  2. ERM-1926

Error in entitlementLog on deleting agreement line

    XMLWordPrintable

Details

    • ERM Sprint 128, ERM Sprint 129
    • Bienenvolk
    • Lotus R1 2022

    Description

      Overview:
      On deleting a package agreement line, I got the following error in the EntitlementLog

      Error rendering view: Error rendering view: Error rendering view: No row with the given identifier exists:
      org.olf.erm.Entitlement#8af96700-0e42-420c-812f-0f836028fea2
      
      stackTrace:
      grails.views.AbstractWritableScript.writeTo(AbstractWritableScript.groovy:46)
      grails.plugin.json.view.api.internal.DefaultGrailsJsonViewHelper$6.writeTo(DefaultGrailsJsonViewHelper.groovy:834)
      grails.plugin.json.builder.StreamingJsonBuilder$StreamingJsonDelegate.call(StreamingJsonBuilder.java:699)
      mod_agreements_object__object_gson$_run_closure1.doCall(mod_agreements_object__object_gson:26)
      grails.plugin.json.builder.StreamingJsonBuilder$StreamingJsonDelegate.cloneDelegateAndGetContent(StreamingJsonBuilder.java:797)
      grails.plugin.json.builder.StreamingJsonBuilder$StreamingJsonDelegate.access$000(StreamingJsonBuilder.java:478)
      grails.plugin.json.builder.StreamingJsonBuilder.call(StreamingJsonBuilder.java:238)
      grails.plugin.json.view.JsonViewWritableScript.json(JsonViewWritableScript.groovy:72)
      mod_agreements_object__object_gson.run(mod_agreements_object__object_gson:24)
      grails.plugin.json.view.JsonViewWritableScript.doWrite(JsonViewWritableScript.groovy:27)
      grails.views.AbstractWritableScript.writeTo(AbstractWritableScript.groovy:40)
      grails.views.mvc.GenericGroovyTemplateView.renderMergedOutputModel(GenericGroovyTemplateView.groovy:73)
      org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:317)
      grails.views.mvc.renderer.DefaultViewRenderer.render(DefaultViewRenderer.groovy:117)
      grails.artefact.controller.RestResponder$Trait$Helper.internalRespond(RestResponder.groovy:192)
      grails.artefact.controller.RestResponder$Trait$Helper.respond(RestResponder.groovy:76)
      com.k_int.web.toolkit.rest.RestfulController.index(RestfulController.groovy:59)
      java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      com.k_int.web.toolkit.rest.TenantAwareRestfulController.$mt__tenantAwareRestfulController_index(TenantAwareRestfulController.groovy:21)
      java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      grails.gorm.multitenancy.Tenants$_withId_closure2$_closure6.doCall(Tenants.groovy:265)
      org.grails.orm.hibernate.GrailsHibernateTemplate.doExecute(GrailsHibernateTemplate.java:297)
      org.grails.orm.hibernate.GrailsHibernateTemplate.execute(GrailsHibernateTemplate.java:241)
      org.grails.orm.hibernate.GrailsHibernateTemplate.executeWithNewSession(GrailsHibernateTemplate.java:153)
      org.grails.orm.hibernate.GrailsHibernateTemplate.executeWithExistingOrCreateNewSession(GrailsHibernateTemplate.java:207)
      org.grails.orm.hibernate.AbstractHibernateDatastore.withNewSession(AbstractHibernateDatastore.java:369)
      grails.gorm.multitenancy.Tenants$_withId_closure2.doCall(Tenants.groovy:258)
      grails.gorm.multitenancy.Tenants$CurrentTenant.withTenant(Tenants.groovy:358)
      grails.gorm.multitenancy.Tenants.withId(Tenants.groovy:236)
      org.grails.datastore.gorm.services.DefaultTenantService.withCurrent(DefaultTenantService.groovy:71)
      org.grails.core.DefaultGrailsControllerClass$MethodHandleInvoker.invoke(DefaultGrailsControllerClass.java:223)
      org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrailsControllerClass.java:188)
      org.grails.web.mapping.mvc.UrlMappingsInfoHandlerAdapter.handle(UrlMappingsInfoHandlerAdapter.groovy:90)
      org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
      org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
      org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
      org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
      org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
      io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
      io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
      io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
      io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
      org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
      org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
      grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter.doFilter(UpdateRequestContextHolderExceptionTranslationFilter.groovy:64)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:54)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:150)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:64)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.groovy:58)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      com.k_int.okapi.springsecurity.OkapiAuthenticationFilter.successfulAuthentication(OkapiAuthenticationFilter.groovy:87)
      org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:240)
      org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
      org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
      org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
      io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
      io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
      org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77)
      io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
      io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
      org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)
      io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
      io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
      io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
      io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
      io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
      io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
      io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
      io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
      io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
      io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
      io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
      io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
      io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
      io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:132)
      io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
      io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
      io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
      io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
      io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
      io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
      io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
      io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
      io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
      io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
      io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
      io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
      io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
      io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
      io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
      io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
      io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
      io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
      io.undertow.server.Connectors.executeRootHandler(Connectors.java:376)
      io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
      java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
      java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
      java.base/java.lang.Thread.run(Thread.java:829)
      

      Steps to Reproduce:
      Not sure on precise conditions, but observed that I:

      1. Created agreement
      2. Added PCI to agreement as agreement line
      3. Ran 'triggerHousekeeping' and saw entry in entitlement log
      4. Created new package (json upload)
      5. Added package to agreement as agreement line
      6. Ran 'triggerHousekeeping' and saw entry in entitlement log
      7. Deleted agreement line for package
      8. # Ran 'triggerHousekeeping' and saw error in entitlement log

      Additional Information:
      I was testing the Entitlement Log so in actual fact I'd done a number of changes to different agreements and re-running of triggerHousekeeping over an hour or so. Testing had included some agreement line deletions, so it did not seem to always cause a problem - possibly only a n issue when the AL is for the package?

      In case relevant, one of the titles in the package was also a direct PCI/AL in another agreement

      TestRail: Results

        Attachments

          Issue Links

            Activity

              People

                ostephens Owen Stephens
                ostephens Owen Stephens
                Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                  Created:
                  Updated:
                  Resolved:

                  TestRail: Runs

                    TestRail: Cases