Смотри есть необнуляемый контейнер С1 и обнуляемый С2. В С1 есть сервис А, а в С2 сервис Б. Сервис Б есть в конструктора сервиса А. Если ты получил из композитного контейнера сервис А, то он закешируется в С1 и внутри него уже будет экземпляр сервиса Б. Даже если ты очистишь С2, то в С1 останется сервис А со старым экземпляром сервиса Б.
смотри, тут вариантов несколько и все под нашим контролем:
В конце, когда мы ожидаем "очищения", всё, что не записано в стейте из С2 исчезнет. Но там останется сервис Б, т.к. он залип в сервисе А.
У нас 2 решения:
- продолжаем выполнение и это скорее всего плохо
- мы сбрасываем воркер (считай все контейнеры) и докладываем о стейте
разработчик видит это и у него 2 варианта
* перенести сервис Б в контейнер С1
* пофиксить сервис А чтобы не было стейта