Class ParameterArchive

  • All Implemented Interfaces:
    com.google.common.util.concurrent.Service, YamcsService

    public class ParameterArchive
    extends AbstractYamcsService
    The parameter archive stores data in partitions -> intervals -> segments. A partition covers one year and each partition has its own RocksDB database An interval covers 2^23 millisec =~ 139 minutes An segment covers at most maxSegmentSize values for one parameter
    • Constructor Detail

      • ParameterArchive

        public ParameterArchive()
    • Method Detail

      • getSpec

        public Spec getSpec()
        Description copied from interface: YamcsService
        Returns the valid configuration options for this service.
        Returns:
        the argument specification, or null if the args should not be validated.
      • init

        public void init​(String yamcsInstance,
                         String serviceName,
                         YConfiguration config)
                  throws InitException
        Description copied from interface: YamcsService
        Initialize this service. This is called before the service is started. All operations should finish fast.
        Specified by:
        init in interface YamcsService
        Overrides:
        init in class AbstractYamcsService
        Parameters:
        yamcsInstance - The yamcs instance, or null if this is a global service.
        serviceName - The service name.
        config - The configured arguments for this service. If YamcsService.getSpec() is implemented then this contains the arguments after being validated (including any defaults).
        Throws:
        InitException - When something goes wrong during the execution of this method.
      • writeToArchive

        public void writeToArchive​(PGSegment pgs)
                            throws org.rocksdb.RocksDBException,
                                   IOException
        Throws:
        org.rocksdb.RocksDBException
        IOException
      • createAndGetPartition

        public ParameterArchive.Partition createAndGetPartition​(long segStart)
                                                         throws org.rocksdb.RocksDBException
        get partition for segment, creating it if it doesn't exist
        Parameters:
        segStart -
        Throws:
        org.rocksdb.RocksDBException
      • reprocess

        public Future<?> reprocess​(long start,
                                   long stop)
      • getPartitions

        public List<ParameterArchive.Partition> getPartitions​(long start,
                                                              long stop,
                                                              boolean ascending)
        a copy of the partitions from start to stop inclusive
        Parameters:
        start -
        stop -
        Returns:
        a sorted list of partitions
      • doStart

        protected void doStart()
        Specified by:
        doStart in class com.google.common.util.concurrent.AbstractService
      • doStop

        protected void doStop()
        Specified by:
        doStop in class com.google.common.util.concurrent.AbstractService
      • deletePartitions

        public List<ParameterArchive.Partition> deletePartitions​(long start,
                                                                 long stop)
                                                          throws org.rocksdb.RocksDBException
        Delete all partitions that overlap with [start, stop) segment.
        Parameters:
        start -
        stop -
        Returns:
        all the partitions removed
        Throws:
        org.rocksdb.RocksDBException
      • getIntervalStart

        public static long getIntervalStart​(long instant)
        returns the intervalStart where this instant could fit.
        Parameters:
        instant -
        Returns:
      • getIntervalEnd

        public static long getIntervalEnd​(long instant)
        returns the end of the interval where the instant fits
        Parameters:
        instant -
        Returns:
      • getIntervalDuration

        public static long getIntervalDuration()
        duration in milliseconds of one segment
        Returns:
      • getTablespace

        public Tablespace getTablespace()