All Downloads are FREE. Search and download functionalities are using the official Maven repository.

celabs.convergence-server_2.13.1.0.0-rc.13.source-code.reference.conf Maven / Gradle / Ivy

#####################################
# Convergence Reference Config File #
#####################################

# This reference file contains all of the default settings for Convergence.
# The file contains both defaults for Convergence itself, as well as for
# Akka. These settings can be overridden in the convergence-server.conf file.

# The root of all Convergence specific configurations.
convergence {

  # Determines how long the server will wait for start up to complete before
  # assuming there is a failure.
  server-startup-timeout = 5 minutes

  # Determines how long the server will wait for shut down to complete before
  # assuming there is a failure.
  server-shutdown-timeout = 2 minute

  # Determines how long the server will wait for the Akka ActorSystem to
  # gracefully terminate before exiting the JVM.
  system-termination-timeout = 30 seconds

  # How long a Domain will remain active after the last client disconnects.
  domain-shutdown-delay = 10 minutes

  # The number of shards for the Akka Cluster Sharding for the various
  # Shard region Convergence uses.
  shard-count = 100

  # Persistence related configurations.
  persistence {

    # Configurations for the Orient DB Database.
    server {
      # The connection URI for the database. This MUST be set in the
      # convergence-server.conf.
      uri = ""

      # The username of a user that has permissions to create and drop
      # databases, change schema, and manage users.
      admin-username = "root"

      # The password for the admin user.
      admin-password = "password"
    }

    # Configurations for the Convergence database within OrientDB.
    convergence-database {

      # The name of the Convergence database.
      database = "convergence"

      # Note: Orient DB uses default username and passwords for the databases.
      # these will be deleted and the following users will be created.

      # The username of a user that has write privileges to the database.
      username = writer

      # The password of a user that has write privileges to the database.
      password = writer

      # The password of a user that has the ability to create schema within
      # the Convergence database. This user will be used to install and
      # upgrade schema.
      admin-username = admin

      # The password for the admin database user.
      admin-password = admin

      # Determines the behavior of the Convergence database auto-installation
      # feature. The server can check to see if the Convergence database has
      # been installed on startup and if not, automatically install it.
      auto-install = {
        # Whether the auto-install is enabled or not.
        enabled = true

        # If the schema to be installed should include pre-release (e.g.
        # development) deltas. Default is false for production environments.
        pre-release = false
      }

      # When starting up it is possible that the Database has not yet started.
      # This configures the retry interval between connection attempts.
      retry-delay = 15s

      # The timeout to wait for the Convergence database to become initialized.
      # Either because it needed to be installed, or just to get the answer
      # from the system that it is already initialized.
      initialization-timeout = 10m

      # Configures the OrientDB Connection pool.
      pool {
        # The minimum number of connections to keep alive.
        db-pool-min = 0

        # The maximum number of connections to create.
        db-pool-max = 100
      }
    }

    # Configurations for the Domain specific databases that Convergence
    # will create for each Domain.
    domain-databases {
      # Whether to use the default Orient DB usernames and passwords for
      # domain database. This should be set to true for production. It
      # may be useful to set it to false in a development mode in order to
      # more easily log into the Domain databases.
      randomize-credentials = true

      # If the schema to be installed should include pre-release (e.g.
      # development) deltas. Default is false for production environments.
      pre-release = false

      # The maximum amount of time to wait for a Domain database to be
      # initialized before assuming initialization has failed.
      initialization-timeout = 5m

      # The maximum amount of time to wait for a Domain database to be
      # removed.
      deletion-timeout = 5m

      # Configures the OrientDB Connection pool.
      pool {
        # The minimum number of connections to keep alive.
        db-pool-min = 0

        # The maximum number of connections to create.
        db-pool-max = 100
      }
    }
  }

  # Configures how the Server will be initialized on first startup.
  bootstrap {

    # Default configurations to add to the Convergence database.
    default-configs {
      namespaces.enabled = true
      namespaces.user-namespaces-enabled = true
      namespaces.default-namespace = convergence
    }

    # A list of namespaces to create in the server.
    namespaces = [{
      id = convergence
      displayName = "Convergence"
    }]

    # The set of domains to create.
    domains = [{
      namespace: "convergence"
      id: "default"
      displayName: "Default"
      favorite: true
      config {
        authentication {
           anonymousAuthEnabled: false
        }

        collection {
          autoCreate: false
        }
      }
    }]
  }

  # Configures the default server admin user. This user will always exist in
  # the system. If it is deleted, it will be re-created on server restart.
  # This ensures there is always a way to administer the server.
  default-server-admin {
    # The username of the default server admin.
    username = admin

    # The password of the default server admin.
    password = password

    # The email of the default server admin.
    email = "[email protected]"

    # The first name of the default server admin.
    firstName = Server

    # The last name of the default server admin.
    lastName = Admin

    # The display name of the default server admin.
    displayName = Server Admin
  }

  # Configurations for the Convergence user manager.
  user-manager {
    # A timeout to wait for domains in a user's namespace to be deleted when
    # deleting the user.
    domain-deletion-timeout = 10s
  }

  # Configurations for the Realtime API subsystem.
  realtime {
    # The host name to bind to. This defaults to "0.0.0.0" which indicates the
    # server should bind to all available interfaces.
    host = "0.0.0.0"

    # The TCP port to bind to.
    port = 8080

    # Configurations for the WebSocket server.
    websocket {
      # The maximum number of frames to buffer for an individual web socket
      # message.
      max-frames = 1024

      # The maximum amount of time to wait for the stream of frames for a
      # single message to be completed.
      max-stream-duration = 10s
    }

    # Configurations for the Convergence Realtime protocol.
    protocol {
      # How long to wait for the handshake process between the client and
      # server to complete.
      handshake-timeout = 10s

      # How long the server should wait to complete processing a client request
      # before sending a timeout back to the client.
      default-request-timeout = 20s

      # Configures the keep-alive / failure detection heart beat protocol. This
      # feature helps keep the web socket connection alive and also allows both
      # the client and server to more readily detect when the other side has
      # disconnected uncleanly.
      heartbeat = {
        # Whether the heartbeat is enabled or not.
        enabled = true

        # How long to wait after receiving the last message from the client
        # to send the client a ping message.
        ping-interval = 10s

        # How long to wait for a pong (or any message) from the client after a
        # ping before determining the client has disconnected.
        pong-timeout = 10s
      }
    }

    # Configurations for the ClientActor on the server. Each connected client
    # has a corresponding ClientActor on the server that manages the session
    # with that client.
    client {
      # How long the WebSocket service should wait for the ClientActor to be
      # spawned. The client actor is always spawned on the same host that the
      # web socket connection came in on, so this should be a quick operation.
      client-creation-timeout = 2s

      # The maximum amount of time the client should wait to resolve the
      # identity of users mentioned in outgoing messages in order to send
      # identity cache updates to the client.
      identity-resolution-timeout = 3s

      # How long the client actor should wait to handshake with the DomainActor
      # in the backend.
      domain-handshake-timeout = 5s

      # How long the client actor should wait for the authentication process
      # to complete.
      domain-authentication-timeout = 5s

      # How long the client should wait to resolve the connecting users
      # presence information needed to respond to the authentication
      # request.
      auth-presence-timeout = 3s

      # How often the client should send a heartbeat to the domain to
      # ensure the session is kept alive
      heartbeat-interval = 30s
    }

    # Configurations for the Realtime Model subsystem.
    model {
      # How long a RealtimeModelActor should remain in memory after the last
      # client disconnected and/or the last REST request was received.
      passivation-timeout = 10s

      # How long to wait for a client to provide model data during model
      # initialization.
      client-data-timeout = 15s

      # How long to wait for a client that is resynchronizing a model to
      # either send the next operation, or to complete the resync process
      # after the server has indicated that it has sent all of the
      # operations.
      resynchronization-timeout = 5m
    }

    # Configurations for the chat subsystem.
    chat {
      # How long a chat actor should remain in memory after the last message /
      # event was received. This does not apply to Chat Rooms since chat rooms
      # shut down as soon as now clients are connected.
      passivation-timeout = 120s
    }

    activity {
      # How long an activity actor should remain in memory after the last message /
      # event was received when no participants are joined to the activity.
      passivation-timeout = 10s
    }

    # Configurations for the Domain Actors
    domain {
      # How long a Domain Actor will stay in memory after the last client
      # disconnected.
      passivation-timeout = 10s

      # How often the domain actor should check for sessions that haven't
      # sent a heart beat within the specified duration.
      session-prune-interval = 2m

      # How long beyond the last heartbeat should the domain wait before
      # considering the session to be disconnected
      idle-session-timeout = 1m
    }
  }

  # Configurations for the REST API subsystem.
  rest {
    # The host name to bind to. This defaults to "0.0.0.0" which indicates the
    # server should bind to all available interfaces.
    host = "0.0.0.0"

    # The TCP port to bind to.
    port = 8081

    # How long the DomainRestActor will stay in memory after the last REST
    # request was received.
    rest-domain-shutdown-delay = 2 minutes

    # The maximum amount of time it should take for a DomainRestActor to
    # shut down.
    max-rest-actor-shutdown = 30 seconds
  }

  # Configures the offline subsystem.
  offline {
    # Specifies the interval between checking for model updates.
    model-sync-interval = 5 minutes
  }
}

#
# Akka specific configurations.
#

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "DEBUG"
  logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"

  # Configurations for the Jackson Serialization. Note that we
  # are using the jackson-cbor serialization below in the
  # akka.actor.serialization-bindings section below.
  serialization.jackson {
    serialization-features {
      WRITE_DATES_AS_TIMESTAMPS = on
      WRITE_DURATIONS_AS_TIMESTAMPS = on
    }

    # Provides serialization optimization for Convergence types.
    jackson-modules += "com.convergencelabs.convergence.server.util.serialization.akka.ConvergenceJacksonModule"

    # Convergence uses Json4s internally, so we want to be able to serialize
    # those values with Jackson.
    jackson-modules += "org.json4s.jackson.Json4sScalaModule"
  }

  actor {
    provider = "cluster"

    debug {
      unhandled = on
    }

    serialization-bindings {
      "com.convergencelabs.convergence.server.util.serialization.akka.CborSerializable" = jackson-cbor
      "com.google.protobuf.Message" = proto
    }

    # In general we do not java serialization, but we would rather warn about
    # it for now rather than blow up.
    warn-about-java-serializer-usage = true
    allow-java-serialization = true
  }

  remote {
    maximum-payload-bytes = 2 megabytes
    log-remote-lifecycle-events = off

    artery {
      transport = tcp

      // Note: Ports are set to 0 by default to support testing without
      // conflicting. It is likely that the application.conf will set
      // them to a specific value.

      bind.hostname = "0.0.0.0"
      bind.port = 0

      canonical.hostname = "127.0.0.1"
      canonical.port = 0

      advanced {
        maximum-frame-size = 2 megabytes
      }
    }
  }

  cluster {
    sharding.state-store-mode = ddata
    sharding.distributed-data.durable.keys = []

    seed-nodes = []
    roles = []

    sharding {
      passivate-idle-entity-after = "off"
    }

    downing-provider-class = "akka.cluster.sbr.SplitBrainResolverProvider"
  }

  http {
    server {
      idle-timeout = 60 minutes
      remote-address-header = on
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy