Skip to content
Snippets Groups Projects
  • Nat Goodspeed's avatar
    d792baf9
    MAINT-5232: Introduce inter-LLSingleton dependency tracking. · d792baf9
    Nat Goodspeed authored
    Introduce LLSingleton::cleanupSingleton() canonical method as the place to put
    any subclass cleanup logic that might take nontrivial realtime or throw an
    exception. Neither is appropriate in a destructor.
    Track all extant LLSingleton subclass instances on a master list, which
    permits adding LLSingletonBase::cleanupAll() and deleteAll() methods.
    Also notice when any LLSingleton subclass constructor (or initSingleton()
    method) calls instance() or getInstance() for another LLSingleton, and capture
    that other LLSingleton instance as a dependency of the first. This permits
    cleanupAll() and deleteAll() to perform a dependency sort on the master list,
    thus cleaning up (or deleting) leaf LLSingletons AFTER the LLSingletons that
    depend on them.
    Make C++ runtime's final static destructor call LLSingletonBase::deleteAll()
    instead of deleting individual LLSingleton instances in arbitrary order.
    Eliminate "llerror.h" from llsingleton.h, a longstanding TODO.
    d792baf9
    History
    MAINT-5232: Introduce inter-LLSingleton dependency tracking.
    Nat Goodspeed authored
    Introduce LLSingleton::cleanupSingleton() canonical method as the place to put
    any subclass cleanup logic that might take nontrivial realtime or throw an
    exception. Neither is appropriate in a destructor.
    Track all extant LLSingleton subclass instances on a master list, which
    permits adding LLSingletonBase::cleanupAll() and deleteAll() methods.
    Also notice when any LLSingleton subclass constructor (or initSingleton()
    method) calls instance() or getInstance() for another LLSingleton, and capture
    that other LLSingleton instance as a dependency of the first. This permits
    cleanupAll() and deleteAll() to perform a dependency sort on the master list,
    thus cleaning up (or deleting) leaf LLSingletons AFTER the LLSingletons that
    depend on them.
    Make C++ runtime's final static destructor call LLSingletonBase::deleteAll()
    instead of deleting individual LLSingleton instances in arbitrary order.
    Eliminate "llerror.h" from llsingleton.h, a longstanding TODO.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.