Open
Description
The Circular Dependency check is unable to detect circular dependencies in singletons, as the Singleton will deadlock before the detection happens.
Testcase:
type circSingletonA struct {
B *circSingletonB `inject:""`
}
type circSingletonB struct {
A *circSingletonA `inject:""`
}
func TestCircularSingletonBinding(t *testing.T) {
EnableCircularTracing()
defer func() {
traceCircular = nil
}()
injector := NewInjector()
injector.Bind(new(circSingletonA)).In(Singleton)
injector.GetInstance(new(circSingletonA))
}
Activity