# AWT-EventQueue-0 Problems

**URL:** <https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128>\
**Category:** Ignition\
**Tags:** ignition80, ignition81\
**Created:** [October 6, 2023, 9:01am UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128 "2023-10-06T09:01:38Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Miguel\_Cimildoro](https://avatars.discourse-cdn.com/v4/letter/m/53a042/32.png) [@Miguel\_Cimildoro](https://forum.inductiveautomation.com/u/Miguel_Cimildoro)\
**Post date:** [October 6, 2023, 9:01am UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/1 "2023-10-06T09:01:38Z")

</div>

good morning everyone,

I have a problem that every time I start the ignition/designer a log is created and I think it may be caused by the high performance of the CPU in the gateway.

```auto
{
  "version": "8.1.22.2022110109",
  "threads": [
    {
      "name": "Attach Listener",
      "id": 5,
      "state": "RUNNABLE",
      "daemon": true,
      "system": "None",
      "scope": "Designer"
    },
    {
      "name": "AWT-EventQueue-0",
      "id": 20,
      "state": "RUNNABLE",
      "daemon": false,
      "system": "None",
      "scope": "Designer",
      "lockedMonitors": [
        {
          "lock": "java.util.Collections$SynchronizedMap@66627647",
          "frame": "com.inductiveautomation.factorysql.designer.FSQLDesignerModuleHook.getGroupConfigForResourceId(FSQLDesignerModuleHook.java:371)"
        }
      ],
      "stacktrace": [
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.normalizeNewlines(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanContent(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)",
        "java.xml@11.0.16.1/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)",
        "com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserializeXML(XMLDeserializer.java:393)",
        "com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:270)",
        "com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:248)",
        "com.inductiveautomation.ignition.common.xmlserialization.deserialization.XMLDeserializer.deserialize(XMLDeserializer.java:180)",
        "com.inductiveautomation.ignition.designer.DesignerContextImpl.deserialize(DesignerContextImpl.java:497)",
        "com.inductiveautomation.factorysql.designer.FSQLDesignerModuleHook.loadGroupConfigForProjectResource(FSQLDesignerModuleHook.java:345)",
        "com.inductiveautomation.factorysql.designer.FSQLDesignerModuleHook.getGroupConfigForResourceId(FSQLDesignerModuleHook.java:371)",
        "com.inductiveautomation.factorysql.designer.FSQLDesignerModuleHook.getConfigObjectForResourceId(FSQLDesignerModuleHook.java:273)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupNavTreeNode.getGroupConfigObject(GroupNavTreeNode.java:136)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupNavTreeNode.init(GroupNavTreeNode.java:105)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupNavTreeNode.<init>(GroupNavTreeNode.java:86)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupFolderNode.createChildNode(GroupFolderNode.java:227)",
        "com.inductiveautomation.ignition.designer.navtree.model.FolderNode.lambda$loadChildren$0(FolderNode.java:216)",
        "com.inductiveautomation.ignition.designer.navtree.model.FolderNode$$Lambda$683/0x000000010104ec40.accept(Unknown Source)",
        "java.base@11.0.16.1/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)",
        "java.base@11.0.16.1/java.util.stream.SortedOps$SizedRefSortingSink.end(Unknown Source)",
        "java.base@11.0.16.1/java.util.stream.AbstractPipeline.copyInto(Unknown Source)",
        "java.base@11.0.16.1/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)",
        "java.base@11.0.16.1/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)",
        "java.base@11.0.16.1/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)",
        "java.base@11.0.16.1/java.util.stream.AbstractPipeline.evaluate(Unknown Source)",
        "java.base@11.0.16.1/java.util.stream.ReferencePipeline.forEachOrdered(Unknown Source)",
        "com.inductiveautomation.ignition.designer.navtree.model.FolderNode.loadChildren(FolderNode.java:214)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.checkChildren(AbstractNavTreeNode.java:294)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupFolderNode.install(GroupFolderNode.java:242)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.setChildren(AbstractNavTreeNode.java:556)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.checkChildren(AbstractNavTreeNode.java:294)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupFolderNode.install(GroupFolderNode.java:242)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.setChildren(AbstractNavTreeNode.java:556)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.checkChildren(AbstractNavTreeNode.java:294)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupFolderNode.install(GroupFolderNode.java:242)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.setChildren(AbstractNavTreeNode.java:556)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.checkChildren(AbstractNavTreeNode.java:294)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupFolderNode.install(GroupFolderNode.java:242)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.setChildren(AbstractNavTreeNode.java:556)",
        "com.inductiveautomation.ignition.designer.navtree.model.AbstractNavTreeNode.checkChildren(AbstractNavTreeNode.java:294)",
        "com.inductiveautomation.factorysql.designer.model.navtree.GroupFolderNode.install(GroupFolderNode.java:242)",
        "com.inductiveautomation.factorysql.designer.model.navtree.RootTreeNode.install(RootTreeNode.java:77)",
        "com.inductiveautomation.ignition.designer.navtree.model.MutableNavTreeNode.add(MutableNavTreeNode.java:37)",
        "com.inductiveautomation.ignition.designer.navtree.model.MutableNavTreeNode.lambda$addChild$0(MutableNavTreeNode.java:25)",
        "com.inductiveautomation.ignition.designer.navtree.model.MutableNavTreeNode$$Lambda$464/0x0000000100bdfc40.run(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.event.InvocationEvent.dispatch(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventQueue.dispatchEventImpl(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventQueue$4.run(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventQueue$4.run(Unknown Source)",
        "java.base@11.0.16.1/java.security.AccessController.doPrivileged(Native Method)",
        "java.base@11.0.16.1/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventQueue.dispatchEvent(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventDispatchThread.pumpEvents(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventDispatchThread.pumpEvents(Unknown Source)",
        "java.desktop@11.0.16.1/java.awt.EventDispatchThread.run(Unknown Source)"
      ]
    },
    {
      "name": "AWT-Shutdown",
      "id": 14,
      "state": "WAITING",
      "daemon": false,
      "system": "None",
      "scope": "Designer",
      "waitingFor": {
        "lock": "java.lang.Object@5d1f8c86"
      },
      "stacktrace": [
        "java.base@11.0.16.1/java.lang.Object.wait(Native Method)",
        "java.base@11.0.16.1/java.lang.Object.wait(Unknown Source)",
        "java.desktop@11.0.16.1/sun.awt.AWTAutoShutdown.run(Unknown Source)",
        "java.base@11.0.16.1/java.lang.Thread.run(Unknown Source)"
      ]
    },

```

Do you have any idea what it is about? or if there is any other post in reference to this type of error where I can investigate it,

thanks

---

<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:** [October 6, 2023, 11:54am UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/2 "2023-10-06T11:54:04Z")

</div>

Does your project have a lot of transaction groups? It looks like the Designer is spending a lot of time deserializing SQL Bridge project resources.

---

<div class="post-metadata">

**Author:** ![Miguel\_Cimildoro](https://avatars.discourse-cdn.com/v4/letter/m/53a042/32.png) [@Miguel\_Cimildoro](https://forum.inductiveautomation.com/u/Miguel_Cimildoro)\
**Post date:** [October 6, 2023, 12:09pm UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/3 "2023-10-06T12:09:29Z")

</div>

> [@Kevin.Herron](#):
>
> It looks like the Designer is spending a lot of time deserializing SQL Bridge project resources.

yes, I'm practically sending all the easycharts signals through the transaction groups ☹

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 6, 2023, 12:44pm UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/4 "2023-10-06T12:44:10Z")

</div>

You might want to consider using a scripted alternative to transaction groups if you have more than a few dozen.

---

<div class="post-metadata">

**Author:** ![Miguel\_Cimildoro](https://avatars.discourse-cdn.com/v4/letter/m/53a042/32.png) [@Miguel\_Cimildoro](https://forum.inductiveautomation.com/u/Miguel_Cimildoro)\
**Post date:** [October 6, 2023, 12:50pm UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/5 "2023-10-06T12:50:21Z")

</div>

> [@pturmel](#):
>
> alternative

hello phil, what other alternatives do you recommend? because practically I have almost all the signals being transmitted by the transaction grups, some are executed every time the value changes and others are executed every second with a record time of 6months.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [October 6, 2023, 1:00pm UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/6 "2023-10-06T13:00:10Z")

</div>

Any transaction group that records to a DB can be replaced by a script that performs the following:

- Call `system.tag.readBlocking()` with a list of needed tags, and/or call `system.opc.readValues()` with a list of needed OPC Items (or both),

- Perform any arithmetic necessary for expression items using the above values,

- Execute `system.db.runPrepUpdate()` call to INSERT or UPDATE into the database,

- Perform any writes to handshake tag(s), if applicable. (Many more possibilities than the simple fire-and-forget handshake you otherwise must use.)

The above operations would be called from a gateway timer event or gateway scheduled event for any unconditional groups. You would call from a gateway tag change event for triggered groups. If your trigger condition is an always-run expression item, you would make an expression tag from that expression and monitor changes of the expression tag.

Using scripts allows you to factor out common operations into subroutines, and to monitor multiple tags with a single script (as long as they use the same underlying structures). Multiple unconditional recordings running at the same pace can be packed into a single script using looping and subroutines.

---

<div class="post-metadata">

**Author:** ![amiller1](https://avatars.discourse-cdn.com/v4/letter/a/85f322/32.png) [@amiller1](https://forum.inductiveautomation.com/u/amiller1)\
**Post date:** [December 12, 2023, 7:30pm UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/7 "2023-12-12T19:30:31Z")

</div>

Phil, if this transaction group is ran on a tag change event tied to a boolean tag, how would you prevent the transaction group from running twice (when the tag goes high and when the tag goes low)? Would you have to do a tag read and evaluate in your script? Seems somewhat inefficient if the script is triggered from a tag change and then doing the tag read on the same tag in your script.

---

<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:** [December 12, 2023, 7:32pm UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/8 "2023-12-12T19:32:39Z")

</div>

Tag change events include the current (and previous) value. Just check if the current value is True before doing things.

---

<div class="post-metadata">

**Author:** ![amiller1](https://avatars.discourse-cdn.com/v4/letter/a/85f322/32.png) [@amiller1](https://forum.inductiveautomation.com/u/amiller1)\
**Post date:** [December 12, 2023, 7:41pm UTC](https://forum.inductiveautomation.com/t/awt-eventqueue-0-problems/80128/9 "2023-12-12T19:41:31Z")

</div>

Thanks Kevin! you a real one 👌
