Class AbstractService

    • Field Detail

      • portsMeta

        protected PortsMeta portsMeta
        The ports metainfo object
    • Constructor Detail

      • AbstractService

        public AbstractService​(AbstractConfigProducer parent,
                               java.lang.String name)
        Preferred constructor when building from XML. Use this if you are building in doBuild() in an AbstractConfigProducerBuilder. build() will call initService() in that case, after setting hostalias and baseport.
        Parameters:
        parent - Parent config producer in the model tree.
        name - Name of this service.
      • AbstractService

        public AbstractService​(java.lang.String name)
        Only used for testing. Stay away.
        Parameters:
        name - Name of this service.
    • Method Detail

      • distributeCpuSocketAffinity

        public static <SERVICE extends AbstractService> void distributeCpuSocketAffinity​(java.util.Collection<SERVICE> services)
        Distribute affinity on a collection of services. Services that are located on the same host will be assigned a specific cpu socket on that host.
        Parameters:
        services - A Collection of services of the same type, not necessarily on the same host.
      • initService

        public void initService​(com.yahoo.config.application.api.DeployLogger deployLogger)
        Called by builder class which has not given the host or port in a constructor, hence initService is not yet run for this.
      • getWantedPort

        public int getWantedPort()
        Returns the desired base port for the first instance of the service type. Returns '0' as default, which means that the service type should use the default port allocation mechanism.
        Specified by:
        getWantedPort in interface NetworkPortRequestor
        Returns:
        The desired base port for the first instance of the service type.
      • requiresWantedPort

        public boolean requiresWantedPort()
        Override if the desired base port (returned by getWantedPort()) is the only allowed base port.
        Specified by:
        requiresWantedPort in interface NetworkPortRequestor
        Returns:
        false by default
      • getPortsMeta

        public PortsMeta getPortsMeta()
        Gets the ports metainfo object. The service implementation must populate this object in the constructor.
        Specified by:
        getPortsMeta in interface Service
      • getRelativePort

        public int getRelativePort​(int i)
        Computes and returns the i'th port for this service, based on this Service's baseport.
        Specified by:
        getRelativePort in interface Service
        Parameters:
        i - The offset from 'basePort' of the port to return
        Returns:
        the i'th port relative to the base port.
        Throws:
        java.lang.IllegalStateException - if i is out of range.
      • getStartupCommand

        public java.lang.String getStartupCommand()
        Must be overridden by services that should be started by config-sentinel. The returned value will be used in config-sentinel configuration. Returns null by default.
        Specified by:
        getStartupCommand in interface Service
        Returns:
        null by default.
      • getPreShutdownCommand

        public java.util.Optional<java.lang.String> getPreShutdownCommand()
        Description copied from interface: Service
        Services that wish that a command should be run before shutdown should return the command here. The command will be executed by the config sentinel before sending SIGTERM to the service. The command is executed without a timeout.
        Specified by:
        getPreShutdownCommand in interface Service
      • getServiceName

        public java.lang.String getServiceName()
        Returns the name that identifies this service for the config-sentinel, never null
        Specified by:
        getServiceName in interface NetworkPortRequestor
      • getServiceType

        public java.lang.String getServiceType()
        Returns the type of service. This is the class name without the package prefix by default, never null
        Specified by:
        getServiceType in interface NetworkPortRequestor
      • getHost

        public Host getHost()
        Specified by:
        getHost in interface Service
        Returns:
        the physical host on which this service runs.
      • getHostName

        public java.lang.String getHostName()
        Specified by:
        getHostName in interface Service
        Returns:
        The hostname on which this service runs.
      • getId

        public int getId()
        Returns:
        The id (index) of this service on the host where it runs
      • getIndex

        protected int getIndex​(HostResource host)
        Computes a number that identifies the service on the given host. The number of services of the same type (Class) is counted and the number is returned.
        Parameters:
        host - the host on which the service will run
        Returns:
        id number for the given service.
      • getServiceInfo

        public com.yahoo.config.model.api.ServiceInfo getServiceInfo()
        Description copied from interface: Service
        Get meta information about service.
        Specified by:
        getServiceInfo in interface Service
        Returns:
        an instance of ServiceInfo
      • setProp

        public AbstractService setProp​(java.lang.String key,
                                       java.lang.String value)
        Sets a service property value for the given key.
        Parameters:
        key - a key used for this property
        value - a String value associated with the key
        Returns:
        this service
      • setProp

        public AbstractService setProp​(java.lang.String key,
                                       java.lang.Integer value)
        Sets a service property value for the given key.
        Parameters:
        key - a key used for this property
        value - an Integer value associated with the key
        Returns:
        this service
      • getServicePropertyString

        public java.lang.String getServicePropertyString​(java.lang.String key)
        Gets a service property value mapped to the given key as a String, or null if no such key exists.
        Parameters:
        key - a key used for lookup in the service properties
        Returns:
        the associated String value for the given key, or null
      • getServicePropertyString

        public java.lang.String getServicePropertyString​(java.lang.String key,
                                                         java.lang.String defStr)
        Description copied from interface: Service
        Gets a service property value mapped to the given key as a String, or the value in defStr if no such key exists.
        Specified by:
        getServicePropertyString in interface Service
        Parameters:
        key - a key used for lookup in the service properties
        defStr - default String value returned if no value for key found
        Returns:
        the associated String value for the given key, or
      • getJvmOptions

        public java.lang.String getJvmOptions()
        Optional execution args for this service
        Specified by:
        getJvmOptions in interface Service
      • setJvmOptions

        public final void setJvmOptions​(java.lang.String args)
      • appendJvmOptions

        public final void appendJvmOptions​(java.lang.String args)
      • prependJvmOptions

        public final void prependJvmOptions​(java.lang.String args)
      • getPreLoad

        public java.lang.String getPreLoad()
      • setPreLoad

        public void setPreLoad​(java.lang.String preload)
      • getMMapNoCoreLimit

        public long getMMapNoCoreLimit()
      • setMMapNoCoreLimit

        public void setMMapNoCoreLimit​(long noCoreLimit)
      • getCoreOnOOM

        public boolean getCoreOnOOM()
      • setCoreOnOOM

        public void setCoreOnOOM​(boolean coreOnOOM)
      • getNoVespaMalloc

        public java.lang.String getNoVespaMalloc()
      • getVespaMalloc

        public java.lang.String getVespaMalloc()
      • getVespaMallocDebug

        public java.lang.String getVespaMallocDebug()
      • getVespaMallocDebugStackTrace

        public java.lang.String getVespaMallocDebugStackTrace()
      • setNoVespaMalloc

        public void setNoVespaMalloc​(java.lang.String s)
      • setVespaMalloc

        public void setVespaMalloc​(java.lang.String s)
      • setVespaMallocDebug

        public void setVespaMallocDebug​(java.lang.String s)
      • setVespaMallocDebugStackTrace

        public void setVespaMallocDebugStackTrace​(java.lang.String s)
      • getMMapNoCoreEnvVariable

        public java.lang.String getMMapNoCoreEnvVariable()
      • getCoreOnOOMEnvVariable

        public java.lang.String getCoreOnOOMEnvVariable()
      • getNoVespaMallocEnvVariable

        public java.lang.String getNoVespaMallocEnvVariable()
      • getVespaMallocEnvVariable

        public java.lang.String getVespaMallocEnvVariable()
      • getVespaMallocDebugEnvVariable

        public java.lang.String getVespaMallocDebugEnvVariable()
      • getVespaMallocDebugStackTraceEnvVariable

        public java.lang.String getVespaMallocDebugStackTraceEnvVariable()
      • getEnvVariables

        public java.lang.String getEnvVariables()
      • setBasePort

        public void setBasePort​(int wantedPort)
        WARNING: should only be called before initService(), otherwise call at own risk!
      • setHostResource

        public void setHostResource​(HostResource hostResource)
      • isInitialized

        public boolean isInitialized()
      • sendFile

        public com.yahoo.config.FileReference sendFile​(java.lang.String relativePath)
        Add the given file to the application's file distributor.
        Parameters:
        relativePath - path to the file, relative to the app package.
        Returns:
        the file reference hash
      • sendUri

        public com.yahoo.config.FileReference sendUri​(java.lang.String uri)
      • getHealthPort

        public int getHealthPort()
        The service HTTP port for health status
        Specified by:
        getHealthPort in interface Service
        Returns:
        portnumber
      • getDefaultMetricDimensions

        public java.util.HashMap<java.lang.String,​java.lang.String> getDefaultMetricDimensions()
        Overridden by subclasses. List of default dimensions to be added to this services metrics
        Specified by:
        getDefaultMetricDimensions in interface Service
        Returns:
        The default dimensions for this service
      • getNumPortsAllocated

        public int getNumPortsAllocated()
      • getAffinity

        public java.util.Optional<Affinity> getAffinity()
        Description copied from interface: Service
        Return the Affinity of this service if it has.
        Specified by:
        getAffinity in interface Service
        Returns:
        The Affinity for this service.
      • setAffinity

        public void setAffinity​(Affinity affinity)
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object