Class ParallelResultRowSequence

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, uk.ac.starlink.table.RowData, uk.ac.starlink.table.RowSequence, ConeQueryRowSequence, ConeResultRowSequence, uk.ac.starlink.util.Sequence

    public class ParallelResultRowSequence
    extends java.lang.Object
    implements ConeResultRowSequence
    ConeResultRowSequence implementation which uses a fixed number of worker threads to dispatch cone queries in parallel. The result table has the same ordering as if they had been done in sequence.
    Since:
    18 Jan 2008
    Author:
    Mark Taylor
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int DEFAULT_MAXPAR
      Default maximum value for the number of threads that should be permitted for a query.
      static java.lang.String MAXPAR_PROP
      Name of system property "service.maxparallel" which may be used to adjust the maximum parallelism.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()  
      java.lang.Object getCell​(int icol)  
      uk.ac.starlink.table.StarTable getConeResult()
      Returns the result of the cone search for the current row of this sequence.
      double getDec()
      Get central declination for the current row's cone search request in degrees.
      long getIndex()
      Get the index in the underlying table to which the current row relates.
      static int getMaxParallelism()
      Returns the maximum parallelism value which should permitted in this JVM.
      double getRa()
      Get central right ascension for the current row's cone search request in degrees.
      double getRadius()
      Get search radius for the current row's cone search request in degrees.
      java.lang.Object[] getRow()  
      boolean next()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • MAXPAR_PROP

        public static final java.lang.String MAXPAR_PROP
        Name of system property "service.maxparallel" which may be used to adjust the maximum parallelism. Only increase this value with great care since you run the risk of overloading servers and making yourself unpopular with data centres. As a rule, you should only increase this value if you have obtained permission from the data centres whose services on which you will be using the increased parallelism.
        See Also:
        DEFAULT_MAXPAR, getMaxParallelism(), Constant Field Values
    • Constructor Detail

      • ParallelResultRowSequence

        public ParallelResultRowSequence​(ConeQueryRowSequence querySeq,
                                         ConeSearcher coneSearcher,
                                         ConeErrorPolicy errAct,
                                         Coverage coverage,
                                         boolean bestOnly,
                                         boolean distFilter,
                                         java.lang.String distanceCol,
                                         int parallelism)
        Constructor.
        Parameters:
        querySeq - sequence providing cone search query parameters
        coneSearcher - cone search implementation
        errAct - defines action on cone search invocation error
        coverage - coverage for results, or null
        bestOnly - whether all results or just best are required
        distFilter - true to perform post-query filtering on results based on the distance between the query position and the result row position
        distanceCol - name of column to hold distance information in output table, or null
        parallelism - number of concurrent querying threads
    • Method Detail

      • next

        public boolean next()
                     throws java.io.IOException
        Specified by:
        next in interface uk.ac.starlink.table.RowSequence
        Specified by:
        next in interface uk.ac.starlink.util.Sequence
        Throws:
        java.io.IOException
      • getCell

        public java.lang.Object getCell​(int icol)
                                 throws java.io.IOException
        Specified by:
        getCell in interface uk.ac.starlink.table.RowData
        Specified by:
        getCell in interface uk.ac.starlink.table.RowSequence
        Throws:
        java.io.IOException
      • getRow

        public java.lang.Object[] getRow()
                                  throws java.io.IOException
        Specified by:
        getRow in interface uk.ac.starlink.table.RowData
        Specified by:
        getRow in interface uk.ac.starlink.table.RowSequence
        Throws:
        java.io.IOException
      • getRa

        public double getRa()
                     throws java.io.IOException
        Description copied from interface: ConeQueryRowSequence
        Get central right ascension for the current row's cone search request in degrees.
        Specified by:
        getRa in interface ConeQueryRowSequence
        Returns:
        right ascension
        Throws:
        java.io.IOException
      • getDec

        public double getDec()
                      throws java.io.IOException
        Description copied from interface: ConeQueryRowSequence
        Get central declination for the current row's cone search request in degrees.
        Specified by:
        getDec in interface ConeQueryRowSequence
        Returns:
        declination
        Throws:
        java.io.IOException
      • getRadius

        public double getRadius()
                         throws java.io.IOException
        Description copied from interface: ConeQueryRowSequence
        Get search radius for the current row's cone search request in degrees.
        Specified by:
        getRadius in interface ConeQueryRowSequence
        Returns:
        search radius
        Throws:
        java.io.IOException
      • getIndex

        public long getIndex()
                      throws java.io.IOException
        Description copied from interface: ConeQueryRowSequence
        Get the index in the underlying table to which the current row relates. The identity of this underlying table is not specified by this interface, but must be understood by the creator and user of instances. In particular, the return value does not necessarily increment by one for each call to next.
        Specified by:
        getIndex in interface ConeQueryRowSequence
        Returns:
        row index
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface uk.ac.starlink.table.RowSequence
        Throws:
        java.io.IOException
      • getMaxParallelism

        public static int getMaxParallelism()
        Returns the maximum parallelism value which should permitted in this JVM. The purpose of this is to set a limit to the number of concurrent queries that an irresponsible/careless user can hit a server with. The value can be adjusted using the MAXPAR_PROP system property. Note that this method is not used by this class, i.e. the maximum is not imposed here, it should be imposed by calling code.
        Returns:
        parallelism limit