Delay in tag update for tags that are using driven type scan class

It's this thread:

Thread [provider-default-batch-1] id=67, (RUNNABLE)
    owns synchronizer: java.util.concurrent.ThreadPoolExecutor$Worker@510383bb
    kotlin.coroutines.jvm.internal.ContinuationImpl.<init>(ContinuationImpl.kt:102)
    com.inductiveautomation.ignition.gateway.opcua.util.ManagedObject$get$1.<init>(ManagedObject.kt)
    com.inductiveautomation.ignition.gateway.opcua.util.ManagedObject.get(ManagedObject.kt)
    com.inductiveautomation.ignition.gateway.opcua.client.connection.OpcUaConnectionWrite$writeBlocking$1.invokeSuspend(OpcUaConnectionWrite.kt:63)
    kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
    kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:271)
    kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:79)
    kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:54)
    kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
    kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:36)
    kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
    com.inductiveautomation.ignition.gateway.opcua.client.connection.OpcUaConnectionWrite$DefaultImpls.writeBlocking(OpcUaConnectionWrite.kt:62)
    com.inductiveautomation.ignition.gateway.opcua.client.connection.OpcUaConnectionWrite$DefaultImpls.write(OpcUaConnectionWrite.kt:53)
    com.inductiveautomation.ignition.gateway.opcua.client.connection.OpcUaConnection.write(OpcUaConnection.kt:35)
    app//com.inductiveautomation.ignition.gateway.opc.OpcConnectionManagerImpl$ConnectionWrapper.write(OpcConnectionManagerImpl.java:620)
    app//com.inductiveautomation.ignition.gateway.opc.OpcConnectionManagerImpl.lambda$write$12(OpcConnectionManagerImpl.java:385)
    app//com.inductiveautomation.ignition.gateway.opc.OpcConnectionManagerImpl$$Lambda$1033/0x0000000800ece840.map(Unknown Source)
    app//com.inductiveautomation.ignition.gateway.util.GroupMapCollate.lambda$groupMapCollate$0(GroupMapCollate.java:25)
    app//com.inductiveautomation.ignition.gateway.util.GroupMapCollate$$Lambda$1034/0x0000000800ecec40.map(Unknown Source)
    app//com.inductiveautomation.ignition.gateway.util.GroupMapCollate.lambda$groupMapCollateIndexed$5(GroupMapCollate.java:53)
    app//com.inductiveautomation.ignition.gateway.util.GroupMapCollate$$Lambda$1019/0x0000000800ec5840.apply(Unknown Source)
    java.base@11.0.5/java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    java.base@11.0.5/java.util.HashMap$EntrySpliterator.forEachRemaining(Unknown Source)
    java.base@11.0.5/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    java.base@11.0.5/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    java.base@11.0.5/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
    java.base@11.0.5/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    java.base@11.0.5/java.util.stream.ReferencePipeline.collect(Unknown Source)
    app//com.inductiveautomation.ignition.common.util.Futures.sequence(Futures.java:26)
    app//com.inductiveautomation.ignition.gateway.util.GroupMapCollate.groupMapCollateIndexed(GroupMapCollate.java:62)
    app//com.inductiveautomation.ignition.gateway.util.GroupMapCollate.groupMapCollate(GroupMapCollate.java:28)
    app//com.inductiveautomation.ignition.gateway.opc.OpcConnectionManagerImpl.write(OpcConnectionManagerImpl.java:378)
    app//com.inductiveautomation.ignition.gateway.tags.actors.factories.value.opc.OpcActorFactory$OpcWriteBatch.execute(OpcActorFactory.java:1022)
    app//com.inductiveautomation.ignition.gateway.tags.evaluation.BatchContextImpl$OpController.run(BatchContextImpl.java:175)
    java.base@11.0.5/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    java.base@11.0.5/java.util.concurrent.FutureTask.run(Unknown Source)
    java.base@11.0.5/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    java.base@11.0.5/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.base@11.0.5/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.base@11.0.5/java.lang.Thread.run(Unknown Source)

Prior to 8.1.3 there's only a single global batch that writes to OPC tags are executed in, regardless of what server they belong to. We changed it so the batching is "keyed" per OPC connection instead, so a slow responding server can't hold up write batches destined for a different connection all together.

You mentioned you have tags coming multiple OPC connections, which is why I keep thinking this could be part of the issue.

Yes, this is correct.