OEEDTRPCProxy

Greetings,

Ignition on linux
7.6.4-rc3 (b2013110714) | 64-bit

seem to have a memory leak in the client. The only error console log is showing is a repeated OEEDTRCProxy getProduction issue attached below. I suspect this occurs when there is no data returned eg during changeovers

Memory diag screen shot after running 12 hours (very sluggish response)

I have also included initial memory after a clean restart.

I’m running with generous memory limits in this case: Command line launch as:

java -classpath /opt/clientlauncher/clientlauncher-data/launchclient.jar -Djavaws.sr.gateway.addr.0=10.250.201.201:8088/main -Djavaws.sr.scope=C -Djavaws.sr.launchts=1395289193130 -Djavaws.sr.main=com.inductiveautomati.factorypmi.application.runtime.ClientLaunchHook -Dinitial.heap.size=128M -Dmax.heap.size=1024M -Djava.vm.args="-XX:MaxPermSize=1024M" -Dsun.java2d.d3d=false -Djavaws.sr.project=MES -Djavaws.sr.screen=0 com.inductiveautomation.ignition.client.launch.BootstrapSwing

Regular restart is the only current workaround.

ERROR [OEEDTRPCProxy-QueryExecuter 3] getProductionHistory
com.inductiveautomation.ignition.client.gateway_interface.GatewayException: Index: 0, Size: 0
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.newGatewayException(GatewayInterface.java:313)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.sendMessage(GatewayInterface.java:287)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.sendMessage(GatewayInterface.java:244)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.moduleInvoke(GatewayInterface.java:773)
at com.sepasoft.oeedt.rpc.OEEDTRPCProxy.invoke(OEEDTRPCProxy.java:19)
at com.sepasoft.oeedt.rpc.OEEDTRPCProxy.getProductionHistory(OEEDTRPCProxy.java:99)
at com.sepasoft.oeedt.binding.ProductionHistoryBinding.execute(ProductionHistoryBinding.java:98)
at com.inductiveautomation.factorypmi.application.binding.ExtensibleBinding$BindingTypeQuery.execute(ExtensibleBinding.java:241)
at com.inductiveautomation.factorypmi.application.gateway.QueryManager$Query.execute(QueryManager.java:690)
at com.inductiveautomation.factorypmi.application.gateway.QueryManager$Query.access$500(QueryManager.java:663)
at com.inductiveautomation.factorypmi.application.gateway.QueryManager$QueryExecutor.run(QueryManager.java:314)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at com.inductiveautomation.ignition.gateway.datasource.BasicStreamingDataset.getValueAt(BasicStreamingDataset.java:136)
at com.sepasoft.oeedt.common.db.support.RuntimeDataQueryManager.calculateDataByMinute(RuntimeDataQueryManager.java:588)
at com.sepasoft.oeedt.common.db.support.RuntimeDataQueryManager.buildProductionHistory(RuntimeDataQueryManager.java:218)
at com.sepasoft.oeedt.common.db.support.RuntimeDataQueryManager.getProductionHistory(RuntimeDataQueryManager.java:174)
at com.sepasoft.oeedt.gateway.OEEDTGatewayHook$OEEDTRPCHandler.getProductionHistory(OEEDTGatewayHook.java:661)
at sun.reflect.GeneratedMethodAccessor52.invoke(null)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.inductiveautomation.ignition.gateway.servlets.gateway.functions.ModuleInvoke.invoke(ModuleInvoke.java:123)
at com.inductiveautomation.ignition.gateway.servlets.Gateway.doPost(Gateway.java:373)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at com.inductiveautomation.ignition.gateway.bootstrap.MapServlet.service(MapServlet.java:85)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:724)

Memory Leak is Confirmed.

To rule out any other interactions I started a blank project with only a single MainWindow containing a single timer running every 600 seconds.

Given that we are running linux clients and this platform likely less tested ran trial on a windows client running Oracle Java 1.7.0_51 instead.

The timer executed the following code:

import java.lang.Runtime as rt
from java.util import Calendar
cal = Calendar.getInstance()
root=rt.getRuntime()
mb=1024**2
used=root.totalMemory()/mb-root.freeMemory()/mb
print cal.getTime(), “total=”,root.totalMemory()/mb,“free=”,root.freeMemory()/mb,‘used=’,used,“max=”,root.maxMemory()/mb

As a blank window plus timer only the used memory footprint stayed constant over 12 hours .

Sofar so good.

Now I added a single analysis time Chart. (settings as shown)

In this case the used memory starts at 22Mb and keeps climbing until if fills up max memory space. After approx 5 hours it has maxed out memory, and when I checked at 18hrs it had a out of permgen memory error and crashed before I could get a copy of the console. ( I have just started a rerun so I can get output results)

We have a problem houston :slight_smile:

Here is data with mainwindow, the timer and a chart object containing default dataset.

Creating frame. extendedState=6, bounds=java.awt.Rectangle[x=0,y=0,width=1024,height=768]
INFO [GatewayConnectionManager-Thread-5] Skipping local challenge - directory doesn’t exist.
INFO [Gateway-Thread-5] Starting up polling tag manager, polling rate: 250 ms
INFO [ReportingClientHook-Thread-5] Starting up Reporting Module. Mode: Activated
Initializing ReportMill (Build Date: May-27-05, Version 9.0, JVM 24.51-b03, User user)
INFO [RecipeClientModuleHook-Thread-5] Starting Recipe client module hook.
INFO [QualityClientModuleHook-Thread-5] Starting Quality client module hook.
INFO [OEE_DTClientModuleHook-Thread-5] Starting OEE/DT client module hook.
INFO [OEEDTDesignerContext-Thread-5] Creating OEEDTDesignerContext for memtest
INFO [OEE_DTClientModuleHook-Thread-5] Registered ProductionHistoryBinding.
INFO [OEE_DTClientModuleHook-Thread-5] Registered ScheduledVsActualBinding.
INFO [OEE_DTClientModuleHook-Thread-5] Registered DownTimeHistoryBinding.
INFO [ProductionClientModuleHook-Thread-5] ProductionClientModuleHook startup
INFO [ProductionClientModuleHook-Thread-5] Initializing Client Production scripts.
INFO [FPMIApp-AWT-EventQueue-0] Starting Up…
WARN [ClientScriptConfig-AWT-EventQueue-0] Started up without shutting down first.
Mon Mar 24 10:05:10 EST 2014 total= 36 free= 8 used= 28 max= 247
Mon Mar 24 10:15:10 EST 2014 total= 36 free= 4 used= 32 max= 247
Mon Mar 24 10:25:10 EST 2014 total= 36 free= 14 used= 22 max= 247
Mon Mar 24 10:35:10 EST 2014 total= 36 free= 14 used= 22 max= 247
Mon Mar 24 10:45:10 EST 2014 total= 36 free= 6 used= 30 max= 247
Mon Mar 24 10:55:10 EST 2014 total= 36 free= 9 used= 27 max= 247
Mon Mar 24 11:05:10 EST 2014 total= 36 free= 11 used= 24 max= 247
Mon Mar 24 11:15:10 EST 2014 total= 36 free= 4 used= 32 max= 247
Mon Mar 24 11:25:10 EST 2014 total= 36 free= 7 used= 29 max= 247
Mon Mar 24 11:35:10 EST 2014 total= 36 free= 9 used= 27 max= 247
Mon Mar 24 11:45:10 EST 2014 total= 36 free= 12 used= 24 max= 247
Mon Mar 24 11:55:10 EST 2014 total= 36 free= 4 used= 32 max= 247
Mon Mar 24 12:05:10 EST 2014 total= 36 free= 7 used= 29 max= 247
Mon Mar 24 12:15:10 EST 2014 total= 36 free= 10 used= 26 max= 247
Mon Mar 24 12:25:10 EST 2014 total= 36 free= 12 used= 24 max= 247
Mon Mar 24 12:35:10 EST 2014 total= 36 free= 5 used= 31 max= 247
Mon Mar 24 12:45:10 EST 2014 total= 36 free= 7 used= 29 max= 247
Mon Mar 24 12:55:10 EST 2014 total= 36 free= 7 used= 29 max= 247
Mon Mar 24 13:05:10 EST 2014 total= 36 free= 6 used= 30 max= 247
Mon Mar 24 13:15:10 EST 2014 total= 36 free= 4 used= 32 max= 247
Mon Mar 24 13:25:10 EST 2014 total= 36 free= 13 used= 23 max= 247
Mon Mar 24 13:35:10 EST 2014 total= 36 free= 5 used= 31 max= 247
Mon Mar 24 13:45:10 EST 2014 total= 36 free= 8 used= 28 max= 247
Mon Mar 24 13:55:10 EST 2014 total= 36 free= 10 used= 26 max= 247
Mon Mar 24 14:05:10 EST 2014 total= 36 free= 7 used= 29 max= 247
Mon Mar 24 14:15:10 EST 2014 total= 36 free= 6 used= 30 max= 247
Mon Mar 24 14:25:10 EST 2014 total= 36 free= 8 used= 28 max= 247
Mon Mar 24 14:35:10 EST 2014 total= 36 free= 11 used= 25 max= 247
Mon Mar 24 14:45:10 EST 2014 total= 36 free= 3 used= 32 max= 247
Mon Mar 24 14:55:10 EST 2014 total= 36 free= 6 used= 30 max= 247
Mon Mar 24 15:05:10 EST 2014 total= 36 free= 7 used= 29 max= 247
Mon Mar 24 15:15:10 EST 2014 total= 36 free= 10 used= 26 max= 247
Mon Mar 24 15:25:10 EST 2014 total= 36 free= 11 used= 25 max= 247
Mon Mar 24 15:35:10 EST 2014 total= 36 free= 4 used= 32 max= 247
Mon Mar 24 15:45:10 EST 2014 total= 36 free= 6 used= 30 max= 247
Mon Mar 24 15:55:10 EST 2014 total= 36 free= 9 used= 27 max= 247
Mon Mar 24 16:05:10 EST 2014 total= 36 free= 11 used= 25 max= 247
Mon Mar 24 16:15:10 EST 2014 total= 36 free= 4 used= 32 max= 247
Mon Mar 24 16:25:10 EST 2014 total= 36 free= 7 used= 29 max= 247

Memory usage looks good :slight_smile:

Now the same with Here is data with mainwindow, the timer and a analysis time chart object as per previous post.

Creating frame. extendedState=6, bounds=java.awt.Rectangle[x=0,y=0,width=1024,height=768]
INFO [GatewayConnectionManager-Thread-5] Skipping local challenge - directory doesn’t exist.
INFO [Gateway-Thread-5] Starting up polling tag manager, polling rate: 250 ms
INFO [ReportingClientHook-Thread-5] Starting up Reporting Module. Mode: Activated
Initializing ReportMill (Build Date: May-27-05, Version 9.0, JVM 24.51-b03, User user)
INFO [RecipeClientModuleHook-Thread-5] Starting Recipe client module hook.
INFO [QualityClientModuleHook-Thread-5] Starting Quality client module hook.
INFO [OEE_DTClientModuleHook-Thread-5] Starting OEE/DT client module hook.
INFO [OEEDTDesignerContext-Thread-5] Creating OEEDTDesignerContext for memtest
INFO [OEE_DTClientModuleHook-Thread-5] Registered ProductionHistoryBinding.
INFO [OEE_DTClientModuleHook-Thread-5] Registered ScheduledVsActualBinding.
INFO [OEE_DTClientModuleHook-Thread-5] Registered DownTimeHistoryBinding.
INFO [ProductionClientModuleHook-Thread-5] ProductionClientModuleHook startup
INFO [ProductionClientModuleHook-Thread-5] Initializing Client Production scripts.
INFO [FPMIApp-AWT-EventQueue-0] Starting Up…
WARN [ClientScriptConfig-AWT-EventQueue-0] Started up without shutting down first.
Mon Mar 24 10:02:14 EST 2014 total= 39 free= 16 used= 23 max= 247
Mon Mar 24 10:12:14 EST 2014 total= 49 free= 14 used= 35 max= 247
Mon Mar 24 10:22:14 EST 2014 total= 49 free= 21 used= 41 max= 247
Mon Mar 24 10:32:14 EST 2014 total= 49 free= 11 used= 38 max= 247
Mon Mar 24 10:42:14 EST 2014 total= 49 free= 13 used= 36 max= 247
Mon Mar 24 10:52:14 EST 2014 total= 82 free= 29 used= 53 max= 247
Mon Mar 24 11:02:14 EST 2014 total= 82 free= 25 used= 57 max= 247
Mon Mar 24 11:12:14 EST 2014 total= 82 free= 34 used= 48 max= 247
Mon Mar 24 11:22:14 EST 2014 total= 82 free= 26 used= 56 max= 247
Mon Mar 24 11:32:14 EST 2014 total= 82 free= 29 used= 53 max= 247
Mon Mar 24 11:42:14 EST 2014 total= 82 free= 18 used= 63 max= 247
Mon Mar 24 11:52:14 EST 2014 total= 138 free= 62 used= 76 max= 247
Mon Mar 24 12:02:14 EST 2014 total= 138 free= 36 used= 102 max= 247
Mon Mar 24 12:12:14 EST 2014 total= 138 free= 60 used= 78 max= 247
Mon Mar 24 12:22:14 EST 2014 total= 138 free= 62 used= 76 max= 247
Mon Mar 24 12:32:14 EST 2014 total= 138 free= 44 used= 94 max= 247
Mon Mar 24 12:42:14 EST 2014 total= 138 free= 41 used= 97 max= 247
Mon Mar 24 12:52:14 EST 2014 total= 138 free= 20 used= 118 max= 247
Mon Mar 24 13:02:14 EST 2014 total= 138 free= 24 used= 113 max= 247
Mon Mar 24 13:12:14 EST 2014 total= 138 free= 36 used= 102 max= 247
Mon Mar 24 13:22:14 EST 2014 total= 138 free= 27 used= 111 max= 247
Mon Mar 24 13:32:14 EST 2014 total= 138 free= 36 used= 102 max= 247
Mon Mar 24 13:42:14 EST 2014 total= 228 free= 107 used= 120 max= 247
Mon Mar 24 13:52:14 EST 2014 total= 228 free= 113 used= 115 max= 247
Mon Mar 24 14:02:14 EST 2014 total= 228 free= 70 used= 158 max= 247
Mon Mar 24 14:12:14 EST 2014 total= 228 free= 79 used= 149 max= 247
Mon Mar 24 14:22:14 EST 2014 total= 228 free= 98 used= 130 max= 247
Mon Mar 24 14:32:14 EST 2014 total= 228 free= 56 used= 172 max= 247
Mon Mar 24 14:42:14 EST 2014 total= 228 free= 82 used= 146 max= 247
Mon Mar 24 14:52:14 EST 2014 total= 228 free= 62 used= 166 max= 247
Mon Mar 24 15:02:14 EST 2014 total= 228 free= 96 used= 132 max= 247
Mon Mar 24 15:12:14 EST 2014 total= 228 free= 72 used= 156 max= 247
Mon Mar 24 15:22:14 EST 2014 total= 228 free= 48 used= 180 max= 247
Mon Mar 24 15:32:15 EST 2014 total= 228 free= 31 used= 197 max= 247
Mon Mar 24 15:42:15 EST 2014 total= 228 free= 81 used= 147 max= 247
Mon Mar 24 15:52:15 EST 2014 total= 228 free= 25 used= 203 max= 247
Mon Mar 24 16:02:15 EST 2014 total= 228 free= 20 used= 208 max= 247
Mon Mar 24 16:12:15 EST 2014 total= 228 free= 17 used= 211 max= 247
Mon Mar 24 16:22:15 EST 2014 total= 228 free= 19 used= 209 max= 247

As you can see the used memory is being gobbled up slowly until client eventually crashes.

Thanks for the testing. I will re-create the setup here and confirm what is going on.

Regards,