Skip to content

Latest commit

 

History

History
790 lines (618 loc) · 22.9 KB

_properties.adoc

File metadata and controls

790 lines (618 loc) · 22.9 KB

Properties

This section describes the various properties that can be set to control the behavior of your Genie node and cluster. For more information on Spring properties you should see the Spring Boot reference documentation and the Spring Cloud documentation. The Spring properties described here are ones that we have overridden from Spring defaults.

Default Properties

Genie Properties

Properties marked 'dynamic' reflect change of property value in the environment happening at runtime. Whereas static properties values are bound during application startup and do not change after the application is up and running.

Property Description Default Value Dynamic

genie.aws.s3.buckets.[bucketName].roleARN

For the bucket with name bucketName the ARN of the role to assume to read/write to that bucket. If a bucket is used that isn’t listed in this map the default credentials configured will be used

no

genie.aws.s3.buckets.[bucketName].region

The AWS region the bucket with bucketName is in. Clients to talk to this bucket will be created in this region. If no value is specified the bucket is assumed to be in the same region as the Genie process.

no

genie.agent.filter.enabled

If set to true, enables the built-in agent filter service. The filter behavior is controlled by other active genie.agent.filter.* properties.

no

genie.agent.filter.version.minimum

The minimum version an agent needs to be (e.g., 1.2.3) in order to communicate with this server. The filter needs to be enabled for this to take effect.

yes

genie.agent.filter.version.blacklist

A regex matched against agent version (e.g., 1\.2\..*), matching agents are rejected. The filter needs to be enabled for this to take effect.

yes

genie.agent.filter.version.whitelist

A regex matched against agent version (e.g., 1\.2\..*), agents not matching are rejected. The filter needs to be enabled for this to take effect.

yes

genie.aws.credentials.role

The AWS role ARN to assume when connecting to S3. If this is set Genie will create a credentials provider that will attempt to assume this role on the host Genie is running on

no

genie.file.cache.location

Where to store cached files on local disk

file:///tmp/genie/cache

no

genie.grpc.server.enabled

Whether to start the gRPC server and services during server startup

true

no

genie.grpc.server.services.job-file-sync.ackIntervalMilliseconds

How many milliseconds to wait between checks whether some acknowledgement should be sent to the agent regardless of whether the maxSyncMessages threshold has been reached or not

30,000

no

genie.grpc.server.services.job-file-sync.maxSyncMessages

How many messages to receive from the agent before an acknowledgement message is sent back from the server

10

no

genie.health.maxCpuLoadConsecutiveOccurrences

Defines the threshold of consecutive occurrences of CPU load crossing the <maxCpuLoadPercent>. Health of the system is marked unhealthy if the CPU load of a system goes beyond the threshold 'maxCpuLoadPercent' for 'maxCpuLoadConsecutiveOccurrences' consecutive times.

3

no

genie.health.maxCpuLoadPercent

Defines the threshold for the maximum CPU load percentage to consider for an instance to be unhealthy. Health of the system is marked unhealthy if the CPU load of a system goes beyond this threshold for 'maxCpuLoadConsecutiveOccurrences' consecutive times.

80

no

genie.http.connect.timeout

The number of milliseconds before HTTP calls between Genie nodes should time out on connection

2000

no

genie.http.read.timeout

The number of milliseconds before HTTP calls between Genie nodes should time out on attempting to read data

10000

no

genie.jobs.cleanup.deleteDependencies

Whether or not to delete the dependencies directories for applications, cluster, command to save disk space after job completion

true

no

genie.jobs.clusters.load-balancers.script.destination

The location on disk where the script source file should be stored after it is downloaded from genie.jobs.clusters.load-balancers.script.source. The file will be given the same name.

file:///tmp/genie/loadbalancers/script/destination/

no

genie.jobs.clusters.load-balancers.script.enabled

Whether the script based load balancer should be enabled for the system or not. See also: genie.jobs.clusters.load-balancers.script.source See also: genie.jobs.clusters.load-balancers.script.destination

false

no

genie.jobs.clusters.load-balancers.script.refreshRate

How frequently to refresh the load balancer script (in milliseconds)

300000

no

genie.jobs.clusters.load-balancers.script.source

The location of the script the load balancer should load to evaluate which cluster to use for a job request

file:///tmp/genie/loadBalancers/script/source/loadBalance.js

no

genie.jobs.clusters.load-balancers.script.timeout

The amount of time (in milliseconds) that the system will attempt to run the cluster load balancer script before it forces a timeout

5000

no

genie.jobs.forwarding.enabled

Whether or not to attempt to forward kill and get output requests for jobs

true

no

genie.jobs.forwarding.port

The port to forward requests to as it could be different than ELB port

8080

no

genie.jobs.forwarding.scheme

The connection protocol to use (http or https)

http

no

genie.jobs.locations.archives

The default root location where job archives should be stored. Scheme should be included. Created if doesn’t exist.

file:///tmp/genie/archives/

no

genie.jobs.locations.attachments

The default root location where job attachments will be temporarily stored. Scheme should be included. Created if doesn’t exist.

file:///tmp/genie/attachments/

no

genie.jobs.locations.jobs

The default root location where job working directories will be placed. Created by system if doesn’t exist.

file:///tmp/genie/jobs/

no

genie.jobs.max.stdOutSize

The maximum number of bytes the job standard output file can grow to before Genie will kill the job

8589934592

no

genie.jobs.max.stdErrSize

The maximum number of bytes the job standard error file can grow to before Genie will kill the job

8589934592

no

genie.jobs.memory.maxSystemMemory

The total number of MB out of the system memory that Genie can use for running jobs

30720

no

genie.jobs.memory.defaultJobMemory

The total number of megabytes Genie will assume a job is allocated if not overridden by a command or user at runtime

1024

no

genie.jobs.memory.maxJobMemory

The maximum amount of memory, in megabytes, that a job client can be allocated

10240

no

genie.jobs.users.creationEnabled

Whether Genie should attempt to create a system user in order to run the job as or not. Genie user must have sudo rights for this to work.

false

no

genie.jobs.users.runAsUserEnabled

Whether Genie should run the jobs as the user who submitted the job or not. Genie user must have sudo rights for this to work.

false

no

genie.jobs.active-limit.enabled

Enables the per-user active job limit. The number of jobs is controlled by the genie.jobs.users.active-limit.count property.

false

no

genie.jobs.active-limit.count

The maximum number of active jobs a user is allowed to have. Once a user hits this limit, jobs submitted are rejected. This is property is ignored unless genie.jobs.users.active-limit.enabled is set to true. This limit applies to users that don’t have an override set via genie.jobs.users.active-limit.overrides.<user-name>.

100

no

genie.jobs.active-limit.overrides.<user-name>

The maximum number of active jobs that user 'user-name' is allowed to have. This is property is ignored unless genie.jobs.users.active-limit.enabled is set to true.

-

yes

genie.jobs.completion-check-back-off.min-interval

The minimum time between checks for job completion in milliseconds. Must be greater than zero.

100

no

genie.jobs.completion-check-back-off.max-interval

The maximum time between checks for job completion in milliseconds. This is a fallback value, the value used in most cases is specified as part of the Command entity for a particular job.

10000

no

genie.jobs.completion-check-back-off.factor

Multiplication factor that grows the delay between checks for job completions. Must be greater than 1.

1.2

no

genie.leader.enabled

Whether this node should be the leader of the cluster or not. Should only be used if leadership is not being determined by Zookeeper or other mechanism via Spring

false

no

genie.mail.fromAddress

The e-mail address that should be used as the from address when alert emails are sent

no-reply-genie@geniehost.com

no

genie.mail.user

The user to log into the e-mail server with

no

genie.mail.password

The password for the e-mail server

no

genie.redis.enabled

Whether to enable storage of HTTP sessions inside Redis via Spring Session

false

no

genie.retry.initialInterval

The amount of time to wait after initial failure before retrying the first time in milliseconds

10000

no

genie.retry.maxInterval

The maximum amount of time to wait between retries for the final retry in the back-off policy

60000

no

genie.retry.noOfRetries

The number of times to retry requests to before failure

5

no

genie.retry.s3.noOfRetries

The number of times to retry requests to S3 before failure

5

no

genie.security.oauth2.enabled

Whether to enable oauth2 based security or not for REST APIs

false

no

genie.security.oauth2.pingfederate.enabled

Whether Ping Federate is being used as the OAuth2 server and Genie should assume default configuration for its tokens

false

no

genie.security.oauth2.pingfederate.jwt.enabled

Whether to assume that the bearer tokens coming with API requests are JWT tokens or not

false

no

genie.security.oauth2.pingfederate.jwt.keyValue

The public key used to verify the JWT signature

no

genie.security.saml.enabled

Whether SAML security should be turned on to protect access to the user interface

false

no

genie.security.saml.attributes.user

The key in the SAML assertion to get the user name from

no

genie.security.saml.attributes.groups.name

The key in the SAML assertion to get group information for the user from

no

genie.security.saml.attributes.groups.admin

The group a user needs to be a member of in order to be granted an admin role

no

genie.security.saml.idp.serviceProviderMetadataUrl

The URL where metadata for Genie service SAML configuration can be pulled from

no

genie.security.saml.keystore.name

The name of the keystore file on the classpath for SAML assertions

no

genie.security.saml.keystore.password

The password for opening the keystore

no

genie.security.saml.keystore.defaultKey.name

The name of the default key to use for signing the SAML request

no

genie.security.saml.keystore.defaultKey.password

The password to open the default key

no

genie.security.saml.loadBalancer.contextPath

The context path for Genie

/

no

genie.security.saml.loadBalancer.includeServerPortInRequestURL

Whether or not to include the port of the load balancer in the redirect request

false

no

genie.security.saml.loadBalancer.scheme

The scheme the load balancer Genie cluster is run behind uses (http or https). Used for SAML post back

no

genie.security.saml.loadBalancer.serverName

Root context for the Genie load balancer e.g. genie.prod.com

no

genie.security.saml.loadBalancer.serverPort

The port the load balancer is listening on. Used for SAML post back

no

genie.security.saml.sp.entityId

The id that Genie is identified by in the identity provider

no

genie.security.saml.sp.entityBaseURL

Where the SAML assertion should be posted back to. e.g. https://genie.prod.com

no

genie.security.x509.enabled

Whether to enable x509 certificate security on the REST APIs

false

no

genie.swagger.enabled

Whether to enable Swagger to be bootstrapped into the Genie service so that the endpoint /swagger-ui.html shows API documentation generated by the swagger specification

false

no

genie.tasks.agent-cleanup.enabled

Whether to enable the task that detects jobs whose agent has gone AWOL, and marks them failed

true

no

genie.tasks.agent-cleanup.refreshInterval

How often the AWOL agent tasks executed, in milliseconds

10000

no

genie.tasks.agent-cleanup.timeLimit

How long of a leeway to give a job after it agent disconnected and before the job is marked failed, in milliseconds

120000

no

genie.tasks.cluster-checker.healthIndicatorsToIgnore

The health indicator groups from the actuator /health endpoint to ignore when determining if a node is lost or not as a comma separated list

genieMemory,mail,genieAgent

no

genie.tasks.cluster-checker.lostThreshold

The number of times a Genie nodes need to fail health check in order for jobs running on that node to be marked as lost and failed by the Genie leader

3

no

genie.tasks.cluster-checker.port

The port to connect to other Genie nodes on

8080

no

genie.tasks.cluster-checker.rate

The number of milliseconds to wait between health checks to other Genie nodes

300000

no

genie.tasks.cluster-checker.scheme

The scheme (http or https) for connecting to other Genie nodes

http

no

genie.tasks.database-cleanup.enabled

Whether or not to delete old and unused records from the database at a scheduled interval. See: genie.tasks.database-cleanup.expression

true

no

genie.tasks.database-cleanup.maxDeletedPerTransaction

The number of job records (across multiple tables) to delete from the database in a single transaction. Genie will loop and perform multiple transactions until all jobs older than the retention time are deleted. This is a soft limit, it could be rounded up to the next multiple of page size.

1000

no

genie.tasks.database-cleanup.pageSize

The page size used within each cleanup transaction to iterate through the job records

1000

no

genie.tasks.database-cleanup.expression

The cron expression for how often to run the database cleanup task

0 0 0 * * *

no

genie.tasks.database-cleanup.retention

The number of days to retain jobs in the database

90

no

genie.tasks.database-cleanup.skipJobsCleanup

Skip the Jobs table when performing database cleanup

false

no

genie.tasks.database-cleanup.skipClustersCleanup

Skip the Clusters table when performing database cleanup

false

no

genie.tasks.database-cleanup.skipFilesCleanup

Skip the Files table when performing database cleanup

false

no

genie.tasks.database-cleanup.skipTagsCleanup

Skip the Tags table when performing database cleanup

false

no

genie.tasks.disk-cleanup.enabled

Whether or not to remove old job directories on the Genie node or not

true

no

genie.tasks.disk-cleanup.expression

How often to run the disk cleanup task as a cron expression

0 0 0 * * *

no

genie.tasks.disk-cleanup.retention

The number of days to leave old job directories on disk

3

no

genie.tasks.executor.pool.size

The number of executor threads available for tasks to be run on within the node in an adhoc manner. Best to set to the number of CPU cores x 2 + 1

1

no

genie.tasks.scheduler.pool.size

The number of available threads for the scheduler to use to run tasks on the node at scheduled intervals. Best to set to the number of CPU cores x 2 + 1

1

no

genie.tasks.user-metrics.enabled

Whether or not to publish user-tagged metrics

true

no

genie.tasks.user-metrics.refresh-interval

Publish/refresh interval in milliseconds

30000

no

genie.zookeeper.leader.path

The namespace to use for Genie leadership election of a given cluster

/genie/leader/

no

genie.s3filetransfer.strictUrlCheckEnabled

Whether to strictly check an S3 URL for illegal characters before attempting to use it

false

no

Spring Properties

Property Description Default Value

info.genie.version

The Genie version to be displayed by the UI and returned by the actuator /info endpoint. Set by the build.

Current build version

management.endpoints.web.base-path

The default base path for the Spring Actuator[https://docs.spring.io/spring-boot/docs/current/actuator-api/html/] management endpoints. Switched from default /actuator

/admin

security.oauth2.client.client-id

The id of the OAuth2 client

security.oauth2.client.client-secret

The secret for the oauth2 client

security.oauth2.resource.filter-order

The order the OAuth2 resource filter is places within the spring security chain

3

security.oauth2.resource.id

Id of the resource server

security.oauth2.resource.token-info-uri

URI where to get token information from

spring.application.name

The name of the application in the Spring context

genie

spring.banner.location

Banner file location

genie-banner.txt

spring.data.redis.repositories.enabled

Whether Spring data repositories should attempt to be created for Redis

false

spring.datasource.url

JDBC URL of the database

jdbc:h2:mem:genie

spring.datasource.username

Username for the datasource

root

spring.datasource.password

Database password

spring.datasource.hikari.auto-commit

Whether to auto commit transactions

false

spring.datasource.hikari.connection-test-query

Query to use to check if connections are ok

Select 0;

spring.datasource.hikari.leak-detection-threshold

How long to wait (in milliseconds) before a connection should be considered leaked out of the pool if it hasn’t been returned

30000

spring.datasource.hikari.maximum-pool-size

Maximum connection pool size

40

spring.datasource.hikari.minimum-idle

Fewest allowed idle connections

5

spring.datasource.hikari.pool-name

The name of the connection pool. Will show up in logs under this name.

genie-hikari-db-pool

spring.flyway.baselineDescription

Description for the initial baseline of a database instance

Base Version

spring.flyway.baselineOnMigrate

Whether or not to baseline when Flyway is present and the datasource targets a DB that isn’t managed by Flyway

true

spring.flyway.baselineVersion

Initial DB version (When Genie migrated to Flyway is current setting. Shouldn’t touch)

3.2.0

spring.flyway.locations

Where flyway should look for database migration files

classpath:db/migration/{vendor}

spring.jackson.serialization.write-dates-as-timestamps

Whether to serialize instants as timestamps or ISO8601 strings

false

spring.jackson.time-zone

Time zone used when formatting dates. For instance America/Los_Angeles

UTC

spring.jpa.hibernate.ddl-auto

DDL mode. This is actually a shortcut for the "hibernate.hbm2ddl.auto" property.

validate

spring.jpa.hibernate.properties.hibernate.jdbc.time_zone

The timezone to use when writing dates to the database see article

UTC

spring.profiles.active

The default active profiles when Genie is run

dev

spring.mail.host

The hostname of the mail server

spring.mail.testConnection

Whether to check the connection to the mail server on startup

false

spring.redis.host

Endpoint for the Redis cluster used to store HTTP session information

spring.servlet.multipart.max-file-size

Max attachment file size. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size.

100MB

spring.servlet.multipart.max-request-size

Max job request size. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size.

200MB

spring.session.store-type

The back end storage system for Spring to store HTTP session information. See Spring Boot Session for more information. Currently on classpath only none, redis and jdbc will work.

none

Spring Cloud Properties

Properties set by default to manipulate various Spring Cloud libraries.

Property Description Default Value

cloud.aws.credentials.useDefaultAwsCredentialsChain

Whether to attempt creation of a standard AWS credentials chain. See Spring Cloud AWS for more information.

true

cloud.aws.region.auto

Whether the AWS region will be attempted to be auto recognized via the AWS metadata services on EC2. See Spring Cloud AWS for more information.

false

cloud.aws.region.static

The default AWS region. See Spring Cloud AWS for more information.

us-east-1

cloud.aws.stack.auto

Whether auto stack detection is enabled. See Spring Cloud AWS for more information.

false

spring.cloud.zookeeper.enabled

Whether to enable zookeeper functionality or not

false

spring.cloud.zookeeper.connectString

The connection string for the zookeeper cluster

localhost:2181

gRPC Server properties

Property

Description

Default Value

grpc.server.port

The port on which to bind the gRPC server, if enabled.

9090

grpc.server.address

The address on which to bind the gRPC server, if enabled.

0.0.0.0

Profile Specific Properties

Prod Profile

Property Description Default Value

spring.datasource.url

JDBC URL of the database

jdbc:mysql://127.0.0.1/genie?useUnicode=yes&characterEncoding=UTF-8&useLegacyDatetimeCode=false

spring.datasource.username

Username for the datasource

root

spring.datasource.password

Database password

spring.datasource.hikari.data-source-properties.cachePrepStmts

MySQL Tuning

true

spring.datasource.hikari.data-source-properties.prepStmtCacheSize

MySQL Tuning

250

spring.datasource.hikari.data-source-properties.prepStmtCacheSqlLimit

MySQL Tuning

2048

spring.datasource.hikari.data-source-properties.useServerPrepStmts

MySQL Tuning

true

spring.datasource.hikari.data-source-properties.useLocalSessionState

MySQL Tuning

true

spring.datasource.hikari.data-source-properties.useLocalTransactionState

MySQL Tuning

true

spring.datasource.hikari.data-source-properties.rewriteBatchedStatements

MySQL Tuning

true

spring.datasource.hikari.data-source-properties.cacheResultSetMetadata

MySQL Tuning

true

spring.datasource.hikari.data-source-properties.elideSetAutoCommits

MySQL Tuning

true

spring.datasource.hikari.data-source-properties.maintainTimeStats

MySQL Tuning

false