Package com.yahoo.vespa.model
Class AbstractService
- java.lang.Object
-
- com.yahoo.config.model.producer.AbstractConfigProducer<AbstractConfigProducer<?>>
-
- com.yahoo.vespa.model.AbstractService
-
- All Implemented Interfaces:
com.yahoo.config.ConfigInstance.Producer
,ConfigProducer
,NetworkPortRequestor
,Service
,Serializable
- Direct Known Subclasses:
ConfigProxy
,ConfigSentinel
,Configserver
,Container
,ContentNode
,Logd
,LogForwarder
,Logserver
,SearchNode
,Service
,Slobrok
,TransactionLogServer
public abstract class AbstractService extends AbstractConfigProducer<AbstractConfigProducer<?>> implements Service
Superclass for all Processes.- Author:
- gjoranv
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected PortsMeta
portsMeta
The ports metainfo object-
Fields inherited from class com.yahoo.config.model.producer.AbstractConfigProducer
log
-
-
Constructor Summary
Constructors Constructor Description AbstractService(AbstractConfigProducer<?> parent, String name)
Preferred constructor when building from XML.AbstractService(String name)
Only used for testing.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addEnvironmentVariable(String nameAndValue)
void
addEnvironmentVariable(String name, Object value)
void
appendJvmOptions(String args)
protected String
defaultPreload()
static <SERVICE extends AbstractService>
voiddistributeCpuSocketAffinity(Collection<SERVICE> services)
Distribute affinity on a collection of services.Optional<Affinity>
getAffinity()
Returns the Affinity of this service if it has.HashMap<String,String>
getDefaultMetricDimensions()
Overridden by subclasses.String
getEnv()
int
getHealthPort()
The service HTTP port for health statusHostResource
getHost()
Returns the physical host resource on which this service runs.String
getHostName()
Returns the hostname on which this service runs.HostResource
getHostResource()
int
getId()
protected int
getIndex(HostResource host)
Computes a number that identifies the service on the given host.String
getJvmOptions()
Optional execution args for this serviceint
getNumPortsAllocated()
PortsMeta
getPortsMeta()
Gets the ports metainfo object.String
getPreLoad()
Optional<String>
getPreShutdownCommand()
Services that wish that a command should be run before shutdown should return the command here.int
getRelativePort(int i)
Computes and returns the i'th port for this service, based on this Service's baseport.com.yahoo.config.model.api.ServiceInfo
getServiceInfo()
Get meta information about service.String
getServiceName()
Returns the name that identifies this service for the config-sentinel, never nullString
getServicePropertyString(String key)
Gets a service property value mapped to the given key as a String, or null if no such key exists.String
getServicePropertyString(String key, String defStr)
Gets a service property value mapped to the given key as a String, or the value indefStr
if no such key exists.String
getServiceType()
Returns the type of service.String
getStartupCommand()
Must be overridden by services that should be started by config-sentinel.int
getWantedPort()
Returns the desired base port for the first instance of the service type.void
initService(DeployState deployState)
Called by builder class which has not given the host or port in a constructor, hence initService is not yet run for this.boolean
isInitialized()
void
prependJvmOptions(String args)
void
remove()
Removes this from the config modelboolean
requiresWantedPort()
Override if the desired base port (returned by getWantedPort()) is the only allowed base port.void
setAffinity(Affinity affinity)
void
setBasePort(int wantedPort)
WARNING: should only be called before initService()void
setCoreOnOOM(boolean coreOnOOM)
void
setHostResource(HostResource hostResource)
void
setJvmOptions(String args)
void
setMMapNoCoreLimit(long noCoreLimit)
If larger or equal to 0 it mean that explicit mmaps shall not be included in coredump.void
setNoVespaMalloc(String s)
void
setPreLoad(String preload)
AbstractService
setProp(String key, Integer value)
Sets a service property value for the given key.AbstractService
setProp(String key, String value)
Sets a service property value for the given key.void
setVespaMalloc(String s)
void
setVespaMallocDebug(String s)
void
setVespaMallocDebugStackTrace(String s)
String
toString()
-
Methods inherited from class com.yahoo.config.model.producer.AbstractConfigProducer
addChild, addConfigId, addDescendantService, addUserConfig, cascadeConfig, dump, getChildren, getChildrenByTypeRecursive, getConfigClassLoader, getConfigId, getDescendantServices, getMonitoringService, getParent, getRoot, getSubId, getUserConfigs, hostSystem, mergeUserConfigs, removeChild, setParent, setUserConfigs, stateIsHosted, validate
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface com.yahoo.vespa.model.ConfigProducer
addUserConfig, cascadeConfig, dump, getChildren, getConfigId, getDescendantServices, getUserConfigs, hostSystem, validate
-
Methods inherited from interface com.yahoo.vespa.model.NetworkPortRequestor
allocatePorts, getConfigId, getPortCount
-
-
-
-
Field Detail
-
portsMeta
protected PortsMeta portsMeta
The ports metainfo object
-
-
Constructor Detail
-
AbstractService
public AbstractService(AbstractConfigProducer<?> parent, 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
- the parent config producer in the model treename
- the name of this service
-
AbstractService
public AbstractService(String name)
Only used for testing. Stay away.- Parameters:
name
- the name of this service.
-
-
Method Detail
-
defaultPreload
protected String defaultPreload()
-
remove
public void remove()
Description copied from class:AbstractConfigProducer
Removes this from the config model- Overrides:
remove
in classAbstractConfigProducer<AbstractConfigProducer<?>>
-
distributeCpuSocketAffinity
public static <SERVICE extends AbstractService> void distributeCpuSocketAffinity(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
- ACollection
of services of the same type, not necessarily on the same host.
-
initService
public void initService(DeployState deployState)
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 interfaceNetworkPortRequestor
- 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 interfaceNetworkPortRequestor
- 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 interfaceService
-
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 interfaceService
- Parameters:
i
- the offset from 'basePort' of the port to return- Returns:
- the i'th port relative to the base port.
- Throws:
IllegalStateException
- if i is out of range.
-
getStartupCommand
public 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 interfaceService
- Returns:
- null by default.
-
getPreShutdownCommand
public Optional<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 interfaceService
-
getServiceName
public String getServiceName()
Returns the name that identifies this service for the config-sentinel, never null- Specified by:
getServiceName
in interfaceNetworkPortRequestor
-
getServiceType
public String getServiceType()
Returns the type of service. This is the class name without the package prefix by default, never null- Specified by:
getServiceType
in interfaceNetworkPortRequestor
-
getHost
public HostResource getHost()
Description copied from interface:Service
Returns the physical host resource on which this service runs.
-
getHostName
public String getHostName()
Description copied from interface:Service
Returns the hostname on which this service runs.- Specified by:
getHostName
in interfaceService
-
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 interfaceService
- Returns:
- an instance of
ServiceInfo
-
setProp
public AbstractService setProp(String key, String value)
Sets a service property value for the given key.- Parameters:
key
- a key used for this propertyvalue
- a String value associated with the key- Returns:
- this service
-
setProp
public AbstractService setProp(String key, Integer value)
Sets a service property value for the given key.- Parameters:
key
- a key used for this propertyvalue
- an Integer value associated with the key- Returns:
- this service
-
getServicePropertyString
public String getServicePropertyString(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 String getServicePropertyString(String key, String defStr)
Description copied from interface:Service
Gets a service property value mapped to the given key as a String, or the value indefStr
if no such key exists.- Specified by:
getServicePropertyString
in interfaceService
- Parameters:
key
- a key used for lookup in the service propertiesdefStr
- default String value returned if no value for key found- Returns:
- the associated String value for the given key
-
getJvmOptions
public String getJvmOptions()
Optional execution args for this service- Specified by:
getJvmOptions
in interfaceService
-
setJvmOptions
public final void setJvmOptions(String args)
-
appendJvmOptions
public final void appendJvmOptions(String args)
-
prependJvmOptions
public final void prependJvmOptions(String args)
-
getPreLoad
public String getPreLoad()
-
setPreLoad
public void setPreLoad(String preload)
-
setMMapNoCoreLimit
public void setMMapNoCoreLimit(long noCoreLimit)
If larger or equal to 0 it mean that explicit mmaps shall not be included in coredump.
-
setCoreOnOOM
public void setCoreOnOOM(boolean coreOnOOM)
-
setNoVespaMalloc
public void setNoVespaMalloc(String s)
-
setVespaMalloc
public void setVespaMalloc(String s)
-
setVespaMallocDebug
public void setVespaMallocDebug(String s)
-
setVespaMallocDebugStackTrace
public void setVespaMallocDebugStackTrace(String s)
-
addEnvironmentVariable
public void addEnvironmentVariable(String nameAndValue)
-
getEnv
public String getEnv()
-
setBasePort
public void setBasePort(int wantedPort)
WARNING: should only be called before initService()
-
setHostResource
public void setHostResource(HostResource hostResource)
-
isInitialized
public boolean isInitialized()
-
getHealthPort
public int getHealthPort()
The service HTTP port for health status- Specified by:
getHealthPort
in interfaceService
-
getDefaultMetricDimensions
public HashMap<String,String> getDefaultMetricDimensions()
Overridden by subclasses. List of default dimensions to be added to this services metrics- Specified by:
getDefaultMetricDimensions
in interfaceService
- Returns:
- the default dimensions for this service
-
getNumPortsAllocated
public int getNumPortsAllocated()
-
getHostResource
public HostResource getHostResource()
-
getAffinity
public Optional<Affinity> getAffinity()
Description copied from interface:Service
Returns the Affinity of this service if it has.- Specified by:
getAffinity
in interfaceService
-
setAffinity
public void setAffinity(Affinity affinity)
-
-