blob: a8bbe5a5f25099d03dbdc844afb91289c27d68d6 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with this
* work for additional information regarding copyright ownership. The ASF
* licenses this file to You under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*/
package org.apache.hugegraph.config;
import static org.apache.hugegraph.config.OptionChecker.allowValues;
import static org.apache.hugegraph.config.OptionChecker.disallowEmpty;
import static org.apache.hugegraph.config.OptionChecker.nonNegativeInt;
import static org.apache.hugegraph.config.OptionChecker.positiveInt;
import static org.apache.hugegraph.config.OptionChecker.rangeInt;
public class ServerOptions extends OptionHolder {
private ServerOptions() {
super();
}
private static volatile ServerOptions instance;
public static synchronized ServerOptions instance() {
if (instance == null) {
instance = new ServerOptions();
instance.registerOptions();
}
return instance;
}
public static final ConfigOption<String> REST_SERVER_URL =
new ConfigOption<>(
"restserver.url",
"The url for listening of hugeserver.",
disallowEmpty(),
"http://127.0.0.1:8080"
);
public static final ConfigOption<String> SERVER_ID =
new ConfigOption<>(
"server.id",
"The id of hugegraph-server.",
disallowEmpty(),
"server-1"
);
public static final ConfigOption<String> SERVER_ROLE =
new ConfigOption<>(
"server.role",
"The role of nodes in the cluster, available types are " +
"[master, worker, computer]",
allowValues("master", "worker", "computer"),
"master"
);
public static final ConfigOption<Integer> MAX_WORKER_THREADS =
new ConfigOption<>(
"restserver.max_worker_threads",
"The maximum worker threads of rest server.",
rangeInt(2, Integer.MAX_VALUE),
2 * CoreOptions.CPUS
);
public static final ConfigOption<Integer> MIN_FREE_MEMORY =
new ConfigOption<>(
"restserver.min_free_memory",
"The minimum free memory(MB) of rest server, requests " +
"will be rejected when the available memory of system " +
"is lower than this value.",
nonNegativeInt(),
64
);
public static final ConfigOption<Integer> REQUEST_TIMEOUT =
new ConfigOption<>(
"restserver.request_timeout",
"The time in seconds within which a request must complete, " +
"-1 means no timeout.",
rangeInt(-1, Integer.MAX_VALUE),
30
);
public static final ConfigOption<Integer> CONN_IDLE_TIMEOUT =
new ConfigOption<>(
"restserver.connection_idle_timeout",
"The time in seconds to keep an inactive connection " +
"alive, -1 means no timeout.",
rangeInt(-1, Integer.MAX_VALUE),
30
);
public static final ConfigOption<Integer> CONN_MAX_REQUESTS =
new ConfigOption<>(
"restserver.connection_max_requests",
"The max number of HTTP requests allowed to be processed " +
"on one keep-alive connection, -1 means unlimited.",
rangeInt(-1, Integer.MAX_VALUE),
256
);
public static final ConfigOption<String> GREMLIN_SERVER_URL =
new ConfigOption<>(
"gremlinserver.url",
"The url of gremlin server.",
disallowEmpty(),
"http://127.0.0.1:8182"
);
public static final ConfigOption<Integer> GREMLIN_SERVER_TIMEOUT =
new ConfigOption<>(
"gremlinserver.timeout",
"The timeout in seconds of waiting for gremlin server.",
positiveInt(),
30
);
public static final ConfigOption<Integer> GREMLIN_SERVER_MAX_ROUTE =
new ConfigOption<>(
"gremlinserver.max_route",
"The max route number for gremlin server.",
positiveInt(),
2 * CoreOptions.CPUS
);
public static final ConfigOption<String> GRAPHS =
new ConfigOption<>(
"graphs",
"The directory store graphs' config file.",
disallowEmpty(),
"./conf/graphs"
);
public static final ConfigOption<Integer> MAX_VERTICES_PER_BATCH =
new ConfigOption<>(
"batch.max_vertices_per_batch",
"The maximum number of vertices submitted per batch.",
positiveInt(),
500
);
public static final ConfigOption<Integer> MAX_EDGES_PER_BATCH =
new ConfigOption<>(
"batch.max_edges_per_batch",
"The maximum number of edges submitted per batch.",
positiveInt(),
500
);
public static final ConfigOption<Integer> MAX_WRITE_RATIO =
new ConfigOption<>(
"batch.max_write_ratio",
"The maximum thread ratio for batch writing, " +
"only take effect if the batch.max_write_threads is 0.",
rangeInt(0, 100),
50
);
public static final ConfigOption<Integer> MAX_WRITE_THREADS =
new ConfigOption<>(
"batch.max_write_threads",
"The maximum threads for batch writing, " +
"if the value is 0, the actual value will be set to " +
"batch.max_write_ratio * restserver.max_worker_threads.",
nonNegativeInt(),
0);
public static final ConfigOption<String> RAFT_GROUP_PEERS =
new ConfigOption<>(
"raft.group_peers",
"The rpc address of raft group initial peers.",
disallowEmpty(),
"127.0.0.1:8090"
);
public static final ConfigOption<Boolean> ALLOW_TRACE =
new ConfigOption<>(
"exception.allow_trace",
"Whether to allow exception trace stack.",
disallowEmpty(),
false
);
public static final ConfigOption<String> AUTHENTICATOR =
new ConfigOption<>(
"auth.authenticator",
"The class path of authenticator implementation. " +
"e.g., org.apache.hugegraph.auth.StandardAuthenticator, " +
"or org.apache.hugegraph.auth.ConfigAuthenticator.",
null,
""
);
public static final ConfigOption<String> AUTH_GRAPH_STORE =
new ConfigOption<>(
"auth.graph_store",
"The name of graph used to store authentication information, " +
"like users, only for org.apache.hugegraph.auth.StandardAuthenticator.",
disallowEmpty(),
"hugegraph"
);
public static final ConfigOption<String> AUTH_ADMIN_TOKEN =
new ConfigOption<>(
"auth.admin_token",
"Token for administrator operations, " +
"only for org.apache.hugegraph.auth.ConfigAuthenticator.",
disallowEmpty(),
"162f7848-0b6d-4faf-b557-3a0797869c55"
);
public static final ConfigListOption<String> AUTH_USER_TOKENS =
new ConfigListOption<>(
"auth.user_tokens",
"The map of user tokens with name and password, " +
"only for org.apache.hugegraph.auth.ConfigAuthenticator.",
disallowEmpty(),
"hugegraph:9fd95c9c-711b-415b-b85f-d4df46ba5c31"
);
public static final ConfigOption<String> AUTH_REMOTE_URL =
new ConfigOption<>(
"auth.remote_url",
"If the address is empty, it provide auth service, " +
"otherwise it is auth client and also provide auth service " +
"through rpc forwarding. The remote url can be set to " +
"multiple addresses, which are concat by ','.",
null,
""
);
public static final ConfigOption<String> SSL_KEYSTORE_FILE =
new ConfigOption<>(
"ssl.keystore_file",
"The path of server keystore file used when https " +
"protocol is enabled.",
disallowEmpty(),
"conf/hugegraph-server.keystore"
);
public static final ConfigOption<String> SSL_KEYSTORE_PASSWORD =
new ConfigOption<>(
"ssl.keystore_password",
"The password of the server keystore file " +
"when the https protocol is enabled.",
null,
"hugegraph"
);
public static final ConfigOption<Boolean> ENABLE_DYNAMIC_CREATE_DROP =
new ConfigOption<>(
"graphs.enable_dynamic_create_drop",
"Whether to enable create or drop graph dynamically.",
disallowEmpty(),
true
);
public static final ConfigOption<String> WHITE_IP_STATUS =
new ConfigOption<>(
"white_ip.status",
"The status of whether enable white ip.",
disallowEmpty(),
"disable"
);
public static final ConfigOption<String> ARTHAS_TELNET_PORT =
new ConfigOption<>(
"arthas.telnet_port",
"The telnet port provided by Arthas, it can be accessible from the outside.",
disallowEmpty(),
"8562"
);
public static final ConfigOption<String> ARTHAS_HTTP_PORT =
new ConfigOption<>(
"arthas.http_port",
"The HTTP port provided by Arthas, it can be accessible from the outside.",
disallowEmpty(),
"8561"
);
public static final ConfigOption<String> ARTHAS_IP =
new ConfigOption<>(
"arthas.ip",
"The IP provided by Arthas, it can be accessible from the outside.",
disallowEmpty(),
"0.0.0.0"
);
public static final ConfigOption<String> ARTHAS_DISABLED_COMMANDS =
new ConfigOption<>(
"arthas.disabled_commands",
"The disabled Arthas commands due to high risk.",
null,
"jad"
);
public static final ConfigOption<Long> SLOW_QUERY_LOG_TIME_THRESHOLD =
new ConfigOption<>(
"log.slow_query_threshold",
"The threshold time(ms) of logging slow query, " +
"0 means logging slow query is disabled.",
nonNegativeInt(),
1000L
);
}