# Downgraded ignition from 8.1.30 to 8.1.25 and perspective module stopped working

**URL:** <https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649>\
**Category:** Ignition\
**Tags:** perspective\
**Created:** [July 20, 2023, 2:15pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649 "2023-07-20T14:15:09Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [July 20, 2023, 2:15pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/1 "2023-07-20T14:15:09Z")

</div>

i had to downgrade from 8.1.30 to 8.1.25  
I did uninstall first and then installed 8.1.25  
Now i have issues with perspective module  
Any idea how to resolve it?  
"""

"""

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [July 20, 2023, 2:16pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/2 "2023-07-20T14:16:26Z")

</div>

That stack trace says 8.1.2… not .25

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [July 20, 2023, 2:17pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/3 "2023-07-20T14:17:40Z")

</div>

sorry my mistake i will update this in few mins

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [July 20, 2023, 2:18pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/4 "2023-07-20T14:18:43Z")

</div>

Include wrapper log file if it’s still broken.

Downgrading is generally not guaranteed to work unless you have a backup from the version you are downgrading to that will be restored.

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [July 20, 2023, 2:49pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/5 "2023-07-20T14:49:10Z")

</div>

hi Kevin sorry for my delay  
i restarted perspective module and atached below the wrapper log  
Would you please advise what actually happens during downgrade? I do have a backup from the version 8.1.25 and do understand that backups from 8.1.30 might not be compatible with 8.1.25

1. i did uninstall of the version 8.1.30 which preserves the projects inside but i thought it replaces all modules from the new with the modules from 8.1.25 - is wiping whole ignition folder more bullet proof method if projects have already been backed up?  
2 Any chance you say a few words about nature of "Unable to load hook class " problem?  
3 should antivirus be disabled during installing gateway?

```auto
INFO | jvm 1 | 2023/07/20 15:36:51 | I [g.ModuleManager] [14:36:51]: Restarting module "com.inductiveautomation.perspective" 
INFO | jvm 1 | 2023/07/20 15:36:51 | E [g.ModuleManager] [14:36:51]: Error loading hook classes for module "com.inductiveautomation.perspective". 
INFO | jvm 1 | 2023/07/20 15:36:51 | com.inductiveautomation.ignition.common.modules.ModuleLoadException: Unable to load hook class "com.inductiveautomation.perspective.gateway.GatewayHook" for module "com.inductiveautomation.perspective".
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.loadHook(ModuleManagerImpl.java:2368)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.load(ModuleManagerImpl.java:2041)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.startupModule(ModuleManagerImpl.java:1227)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$4.call(ModuleManagerImpl.java:887)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:953)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.restartModuleInternal(ModuleManagerImpl.java:867)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.restartModule(ModuleManagerImpl.java:859)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.web.pages.config.ModulePage$RestartAction.execute(ModulePage.java:575)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.web.components.ConfirmationPanel$1.onClick(ConfirmationPanel.java:50)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:190)
INFO | jvm 1 | 2023/07/20 15:36:51 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO | jvm 1 | 2023/07/20 15:36:51 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
INFO | jvm 1 | 2023/07/20 15:36:51 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
INFO | jvm 1 | 2023/07/20 15:36:51 | at java.base/java.lang.reflect.Method.invoke(Unknown Source)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:216)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:243)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:236)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:890)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:261)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:218)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:289)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:259)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:201)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:578)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1383)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1305)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.handle(RemoteHostNameLookupHandler.java:121)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.Server.handle(Server.java:563)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.HttpChannel.lambda$handle$0(HttpChannel.java:505)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:762)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:497)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:282)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:416)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:385)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:272)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.lambda$new$0(AdaptiveExecutionStrategy.java:140)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:934)
INFO | jvm 1 | 2023/07/20 15:36:51 | at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1078)
INFO | jvm 1 | 2023/07/20 15:36:51 | at java.base/java.lang.Thread.run(Unknown Source)
INFO | jvm 1 | 2023/07/20 15:36:51 | Caused by: java.lang.ClassNotFoundException: com.inductiveautomation.perspective.gateway.GatewayHook
INFO | jvm 1 | 2023/07/20 15:36:51 | at java.base/java.net.URLClassLoader.findClass(Unknown Source)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:37)
INFO | jvm 1 | 2023/07/20 15:36:51 | at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleClassLoader.loadClass(ModuleClassLoader.java:85)
INFO | jvm 1 | 2023/07/20 15:36:51 | at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
INFO | jvm 1 | 2023/07/20 15:36:51 | at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$LoadedModule.loadHook(ModuleManagerImpl.java:2340)
INFO | jvm 1 | 2023/07/20 15:36:51 | ... 64 common frames omitted
INFO | jvm 1 | 2023/07/20 15:38:03 | I [P.InternalDatabase] [14:38:03]: Creating auto-backup of internal database "config.idb"... 
INFO | jvm 1 | 2023/07/20 15:38:04 | I [P.InternalDatabase] [14:38:03]: Created auto-backup of internal database "config.idb" in 107 ms 

```

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [July 20, 2023, 2:50pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/6 "2023-07-20T14:50:52Z")

</div>

I need the full wrapper log, not just the snippet you think is important.

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [July 20, 2023, 2:51pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/7 "2023-07-20T14:51:53Z")

</div>

sorry i wiped wrapper as there is a limit what i can paste  
shall i restart gateway and paste the full wrapper then?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [July 20, 2023, 2:52pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/8 "2023-07-20T14:52:45Z")

</div>

Yes, restart. Don't paste it, upload the file.

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [July 20, 2023, 2:56pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/9 "2023-07-20T14:56:50Z")

</div>

[wrapper.log](https://forum.inductiveautomation.com/uploads/short-url/3vclbKVdFYqzMaXRT8aZdZTdqII.log) (54.6 KB)  
Please have a look

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [July 20, 2023, 3:01pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/10 "2023-07-20T15:01:33Z")

</div>

Hmm, no idea what's going on there. Maybe something wrong with the Perspective module you have, or maybe something about your backup contents causing an uncaught exception during static initialization...

You'll have to go through support and see if they can reproduce with your backup or something.

edit: make sure you don't have multiple Perspective modules in `user-lib/modules` or something weird.

---

<div class="post-metadata">

**Author:** ![hewking32](https://avatars.discourse-cdn.com/v4/letter/h/b5ac83/32.png) [@hewking32](https://forum.inductiveautomation.com/u/hewking32)\
**Post date:** [July 20, 2023, 3:05pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/11 "2023-07-20T15:05:25Z")

</div>

> 2 Any chance you say a few words about nature of "Unable to load hook class " problem?  
> 3 should antivirus be disabled during installing gateway?

Thanks a lot for the feedback - i will try wiping folder clean and start from scratch.  
Any chance you comment about antivirus - i guess it should not matter right?  
Regarding loading hook class - what is the nature of this problem in general - are modules not replaced during downgrade?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [July 20, 2023, 3:07pm UTC](https://forum.inductiveautomation.com/t/downgraded-ignition-from-8-1-30-to-8-1-25-and-perspective-module-stopped-working/76649/12 "2023-07-20T15:07:38Z")

</div>

Antivirus shouldn't matter... as long as the files get where they need to be without being modified.

Modules do get replaced. I don't know what's wrong, the Perspective module is failing to start up in a very odd manner, claiming it can't find a class that should definitely be part of the module.
