[8.0.16] readBlocking return null before realtime provider Complete tag loading - get end of tag load?

Ignition 8.0.16

When the gateway start, my realtime tag’s provider take about 10-15 seconds to load.

During the tag’s provider load, if we have some system.tag.readBlocking or system.tag.browse
in the gateway startup script or in expression tag with runscript, some readBlockingreturn call return null.

Is there a way to determine that the tag provider has finished to load all tags ?

If I try:

from com.inductiveautomation.ignition.gateway import IgnitionGateway
context = IgnitionGateway.get()

context.getTagManager().getTagProvider​("default").getStatusInformation().get().isAvailable()
context.getTagManager().getTagProvider​("default").getStatusInformation().get().getStatus()

this return True and Running from the beginning.
We dont’ have any information in the SDK about the end of the tag load except the gateway log?

Complete tag loading in x seconds

Hi,

Unfortunately it does seem like the tag loading is completely asynchronous to the startup/status update. We should change this to make status reflect the tag load as well. Should be pretty easy to do, we’ll try to get it in soon.

1 Like

Any news about this item in 8.1.0 ?or 8.0.17 ?

Hi,

Is there any change in 8.1.1 ?

Hi Lionel,

Sorry I didn’t get this pushed along sooner, I’m going to try to handle it now so it can get into 8.1.2. I’ll let you know when it makes it into the nightlies.

1 Like

Hi,

As I look into this… is this something you’re seeing from a module, or actually from a gateway startup script? Now that I look at it, I just don’t see how the gateway startup script could be run before the tags are loaded.

An expression tag probably could run before other tags have been loaded, and this is something that we would like to improve, but it’s difficult.

I can fairly easily made the status better, but I can’t figure out how the gateway startup script would run before the tag provider would be set to “started”. With a custom module, it may be more possible.

Hi @Colby.Clegg ,

Yes, the script with readBlocking returning null when the provider is not loaded is triggerred with an gateway expression tag.

We have some traits to perform once on both node of a gateway redundant pair, so we can’t use the gateway startup script which is only executed on the active node.

The only solution for us was to use tag expression script which are executed on both nodes.
When the tag expression script is executed with success (tag provider is fully available) a flag is set to bypass next executions.

I think we are are seeing this:

  1. in gateway tag expression script
  2. in gateway startup script
  3. in module using readblocking or tag browse shortly after the module startup.

Example of use case involved: generate some cache data or browse tags to create mirror tags tree in a managed tag provider for a replay module.

At moment, we workaround with some “at startup wait 30 seconds” before read/browse the tag provider…

IMHO, if it will be enough if it was possible to add a .isLoaded() method to the StatusInformation of the tag provider for providing some information about the tag loading end.