Reporting module has faulted

My reporting module has faulted. I've tried restarting the module, and uninstalling and reinstalling the module but that did not fix the issue. Could someone advise me on the next steps to take?

I would try a gateway restart and failing that reboot the server.

Any logs?

Here's an error message from the logs:

java.lang.Exception: Exception while starting up module "com.inductiveautomation.reporting".
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.startup(ModuleManagerImpl.java:2397)
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1181)
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$4.call(ModuleManagerImpl.java:836)
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:902)
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.restartModuleInternal(ModuleManagerImpl.java:816)
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.restartModule(ModuleManagerImpl.java:808)
	at com.inductiveautomation.ignition.gateway.web.pages.config.ModulePage$RestartAction.execute(ModulePage.java:575)
	at com.inductiveautomation.ignition.gateway.web.components.ConfirmationPanel$1.onClick(ConfirmationPanel.java:49)
	at org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:190)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
	at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
	at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
	at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236)
	at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
	at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
	at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
	at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
	at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
	at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
	at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
	at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
	at com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.handle(RemoteHostNameLookupHandler.java:121)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
	at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301)
	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
	at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
	at org.eclipse.jetty.server.Server.handle(Server.java:563)
	at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:416)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:385)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:272)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:140)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Cannot invoke "String.startsWith(String)" because "name" is null
	at com.inductiveautomation.ignition.common.xmlserialization.ClassNameResolver.classForName(ClassNameResolver.java:162)
	at com.inductiveautomation.ignition.common.xmlserialization.encoding.Decoders$SignatureDecoder.binaryToObject(Decoders.java:430)
	at com.inductiveautomation.ignition.common.xmlserialization.encoding.Decoders$SignatureDecoder.binaryToObject(Decoders.java:408)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readAttributes(BinaryParser.java:179)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:148)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.readElement(BinaryParser.java:157)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.BinaryParser.parse(BinaryParser.java:51)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserializeBinary(XMLDeserializer.java:367)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:277)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:257)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:212)
	at com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:190)
	at com.inductiveautomation.reporting.gateway.scheduler.ReportScheduleRunner.addSchedulesFromResource(ReportScheduleRunner.java:88)
	at com.inductiveautomation.reporting.gateway.scheduler.ReportScheduleRunner.startup(ReportScheduleRunner.java:78)
	at com.inductiveautomation.reporting.gateway.scheduler.ReportScheduleRunner.startup(ReportScheduleRunner.java:62)
	at com.inductiveautomation.reporting.gateway.ReportingGatewayHook$ReportingProjectLifecycle.onStartup(ReportingGatewayHook.java:753)
	at com.inductiveautomation.ignition.gateway.project.ProjectLifecycle.onStartup(ProjectLifecycle.java:38)
	at com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle.startup(AbstractLifecycle.java:18)
	at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.maybeStartLifecycle(ProjectLifecycleFactory.java:234)
	at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.lambda$projectAdded$0(ProjectLifecycleFactory.java:124)
	at java.base/java.util.Optional.ifPresent(Unknown Source)
	at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory$1.projectAdded(ProjectLifecycleFactory.java:124)
	at java.base/java.util.ArrayList.forEach(Unknown Source)
	at com.inductiveautomation.ignition.gateway.project.ProjectLifecycleFactory.onStartup(ProjectLifecycleFactory.java:47)
	at com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle.startup(AbstractLifecycle.java:18)
	at com.inductiveautomation.reporting.gateway.ReportingGatewayHook.startup(ReportingGatewayHook.java:203)
	at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.startup(ModuleManagerImpl.java:2391)
	... 64 more

8.1.37 (b2024013011)
Azul Systems, Inc. 17.0.9

At a guess, that is the key line but this has never happened to me so can't advise any further.

Live production server so hesitant to restart?

I figured that was the case, but I'm not sure what its failing to find the name of. Its DEV so I can restart freely. I tried stopping and starting the gateway but that did not fix the issue. Guess I'll have to dig into the project files.

At least one of your reports has gotten saved in an invalid/corrupted state. That definitely shouldn't be preventing module startup (:grimacing:) but for right now you're going to have to do some manual surgery to try to find out which one.

For a starting point, maybe try looking in the projects/ directory on disk in the Ignition installation directory.l
Look in each project, under the com.inductiveautomation.reporting/reports folder for each resource, then check the data.bin file to see if it's unusual (zero bytes, maybe?)
This totally empty report comes in at 606 bytes, so anything less than 500 bytes would definitely come up as a red flag for me.

If you do find anything unusual, you can back up the project/resource, then delete the entire 'resource' by deleting the folder (e.g. abc in the screenshot above), then restart the gateway.

1 Like