Class RrdDbPool


  • public class RrdDbPool
    extends Object
    This class should be used to synchronize access to RRD files in a multithreaded environment. This class should be also used to prevent openning of too many RRD files at the same time (thus avoiding operating system limits)
    • Field Detail

      • INITIAL_CAPACITY

        public static final int INITIAL_CAPACITY
        Initial capacity of the pool i.e. maximum number of simultaneously open RRD files. The pool will never open too many RRD files at the same time.
        See Also:
        Constant Field Values
    • Method Detail

      • getInstance

        public static RrdDbPool getInstance()
                                     throws RrdException
        Creates a single instance of the class on the first call, or returns already existing one.
        Returns:
        Single instance of this class
        Throws:
        RrdException - Thrown if the default RRD backend is not derived from the RrdFileBackendFactory
      • requestRrdDb

        public RrdDb requestRrdDb​(String path)
                           throws IOException,
                                  RrdException
        Requests a RrdDb reference for the given RRD file path.

        • If the file is already open, previously returned RrdDb reference will be returned. Its usage count will be incremented by one.
        • If the file is not already open and the number of already open RRD files is less than INITIAL_CAPACITY, the file will be open and a new RrdDb reference will be returned. If the file is not already open and the number of already open RRD files is equal to INITIAL_CAPACITY, the method blocks until some RRD file is closed.
        Parameters:
        path - Path to existing RRD file
        Returns:
        reference for the give RRD file
        Throws:
        IOException - Thrown in case of I/O error
        RrdException - Thrown in case of JRobin specific error
      • requestRrdDb

        public RrdDb requestRrdDb​(RrdDef rrdDef)
                           throws IOException,
                                  RrdException
        Requests a RrdDb reference for the given RRD file definition object.

        • If the file with the path specified in the RrdDef object is already open, the method blocks until the file is closed.
        • If the file is not already open and the number of already open RRD files is less than INITIAL_CAPACITY, a new RRD file will be created and a its RrdDb reference will be returned. If the file is not already open and the number of already open RRD files is equal to INITIAL_CAPACITY, the method blocks until some RRD file is closed.
        Parameters:
        rrdDef - Definition of the RRD file to be created
        Returns:
        Reference to the newly created RRD file
        Throws:
        IOException - Thrown in case of I/O error
        RrdException - Thrown in case of JRobin specific error
      • requestRrdDb

        public RrdDb requestRrdDb​(String path,
                                  String sourcePath)
                           throws IOException,
                                  RrdException,
                                  RrdException
        Requests a RrdDb reference for the given path. The file will be created from external data (from XML dump, RRD file or RRDTool's binary RRD file).

        • If the file with the path specified is already open, the method blocks until the file is closed.
        • If the file is not already open and the number of already open RRD files is less than INITIAL_CAPACITY, a new RRD file will be created and a its RrdDb reference will be returned. If the file is not already open and the number of already open RRD files is equal to INITIAL_CAPACITY, the method blocks until some RRD file is closed.
        Parameters:
        path - Path to RRD file which should be created
        sourcePath - Path to external data which is to be converted to JRobin's native RRD file format
        Returns:
        Reference to the newly created RRD file
        Throws:
        IOException - Thrown in case of I/O error
        RrdException - Thrown in case of JRobin specific error
      • release

        public void release​(RrdDb rrdDb)
                     throws IOException,
                            RrdException
        Releases RrdDb reference previously obtained from the pool. When a reference is released, its usage count is decremented by one. If usage count drops to zero, the underlying RRD file will be closed.
        Parameters:
        rrdDb - RrdDb reference to be returned to the pool
        Throws:
        IOException - Thrown in case of I/O error
        RrdException - Thrown in case of JRobin specific error
      • getCapacity

        public int getCapacity()
        Returns the maximum number of simultaneously open RRD files.
        Returns:
        maximum number of simultaneously open RRD files
      • setCapacity

        public void setCapacity​(int capacity)
        Sets the maximum number of simultaneously open RRD files.
        Parameters:
        capacity - Maximum number of simultaneously open RRD files.
      • getOpenFiles

        public String[] getOpenFiles()
        Returns an array of open file names.
        Returns:
        Array with canonical paths to open RRD files held in the pool.
      • getOpenFileCount

        public int getOpenFileCount()
        Returns the number of open RRD files.
        Returns:
        Number of currently open RRD files held in the pool.