Browsercore problems continue

@PGriffith Paul, this a continuation of our discussion. Although 8.0.10-rc1 helped, there is an underlying problem with binding to an array of datasets. Whenever I bind to an array of datasets to pass data to a param in an embedded view, I get this error and for about 2 seconds browsercore spins up to about 100% of cpu. This error occurs in red on my console.

java.lang.ClassNotFoundException: com.inductiveautomation.ignition.gateway.datasource.BasicStreamingDataset
	at java.base/java.net.URLClassLoader.findClass(Unknown Source)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Unknown Source)
	at java.base/java.io.ObjectInputStream.resolveClass(Unknown Source)
	at java.base/java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
	at java.base/java.io.ObjectInputStream.readClassDesc(Unknown Source)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.base/java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject(Unknown Source)
	at java.base/java.util.HashMap.readObject(Unknown Source)
	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 java.base/java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.base/java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.base/java.io.ObjectInputStream.readArray(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.base/java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.base/java.io.ObjectInputStream.defaultReadFields(Unknown Source)
	at java.base/java.io.ObjectInputStream.readSerialData(Unknown Source)
	at java.base/java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject(Unknown Source)
	at java.base/java.io.ObjectInputStream.readObject(Unknown Source)
	at com.inductiveautomation.ignition.common.Base64.decodeToObject(Base64.java:912)
	at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.onBindingPreviewValue(JavaJsBridge.java:343)
	at jdk.internal.reflect.GeneratedMethodAccessor55.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at com.teamdev.jxbrowser.chromium.JSContext.a(SourceFile:1640)
	at com.teamdev.jxbrowser.chromium.JSContext$a.onMessageReceived(SourceFile:713)
	at com.teamdev.jxbrowser.chromium.internal.ipc.q.a(SourceFile:1085)
	at com.teamdev.jxbrowser.chromium.internal.ipc.r.run(SourceFile:69)
	at com.teamdev.jxbrowser.chromium.internal.t.run(SourceFile:79)
	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.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

Circling back - we’re tracking this issue - don’t think reporting it went unnoticed. We’ll keep this thread updated. Stack trace points pretty clearly to the culprit, so should hopefully be an easy fix.

Will you guys be holding back the release of 8.0.10 to fix this issue, or will it be released in a future version?

I’m not the one who gets to decide (nor do I have a lot of context about this issue) but it’s possible, if we determine it’s a severe issue, or a significant regression. If it’s a new issue that just happened to be exposed by other fixes, then it’ll probably have to wait for the next train.

Thank you for the response! Great to know for future reference.

Hi @Matthew.gaitan, we’re trying to reproduce your error and were wondering if you could provide any information about how this array is being populated with datasets?

Any script snippets or tag structures that you can show/describe that replicate this structure would be helpful.

Also, was this setup working in a version prior to the 8.0.10-rc1 release?

@weertske, we were able to get the noted stack trace to occur. We see that it was also an issue in 8.0.9. From what you are seeing, is the performance worse in 8.0.10 RC-1?

Thanks,
Garth

Garth, I can make it appear consistently in 8.0.10-rc1. Yes, it occurred in 8.0.9. I don’t think one version was better or worse. Although 10-rc1 significantly reduced lockups that occurred where browsercore went to 100% of cpu and stayed there.

Today’s 8.0.12 nightly build contains a fix that should address CPU usage issue mentioned here.