# Singleton Missing After Client Logout

**URL:** <https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083>\
**Category:** Module Development\
**Tags:** sdk, ignition79\
**Created:** [May 17, 2018, 9:12pm UTC](https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083 "2018-05-17T21:12:34Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![cody.tamaki](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@cody.tamaki](https://forum.inductiveautomation.com/u/cody.tamaki)\
**Post date:** [May 17, 2018, 9:12pm UTC](https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083/1 "2018-05-17T21:12:34Z")

</div>

I’m having trouble with a module losing a singleton that I’ve created when a client logs out.

Client Hook Example:

```auto
public class ClientHook extends AbstractClientModuleHook {

    @Override
    public void startup(ClientContext context, LicenseState activationState) throws Exception {
        super.startup(context, activationState);
        this.context = context;
        MySingleton.initialize(context);
    }

}

```

Then my singleton looks like:

```auto
public class MySingleton {

    private static final Logger logger = LoggerFactory.getLogger();
    private static MySingleton instance;

    private ReplayRequestEngine(ClientContext context){
        this.context = context;

    }

    public synchronized static void initialize(ClientContext context){
        logger.trace("Initializing Singleton Instance");

        if(instance == null)
            instance = new MySingleton(context);
    }

    public static ReplayRequestEngine getInstance(){
        return instance;
    }

}

```

The first time I run this code I can see the logger working, but after I log in and back out the logger doesn’t seem to work anymore, and neither do any methods of my singleton. Any ideas?

---

<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 17, 2018, 9:20pm UTC](https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083/2 "2018-05-17T21:20:09Z")

</div>

~~`startup()` is called once, when the client loads the module, not every time a login occurs.~~

edit: wrong!

---

<div class="post-metadata">

**Author:** ![cody.tamaki](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@cody.tamaki](https://forum.inductiveautomation.com/u/cody.tamaki)\
**Post date:** [May 17, 2018, 9:21pm UTC](https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083/3 "2018-05-17T21:21:05Z")

</div>

My singleton should persist after that no?

---

<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 17, 2018, 9:22pm UTC](https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083/4 "2018-05-17T21:22:02Z")

</div>

Yeah, but I actually need to verify what I just said… I’m too used to working in Gateway scope.

---

<div class="post-metadata">

**Author:** ![cody.tamaki](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@cody.tamaki](https://forum.inductiveautomation.com/u/cody.tamaki)\
**Post date:** [May 17, 2018, 9:23pm UTC](https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083/5 "2018-05-17T21:23:25Z")

</div>

Actually looking at the logs, it seems that when I log back in it re-runs my client hook startup. I can see my logger from the client hook but for some reason I’m missing the logger in my singleton class…

public class ClientHook extends AbstractClientModuleHook {

```
@Override
public void startup(ClientContext context, LicenseState activationState) throws Exception {
    super.startup(context, activationState);
    this.context = context;
    logger.info("Initalizing Singleton Instance");
    MySingleton.initialize(context);
}

```

}

---

<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 17, 2018, 9:25pm UTC](https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083/6 "2018-05-17T21:25:01Z")

</div>

Yeah I think I’m wrong about that. So… carry on debugging, not sure why things are weird 🙂

---

<div class="post-metadata">

**Author:** ![cody.tamaki](https://avatars.discourse-cdn.com/v4/letter/c/b487fb/32.png) [@cody.tamaki](https://forum.inductiveautomation.com/u/cody.tamaki)\
**Post date:** [May 17, 2018, 9:48pm UTC](https://forum.inductiveautomation.com/t/singleton-missing-after-client-logout/18083/7 "2018-05-17T21:48:01Z")

</div>

Ah I think I got it. I was depending on something in your ClientExecutionEngine in my singleton and I needed to force it to re-initialize. Setting my singleton to null in the ClientHook shutdown method seems to fix everything for me.
