Class ResourceRegistry

    • Field Detail

      • SHUTDOWN_THREAD_PREFIX

        public static final java.lang.String SHUTDOWN_THREAD_PREFIX
      • _state

        protected final com.linkedin.alpini.base.registry.ResourceRegistry.State _state
    • Constructor Detail

      • ResourceRegistry

        public ResourceRegistry()
        Construct a ResourceRegistry class instance. When instances of these ResourceRegistry are garbage collected when not shut down, they will automatically behave as-if shutdown() was invoked and a warning is emitted to the logs.
      • ResourceRegistry

        public ResourceRegistry​(boolean garbageCollectable)
        Construct a ResourceRegistry class instance. Instances constructed with this constructor will not emit any log when it is garbage collected.
        Parameters:
        garbageCollectable - If true, the ResourceRegistry will be shut down when no remaining references to the ResourceRegistry remain referenced.
    • Method Detail

      • isFactoryInterface

        public static boolean isFactoryInterface​(java.lang.Class<?> clazz)
        Checks if the supplied class is a permissable factory class.
        Parameters:
        clazz - Class to be checked
        Returns:
        true iff class is not null and is a ResourceRegistry.Factory interface.
      • registerFactory

        public static <R extends ShutdownableResource,​F extends ResourceRegistry.Factory<R>> F registerFactory​(java.lang.Class<F> clazz,
                                                                                                                     F factory)
        Register the factory with the ResourceRegistry such that future invocations of factory(Class) will return an appropiate proxy for the factory.
        Type Parameters:
        R - Type of the resource which the factory will return.
        F - Type of the factory.
        Parameters:
        clazz - Interface being registered with the ResourceRegistry.
        factory - Factory being registered with the ResourceRegistry.
        Returns:
        the factory.
      • factory

        @Nonnull
        public <R extends ShutdownableResource,​F extends ResourceRegistry.Factory<R>> F factory​(@Nonnull
                                                                                                      java.lang.Class<F> clazz)
        Return a factory which implements the requested factory class F.
        Type Parameters:
        R - Resource type which the factory will construct.
        F - Type of the factory.
        Parameters:
        clazz - Interface demanded.
        Returns:
        a factory.
      • register

        public <R extends Shutdownable> R register​(R resource)
        Register a Shutdownable resource with this ResourceRegistry.
        Type Parameters:
        R - Type of the resource.
        Parameters:
        resource - Resource to be registered.
        Returns:
        the resource.
      • register

        public <R extends SyncShutdownable> R register​(R resource)
        Register a SyncShutdownable resource with this ResourceRegistry.
        Type Parameters:
        R - Type of the resource.
        Parameters:
        resource - Resource to be registered.
        Returns:
        the resource.
      • remove

        public <R extends Shutdownable> void remove​(R resource)
        Removes the specified Shutdownable from this ResourceRegistry.
        Type Parameters:
        R - Type of the resource.
        Parameters:
        resource - Resource to be removed.
      • vacuum

        public void vacuum()
        Vacuums any already-terminated resources.
      • shutdown

        public void shutdown()
        Starts the shutdown process. It is recommended to perform the actual shutdown activity in a separate thread from the thread that calls shutdown
      • waitToStartShutdown

        public void waitToStartShutdown()
                                 throws java.lang.InterruptedException
        Waits until another caller calls shutdown() on this resource registry.
        Throws:
        java.lang.InterruptedException - when the wait is interrupted
      • waitToStartShutdown

        public void waitToStartShutdown​(long timeoutInMs)
                                 throws java.lang.InterruptedException,
                                        java.util.concurrent.TimeoutException
        Waits until another caller calls shutdown() on this resource registry.
        Parameters:
        timeoutInMs - Time to wait, in milliseconds.
        Throws:
        java.lang.InterruptedException - when the wait is interrupted
        java.util.concurrent.TimeoutException - when the operation times out
      • isShutdown

        public final boolean isShutdown()
        Returns true if this resource has been shut down.
        Returns:
        true if this resource has been shut down
      • isTerminated

        public final boolean isTerminated()
        Returns true if the resource has completed shutting down. Note that isTerminated is never true unless shutdown was called first.
        Returns:
        true if the resource has completed shutting down.
      • waitForShutdown

        public void waitForShutdown()
                             throws java.lang.InterruptedException,
                                    java.lang.IllegalStateException
        Waits for shutdown to complete
        Throws:
        java.lang.InterruptedException - when the wait is interrupted
        java.lang.IllegalStateException - when the method is invoked before shutdown has started
      • waitForShutdown

        public void waitForShutdown​(long timeoutInMs)
                             throws java.lang.InterruptedException,
                                    java.lang.IllegalStateException,
                                    java.util.concurrent.TimeoutException
        Waits for shutdown to complete with a timeout
        Parameters:
        timeoutInMs - number of milliseconds to wait before throwing TimeoutException
        Throws:
        java.lang.InterruptedException - when the wait is interrupted
        java.lang.IllegalStateException - when the method is invoked before shutdown has been started
        java.util.concurrent.TimeoutException - when the wait times out
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • globalShutdown

        public static void globalShutdown()
                                   throws java.lang.InterruptedException
        Starts shutdown for all ResourceRegistry instances.
        Throws:
        java.lang.InterruptedException - if the current thread is interrupted while waiting to acquire a lock
      • getGlobalShutdownDelayMillis

        public static long getGlobalShutdownDelayMillis()
        Get the delay for global shutdown. globalShutdown will wait this many millis before shutting down.
      • setGlobalShutdownDelayMillis

        public static void setGlobalShutdownDelayMillis​(long globalShutdownDelayMillis)
        Set a delay for global shutdown. globalShutdown will wait this many millis before shutting down.