Package oracle.pgx.config
Class PgxConfig
- java.lang.Object
-
- oracle.pgx.config.AbstractConfig
-
- oracle.pgx.config.AbstractEngineConfig
-
- oracle.pgx.config.AbstractPgxConfig
-
- oracle.pgx.config.PgxConfig
-
@Generated("config_generator.py") public class PgxConfig extends AbstractPgxConfig
PGX Engine Config
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
PgxConfig.Field
Fields of PGX Engine Config
-
Field Summary
-
Fields inherited from class oracle.pgx.config.AbstractPgxConfig
DEFAULT_FILE_NAME, FILE_PATH_PROPERTY
-
Fields inherited from class oracle.pgx.config.AbstractConfig
ENV_SEPARATOR, ENV_VARIABLE_PREFIX, SYSTEM_PROPERTY_PREFIX
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object obj)
java.lang.Integer
getAdminRequestCacheTimeout()
after how many seconds admin request results get removed from the cache.java.util.List<java.lang.String>
getAllowedRemoteLoadingLocations()
(This option may reduce security, use it only if you know what you are doing!) Allow loading graphs into the PGX engine from remote locations.java.util.List<AuthorizationEntityConfig>
getAuthorization()
mapping of users and roles to resources and permissions for authorizationjava.util.List<PgxConfig.Field>
getBackendFields()
java.lang.String
getBackendWrapper()
Only for internal use.BasicSchedulerConfig
getBasicSchedulerConfig()
configuration parameters for the fork join pool backendjava.lang.Integer
getBfsIterateQueTaskSize()
task size for BFS iterate QUE phasejava.lang.Double
getBfsThresholdParentReadBased()
threshold of BFS traversal level items above which to switch to parent-read-based visiting strategyjava.lang.Integer
getBfsThresholdReadBased()
threshold of BFS traversal level items above which to switch to read-based visiting strategyjava.lang.Integer
getBfsThresholdSingleThreaded()
until what number of BFS traversal level items vertices are visited single-threadedjava.lang.String
getBuiltinsPath()
Path to the builtin algorithms directory.java.lang.String
getCharacterSet()
standard charset to use throughout PGX, UTF-8 will be used as default.java.lang.Integer
getCniDiffFactorDefault()
default diff factor value used in the common neighbor iterator implementations.java.lang.Integer
getCniSmallDefault()
default value used in the common neighbor iterator implementations, to indicate below which threshold a subarray is considered small.java.lang.Integer
getCniStopRecursionDefault()
default value used in the common neighbor iterator implementations, to indicate the minimum size where the binary search approach is applied.java.lang.String
getCommonLogConfigure()
Path to a log configuration in Logback syntax.static PgxConfig.Field[]
getConfigFields()
DataMemoryLimitsConfig
getDataMemoryLimits()
memory limits configuration parametersjava.lang.String
getDebugServer()
Hostname of the debug server.java.lang.Integer
getDfsThresholdLarge()
value that determines at which number of visited vertices the DFS implementation will switch to data-structures that are more optimized for larger numbers of vertices.java.lang.Integer
getEngineConnectionTimeoutSecs()
Timeout in seconds to setup the initial connections among PGX.D processes.java.lang.String
getEngineTlsCipher()
Cipher suite name (in OpenSSL syntax) to be used by the engine for securing TLS connections.java.lang.String
getEngineTlsExpectedDn()
If non empty, the engine will verify that the peer's certificate's Subject Distinguished Name matches exactly the given string.java.lang.String
getEngineTlsKeystore()
Path to the PKCS12 keystore to be used by the engine for securing mutual TLS connections between engine processes.java.lang.String
getEngineTlsTruststore()
Path to the PEM truststore to be used by the engine for securing mutual TLS connections between engine processes.EnterpriseSchedulerConfig
getEnterpriseSchedulerConfig()
configuration parameters for the enterprise schedulerEnterpriseSchedulerFlagsConfig
getEnterpriseSchedulerFlags()
[relevant for enterprise_scheduler] enterprise scheduler specific settings.java.lang.String
getExecutablePath()
Path to the PGX.D executable.java.util.List<java.lang.String>
getExistingHostnames()
A list of names or IP addresses of hosts that are already part of an existing PGX.D cluster.java.util.List<AuthorizationLocationConfig>
getFileLocations()
the file-locations that can be used in the authorization-configCompiler
getGraphAlgorithmLanguage()
Frontend compiler to use.GraphSharingOption
getGraphSharingOption()
control if a graph can be published and shared with other usersGraphValidationLevel
getGraphValidationLevel()
level of validation performed on newly loaded or created graphsjava.lang.Integer
getHandshakePort()
a TCP port which will be used for handshaking of distributed backend processes.java.util.List<java.lang.String>
getHostnames()
A list of names or IP addresses of hosts which should be involved in initial bootstrapping of a PGX.D cluster.java.lang.String
getIfEthernet()
Ethernet network interface, used to initialize the network transport layer when using Ethernet.java.lang.String
getIfInfiniband()
InfiniBand network interface, used to initialize the network transport layer when using InfiniBand.UpdateConsistencyModel
getInPlaceUpdateConsistencyModel()
Consistency model used when in-place updates occur.java.lang.String
getInstanceName()
Instance name sent as label to debug server.java.lang.Integer
getIntervalToPollMax()
Exponential backoff upper bound (in ms) to which -once reached, the job status polling interval is fixedjava.lang.String
getJavaClassPath()
Path to required java libraries.java.lang.String
getJavaHomeDir()
The path to Java's home directory.java.lang.Integer
getLargeArrayThreshold()
threshold when the size of an array is too big to use a normal Java array.java.lang.Integer
getLargeBufCount()
Number of large buffers populated in the pool.java.lang.Integer
getLargeBufSizeKb()
Size in kB of the large buffers.java.util.Map<java.lang.String,java.lang.Object>
getLeftoverValues()
Gets the values that do not belong to any field.java.lang.Integer
getLivenessCheckDelaySecs()
Liveness check interval, i.e., how often to check that the PGX.D server is alive and that it can accept and execute commands.java.lang.Integer
getLivenessCheckTimeoutSecs()
Fails liveness check task if it cannot complete the liveness task in the period of time.java.lang.String
getLogConfigure()
Path to a log configuration in Log4j (version 1) syntax.java.lang.String
getLogStdRedirect()
Path to a log file into which the standard output streams (stdout, stderr) of PGX.D backend should be redirected.java.lang.Integer
getMaxActiveSessions()
the maximum number of sessions allowed to be active at a timejava.lang.Integer
getMaxDistinctStringsPerPool()
[only relevant if string_pooling_strategy is indexed] amount of distinct strings per property after which to stop pooling.java.lang.Long
getMaxHttpClientRequestSize()
maximum size in bytes of any http request sent to to the PGX server over the REST API.java.lang.String
getMaximumAttainableMemory()
The maximum memory that can ever be made available to this PGX.D cluster.java.lang.Integer
getMaximumCommandBuffersPosted()
The max number of posted buffers in an MQL channel for incoming command messages from all remotes.java.lang.Integer
getMaximumDataBuffersPosted()
The max number of large buffers posted in an MQL channel for incoming data messages from all remotes.java.lang.Integer
getMaximumReceivedMessagesBuffer()
The max size of per remote received message queue.java.lang.Integer
getMaximumSendBuffersInFlight()
The max number of in-flight messages can be sent globally at the same time.java.lang.Integer
getMaxOffHeapSize()
maximum amount of off-heap memory PGX is allowed to allocate in megabytes, before an OutOfMemoryError will be thrown.java.lang.Double
getMaxOnHeapMemoryUsageRatio()
maximum ratio of on-heap memory that PGX is allowed to use, between 0 and 1.java.lang.Integer
getMaxQueueSizePerSession()
the maximum number of pending tasks allowed to be in the queue, per session.java.lang.Integer
getMaxSnapshotCount()
Number of snapshots that may be loaded in the engine at the same time.MemoryAllocationStrategy
getMemoryAllocator()
which memory allocator to usejava.lang.Integer
getMemoryCleanupInterval()
memory cleanup tick in secondsjava.lang.Double
getMinArrayCompactionThreshold()
[only relevant for graphs optimized for updates] minimum value that can be used for the array_compaction_threshold value in graph configuration.java.lang.Integer
getMinFetchIntervalSec()
(only relevant if the graph format supports delta updates) for delta-refresh, the lowest interval at which a graph source is queried for changes.java.lang.Integer
getMinUpdateIntervalSec()
for auto-refresh, the lowest interval after which a new snapshot is created, either by reloading the entire graph or if the format supports delta-updates, out of the cached changes (only relevant if the format supports delta updates).FrontierTypeStrategy
getMsBfsFrontierTypeStrategy()
the type strategy to use for MS-BFS frontiersjava.lang.Integer
getNetworkCredits()
The number of network credits will be provided to MQL (per MQL remote queue).java.lang.Integer
getNewFollowerConnectionTimeoutSecs()
Timeout in seconds for existing PGX.D processes to wait for the new follower to join the cluster in elastic scenarios.java.lang.Integer
getNumSpinLocks()
how many spin locks each generated app will create at instantiation.java.lang.Integer
getOnHoldJobTimeoutSecs()
Timeout in seconds to keep the job waiting in case it is put on hold due to lack of memory resources.java.lang.Integer
getParallelism()
number of worker threads to be used in thread pool.java.lang.String
getPartitioningStrategy()
Partitioning strategy of the vertices of the graph.java.lang.Integer
getPatternMatchingSupernodeCacheThreshold()
minimum number of a node's neighbor to be a supernode.java.lang.Integer
getPermissionChecksInterval()
interval in seconds to perform permission checks on source graphsjava.lang.Integer
getPgqlMaximumNumBuffers()
The max number of large buffers used by the PGQL engine per query.RealmConfig
getPgxRealm()
configuration parameters for the realmjava.lang.String
getPgxServerBaseUrl()
should be used when deploying pgx server behind a load balancer to make clients before 21.3 backward compatible, the value should be set to the load balancer addressjava.lang.Double
getPoolingFactor()
[only relevant if string_pooling_strategy is on_heap] this value prevents the string pool to grow as big as the property size which could render the pooling ineffectivejava.util.List<PreloadGraphConfig>
getPreloadGraphs()
list of graph configs to be registered at start-up.java.lang.Integer
getProcId()
Internal unique machine identifier in the cluster.RandomGeneratorStrategy
getRandomGeneratorStrategy()
method of generating random numbers in pgxjava.lang.Long
getRandomSeed()
[relevant for deterministic random number generator only] seed for the deterministic random number generator used in pgx.java.lang.Double
getReadinessMemoryUsageRatio()
memory limit ratio that should be considered to detect if PGX server is ready, used by isReady API, default value is 1.0java.lang.Double
getReleaseMemoryThreshold()
threshold percentage of used memory after which the engine starts freeing un-used graphs.java.lang.Integer
getResourceMonitor()
Frequency at which to send resource statistics to the debug server, in ms.java.lang.Integer
getRevisitThreshold()
maximum number of matched results from a node to be cachedjava.lang.Double
getRunningMemoryUsageRatio()
memory limit ratio that should be considered to detect if PGX server is running, used by isRunning API default value is 1.0SchedulerStrategy
getScheduler()
which scheduler to use.java.lang.Integer
getSessionIdleTimeoutSecs()
timeout of idling sessions in seconds.java.lang.Integer
getSessionTaskTimeoutSecs()
timeout to interrupt long-running tasks submitted by sessions (algorithms, I/O tasks) in seconds.java.lang.Integer
getSmallTaskLength()
task length if total amount of work is small than default task length (only relevant for task-stealing strategies)StringPoolingStrategy
getStringPoolingStrategy()
which string pooling strategy to usejava.lang.Integer
getSystemIdleDelayBeforeIdlingMsecs()
When the system is idle for longer than `system_idle_delay_before_idling_msecs`, start placing active background threads to sleep to reduce CPU usage and power consumption.java.lang.Integer
getSystemIdleSleepIncrementIntervalMsecs()
Idling will start withsystem_idle_sleep_increment_msecs
sleep duration and will increment this much everysystem_idle_sleep_increment_interval_msecs
to a maximum sleep ofsystem_idle_sleep_max_msecs
.java.lang.Integer
getSystemIdleSleepIncrementMsecs()
Idling will start withsystem_idle_sleep_increment_msecs
sleep duration and will increment this much everysystem_idle_sleep_increment_interval_msecs
to a maximum sleep ofsystem_idle_sleep_max_msecs
.java.lang.Integer
getSystemIdleSleepMaxMsecs()
Idling will start withsystem_idle_sleep_increment_msecs
sleep duration and will increment this much everysystem_idle_sleep_increment_interval_msecs
to a maximum sleep ofsystem_idle_sleep_max_msecs
.java.lang.Integer
getTaskLength()
default task length (only relevant for task-stealing strategies).java.lang.String
getTmpDir()
Use this path as temporary directory to store compilation artifacts and other temporary data.java.lang.String
getUdfConfigDirectory()
directory path containing udf config filesReachabilityIndexCreationMode
getUseIndexForReachabilityQueries()
create index for reachability queriesjava.util.Map<PgxConfig.Field,java.lang.Object>
getValues()
Gets the parsed values.java.util.Map<PgxConfig.Field,java.lang.Object>
getValuesWithoutDefaults()
Gets the values without defaults.boolean
hasDefaultValue(PgxConfig.Field field)
Checks for default value.java.lang.Boolean
isAllowIdleTimeoutOverwrite()
iftrue
, sessions can overwrite default idle timeoutjava.lang.Boolean
isAllowLazyLoadingForDatabaseGraphs()
iftrue
, PGX will automatically load graphs from the database when they are first referenced in graph queriesjava.lang.Boolean
isAllowOverrideSchedulingInformation()
iftrue
allow all users to override scheduling information like task weight, task priority and number of threadsjava.lang.Boolean
isAllowTaskTimeoutOverwrite()
iftrue
, sessions can overwrite default task timeoutjava.lang.Boolean
isAllowUserAutoRefresh()
iftrue
users may enable auto refresh for graphs they load.java.lang.Boolean
isAuthorizationSessionCreateAllowAll()
iftrue
allow all users to create a PGX session regardless of permissions granted to themboolean
isEmpty()
Checks if it's empty.java.lang.Boolean
isEnableCsrfTokenChecks()
if true, the PGX webapp will verify CSRF token cookie and request parameters sent by the client exist and match.java.lang.Boolean
isEnableEngineTls()
Iftrue
, the engine enables transport layer security (TLS) for connections between engine processes.java.lang.Boolean
isEnableGmCompiler()
iftrue
, enable dynamic compilation of Green-Marl code during runtimejava.lang.Boolean
isEnableGraphLoadingCache()
iftrue
, activate the graph loading cache that will accelerate loading of graphs that were previously loaded (can only be disabled in embedded mode)java.lang.Boolean
isEnableMemoryLimitsChecks()
if true, PGX will enforce the configured memory limitsjava.lang.Boolean
isEnableMlAccelerators()
iftrue
, will utilize available ML accelerators to run machine learning trainings faster.java.lang.Boolean
isEnableShutdownCleanupHook()
iftrue
PGX will add a JVM shutdown hook that will automatically shutdown PGX at JVM shutdown.java.lang.Boolean
isEnableSnapshotPropertiesPublishStatePropagation()
iftrue
, properties in a new snapshot will inherit the publishing state of properties in the parent snapshotjava.lang.Boolean
isEngineTlsVerifyHostname()
Iftrue
, the engine will verify that the hostname contained in the peer's certificate matches the hostname of the peer.java.lang.Boolean
isExplicitSpinLocks()
true
means spin explicitly in a loop until lock becomes available.java.lang.Boolean
isIgnoreIncompatibleBackendOperations()
iftrue
only log when encountering incompatible operations and configuration values in RTS or FJ pool.java.lang.Boolean
isInitPgqlOnStartup()
iftrue
PGQL is directly initialized on start-up of PGX.java.lang.Boolean
isLaunchWatchdogs()
(for debugging) iftrue
, additional watch-dog threads will be launched which monitor and log engine health statsjava.lang.Boolean
isObfuscateLog()
If set totrue
and iflog_sensitive_data
is disabled (by default in release mode), the engine will irreversibly hash any remaining parameters of the log messages.java.lang.Boolean
isPartitioningShuffleVertices()
If set totrue
, the vertices of the graph will be randomly shuffled among machines before partitioning.java.lang.Boolean
isStrictMode()
iftrue
, exceptions are thrown and logged withERROR
level whenever engine encounters configuration problems, such as invalid keys, mismatches and other potential errors.java.lang.Boolean
isUnsafeAllowForeignSyntax()
(This flag reduces security, enable only if you know what you're doing!) Allow foreign syntax in user-provided Green-Marl programsstatic PgxConfig
parse(java.io.InputStream is, boolean strict, java.lang.String parentPath)
Parses an input stream.static PgxConfig
parse(java.util.Map<java.lang.String,java.lang.Object> raw, boolean strict, java.lang.String parentPath)
Parses a raw key/value mapping.static PgxConfig
parse(java.util.Properties props, boolean strict)
Parses a properties file.java.lang.String
toString()
java.lang.String
toString(boolean hideSensitiveData)
java.lang.Boolean
useDedicatedPollerThreads()
Iftrue
, the engine will use dedicated RTS poller threads that will always be scheduled, whereas if set to code>false, IO threads will be used and will share RTS slots with other worker threads.java.lang.Boolean
useInfiniband()
If set totrue
, an InfiniBand network interface will be used.java.lang.Boolean
useMemoryMapperForReadingPgb()
if true, use memory mapped files for reading graphs in PGB format if possible; false always use s stream based implementationjava.lang.Boolean
useMemoryMapperForStoringPgb()
if true, use memory mapped files for storing in PGB format if possible; if false always use a stream based implementation-
Methods inherited from class oracle.pgx.config.AbstractPgxConfig
configFromJson, configFromMap, getFilePath, getInstance, getInstance, getInstance, getRolePermissionMapping, getRuntimeConfig, getUserPermissionMapping, isClusterLeader, isDistConfig, isSmConfig, validate
-
Methods inherited from class oracle.pgx.config.AbstractEngineConfig
getRoleMaxMemoryLimits, getUserMaxMemoryLimits
-
Methods inherited from class oracle.pgx.config.AbstractConfig
getDefault, getValueFromEnvironment, getValueFromEnvironment, parseString, setSerializable
-
-
-
-
Method Detail
-
parse
public static PgxConfig parse(java.io.InputStream is, boolean strict, java.lang.String parentPath) throws java.io.IOException
Parses an input stream.- Parameters:
is
- the input streamstrict
- if true, parses in strict modeparentPath
- if not null, resolves relative paths against this parentPath- Returns:
- the parsed graph config
- Throws:
java.io.IOException
- Signals that an I/O exception has occurred.
-
parse
public static PgxConfig parse(java.util.Map<java.lang.String,java.lang.Object> raw, boolean strict, java.lang.String parentPath)
Parses a raw key/value mapping.- Parameters:
raw
- the raw key/value mapping to parsestrict
- if true, parses in strict modeparentPath
- if not null, resolves relative paths against this parentPath- Returns:
- the parsed graph config
-
parse
public static PgxConfig parse(java.util.Properties props, boolean strict)
Parses a properties file.- Parameters:
props
- the properties to parsestrict
- if true, parses in strict mode- Returns:
- the parsed graph config
-
getConfigFields
public static PgxConfig.Field[] getConfigFields()
-
getValues
public java.util.Map<PgxConfig.Field,java.lang.Object> getValues()
Gets the parsed values.- Specified by:
getValues
in classAbstractPgxConfig
- Returns:
- the parsed values
-
isEmpty
public boolean isEmpty()
Checks if it's empty.- Returns:
- true, if the Map 'values' is empty.
-
hasDefaultValue
public boolean hasDefaultValue(PgxConfig.Field field)
Checks for default value.- Parameters:
field
- the field- Returns:
- true, if value for given field is the default value
-
getValuesWithoutDefaults
public java.util.Map<PgxConfig.Field,java.lang.Object> getValuesWithoutDefaults()
Gets the values without defaults.- Returns:
- the values without defaults
-
getLeftoverValues
public java.util.Map<java.lang.String,java.lang.Object> getLeftoverValues()
Gets the values that do not belong to any field.- Returns:
- the values that do not belong to any field
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
toString
public java.lang.String toString(boolean hideSensitiveData)
-
isEnableGraphLoadingCache
public java.lang.Boolean isEnableGraphLoadingCache()
iftrue
, activate the graph loading cache that will accelerate loading of graphs that were previously loaded (can only be disabled in embedded mode)
-
getBasicSchedulerConfig
public BasicSchedulerConfig getBasicSchedulerConfig()
configuration parameters for the fork join pool backend
-
getEnterpriseSchedulerConfig
public EnterpriseSchedulerConfig getEnterpriseSchedulerConfig()
configuration parameters for the enterprise scheduler
-
getMinFetchIntervalSec
public java.lang.Integer getMinFetchIntervalSec()
(only relevant if the graph format supports delta updates) for delta-refresh, the lowest interval at which a graph source is queried for changes. You can tune this value to prevent PGX from hanging due to too frequent graph delta-refreshing.
-
getMinUpdateIntervalSec
public java.lang.Integer getMinUpdateIntervalSec()
for auto-refresh, the lowest interval after which a new snapshot is created, either by reloading the entire graph or if the format supports delta-updates, out of the cached changes (only relevant if the format supports delta updates). You can tune this value to prevent PGX from hanging due to too frequent graph auto-refreshing.
-
getInPlaceUpdateConsistencyModel
public UpdateConsistencyModel getInPlaceUpdateConsistencyModel()
Consistency model used when in-place updates occur. Only relevant if in-place updates are enabled. Currently updates are only applied in place if the updates are not structural (Only modifies properties). Two models are currently implemented, one only delays new tasks when an update occurs, the other also running tasks.
-
getMinArrayCompactionThreshold
public java.lang.Double getMinArrayCompactionThreshold()
[only relevant for graphs optimized for updates] minimum value that can be used for the array_compaction_threshold value in graph configuration. If a graph configuration attempts to use a value lower than the one specified by min_array_compaction_threshold, it will use min_array_compaction_threshold instead
-
getMaxSnapshotCount
public java.lang.Integer getMaxSnapshotCount()
Number of snapshots that may be loaded in the engine at the same time. New snapshots can be created via auto or forced update. If the number of snapshots of a graph reaches this threshold, no more auto-updates will be performed and a forced-updated will result in an exception until one or more snapshots are removed from memory. A value of zero indicates to support an unlimited amount of snapshots.
-
getJavaHomeDir
public java.lang.String getJavaHomeDir()
The path to Java's home directory. If set to <system-java-home-dir>, use the java.home system property.
-
isEnableGmCompiler
public java.lang.Boolean isEnableGmCompiler()
iftrue
, enable dynamic compilation of Green-Marl code during runtime
-
getGraphAlgorithmLanguage
public Compiler getGraphAlgorithmLanguage()
Frontend compiler to use.
-
isUnsafeAllowForeignSyntax
public java.lang.Boolean isUnsafeAllowForeignSyntax()
(This flag reduces security, enable only if you know what you're doing!) Allow foreign syntax in user-provided Green-Marl programs
-
isAllowUserAutoRefresh
public java.lang.Boolean isAllowUserAutoRefresh()
iftrue
users may enable auto refresh for graphs they load. Iffalse
only graphs mentioned inpreload_graphs
can have auto refresh enabled
-
isIgnoreIncompatibleBackendOperations
public java.lang.Boolean isIgnoreIncompatibleBackendOperations()
iftrue
only log when encountering incompatible operations and configuration values in RTS or FJ pool. Iffalse
throw exceptions
-
isAllowOverrideSchedulingInformation
public java.lang.Boolean isAllowOverrideSchedulingInformation()
iftrue
allow all users to override scheduling information like task weight, task priority and number of threads
-
getUdfConfigDirectory
public java.lang.String getUdfConfigDirectory()
directory path containing udf config files- Specified by:
getUdfConfigDirectory
in classAbstractPgxConfig
-
getHostnames
public java.util.List<java.lang.String> getHostnames()
A list of names or IP addresses of hosts which should be involved in initial bootstrapping of a PGX.D cluster. The first host specified in the list will become the leader host. This parameter should not be set when joining an existing cluster.
-
getExistingHostnames
public java.util.List<java.lang.String> getExistingHostnames()
A list of names or IP addresses of hosts that are already part of an existing PGX.D cluster. The new follower machine uses this list to join the cluster. This parameter should not be set when initially bootstrapping a cluster.
-
getExecutablePath
public java.lang.String getExecutablePath()
Path to the PGX.D executable.
-
getBuiltinsPath
public java.lang.String getBuiltinsPath()
Path to the builtin algorithms directory.
-
getLogConfigure
public java.lang.String getLogConfigure()
Path to a log configuration in Log4j (version 1) syntax. Contents in the file only affects a PGX.D backend. Note: This parameter is set automatically by `start-server.sh`, do not change it.
-
getCommonLogConfigure
public java.lang.String getCommonLogConfigure()
Path to a log configuration in Logback syntax. Contents in the file only affects PGX.D backend components shared with PGX.SM via JNI. Note: This parameter is set automatically by `start-server.sh`, do not change it.
-
getLogStdRedirect
public java.lang.String getLogStdRedirect()
Path to a log file into which the standard output streams (stdout, stderr) of PGX.D backend should be redirected. No redirection happens when the path is null.
-
isObfuscateLog
public java.lang.Boolean isObfuscateLog()
If set totrue
and iflog_sensitive_data
is disabled (by default in release mode), the engine will irreversibly hash any remaining parameters of the log messages.
-
getMaximumCommandBuffersPosted
public java.lang.Integer getMaximumCommandBuffersPosted()
The max number of posted buffers in an MQL channel for incoming command messages from all remotes.
-
getMaximumReceivedMessagesBuffer
public java.lang.Integer getMaximumReceivedMessagesBuffer()
The max size of per remote received message queue.
-
getMaximumSendBuffersInFlight
public java.lang.Integer getMaximumSendBuffersInFlight()
The max number of in-flight messages can be sent globally at the same time. PGX.D can sendmaximum_send_buffers_in_flight / (# of remote hosts - 1)
messages per remote at maximum.
-
getMaximumDataBuffersPosted
public java.lang.Integer getMaximumDataBuffersPosted()
The max number of large buffers posted in an MQL channel for incoming data messages from all remotes.
-
getNetworkCredits
public java.lang.Integer getNetworkCredits()
The number of network credits will be provided to MQL (per MQL remote queue). Larger value, more message sent at the same time by MQL.
-
getNewFollowerConnectionTimeoutSecs
public java.lang.Integer getNewFollowerConnectionTimeoutSecs()
Timeout in seconds for existing PGX.D processes to wait for the new follower to join the cluster in elastic scenarios. Unless the new follower does the handshake with existing processes within the timeout, the joining operation is considered failed by the existing PGX.D processes.
-
getPgqlMaximumNumBuffers
public java.lang.Integer getPgqlMaximumNumBuffers()
The max number of large buffers used by the PGQL engine per query. This value limits the memory used per machine for intermediate results during pattern matching topgql_maximum_num_buffers * large_buf_size_kb
.
-
getOnHoldJobTimeoutSecs
public java.lang.Integer getOnHoldJobTimeoutSecs()
Timeout in seconds to keep the job waiting in case it is put on hold due to lack of memory resources. Unless additional followers join the cluster within the timeout or the required memory becomes free, the job will get cancelled. In case multiple followers are necessary to cover the required memory of the job, the timeout will be internally reset whenever a new follower joins.
-
getEngineConnectionTimeoutSecs
public java.lang.Integer getEngineConnectionTimeoutSecs()
Timeout in seconds to setup the initial connections among PGX.D processes. Should be lower thanliveness_check_interval_secs
to avoid false negative liveness detection during system startup. The time needed to establish connections is proportional to the cluster size, so very large PGX.D clusters might need to increase this parameter.
-
getMaximumAttainableMemory
public java.lang.String getMaximumAttainableMemory()
The maximum memory that can ever be made available to this PGX.D cluster. The value is used by PGX.D to identify whether it should elastically expand when faced with memory pressure, or whether it should cancel the command that exceeded this value altogether. This should be configured to be equal to sum of memory of all machines in the machine pool available for cluster growth. The invariant it sets is that there will never be more memory available to the PGX.D cluster than this value. The value can also be changed at runtime. If set to 0 PGX.D assumes elasticity is not enabled. Allowed values can be specified with memory units (e.g., 1m -> 1 megabyte, 1g -> 1 gigabyte, 1t -> 1 terabyte).
-
getLivenessCheckDelaySecs
public java.lang.Integer getLivenessCheckDelaySecs()
Liveness check interval, i.e., how often to check that the PGX.D server is alive and that it can accept and execute commands. Should be larger thanengine_connection_timeout_secs
to avoid false negative liveness detection during system startup. Should be meaningfully larger than(((system_idle_sleep_max_msecs / system_idle_sleep_increment_msecs) * system_idle_sleep_increment_interval_msecs) + system_idle_delay_before_idling_msecs)
to avoid preventing system idleness.
-
getLivenessCheckTimeoutSecs
public java.lang.Integer getLivenessCheckTimeoutSecs()
Fails liveness check task if it cannot complete the liveness task in the period of time. Should be lower thanliveness_check_interval_secs
. Setting this parameter too low will cause false negative liveness detection.
-
getSystemIdleDelayBeforeIdlingMsecs
public java.lang.Integer getSystemIdleDelayBeforeIdlingMsecs()
When the system is idle for longer than `system_idle_delay_before_idling_msecs`, start placing active background threads to sleep to reduce CPU usage and power consumption. Should be adjusted with respect toliveness_check_interval_secs
, otherwise liveness checks will prevent system to ever go idle.
-
getSystemIdleSleepIncrementMsecs
public java.lang.Integer getSystemIdleSleepIncrementMsecs()
Idling will start withsystem_idle_sleep_increment_msecs
sleep duration and will increment this much everysystem_idle_sleep_increment_interval_msecs
to a maximum sleep ofsystem_idle_sleep_max_msecs
. Should be adjusted with respect toliveness_check_interval_secs
, otherwise liveness checks will prevent system to ever go idle.
-
getSystemIdleSleepIncrementIntervalMsecs
public java.lang.Integer getSystemIdleSleepIncrementIntervalMsecs()
Idling will start withsystem_idle_sleep_increment_msecs
sleep duration and will increment this much everysystem_idle_sleep_increment_interval_msecs
to a maximum sleep ofsystem_idle_sleep_max_msecs
. Should be adjusted with respect toliveness_check_interval_secs
, otherwise liveness checks will prevent system to ever go idle.
-
getSystemIdleSleepMaxMsecs
public java.lang.Integer getSystemIdleSleepMaxMsecs()
Idling will start withsystem_idle_sleep_increment_msecs
sleep duration and will increment this much everysystem_idle_sleep_increment_interval_msecs
to a maximum sleep ofsystem_idle_sleep_max_msecs
. Determines the largest latency to detect activity in case the system is idle. If set too low, system will not save much resources during idleness. Should be adjusted with respect toliveness_check_interval_secs
, otherwise liveness checks will prevent system to ever go idle.
-
getJavaClassPath
public java.lang.String getJavaClassPath()
Path to required java libraries.
-
useInfiniband
public java.lang.Boolean useInfiniband()
If set totrue
, an InfiniBand network interface will be used. Must be set tofalse
on systems that do not support InfiniBand.
-
getIfInfiniband
public java.lang.String getIfInfiniband()
InfiniBand network interface, used to initialize the network transport layer when using InfiniBand.
-
getIfEthernet
public java.lang.String getIfEthernet()
Ethernet network interface, used to initialize the network transport layer when using Ethernet.
-
getLargeBufCount
public java.lang.Integer getLargeBufCount()
Number of large buffers populated in the pool.
-
getLargeBufSizeKb
public java.lang.Integer getLargeBufSizeKb()
Size in kB of the large buffers.
-
isPartitioningShuffleVertices
public java.lang.Boolean isPartitioningShuffleVertices()
If set totrue
, the vertices of the graph will be randomly shuffled among machines before partitioning. If the data source does not contain enough randomness, this could be beneficial for query and analytics performance on graphs with many properties, labels or data providers. Shuffling can however increase the time necessary to load the graph.
-
getPartitioningStrategy
public java.lang.String getPartitioningStrategy()
Partitioning strategy of the vertices of the graph. Valid values are 'out' (the vertices will be attributed to each machine so that every machine has the same total number of outgoing edges), 'in' (similar, but for incoming edges) and 'out_in' (same number of outgoing plus incoming edges).
-
getProcId
public java.lang.Integer getProcId()
Internal unique machine identifier in the cluster.
-
getResourceMonitor
public java.lang.Integer getResourceMonitor()
Frequency at which to send resource statistics to the debug server, in ms.
-
getDebugServer
public java.lang.String getDebugServer()
Hostname of the debug server.
-
getInstanceName
public java.lang.String getInstanceName()
Instance name sent as label to debug server.
-
isEnableEngineTls
public java.lang.Boolean isEnableEngineTls()
Iftrue
, the engine enables transport layer security (TLS) for connections between engine processes.
-
getEngineTlsKeystore
public java.lang.String getEngineTlsKeystore()
Path to the PKCS12 keystore to be used by the engine for securing mutual TLS connections between engine processes. The keystore must contain exactly one pair of private key and public certificate for the engine. If the certificate is not self-signed, the keystore should also contain the intermediate chain of CA certificates used for signing the engine public certificate.
-
getEngineTlsTruststore
public java.lang.String getEngineTlsTruststore()
Path to the PEM truststore to be used by the engine for securing mutual TLS connections between engine processes. The truststore must contain top-level CA certificates used for signing the content of the keystore.
-
getEngineTlsCipher
public java.lang.String getEngineTlsCipher()
Cipher suite name (in OpenSSL syntax) to be used by the engine for securing TLS connections.
-
isEngineTlsVerifyHostname
public java.lang.Boolean isEngineTlsVerifyHostname()
Iftrue
, the engine will verify that the hostname contained in the peer's certificate matches the hostname of the peer. Note that this parameter is completely independent fromengine_tls_expected_dn
: using none, only one of them or both of them at the same time is allowed.
-
getEngineTlsExpectedDn
public java.lang.String getEngineTlsExpectedDn()
If non empty, the engine will verify that the peer's certificate's Subject Distinguished Name matches exactly the given string. The format of this string must match the one given to the `openssl req` command when creating the certificate, without whitespaces between the equal signs. For instance, the following should be used for an organization in France called My Company with example.com as a hostname: /C=FR/O=My Company/CN=example.com. Note that this parameter is completely independent fromengine_tls_verify_hostname
: using none, only one of them or both of them at the same time is allowed.
-
getBackendWrapper
public java.lang.String getBackendWrapper()
Only for internal use.
-
getHandshakePort
public java.lang.Integer getHandshakePort()
a TCP port which will be used for handshaking of distributed backend processes.
-
useDedicatedPollerThreads
public java.lang.Boolean useDedicatedPollerThreads()
Iftrue
, the engine will use dedicated RTS poller threads that will always be scheduled, whereas if set to code>false, IO threads will be used and will share RTS slots with other worker threads.
-
isEnableCsrfTokenChecks
public java.lang.Boolean isEnableCsrfTokenChecks()
if true, the PGX webapp will verify CSRF token cookie and request parameters sent by the client exist and match. This is to prevent CSRF attacks.- Specified by:
isEnableCsrfTokenChecks
in classAbstractEngineConfig
-
getTmpDir
public java.lang.String getTmpDir()
Use this path as temporary directory to store compilation artifacts and other temporary data. If set to <system-tmp-dir>, use standard tmp directory of underlying system (/tmp
on Linux)- Specified by:
getTmpDir
in classAbstractEngineConfig
-
getAllowedRemoteLoadingLocations
public java.util.List<java.lang.String> getAllowedRemoteLoadingLocations()
(This option may reduce security, use it only if you know what you are doing!) Allow loading graphs into the PGX engine from remote locations. If empty, as by default, no remote location is allowed. Any of the following locations can be listed: "https", "ftps", "hdfs" (deprecated) (all without colon ":"). Alternatively, "*" can be used to enable all locations at once; no other value is allowed with "*". Note that pre-loaded graphs are loaded from any location, regardless of the value of this setting- Specified by:
getAllowedRemoteLoadingLocations
in classAbstractEngineConfig
-
isInitPgqlOnStartup
public java.lang.Boolean isInitPgqlOnStartup()
iftrue
PGQL is directly initialized on start-up of PGX. Otherwise, it is initialized during the first use of PGQL.
-
getMaxHttpClientRequestSize
public java.lang.Long getMaxHttpClientRequestSize()
maximum size in bytes of any http request sent to to the PGX server over the REST API. Setting it to -1 allows requests of any size.- Specified by:
getMaxHttpClientRequestSize
in classAbstractEngineConfig
-
getPgxRealm
public RealmConfig getPgxRealm()
configuration parameters for the realm
-
getFileLocations
public java.util.List<AuthorizationLocationConfig> getFileLocations()
the file-locations that can be used in the authorization-config- Specified by:
getFileLocations
in classAbstractPgxConfig
-
isAuthorizationSessionCreateAllowAll
public java.lang.Boolean isAuthorizationSessionCreateAllowAll()
iftrue
allow all users to create a PGX session regardless of permissions granted to them
-
getAuthorization
public java.util.List<AuthorizationEntityConfig> getAuthorization()
mapping of users and roles to resources and permissions for authorization- Specified by:
getAuthorization
in classAbstractPgxConfig
-
isEnableMemoryLimitsChecks
public java.lang.Boolean isEnableMemoryLimitsChecks()
if true, PGX will enforce the configured memory limits
-
getDataMemoryLimits
public DataMemoryLimitsConfig getDataMemoryLimits()
memory limits configuration parameters- Specified by:
getDataMemoryLimits
in classAbstractEngineConfig
-
isEnableShutdownCleanupHook
public java.lang.Boolean isEnableShutdownCleanupHook()
iftrue
PGX will add a JVM shutdown hook that will automatically shutdown PGX at JVM shutdown. Notice: Having the shutdown hook deactivated and not shutting down PGX explicitly may result in pollution of your temp directory.
-
getSessionIdleTimeoutSecs
public java.lang.Integer getSessionIdleTimeoutSecs()
timeout of idling sessions in seconds. Set to zero for infinity/no timeout
-
getSessionTaskTimeoutSecs
public java.lang.Integer getSessionTaskTimeoutSecs()
timeout to interrupt long-running tasks submitted by sessions (algorithms, I/O tasks) in seconds. Set to zero for infinity/no timeout
-
isAllowIdleTimeoutOverwrite
public java.lang.Boolean isAllowIdleTimeoutOverwrite()
iftrue
, sessions can overwrite default idle timeout
-
isAllowTaskTimeoutOverwrite
public java.lang.Boolean isAllowTaskTimeoutOverwrite()
iftrue
, sessions can overwrite default task timeout
-
getMaxActiveSessions
public java.lang.Integer getMaxActiveSessions()
the maximum number of sessions allowed to be active at a time
-
getMaxQueueSizePerSession
public java.lang.Integer getMaxQueueSizePerSession()
the maximum number of pending tasks allowed to be in the queue, per session. If a session reaches the maximum, new incoming requests of that sesssion get rejected. A negative value means infinity / unlimited.
-
getIntervalToPollMax
public java.lang.Integer getIntervalToPollMax()
Exponential backoff upper bound (in ms) to which -once reached, the job status polling interval is fixed- Specified by:
getIntervalToPollMax
in classAbstractEngineConfig
-
getAdminRequestCacheTimeout
public java.lang.Integer getAdminRequestCacheTimeout()
after how many seconds admin request results get removed from the cache. Requests which are not done or not yet consumed are excluded from this timeout. Note: this is only relevant if PGX is deployed as a webapp.- Specified by:
getAdminRequestCacheTimeout
in classAbstractEngineConfig
-
isLaunchWatchdogs
public java.lang.Boolean isLaunchWatchdogs()
(for debugging) iftrue
, additional watch-dog threads will be launched which monitor and log engine health stats
-
isStrictMode
public java.lang.Boolean isStrictMode()
iftrue
, exceptions are thrown and logged withERROR
level whenever engine encounters configuration problems, such as invalid keys, mismatches and other potential errors. Iffalse
, engine logs problems withERROR
/WARN
level (depending on severity) and makes best guesses / uses sensible defaults instead of throwing exceptions.
-
getPreloadGraphs
public java.util.List<PreloadGraphConfig> getPreloadGraphs()
list of graph configs to be registered at start-up. Each item includes path to a graph config, the name of the graph and whether it should be published.- Specified by:
getPreloadGraphs
in classAbstractPgxConfig
-
getMemoryCleanupInterval
public java.lang.Integer getMemoryCleanupInterval()
memory cleanup tick in seconds
-
getReleaseMemoryThreshold
public java.lang.Double getReleaseMemoryThreshold()
threshold percentage of used memory after which the engine starts freeing un-used graphs. Examples: A value of0.0
means graphs get freed as soon as their reference count becomes zero. That is, all sessions which loaded that graph were destroyed/timed out. A value of1.0
means graphs get never freed. Engine will throwOutOfMemoryError
s as soon as a graph is needed which doesn't fit in memory anymore. A value of0.7
means the engine keeps all graphs in memory as long as total memory consumption is below 70% of total available memory, even if there is currently no session using them. Once the 70% are surpassed and another graph needs to get loaded, un-used graphs get freed until memory consumption is below 70% again.
-
getReadinessMemoryUsageRatio
public java.lang.Double getReadinessMemoryUsageRatio()
memory limit ratio that should be considered to detect if PGX server is ready, used by isReady API, default value is 1.0
-
getRunningMemoryUsageRatio
public java.lang.Double getRunningMemoryUsageRatio()
memory limit ratio that should be considered to detect if PGX server is running, used by isRunning API default value is 1.0
-
getPgxServerBaseUrl
public java.lang.String getPgxServerBaseUrl()
should be used when deploying pgx server behind a load balancer to make clients before 21.3 backward compatible, the value should be set to the load balancer address
-
getPermissionChecksInterval
public java.lang.Integer getPermissionChecksInterval()
interval in seconds to perform permission checks on source graphs
-
getGraphSharingOption
public GraphSharingOption getGraphSharingOption()
control if a graph can be published and shared with other users
-
isEnableSnapshotPropertiesPublishStatePropagation
public java.lang.Boolean isEnableSnapshotPropertiesPublishStatePropagation()
iftrue
, properties in a new snapshot will inherit the publishing state of properties in the parent snapshot
-
isEnableMlAccelerators
public java.lang.Boolean isEnableMlAccelerators()
iftrue
, will utilize available ML accelerators to run machine learning trainings faster.
-
getNumSpinLocks
public java.lang.Integer getNumSpinLocks()
how many spin locks each generated app will create at instantiation. Trade-off: small number implies less memory consumption. Big number implies faster execution (if algorithm uses spin locks)
-
isExplicitSpinLocks
public java.lang.Boolean isExplicitSpinLocks()
true
means spin explicitly in a loop until lock becomes available.false
means using JDK locks which rely on the JVM to decide whether to context switch or spin. Our experiments showed that setting this value totrue
results in better performance.
-
getScheduler
public SchedulerStrategy getScheduler()
which scheduler to use.
basic_scheduler = use scheduler with basic features.
enterprise_scheduler = use scheduler with advanced, enterprise features for running multiple tasks concurrently and increased performance.
low_latency_scheduler = use scheduler that privileges latency of tasks over throughput or fairness across multiple sessions. The low_latency_scheduler is only available in embedded mode
-
getTaskLength
public java.lang.Integer getTaskLength()
default task length (only relevant for task-stealing strategies). F/J pool documentation says this value should be between 100 and 10000. Trade-off: small number implies more fine-grained tasks are generated, higher stealing throughput. High number implies less memory consumption and GC activity
-
getSmallTaskLength
public java.lang.Integer getSmallTaskLength()
task length if total amount of work is small than default task length (only relevant for task-stealing strategies)
-
getMsBfsFrontierTypeStrategy
public FrontierTypeStrategy getMsBfsFrontierTypeStrategy()
the type strategy to use for MS-BFS frontiers
-
getBfsThresholdSingleThreaded
public java.lang.Integer getBfsThresholdSingleThreaded()
until what number of BFS traversal level items vertices are visited single-threaded
-
getBfsThresholdReadBased
public java.lang.Integer getBfsThresholdReadBased()
threshold of BFS traversal level items above which to switch to read-based visiting strategy
-
getBfsIterateQueTaskSize
public java.lang.Integer getBfsIterateQueTaskSize()
task size for BFS iterate QUE phase
-
getBfsThresholdParentReadBased
public java.lang.Double getBfsThresholdParentReadBased()
threshold of BFS traversal level items above which to switch to parent-read-based visiting strategy
-
getDfsThresholdLarge
public java.lang.Integer getDfsThresholdLarge()
value that determines at which number of visited vertices the DFS implementation will switch to data-structures that are more optimized for larger numbers of vertices.
-
getCniStopRecursionDefault
public java.lang.Integer getCniStopRecursionDefault()
default value used in the common neighbor iterator implementations, to indicate the minimum size where the binary search approach is applied.
-
getCniSmallDefault
public java.lang.Integer getCniSmallDefault()
default value used in the common neighbor iterator implementations, to indicate below which threshold a subarray is considered small.
-
getCniDiffFactorDefault
public java.lang.Integer getCniDiffFactorDefault()
default diff factor value used in the common neighbor iterator implementations.
-
getLargeArrayThreshold
public java.lang.Integer getLargeArrayThreshold()
threshold when the size of an array is too big to use a normal Java array. This depends on the used JVM. (defaults toInteger.MAX_VALUE - 3
)
-
getMaxOffHeapSize
public java.lang.Integer getMaxOffHeapSize()
maximum amount of off-heap memory PGX is allowed to allocate in megabytes, before an OutOfMemoryError will be thrown. Note: this limit is not guaranteed to never be exceeded because of rounding and synchronization trade-offs. It only serves as threshold when PGX starts to reject new memory allocation requests.
-
getMaxOnHeapMemoryUsageRatio
public java.lang.Double getMaxOnHeapMemoryUsageRatio()
maximum ratio of on-heap memory that PGX is allowed to use, between 0 and 1.
-
getCharacterSet
public java.lang.String getCharacterSet()
standard charset to use throughout PGX, UTF-8 will be used as default. Note: Some formats may not be compatible.
-
getParallelism
public java.lang.Integer getParallelism()
number of worker threads to be used in thread pool. Note: if caller thread is part of another thread-pool, this value is ignored and parallelism of parent pool is used.
-
getRandomGeneratorStrategy
public RandomGeneratorStrategy getRandomGeneratorStrategy()
method of generating random numbers in pgx
-
getRandomSeed
public java.lang.Long getRandomSeed()
[relevant for deterministic random number generator only] seed for the deterministic random number generator used in pgx. The default is -24466691093057031
-
getPatternMatchingSupernodeCacheThreshold
public java.lang.Integer getPatternMatchingSupernodeCacheThreshold()
minimum number of a node's neighbor to be a supernode. This is for pattern matching engine.
-
getUseIndexForReachabilityQueries
public ReachabilityIndexCreationMode getUseIndexForReachabilityQueries()
create index for reachability queries
-
getRevisitThreshold
public java.lang.Integer getRevisitThreshold()
maximum number of matched results from a node to be cached
-
getEnterpriseSchedulerFlags
public EnterpriseSchedulerFlagsConfig getEnterpriseSchedulerFlags()
[relevant for enterprise_scheduler] enterprise scheduler specific settings.
-
getMemoryAllocator
public MemoryAllocationStrategy getMemoryAllocator()
which memory allocator to use
-
getMaxDistinctStringsPerPool
public java.lang.Integer getMaxDistinctStringsPerPool()
[only relevant if string_pooling_strategy is indexed] amount of distinct strings per property after which to stop pooling. If the limit is reached an exception is thrown
-
getStringPoolingStrategy
public StringPoolingStrategy getStringPoolingStrategy()
which string pooling strategy to use
-
useMemoryMapperForStoringPgb
public java.lang.Boolean useMemoryMapperForStoringPgb()
if true, use memory mapped files for storing in PGB format if possible; if false always use a stream based implementation
-
useMemoryMapperForReadingPgb
public java.lang.Boolean useMemoryMapperForReadingPgb()
if true, use memory mapped files for reading graphs in PGB format if possible; false always use s stream based implementation
-
getPoolingFactor
public java.lang.Double getPoolingFactor()
[only relevant if string_pooling_strategy is on_heap] this value prevents the string pool to grow as big as the property size which could render the pooling ineffective
-
getGraphValidationLevel
public GraphValidationLevel getGraphValidationLevel()
level of validation performed on newly loaded or created graphs
-
isAllowLazyLoadingForDatabaseGraphs
public java.lang.Boolean isAllowLazyLoadingForDatabaseGraphs()
iftrue
, PGX will automatically load graphs from the database when they are first referenced in graph queries
-
getBackendFields
public java.util.List<PgxConfig.Field> getBackendFields()
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
-