Class RrdNioBackendFactory

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    @RrdBackendAnnotation(name="NIO",
                          shouldValidateHeader=true)
    public class RrdNioBackendFactory
    extends RrdFileBackendFactory
    Factory class which creates actual RrdNioBackend objects. This is the default factory since 1.4.0 version.

    Managing the thread pool

    Each RrdNioBackendFactory is optionally backed by a RrdSyncThreadPool, which it uses to sync the memory-mapped files to disk. In order to avoid having these threads live longer than they should, it is recommended that clients create and destroy thread pools at the appropriate time in their application's life time. Failure to manage thread pools appropriately may lead to the thread pool hanging around longer than necessary, which in turn may cause memory leaks.

    if sync period is negative, no sync thread will be launched

    • Field Detail

      • DEFAULT_SYNC_PERIOD

        public static final int DEFAULT_SYNC_PERIOD
        Period in seconds between consecutive synchronizations when sync-mode is set to SYNC_BACKGROUND. By default in-memory cache will be transferred to the disc every 300 seconds (5 minutes). Default value can be changed via setSyncPeriod(int) method.
        See Also:
        Constant Field Values
      • DEFAULT_SYNC_CORE_POOL_SIZE

        public static final int DEFAULT_SYNC_CORE_POOL_SIZE
        The core pool size for the sync executor. Defaults to 6.
        See Also:
        Constant Field Values
    • Constructor Detail

      • RrdNioBackendFactory

        public RrdNioBackendFactory()
        Creates a new RrdNioBackendFactory with default settings.
      • RrdNioBackendFactory

        public RrdNioBackendFactory​(int syncPeriod)
        Creates a new RrdNioBackendFactory, using a default RrdSyncThreadPool.
        Parameters:
        syncPeriod - the sync period, in seconds. If negative or 0, sync threads are disabled.
      • RrdNioBackendFactory

        public RrdNioBackendFactory​(int syncPeriod,
                                    int syncPoolSize)
        Creates a new RrdNioBackendFactory.
        Parameters:
        syncPeriod - the sync period, in seconds.
        syncPoolSize - The number of threads to use to sync the mapped file to disk, if negative or 0, sync threads are disabled.
      • RrdNioBackendFactory

        public RrdNioBackendFactory​(int syncPeriod,
                                    ScheduledExecutorService syncThreadPool)
        Creates a new RrdNioBackendFactory.
        Parameters:
        syncPeriod - the sync period, in seconds.
        syncThreadPool - If null, disable background sync threads
      • RrdNioBackendFactory

        public RrdNioBackendFactory​(int syncPeriod,
                                    RrdSyncThreadPool syncThreadPool)
        Creates a new RrdNioBackendFactory.
        Parameters:
        syncPeriod - the sync period, in seconds.
        syncThreadPool - If null, disable background sync threads
    • Method Detail

      • getSyncPeriod

        public static int getSyncPeriod()
        Returns time between two consecutive background synchronizations. If not changed via setSyncPeriod(int) method call, defaults to DEFAULT_SYNC_PERIOD. See setSyncPeriod(int) for more information.
        Returns:
        Time in seconds between consecutive background synchronizations.
      • setSyncPeriod

        public static void setSyncPeriod​(int syncPeriod)
        Sets time between consecutive background synchronizations. If negative, it will disabling syncing for all NIO backend factory.
        Parameters:
        syncPeriod - Time in seconds between consecutive background synchronizations.
      • setSyncPoolSize

        public static void setSyncPoolSize​(int syncPoolSize)
        Sets the number of synchronizing threads. It must be set before the first use of this factory. It will not have any effect afterward.
        Parameters:
        syncPoolSize - Number of synchronizing threads.
      • setSyncThreadPool

        @Deprecated
        public void setSyncThreadPool​(RrdSyncThreadPool syncThreadPool)
        Deprecated.
        Create a custom instance instead

        Setter for the field syncThreadPool.

        Parameters:
        syncThreadPool - the RrdSyncThreadPool to use to sync the memory-mapped files.
      • setSyncThreadPool

        @Deprecated
        public void setSyncThreadPool​(ScheduledExecutorService syncThreadPool)
        Deprecated.
        Create a custom instance instead

        Setter for the field syncThreadPool.

        Parameters:
        syncThreadPool - the ScheduledExecutorService that will back the RrdSyncThreadPool used to sync the memory-mapped files.