# AbstractDriver Stopped Working

**URL:** <https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487>\
**Category:** Module Development\
**Tags:** ignition80\
**Created:** [May 6, 2020, 3:54pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487 "2020-05-06T15:54:21Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 6, 2020, 3:54pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/1 "2020-05-06T15:54:21Z")

</div>

I recently upgraded a gateway from 8.0.4 to 8.0.12 and a custom module I made that extends the AbstractDriverModuleHook class broke. What I mean by that is it no longer polls the items under the device instance in the gateway. All items, probably around 100 of them, have bad tag quality.

Can someone tell me if something has changed in the way this class is implemented?

Thanks,  
Brandon

---

<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:** [May 6, 2020, 4:01pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/2 "2020-05-06T16:01:20Z")

</div>

I assume you mean your driver extends AbstractDriver. Nothing has really changed though, so you’ll have to find some errors or add some logging to get more information about what’s going on here.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 6, 2020, 5:45pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/3 "2020-05-06T17:45:04Z")

</div>

Thanks for the response. I’m having trouble understanding what is different then. Yes it also extends abstract driver. The only variable that has changed is going from version 8.0.4 to 8.0.12.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 6, 2020, 5:47pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/4 "2020-05-06T17:47:13Z")

</div>

> [@OPC-UA driver for Ignition 8: New "Device" interface?](http://forum.inductiveautomation.com/t/opc-ua-driver-for-ignition-8-new-device-interface/25046/7):
>
> Ah, and just as a warning to you and anyone else who might be using this new Device API, there are some breaking changing coming down the line frowning Whenever Milo 0.5.0 is released and Ignition updates to it there will be some required changes to your Device implementations. You can get a feel for what’s changing here: [Update opc-ua-device example for upcoming Device API changes by kevinherron · Pull Request #43 · inductiveautomation/ignition-sdk-examples · GitHub](https://github.com/inductiveautomation/ignition-sdk-examples/pull/43) and the corresponding ch…

Does this statement apply to my module?

---

<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:** [May 6, 2020, 5:50pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/5 "2020-05-06T17:50:26Z")

</div>

No, it hasn’t happened yet and for the most part doesn’t apply to anything using the old Driver/AbstractDriver APIs. They will manifest as compilation errors when it happens, so it won’t be very surprising.

Speaking of compilation errors… have you tried updating the version of the Ignition SDK in your dependencies to 8.0.12 and making sure it still compiles?

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 6, 2020, 6:00pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/6 "2020-05-06T18:00:42Z")

</div>

No I have not. Are you saying that every time I update the gateway version I have to check the dependencies on my module project? I did not have to do this in version 7.9.x.

---

<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:** [May 6, 2020, 6:12pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/7 "2020-05-06T18:12:01Z")

</div>

Not every time, but the API provided by the OPC UA module is not stable right now.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 6, 2020, 6:13pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/8 "2020-05-06T18:13:00Z")

</div>

Understood. I just updated my dependency and will let you know what I find. Thanks for the help!

EDIT:  
The build was successful. Do you think I need to update my module with this new build?

---

<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:** [May 6, 2020, 6:23pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/9 "2020-05-06T18:23:28Z")

</div>

If you didn’t make any changes there’s no reason to update it. I was only concerned that maybe some API changed and your module wasn’t working because of some runtime error, but that doesn’t seem to be the case.

You just need to start troubleshooting now.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 6, 2020, 6:43pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/10 "2020-05-06T18:43:41Z")

</div>

Alright. I will look into it.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 7, 2020, 7:22pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/11 "2020-05-07T19:22:20Z")

</div>

Just for posterity. The problem was fixed by right-clicking on one of the tags and selected restart tag. Then all of the tags came back with good quality.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 19, 2020, 1:02pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/12 "2020-05-19T13:02:00Z")

</div>

UPDATE:

This is continuing to be an issue. I can restart a tag and get them to come back but this is not a valid solution. The diagnostics says Unknown\_InitialValue.

@Kevin.Herron Does the AbstractDriver still support a Direct Tag Group? I am using that instead of the subscribed model because I could not get that to work reliably when I made the driver back in 7.9

Do you know what exactly Unknown\_InitialValue means?

---

<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:** [May 19, 2020, 1:11pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/13 "2020-05-19T13:11:17Z")

</div>

That’s just the starting quality for any Ignition tag. If your driver isn’t ever sending a new value it would stay at that quality.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 19, 2020, 1:41pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/14 "2020-05-19T13:41:22Z")

</div>

> [@Kevin.Herron](#):
>
> If your driver isn’t ever sending a new value it would stay at that quality.

I think that is the problem. My driver only sends new values if the tag asks for it. So if a tag was set on a direct polling group, will it send a new request after seeing that initial quality tag?

EDIT:  
 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/2X/2/26270a3253694546360b0e60a8eb49f7beeb0dd6.png)  
This is what the diagnostics says for a tag that is not working.

---

<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:** [May 19, 2020, 1:49pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/15 "2020-05-19T13:49:32Z")

</div>

When you create an OPC tag the driver sees it as new subscription item being added. If you’re using AbstractDriver the bookkeeping is handled for you and ultimately your implementation of `createSubscribeRequest` or more likely `createReadRequest` is called and that Request object you returned is repeatedly executed at the subscription rate.

It’s up to your Request implementation to do something during the execution that gets and updates the values for the ReadItems received in the create call.

All those diagnostics you’re looking at mean is that you created a tag and your driver never sent a value.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 19, 2020, 3:10pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/16 "2020-05-19T15:10:22Z")

</div>

Is there an updated example of the AbstractTagDriver so I can compare it to my code?

I feel like I am 99% there just think something is missing to cover this edge case that is happening.

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:** [May 19, 2020, 3:42pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/17 "2020-05-19T15:42:21Z")

</div>

The latest example is from the `ignition-7.9` branch of the examples repo: [ignition-sdk-examples/AbstractTagDriverExample at ignition-7.9 · inductiveautomation/ignition-sdk-examples · GitHub](https://github.com/inductiveautomation/ignition-sdk-examples/tree/ignition-7.9/AbstractTagDriverExample)

Here’s a version I just updated real quick for Ignition 8 and it still works. [AbstractTagDriverExample.zip](https://forum.inductiveautomation.com/uploads/short-url/jUFkwVDJGBj5fDQRieKFWisvdsL.zip) (19.7 KB)

At no point in this entire exchange did you mention you were using AbstractTagDriver until now. That probably wasted a lot of both our time.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [May 19, 2020, 3:45pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/18 "2020-05-19T15:45:57Z")

</div>

Thank you for the help Kevin. I apologize for not being precise.

---

<div class="post-metadata">

**Author:** ![brandon1](https://avatars.discourse-cdn.com/v4/letter/b/ea666f/32.png) [@brandon1](https://forum.inductiveautomation.com/u/brandon1)\
**Post date:** [November 20, 2020, 8:38pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/19 "2020-11-20T20:38:30Z")

</div>

Hey @Kevin.Herron.

Just wanted to circle back on this. My driver is working, but it will not work on when failing over to a backup of a redundant pair. I am concerned that since the old AbstractTagDriver is deprecated that these issues may never be fixed. Can you please give me some advice on how I should move forward?

Should I rewrite this in the new OPC-UA Device model?

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:** [November 20, 2020, 8:47pm UTC](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487/20 "2020-11-20T20:47:19Z")

</div>

What doesn’t work about it on failover?

AbstractTagDriver has never had any redundancy-specific behavior. There’s not really anything to have changed or stopped working in that regard.

[Next page](https://forum.inductiveautomation.com/t/abstractdriver-stopped-working/34487.md?page=2)
