Class Settings

java.lang.Object
org.apache.tinkerpop.gremlin.server.Settings

public class Settings extends Object
Server settings as configured by a YAML file.
Author:
Stephen Mallette (http://stephen.genoprime.com)
  • Field Details

    • host

      public String host
      Host to bind the server to. Defaults to localhost.
    • port

      public int port
      Port to bind the server to. Defaults to 8182.
    • threadPoolWorker

      public int threadPoolWorker
      Size of the worker thread pool. Defaults to 1 and should generally not exceed 2 * number of cores. A worker thread performs non-blocking read and write for one or more Channels in a non-blocking mode.
    • useEpollEventLoop

      public boolean useEpollEventLoop
      detect if the OS is linux, then use epoll instead of NIO which causes less GC
    • gremlinPool

      public int gremlinPool
      Size of the Gremlin thread pool. This pool handles Gremlin script execution and other related "long-run" processing. Defaults to a setting of 0 which indicates the value should be set to Runtime#availableProcessors().
    • threadPoolBoss

      public int threadPoolBoss
      Size of the boss thread pool. Defaults to 1 and should likely stay at 1. The bossy thread accepts incoming connections on a port until it is unbound. Once a connection is accepted successfully, the boss thread passes processing to the worker threads.
    • timeoutMillis

      public long timeoutMillis
      The maximum time in milliseconds that a request is allowed to execute on the server before it times out. Serves as the server-wide default which may be overridden on a per-request basis. Defaults to 30000.
    • resultIterationBatchSize

      public int resultIterationBatchSize
      Number of items in a particular resultset to iterate and serialize prior to pushing the data down the wire to the client.
    • maxInitialLineLength

      public int maxInitialLineLength
      The maximum length of the initial line (e.g. "GET / HTTP/1.0") processed in a request, which essentially controls the maximum length of the submitted URI. This setting ties to the Netty HttpRequestDecoder.
    • maxHeaderSize

      public int maxHeaderSize
      The maximum length of all headers. This setting ties to the Netty HttpRequestDecoder
    • maxChunkSize

      public int maxChunkSize
      The maximum length of the content or each chunk. If the content length exceeds this value, the transfer encoding of the decoded request will be converted to 'chunked' and the content will be split into multiple HttpContents. If the transfer encoding of the HTTP request is 'chunked' already, each chunk will be split into smaller chunks if the length of the chunk exceeds this value.
    • maxRequestContentLength

      public int maxRequestContentLength
      The maximum length of the aggregated content for a request message. Works in concert with maxChunkSize where chunked requests are accumulated back into a single message. A request exceeding this size will return a 413 - Request Entity Too Large status code.
    • maxAccumulationBufferComponents

      public int maxAccumulationBufferComponents
      Maximum number of request components that can be aggregated for a message.
    • writeBufferHighWaterMark

      public int writeBufferHighWaterMark
      If the number of bytes in the network send buffer exceeds this value then the channel is no longer writeable, accepting no additional writes until buffer is drained and the writeBufferLowWaterMark is met.
    • writeBufferLowWaterMark

      public int writeBufferLowWaterMark
      Once the number of bytes queued in the network send buffer exceeds the high water mark, the channel will not become writeable again until the buffer is drained and it drops below this value.
    • idleConnectionTimeoutMillis

      public long idleConnectionTimeoutMillis
      Time in milliseconds that the server will allow a channel to not receive requests from a client before it automatically closes. If enabled, the value provided should typically exceed the amount of time given to keepAliveIntervalMillis. Note that while this value is to be provided as milliseconds it will resolve to second precision. Set this value to 0 to disable this feature.
    • keepAliveIntervalMillis

      public long keepAliveIntervalMillis
      Time in milliseconds that the server will allow a channel to not send responses to a client before it sends a "ping" to see if it is still present. If it is present, the client should respond with a "pong" which will thus reset the idleConnectionTimeoutMillis and keep the channel open. If enabled, this number should be smaller than the value provided to the idleConnectionTimeoutMillis. Note that while this value is to be provided as milliseconds it will resolve to second precision. Set this value to 0 to disable this feature.
    • strictTransactionManagement

      public boolean strictTransactionManagement
      If set to true the aliases option is required on requests and Gremlin Server will use that information to control which Graph instances are transaction managed for that request. If this setting is false (which is the default), specification of aliases is not required and Gremlin Server will simply apply a commit for all graphs. This setting only applies to sessionless requests. With either setting the user is responsible for their own transaction management for in-session requests.
    • idleTransactionTimeoutMillis

      public long idleTransactionTimeoutMillis
      Time in milliseconds that a transaction can remain idle (no operation running or queued) before it is automatically rolled back. This prevents resource leaks from abandoned transactions. The idle timer is suspended while an operation is in progress, so a long-running operation does not trip it (its duration is instead bounded by timeoutMillis). Set to 0 to disable idle reclamation entirely. Default is 60000 (1 minute).
    • perGraphCloseTimeoutMillis

      public long perGraphCloseTimeoutMillis
      Time in milliseconds to wait for a transaction commit or rollback operation to complete. Default is 10000 (10 seconds).
    • maxConcurrentTransactions

      public int maxConcurrentTransactions
      Maximum number of concurrent transactions allowed on the server. Default is 1000.
    • maxTransactionLifetimeMillis

      public long maxTransactionLifetimeMillis
      Absolute ceiling, in milliseconds, on the total age of a transaction regardless of activity. Unlike idleTransactionTimeoutMillis (which only reclaims idle transactions), this cap fires even while an operation is running, interrupting it and rolling the transaction back, so it bounds how long a single transaction can hold its dedicated worker thread and concurrency slot. The bound on transaction lifetime and slot occupancy is absolute; the bound on thread occupancy is best-effort in the same way timeoutMillis is, since interrupting a running operation only takes effect when it reaches an interruptible point. Set to 0 to disable the cap. Default is 600000 (10 minutes).
    • channelizer

      public String channelizer
      The full class name of the Channelizer to use in Gremlin Server.
    • graphManager

      public String graphManager
      The full class name of the GraphManager to use in Gremlin Server.
    • maxWorkQueueSize

      public int maxWorkQueueSize
      Maximum size the general processing queue can grow before starting to reject requests. The general processing queue is managed by a thread pool that has its size determined by gremlinPool. All incoming requests will be processed by this thread pool. If the threads are exhausted, the requests will queue to the size specified by this value after which they will begin to reject the requests.

      By default this value is set to 8192.

    • maxParameters

      public int maxParameters
      Maximum number of parameters that can be passed on a request. Larger numbers may impact performance for scripts. The default is 16 and this setting only applies to the HttpChannelizer.
    • metrics

      public Settings.ServerMetrics metrics
      Configured metrics for Gremlin Server.
    • graphs

      public Map<String,Object> graphs
      Map of Graph configurations keyed by their binding name. Values may be either a String (path to a configuration file) or a Settings.GraphSettings object for graphs that need explicit TraversalSource configuration.
    • scriptEngines

      public Map<String,Settings.ScriptEngineSettings> scriptEngines
      Map of settings for ScriptEngine setting objects keyed by the name of the ScriptEngine implementation.
    • lifecycleHooks

      public List<Settings.LifeCycleHookSettings> lifecycleHooks
      List of LifeCycleHook implementations to instantiate via reflection and execute during server initialization and shutdown.
    • serializers

      public List<Settings.SerializerSettings> serializers
      List of MessageSerializer to configure. If no serializers are specified then default serializers for the most current versions of "application/json" and "application/vnd.gremlin-v1.0+gryo" are applied.
    • ssl

      Configures settings for SSL.
    • authentication

      public Settings.AuthenticationSettings authentication
    • authorization

      public Settings.AuthorizationSettings authorization
    • cors

      public Settings.CorsSettings cors
      Configures CORS (Cross-Origin Resource Sharing) for the HTTP endpoint.
    • enableAuditLog

      public Boolean enableAuditLog
      Enable audit logging of authenticated users and gremlin evaluation requests.
  • Constructor Details

    • Settings

      public Settings()
  • Method Details

    • getGraphSettings

      public Settings.GraphSettings getGraphSettings(String graphName)
      Returns the Settings.GraphSettings for the named graph, normalizing from the raw YAML value. Accepts a String (configuration path only), a Settings.GraphSettings, or a raw Map produced by SnakeYAML for the structured form.
    • optionalMetrics

      public Optional<Settings.ServerMetrics> optionalMetrics()
    • optionalSsl

      public Optional<Settings.SslSettings> optionalSsl()
    • getTimeoutMillis

      public long getTimeoutMillis()
    • read

      public static Settings read(String file) throws Exception
      Read configuration from a file into a new Settings object.
      Parameters:
      file - the location of a Gremlin Server YAML configuration file
      Returns:
      a new Optional object wrapping the created Settings
      Throws:
      Exception
    • createDefaultYamlConstructor

      protected static org.yaml.snakeyaml.constructor.Constructor createDefaultYamlConstructor()
      Creates Constructor which contains all configurations to parse a Gremlin Server YAML configuration file using SnakeYAML.
      Returns:
      a Constructor to parse a Gremlin Server YAML
    • read

      public static Settings read(InputStream stream)
      Read configuration from a file into a new Settings object.
      Parameters:
      stream - an input stream containing a Gremlin Server YAML configuration
      Returns:
      a new Optional object wrapping the created Settings