-
Notifications
You must be signed in to change notification settings - Fork 24
Description
Describe the bug
When having a setup job in state RetrySetupBlockedState in the database starting the module is not possible, as a NullReferenceException is thrown when trying to publish a notification in the OnEnter method of the state.
Screenshots
FATAL [Moryx.ControlSystem.ProcessEngine].Exception in module lifecycle!
Castle.MicroKernel.ComponentActivator.ComponentActivatorException: ComponentActivator: could not instantiate Moryx.ControlSystem.ProcessEngine.Jobs.Setup.SetupJobData
---> System.NullReferenceException: Object reference not set to an instance of an object.
at Moryx.ControlSystem.ProcessEngine.Jobs.Setup.SetupJobData.NotifyAboutBlockedRetry()
at Moryx.ControlSystem.ProcessEngine.Jobs.Setup.RetrySetupBlockedState.OnEnter()
at Moryx.StateMachines.StateBase.Create(Type stateBaseType, IStateContext context, Nullable1 initialKey)
at Moryx.StateMachines.StateBase.Create[TStateBase](IStateContext context, Nullable1 initialKey)
at Moryx.StateMachines.StateMachine.TypedContextWrapper1.WithTStateBase
at Moryx.ControlSystem.ProcessEngine.Jobs.Setup.SetupJobData..ctor(IWorkplanRecipe recipe, JobEntity entity)
at lambda_method1341(Closure, Object[])
at Castle.Core.Internal.ReflectionUtil.Instantiate[TBase](Type subtypeofTBase, Object[] ctorArgs)
at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstanceCore(ConstructorCandidate constructor, Object[] arguments, Type implType)
--- End of inner exception stack trace ---
at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstanceCore(ConstructorCandidate constructor, Object[] arguments, Type implType)
at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.CreateInstance(CreationContext context, ConstructorCandidate constructor, Object[] arguments)
at Castle.MicroKernel.ComponentActivator.DefaultComponentActivator.InternalCreate(CreationContext context)
at Castle.MicroKernel.ComponentActivator.AbstractComponentActivator.Create(CreationContext context, Burden burden)
at Castle.MicroKernel.Lifestyle.AbstractLifestyleManager.Resolve(CreationContext context, IReleasePolicy releasePolicy)
at Castle.MicroKernel.Handlers.DefaultHandler.ResolveCore(CreationContext context, Boolean requiresDecommission, Boolean instanceRequired, Burden& burden)
at Castle.MicroKernel.DefaultKernel.ResolveComponent(IHandler handler, Type service, Arguments additionalArguments, IReleasePolicy policy, Boolean ignoreParentContext)
at Castle.MicroKernel.DefaultKernel.Castle.MicroKernel.IKernelInternal.Resolve(Type service, Arguments arguments, IReleasePolicy policy, Boolean ignoreParentContext)
at Castle.Facilities.TypedFactory.TypedFactoryComponentResolver.Resolve(IKernelInternal kernel, IReleasePolicy scope)
at Castle.Facilities.TypedFactory.Internal.TypedFactoryInterceptor.Resolve(IInvocation invocation)
at Castle.Facilities.TypedFactory.Internal.TypedFactoryInterceptor.Intercept(IInvocation invocation)
at Castle.DynamicProxy.AbstractInvocation.Proceed()
at Castle.Proxies.IContainerJobDataFactoryProxy.CreateSetupJob(IWorkplanRecipe recipe, JobEntity entity)
at Moryx.ControlSystem.ProcessEngine.Jobs.JobDataFactory.Restore(JobEntity entity, IWorkplanRecipe recipe)
at Moryx.ControlSystem.ProcessEngine.Jobs.JobStorage.Get(JobEntity entity)
at Moryx.ControlSystem.ProcessEngine.Jobs.JobStorage.GetAll()
at Moryx.ControlSystem.ProcessEngine.Jobs.JobManager.ReloadJobs()
at Moryx.ControlSystem.ProcessEngine.Jobs.JobManager.Start()
at Moryx.ControlSystem.ProcessEngine.ComponentOrchestration.Start()
at Moryx.ControlSystem.ProcessEngine.ModuleController.OnStart()
at Moryx.Runtime.Modules.ServerModuleBase`1.Moryx.Runtime.Modules.IServerModuleStateContext.Start()