Installation says it's successful, but gateway fails to launch and produces this error.
Can you get the wrapper.log file and upload them or post the last error message(s) here as preformatted text? The stacktrace on that NPE is going to be helpful.
We may also need you to provide your .gwbk.
wrapper.log (2.7 MB)
@PGriffith
Thanks, that's helpful. I'll get a ticket filed so we can get this fixed.
2025-08-05 13:59:51:000
Error during context startup.
java.lang.NullPointerException: Cannot invoke "com.inductiveautomation.ignition.gateway.auth.idp.internal.InternalIdentityProviderConfig.authMethods()" because "settings" is null
at com.inductiveautomation.ignition.gateway.auth.idp.internal.InternalIdentityProviderType.validate(InternalIdentityProviderType.java:99)
at com.inductiveautomation.ignition.gateway.auth.idp.internal.InternalIdentityProviderType.validate(InternalIdentityProviderType.java:35)
at com.inductiveautomation.ignition.gateway.config.AbstractExtensionPoint.lambda$buildValidator$0(AbstractExtensionPoint.java:86)
at com.inductiveautomation.ignition.gateway.config.ExtensionPointResourceCodec.validateSettings(ExtensionPointResourceCodec.java:188)
at com.inductiveautomation.ignition.gateway.config.ExtensionPointResourceCodec.decodeFromJson(ExtensionPointResourceCodec.java:135)
at com.inductiveautomation.ignition.gateway.config.ExtensionPointResourceCodec.decodeFromJson(ExtensionPointResourceCodec.java:29)
at com.inductiveautomation.ignition.gateway.config.JsonResourceCodec.decodeFromJson(JsonResourceCodec.java:45)
at com.inductiveautomation.ignition.gateway.config.JsonResourceCodec.decode(JsonResourceCodec.java:63)
at com.inductiveautomation.ignition.gateway.config.NamedResourceHandler.decode(NamedResourceHandler.java:449)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
at com.inductiveautomation.ignition.gateway.config.NamedResourceHandler$Lifecycle.onStartup(NamedResourceHandler.java:562)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycle.onStartup(ResourceCollectionLifecycle.java:61)
at com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle.startup(AbstractLifecycle.java:19)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.maybeStartLifecycle(ResourceCollectionLifecycleFactory.java:264)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.lambda$updateOrStartAffected$4(ResourceCollectionLifecycleFactory.java:248)
at java.base/java.util.Optional.ifPresent(Unknown Source)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.lambda$updateOrStartAffected$5(ResourceCollectionLifecycleFactory.java:243)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.updateOrStartAffected(ResourceCollectionLifecycleFactory.java:190)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory$1.collectionAdded(ResourceCollectionLifecycleFactory.java:145)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source)
at com.inductiveautomation.ignition.gateway.resourcecollection.ResourceCollectionLifecycleFactory.onStartup(ResourceCollectionLifecycleFactory.java:61)
at com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle.startup(AbstractLifecycle.java:19)
at com.inductiveautomation.ignition.gateway.config.NamedResourceHandler.onStartup(NamedResourceHandler.java:436)
at com.inductiveautomation.ignition.common.lifecycle.AbstractLifecycle.startup(AbstractLifecycle.java:19)
at com.inductiveautomation.ignition.gateway.auth.idp.IdentityProviderManager.startup(IdentityProviderManager.java:362)
at com.inductiveautomation.ignition.gateway.IgnitionGateway.startupInternal(IgnitionGateway.java:1240)
at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.startup(RedundancyManagerImpl.java:352)
at com.inductiveautomation.ignition.gateway.IgnitionGateway.initRedundancy(IgnitionGateway.java:787)
at com.inductiveautomation.ignition.gateway.IgnitionGateway.lambda$initInternal$1(IgnitionGateway.java:712)
at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:550)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
After some further digging we were able to replicate this upgrade issue. The following warning showed in the logs which helped lead to replication.
INFO | jvm 1 | 2025/08/05 13:48:22 | W [c.i.i.g.a.i.IdentityProviderMigrationStrategy] [13:48:22.061]: User source profile with ID 6 does not exist
The problem with “settings” being set to null during the upgrade is due to an IdP being migrated that references a user source that’s no longer available. This specifically will occur if the IdP was created in older versions of Ignition that referenced the User Source by ID instead of the current implementation of referencing by Name.
Edit: If anyone else runs into this before we get it fixed, you could remove any IdPs that are referencing non-existent user sources prior to upgrading. Or after the upgrade either delete the IdP configuration or modify the settings property in the config.json
file for the Identity Provider that has settings set to null. Then stop/start the service.
The folder path and example settings are below.
\data\config\resources\core\ignition\identity-provider
"settings": {
"authMethods": [
{
"config": {},
"type": "basic"
}
],
"rememberMeExp": 0,
"sessionExp": 0,
"sessionInactivityTimeout": 30,
"userSource": "default"
}