Not being able to reproduce it now, as I need one system administrator that has just left until Monday.
Those entities are "part" of a Scale (inside a Collection), and are lazy loaded due to that, I think. They have the following code: @PersistenceCapable @Inheritance(strategy = InheritanceStrategy.NEW_TABLE) public class TimeScale extends AbstractScale { // {{ TimeScaleLevels (Collection) @Persistent(mappedBy = "timeScale", dependentElement = "true") private SortedSet<PointInTime> timeScaleLevels = new TreeSet<PointInTime>(); @MemberOrder(sequence = "1") public SortedSet<PointInTime> getTimeScaleLevels() { return this.timeScaleLevels; } public void setTimeScaleLevels(final SortedSet<PointInTime> timeScaleLevels) { this.timeScaleLevels = timeScaleLevels; } @MemberOrder(name = "timeScaleLevels", sequence = "10") public TimeScale insertIntoTimeScaleLevels(final PointInTime timeScaleLevel) { this.addToTimeScaleLevels(timeScaleLevel); return this; } // Programming model. public void addToTimeScaleLevels(final PointInTime timeScaleLevel) { // check for no-op if ((timeScaleLevel == null) || this.getTimeScaleLevels().contains(timeScaleLevel)) { return; } // associate new this.getTimeScaleLevels().add(timeScaleLevel); // additional business logic this.onAddToTimeScaleLevels(timeScaleLevel); } // Action. @MemberOrder(name = "timeScaleLevels", sequence = "20") public TimeScale deleteFromTimeScaleLevels(final PointInTime timeScaleLevel) { this.removeFromTimeScaleLevels(timeScaleLevel); return this; } // Programming model. public void removeFromTimeScaleLevels(final PointInTime timeScaleLevel) { // check for no-op if ((timeScaleLevel == null) || !this.getTimeScaleLevels().contains(timeScaleLevel)) { return; } // dissociate existing this.getTimeScaleLevels().remove(timeScaleLevel); // additional business logic this.onRemoveFromTimeScaleLevels(timeScaleLevel); } protected void onAddToTimeScaleLevels(final PointInTime timeScaleLevel) { } protected void onRemoveFromTimeScaleLevels(final PointInTime timeScaleLevel) { } // }} @SuppressWarnings("unchecked") @Override protected <E extends AbstractScaleLevel> SortedSet<E> internalGetElements() { return (SortedSet<E>) this.timeScaleLevels; } public PointInTime createLevel(@Named("Name") final String name, @Named("Description") @Optional final String description, @Named("Time Lapse Duration") final BigDecimal timelapseDuration, @Named("Time Lapse Unit") final StandardTimeUnit timelapseUnit) { return this.wrap(this.timeScales).createScaleLevel(this, name, description, StandardTimeUnit.HOURS.convert(timelapseDuration, timelapseUnit), timelapseUnit); } // {{ levelForPointInTime (action) @Hidden @MemberOrder(sequence = "1") public PointInTime levelForPointInTime(final BigDecimal pointInTime, final StandardTimeUnit pointInTimeUnits) { return (PointInTime) this.levelForValue(StandardTimeUnit.HOURS.convert(pointInTime, pointInTimeUnits)); } // }} // {{ injected: TimeScales private TimeScales timeScales; public void setTimeScales(final TimeScales timeScales) { this.timeScales = timeScales; } // }} ------------------------------------------------------------------------------------------------------------------- @PersistenceCapable @Inheritance(strategy = InheritanceStrategy.NEW_TABLE) public class PointInTime extends AbstractScaleLevelBin { // {{ TimeScale (property) private TimeScale timeScale; @Column(allowsNull = "false") @MemberOrder(sequence = "1") public TimeScale getTimeScale() { return this.timeScale; } public void setTimeScale(final TimeScale timeScale) { this.timeScale = timeScale; } // }} // {{ TimeLapseDuration (property) private BigDecimal timeLapseDuration; @Disabled @Column(allowsNull = "false") @MemberOrder(sequence = "1") public BigDecimal getTimeLapseDuration() { return this.timeLapseDuration; } public void setTimeLapseDuration(final BigDecimal timeLapseDuration) { this.timeLapseDuration = timeLapseDuration; } public void modifyTimeLapseDuration(final BigDecimal timeLapseDuration) { final BigDecimal currentTimeLapseDuration = this.getTimeLapseDuration(); // check for no-op if ((timeLapseDuration == null) || timeLapseDuration.equals(currentTimeLapseDuration)) { return; } // associate new this.setTimeLapseDuration(timeLapseDuration); // additional business logic this.onModifyTimeLapseDuration(currentTimeLapseDuration, timeLapseDuration); } public void clearTimeLapseDuration() { final BigDecimal currentTimeLapseDuration = this.getTimeLapseDuration(); // check for no-op if (currentTimeLapseDuration == null) { return; } // dissociate existing this.setTimeLapseDuration(null); // additional business logic this.onClearTimeLapseDuration(currentTimeLapseDuration); } protected void onModifyTimeLapseDuration(final BigDecimal oldTimeLapseDuration, final BigDecimal newTimeLapseDuration) { if ((newTimeLapseDuration != null) && (this.getTimeLapseUnit() != null)) { this.setValue(StandardTimeUnit.HOURS.convert(this.timeLapseDuration, this.timeLapseUnit)); } else { this.setValue(null); } } protected void onClearTimeLapseDuration(final BigDecimal oldTimeLapseDuration) { this.setValue(null); } // }} // {{ TimeLapseUnit (property) private StandardTimeUnit timeLapseUnit; @Disabled @Column(allowsNull = "false") @MemberOrder(sequence = "1") public StandardTimeUnit getTimeLapseUnit() { return this.timeLapseUnit; } public void setTimeLapseUnit(final StandardTimeUnit timeLapseUnit) { this.timeLapseUnit = timeLapseUnit; } // }} // {{ assignTimeLapse (action) @MemberOrder(sequence = "1") public void assignTimeLapse(@Named("Time Lapse - Duration") final BigDecimal duration, @Named("Time Lapse - Unit") final StandardTimeUnit standardTimeUnit) { this.setTimeLapseDuration(duration); this.setTimeLapseUnit(standardTimeUnit); this.setValue(StandardTimeUnit.HOURS.convert(duration, standardTimeUnit)); } // }} /* * (non-Javadoc) * * @see * com.xms.framework.risk.criteria.api.domain.ScaleLevel#isValueIncluded * (java.lang.Object) */ @Override @Programmatic public Boolean isValueIncluded(final BigDecimal value) { // The equals() method for BigDecimals fails when they don't have the // same scale. This is the proper way. See: // http://www.opentaps.org/docs/index.php/How_to_Use_Java_BigDecimal:_A_Tutorial if ((this.getValue() == null) || (this.getValue().compareTo(value) < 0)) { return false; } else { final AbstractScaleLevel lowerLevel = this.getScale().lowerLevel(this); if (lowerLevel == null) { return true; } else if (lowerLevel.getValue().compareTo(value) > 0) { return true; } else { return false; } } } @Override @NotPersisted @NotPersistent @Hidden public AbstractScale getScale() { return this.getTimeScale(); } @Override public void setScale(final AbstractScale scale) { this.timeScale = (TimeScale) scale; } public String disableValue() { return "When you enter a Duration and a Time Unit the value will automatically be the equivalent number of Hours"; } } HTH, Oscar El 13/12/2013, a las 17:58, Dan Haywood <d...@haywood-associates.co.uk> escribió: > It is, perhaps, possible that the object not yet mapped is already > persisted... perhaps it's being loaded lazily earlier on somehow, and isn't > being picked up by the synchronizer. > > Can you put a break point at the ensureRootLogging(...) when it throws the > exception, and copy the full stack trace out? > > Also, there may be a quick fix (though it's a bit hacky; it'd be nice to > understand why this is breaking). Even so, to apply that possible > fix/hack, in ensureRootLObject(...), change the call to > "getAdapterFor(...)" to instead call "adapterFor(...)"; this latter method > will create the adapter if it's not there. > > Dan > > > > On 13 December 2013 16:37, GESCONSULTOR - Óscar Bou > <o....@gesconsultor.com>wrote: > >> Thanks a lot, Dan. >> >> This object is: [value=1.000000000000000, [name=1 hour, >> [tenantId=TENANT, [id=91FB2A32-BDC6-47A3-A67D-CE76FA4EF5EF, class >> name=com.xms.framework.architecture.domain.model.valuation.PointInTime]]]] >> >> That "PointInTime" was initially created through a Fixture - on a past >> execution -, and currently loaded from the database through a repository >> call. >> >> The code for the repository's method, "findByPropMultiTenant" is the next >> one: >> >> @Programmatic >> public <S extends AbstractXMSDomainObject> List<S> >> findByPropMultiTenant(final String tenantId, final Class<S> clazz, final >> String whereClause, final Integer firstResult, final Integer maxResults, >> final String orderClause) { >> return >> IsisContext.getTransactionManager().executeWithinTransaction(new >> TransactionalClosureWithReturnAbstract<List<S>>() { >> >> @Override >> public List<S> execute() { >> return >> AbstractXMSDomainObjectRepositoryAndFactory.this.doFindByPropMultiTenant(tenantId, >> clazz, whereClause, firstResult, maxResults, orderClause); >> } >> >> @Override >> public void onFailure() { >> >> } >> }); >> >> } >> >> @SuppressWarnings("unchecked") >> @Programmatic >> private <S extends AbstractXMSDomainObject> List<S> >> doFindByPropMultiTenant(final String tenantId, final Class<S> clazz, final >> String whereClause, final Integer firstResult, final Integer maxResults, >> final String orderClause) { >> >> // Ensure any newly persisted objects are saved to the object store >> // before executing the query. >> this.getContainer().flush(); >> >> // See this for examples: >> // >> http://www.datanucleus.org/products/accessplatform_2_1/jdo/query_api.html >> final Query query = >> this.isisJdoSupport.getJdoPersistenceManager().newQuery(clazz); >> >> // Always add the Tenant filter. >> String filter = String.format("tenantId == '%s'", tenantId); >> if ((whereClause != null) && (whereClause.trim().length() != 0)) { >> filter = filter.concat(" && ").concat(whereClause); >> } >> query.setFilter(filter); >> >> query.setRange(this.firstResultToLong(firstResult), >> this.maxResultsToLong(maxResults)); >> final List<S> result = (List<S>) query.execute(); >> return result; >> } >> >> >> >> Thanks, >> >> Oscar >> >> >> >> >> >> El 13/12/2013, a las 17:15, Dan Haywood <d...@haywood-associates.co.uk> >> escribió: >> >>> Hi Oscar, >>> the stack trace is somewhat truncated, unfortunately, but I think I can >>> approximately work it out. >>> >>> *It starts to get useful down at the very end, in the last nested >> block...* >>> >>> >>> Caused by: org.apache.isis.core.commons.exceptions.IsisException: Object >>> not yet known to Isis: [value=1.000000000000000, [name=1 hour, >>> [tenantId=TENANT, [id=91FB2A32-BDC6-47A3-A67D-CE76FA4EF5EF, class >>> >> name=com.xms.framework.architecture.domain.model.valuation.PointInTime]]]] >>> at >>> org.apache.isis.objectstore.jdo.datanucleus.persistence. >>> FrameworkSynchronizer.ensureRootObject(FrameworkSynchronizer.java:353) >>> at >>> org.apache.isis.objectstore.jdo.datanucleus.persistence. >>> FrameworkSynchronizer$2.run(FrameworkSynchronizer.java:143) >>> at >>> org.apache.isis.objectstore.jdo.datanucleus.persistence. >>> FrameworkSynchronizer$7.call(FrameworkSynchronizer.java:291) >>> at >>> org.apache.isis.objectstore.jdo.datanucleus.persistence. >>> FrameworkSynchronizer$7.call(FrameworkSynchronizer.java:287) >>> at >>> org.apache.isis.objectstore.jdo.datanucleus.persistence. >>> FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:276) >>> >>> >>> >>> *From what I can see, there's a repository query...* >>> >>> com.xms.framework.common.domain.model.AbstractXMSDomainObjectReposit >>> oryAndFactory.findByPropMultiTenant(AbstractXMSDomainObjectReposit >>> oryAndFactory.java:509) >>> at >>> com.xms.framework.common.domain.model.AbstractXMSDomainObjectReposit >>> oryAndFactory.findByProp(AbstractXMSDomainObjectReposit >>> oryAndFactory.java:502) >>> at >>> com.xms.framework.common.domain.model.AbstractSingletonMultiTenantOb >>> jectRepositoryAndFactory.singletonInstance(AbstractSingletonMultiTenantOb >>> jectRepositoryAndFactory.java:16) >>> at >>> com.xms.framework.monitoring.domain.model.architecture. >>> AssetsMonitoringInformation.monitoringInformation( >>> AssetsMonitoringInformation.java:12) >>> >>> >>> >>> *which (as they all do) causes a flush of the xactn, which in turn causes >>> some queued up "create object" commands to be executed...* >>> >>> org.apache.isis.objectstore.jdo.datanucleus.persistence.commands. >>> DataNucleusCreateObjectCommand.execute(DataNucleusCreateObjectCommand >>> .java:54) >>> at >>> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore. >>> executeCommands(DataNucleusObjectStore.java:361) >>> >>> >>> >>> >>> *DataNucleus then does its persist...* >>> >>> org.datanucleus.state.JDOStateManager.internalMakePersistent( >>> JDOStateManager.java:3779) >>> at >>> org.datanucleus.state.JDOStateManager.makePersistent( >>> JDOStateManager.java:3752) >>> >>> >>> >>> >>> *and calls Isis through a callback:* >>> >>> org.datanucleus.api.jdo.JDOCallbackHandler.postStore( >>> JDOCallbackHandler.java:158) >>> at >>> >>> >>> >>> *Isis then attempts to synchronize its state with that of DataNucleus, >> and >>> fails fast because it's being asked to locate an object that it has never >>> seen before:* >>> >>> Caused by: java.lang.RuntimeException: >>> org.apache.isis.core.commons.exceptions.IsisException: Object not yet >>> known to Isis: [value=1.000000000000000, [name=1 hour, >>> [tenantId=TENANT, [id=91FB2A32-BDC6-47A3-A67D-CE76FA4EF5EF, class >>> >> name=com.xms.framework.architecture.domain.model.valuation.PointInTime]]]] >>> at >>> org.apache.isis.objectstore.jdo.datanucleus.persistence. >>> FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:278) >>> at >>> org.apache.isis.objectstore.jdo.datanucleus.persistence. >>> FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:287) >>> >>> >>> *The actual exception is thrown by >> FrameworkSynchronizer#ensureRootObject* >>> >>> void ensureRootObject(final PersistenceCapable pojo) { >>> final ObjectAdapter adapter = >>> getAdapterManager().getAdapterFor(pojo); >>> if(adapter == null) { >>> throw new IsisException(MessageFormat.format("Object not yet >>> known to Isis: {0}", pojo)); >>> } >>> >>> >>> >>> >>> *This is a "fail fast" because, I think, it ought not to happen... if the >>> object was created using >>> DomainObjectContainer#createTransientInstance(...), then the pojo's >> adapter >>> would be in the AdapterManager.* >>> >>> Could you put a break point on the failing line (in ensureRootObject) and >>> find out which object is not mapped, then see how that object is >> originally >>> instantiated (eg put a break point in that object's constructor and look >>> down the stacktrace). >>> >>> >>> Dan >>> >>> >>> >>> >>> >>> >>> On 13 December 2013 15:55, GESCONSULTOR - Óscar Bou >>> <o....@gesconsultor.com>wrote: >>> >>>> >>>> Hi to all. >>>> >>>> While testing a part of our app, the following exception has been >> raised. >>>> It blocks the execution of any logic. >>>> >>>> Not sure about if it's a framework error or perhaps something regarding >>>> Isis Session management. >>>> >>>> Any help, please? >>>> >>>> Thanks, >>>> >>>> Oscar >>>> >>>> >>>> >>>> >>>> 16:40:05,021 [IsisTransaction http-8094-7 INFO ] abort >>>> transaction IsisTransaction@4ff9c1a1[state=MUST_ABORT,commands=0] >>>> 16:40:05,022 [JSONRPCController http-8094-7 ERROR] Exception >>>> executing consequence for rule "event handler: Asset Dimension Impact >>>> restored. Send emails" in com.xms.framework.monitoring.rules: >>>> java.lang.RuntimeException: >>>> org.apache.isis.core.commons.exceptions.IsisException: Object not yet >>>> known to Isis: [value=1.000000000000000, [name=1 hour, >>>> [tenantId=TENANT, [id=91FB2A32-BDC6-47A3-A67D-CE76FA4EF5EF, class >>>> >> name=com.xms.framework.architecture.domain.model.valuation.PointInTime]]]] >>>> com.xms.framework.api.exception.XMSRuntimeException: Exception executing >>>> consequence for rule "event handler: Asset Dimension Impact restored. >>>> Send emails" in com.xms.framework.monitoring.rules: >>>> java.lang.RuntimeException: >>>> org.apache.isis.core.commons.exceptions.IsisException: Object not yet >>>> known to Isis: [value=1.000000000000000, [name=1 hour, >>>> [tenantId=TENANT, [id=91FB2A32-BDC6-47A3-A67D-CE76FA4EF5EF, class >>>> >> name=com.xms.framework.architecture.domain.model.valuation.PointInTime]]]] >>>> at >>>> >>>> >> com.xms.framework.devstudio.service.AbstractDevStudioDomainService.executeAction(AbstractDevStudioDomainService.java:188) >>>> at >>>> >>>> >> com.xms.framework.impl.devstudio.service.XMSDomainCustomizeMethodsService.realTimeDashboards_notifyServiceUp(XMSDomainCustomizeMethodsService.java:5422) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at >>>> >>>> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>> at >>>> >>>> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>> at >>>> >>>> >> com.wavemaker.runtime.service.reflect.ReflectServiceType.invokeMethod(ReflectServiceType.java:115) >>>> at >>>> >>>> >> com.wavemaker.runtime.server.ServerUtils.invokeMethodWithEvents(ServerUtils.java:293) >>>> at >>>> >>>> >> com.wavemaker.runtime.server.ControllerBase.invokeMethod(ControllerBase.java:263) >>>> at >>>> >>>> >> com.wavemaker.runtime.server.JSONRPCController.executeRequest(JSONRPCController.java:109) >>>> at >>>> >>>> >> com.wavemaker.runtime.server.ControllerBase.handleRequestInternal(ControllerBase.java:135) >>>> at >>>> >>>> >> org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) >>>> at >>>> >>>> >> org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) >>>> at >>>> >>>> >> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) >>>> at >>>> >>>> >> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) >>>> at >>>> >>>> >> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) >>>> at >>>> >>>> >> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) >>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) >>>> at >>>> >>>> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) >>>> at >>>> >>>> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) >>>> at >>>> >>>> >> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) >>>> at >>>> >>>> >> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) >>>> at >>>> >>>> >> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) >>>> at >>>> >>>> >> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) >>>> at >>>> >>>> >> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) >>>> 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.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) >>>> at >>>> >>>> >> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) >>>> at >>>> >>>> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) >>>> at >>>> >>>> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >>>> at >>>> >>>> >> org.apache.isis.core.webapp.IsisSessionFilter$SessionState$1.handle(IsisSessionFilter.java:320) >>>> at >>>> >>>> >> org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:409) >>>> at >>>> >>>> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) >>>> at >>>> >>>> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >>>> at >>>> >>>> >> org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) >>>> at >>>> >>>> >> org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) >>>> at >>>> >>>> >> org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) >>>> at >>>> >>>> >> org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) >>>> at >>>> >>>> >> org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) >>>> at >>>> >>>> >> org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) >>>> at >>>> >>>> >> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) >>>> 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:662) >>>> Caused by: Exception executing consequence for rule "event handler: >>>> Asset Dimension Impact restored. Send emails" in >>>> com.xms.framework.monitoring.rules: java.lang.RuntimeException: >>>> org.apache.isis.core.commons.exceptions.IsisException: Object not yet >>>> known to Isis: [value=1.000000000000000, [name=1 hour, >>>> [tenantId=TENANT, [id=91FB2A32-BDC6-47A3-A67D-CE76FA4EF5EF, class >>>> >> name=com.xms.framework.architecture.domain.model.valuation.PointInTime]]]] >>>> at >>>> >>>> >> org.drools.runtime.rule.impl.DefaultConsequenceExceptionHandler.handleException(DefaultConsequenceExceptionHandler.java:39) >>>> at >>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1297) >>>> at >>>> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:1221) >>>> at >>>> org.drools.common.DefaultAgenda.fireAllRules(DefaultAgenda.java:1456) >>>> at >>>> >>>> >> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:710) >>>> at >>>> >>>> >> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:674) >>>> at >>>> >>>> >> org.drools.impl.StatefulKnowledgeSessionImpl.fireAllRules(StatefulKnowledgeSessionImpl.java:230) >>>> at >>>> >>>> >> com.xms.framework.monitoring.domain.model.realtime.server.RealTimeIntelligentMonitoringServer.insertCommand(RealTimeIntelligentMonitoringServer.java:51) >>>> at >>>> >>>> >> com.xms.framework.monitoring.domain.model.realtime.dashboards.RealTimeDashboards.notifyServiceUp(RealTimeDashboards.java:389) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at >>>> >>>> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>>> at >>>> >>>> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>> at >>>> >>>> >> org.apache.isis.core.progmodel.facets.actions.invoke.ActionInvocationFacetViaMethod.invoke(ActionInvocationFacetViaMethod.java:111) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1.execute(ActionInvocationFacetWrapTransaction.java:56) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction$1.execute(ActionInvocationFacetWrapTransaction.java:53) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:217) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.transaction.facets.ActionInvocationFacetWrapTransaction.invoke(ActionInvocationFacetWrapTransaction.java:53) >>>> at >>>> >>>> >> org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionImpl.execute(ObjectActionImpl.java:345) >>>> at >>>> >>>> >> com.xms.framework.devstudio.service.AbstractDevStudioDomainService.executeAction(AbstractDevStudioDomainService.java:183) >>>> ... 73 more >>>> Caused by: java.lang.RuntimeException: >>>> org.apache.isis.core.commons.exceptions.IsisException: Object not yet >>>> known to Isis: [value=1.000000000000000, [name=1 hour, >>>> [tenantId=TENANT, [id=91FB2A32-BDC6-47A3-A67D-CE76FA4EF5EF, class >>>> >> name=com.xms.framework.architecture.domain.model.valuation.PointInTime]]]] >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:278) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:287) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.postStoreProcessingFor(FrameworkSynchronizer.java:140) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener$2.doRun(IsisLifecycleListener.java:95) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener$RunnableAbstract.run(IsisLifecycleListener.java:201) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener.withLogging(IsisLifecycleListener.java:180) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.IsisLifecycleListener.postStore(IsisLifecycleListener.java:91) >>>> at >>>> >>>> >> org.datanucleus.api.jdo.JDOCallbackHandler.postStore(JDOCallbackHandler.java:158) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:3779) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.makePersistent(JDOStateManager.java:3752) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2199) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2300) >>>> at >>>> >>>> >> org.datanucleus.store.types.SCOUtils.validateObjectForWriting(SCOUtils.java:1348) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.scostore.ElementContainerStore.validateElementForWriting(ElementContainerStore.java:369) >>>> at >>>> org.datanucleus.store.rdbms.scostore.FKSetStore.add(FKSetStore.java:401) >>>> at >>>> >> org.datanucleus.store.rdbms.scostore.FKSetStore.addAll(FKSetStore.java:556) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.mapping.java.CollectionMapping.postInsert(CollectionMapping.java:136) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.request.InsertRequest.execute(InsertRequest.java:519) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertTable(RDBMSPersistenceHandler.java:167) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:143) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:3776) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.makePersistent(JDOStateManager.java:3752) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2199) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2294) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.mapping.java.PersistableMapping.setObjectAsValue(PersistableMapping.java:567) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.mapping.java.PersistableMapping.setObject(PersistableMapping.java:326) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.fieldmanager.ParameterSetter.storeObjectField(ParameterSetter.java:193) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.providedObjectField(JDOStateManager.java:1269) >>>> at >>>> >>>> >> com.xms.framework.architecture.domain.model.valuation.ConsequencesByTimeAndCriterion.jdoProvideField(ConsequencesByTimeAndCriterion.java) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObject.jdoProvideFields(AbstractXMSDomainObject.java) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.provideFields(JDOStateManager.java:1346) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.request.InsertRequest.execute(InsertRequest.java:289) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertTable(RDBMSPersistenceHandler.java:167) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:143) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:3776) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.makePersistent(JDOStateManager.java:3752) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2199) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2294) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.mapping.java.PersistableMapping.setObjectAsValue(PersistableMapping.java:567) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.mapping.java.PersistableMapping.setObject(PersistableMapping.java:326) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.fieldmanager.ParameterSetter.storeObjectField(ParameterSetter.java:193) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.providedObjectField(JDOStateManager.java:1269) >>>> at >>>> >>>> >> com.xms.framework.architecture.domain.model.Asset.jdoProvideField(Asset.java) >>>> at >>>> >>>> >> com.xms.framework.architecture.domain.model.Service.jdoProvideField(Service.java) >>>> at >>>> >>>> >> com.xms.framework.architecture.domain.model.technology.InfrastructureService.jdoProvideField(InfrastructureService.java) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObject.jdoProvideFields(AbstractXMSDomainObject.java) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.provideFields(JDOStateManager.java:1346) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.request.InsertRequest.execute(InsertRequest.java:289) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertTable(RDBMSPersistenceHandler.java:167) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertTable(RDBMSPersistenceHandler.java:163) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:143) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:3776) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.makePersistent(JDOStateManager.java:3752) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2199) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2294) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.mapping.java.PersistableMapping.setObjectAsValue(PersistableMapping.java:567) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.mapping.java.PersistableMapping.setObject(PersistableMapping.java:326) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.fieldmanager.ParameterSetter.storeObjectField(ParameterSetter.java:193) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.providedObjectField(JDOStateManager.java:1269) >>>> at >>>> >>>> >> com.xms.framework.risk.domain.model.materialization.EventOccurrence.jdoProvideField(EventOccurrence.java) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObject.jdoProvideFields(AbstractXMSDomainObject.java) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.provideFields(JDOStateManager.java:1346) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.request.InsertRequest.execute(InsertRequest.java:289) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertTable(RDBMSPersistenceHandler.java:167) >>>> at >>>> >>>> >> org.datanucleus.store.rdbms.RDBMSPersistenceHandler.insertObject(RDBMSPersistenceHandler.java:143) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:3776) >>>> at >>>> >>>> >> org.datanucleus.state.JDOStateManager.makePersistent(JDOStateManager.java:3752) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2199) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObjectWork(ExecutionContextImpl.java:2045) >>>> at >>>> >>>> >> org.datanucleus.ExecutionContextImpl.persistObject(ExecutionContextImpl.java:1893) >>>> at >>>> >>>> >> org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:727) >>>> at >>>> >>>> >> org.datanucleus.api.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:752) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.commands.DataNucleusCreateObjectCommand.execute(DataNucleusCreateObjectCommand.java:54) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.executeCommands(DataNucleusObjectStore.java:361) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.DataNucleusObjectStore.execute(DataNucleusObjectStore.java:355) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.system.transaction.IsisTransaction.doFlush(IsisTransaction.java:388) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.system.transaction.IsisTransaction.flush(IsisTransaction.java:337) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.flushTransaction(IsisTransactionManager.java:298) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.persistence.internal.RuntimeContextFromSession$7.flush(RuntimeContextFromSession.java:221) >>>> at >>>> >>>> >> org.apache.isis.core.metamodel.services.container.DomainObjectContainerDefault.flush(DomainObjectContainerDefault.java:229) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObjectRepositoryAndFactory.doFindByPropMultiTenant(AbstractXMSDomainObjectRepositoryAndFactory.java:525) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObjectRepositoryAndFactory.access$900(AbstractXMSDomainObjectRepositoryAndFactory.java:37) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObjectRepositoryAndFactory$10.execute(AbstractXMSDomainObjectRepositoryAndFactory.java:513) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObjectRepositoryAndFactory$10.execute(AbstractXMSDomainObjectRepositoryAndFactory.java:509) >>>> at >>>> >>>> >> org.apache.isis.core.runtime.system.transaction.IsisTransactionManager.executeWithinTransaction(IsisTransactionManager.java:217) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObjectRepositoryAndFactory.findByPropMultiTenant(AbstractXMSDomainObjectRepositoryAndFactory.java:509) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractXMSDomainObjectRepositoryAndFactory.findByProp(AbstractXMSDomainObjectRepositoryAndFactory.java:502) >>>> at >>>> >>>> >> com.xms.framework.common.domain.model.AbstractSingletonMultiTenantObjectRepositoryAndFactory.singletonInstance(AbstractSingletonMultiTenantObjectRepositoryAndFactory.java:16) >>>> at >>>> >>>> >> com.xms.framework.monitoring.domain.model.architecture.AssetsMonitoringInformation.monitoringInformation(AssetsMonitoringInformation.java:12) >>>> at >>>> >>>> >> com.xms.framework.monitoring.rules.SendNotificationEmailsForAssetMonitoringEvent.sendNotificationEmailsForAssetMonitoringEvent(SendNotificationEmailsForAssetMonitoringEvent.java:97) >>>> at >>>> >>>> >> com.xms.framework.monitoring.rules.Rule_event_handler__Asset_Dimension_Impact_restored__Send_emails_d3be8ad20c3b4d609f66efe80ac6a5bc.defaultConsequence(Rule_event_handler__Asset_Dimension_Impact_restored__Send_emails_d3be8ad20c3b4d609f66efe80ac6a5bc.java:9) >>>> at >>>> >>>> >> com.xms.framework.monitoring.rules.Rule_event_handler__Asset_Dimension_Impact_restored__Send_emails_d3be8ad20c3b4d609f66efe80ac6a5bcDefaultConsequenceInvokerGenerated.evaluate(Unknown >>>> Source) >>>> at >>>> >>>> >> com.xms.framework.monitoring.rules.Rule_event_handler__Asset_Dimension_Impact_restored__Send_emails_d3be8ad20c3b4d609f66efe80ac6a5bcDefaultConsequenceInvoker.evaluate(Unknown >>>> Source) >>>> at >>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:1287) >>>> ... 91 more >>>> Caused by: org.apache.isis.core.commons.exceptions.IsisException: Object >>>> not yet known to Isis: [value=1.000000000000000, [name=1 hour, >>>> [tenantId=TENANT, [id=91FB2A32-BDC6-47A3-A67D-CE76FA4EF5EF, class >>>> >> name=com.xms.framework.architecture.domain.model.valuation.PointInTime]]]] >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.ensureRootObject(FrameworkSynchronizer.java:353) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer$2.run(FrameworkSynchronizer.java:143) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer$7.call(FrameworkSynchronizer.java:291) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer$7.call(FrameworkSynchronizer.java:287) >>>> at >>>> >>>> >> org.apache.isis.objectstore.jdo.datanucleus.persistence.FrameworkSynchronizer.withLogging(FrameworkSynchronizer.java:276) >>>> ... 184 more >>>> >>>> >>>> >>>> >>>> >> >>