public interface SdkHarnessOptions extends PipelineOptions
| Modifier and Type | Interface and Description |
|---|---|
static class |
SdkHarnessOptions.DefaultMaxCacheMemoryUsageMb
The default implementation which detects how much memory to use for a process wide cache.
|
static class |
SdkHarnessOptions.DefaultMaxCacheMemoryUsageMbFactory
A
DefaultValueFactory which constructs an instance of the class specified by maxCacheMemoryUsageMbClass to compute the maximum amount of
memory to allocate to the process wide cache within an SDK harness instance. |
static class |
SdkHarnessOptions.LogLevel
The set of log levels that can be used in the SDK harness.
|
static interface |
SdkHarnessOptions.MaxCacheMemoryUsageMb
Specifies the maximum amount of memory to use within the current SDK harness instance.
|
static class |
SdkHarnessOptions.SdkHarnessLogLevelOverrides
Defines a log level override for a specific class, package, or name.
|
PipelineOptions.AtomicLongFactory, PipelineOptions.CheckEnabled, PipelineOptions.DirectRunner, PipelineOptions.JobNameFactory, PipelineOptions.UserAgentFactory| Modifier and Type | Method and Description |
|---|---|
static java.util.List<java.util.logging.Logger> |
getConfiguredLoggerFromOptions(SdkHarnessOptions loggingOptions)
Configure log manager's default log level and log level overrides from the sdk harness options,
and return the list of configured loggers.
|
SdkHarnessOptions.LogLevel |
getDefaultSdkHarnessLogLevel()
This option controls the default log level of all loggers without a log level override.
|
int |
getGroupingTableMaxSizeMb()
Size (in MB) of each grouping table used to pre-combine elements.
|
java.util.List<java.lang.String> |
getJdkAddOpenModules()
Open modules needed for reflection that access JDK internals with Java 9+
|
boolean |
getLogMdc()
Whether to include SLF4J MDC in log entries.
|
@NonNegative int |
getMaxCacheMemoryUsageMb()
Size (in MB) for the process wide cache within the SDK harness.
|
java.lang.Class<? extends SdkHarnessOptions.MaxCacheMemoryUsageMb> |
getMaxCacheMemoryUsageMbClass()
An instance of this class will be used to specify the maximum amount of memory to allocate to a
cache within an SDK harness instance.
|
@NonNegative float |
getMaxCacheMemoryUsagePercent()
Size (in % [0 - 100]) for the process wide cache within the SDK harness.
|
SdkHarnessOptions.SdkHarnessLogLevelOverrides |
getSdkHarnessLogLevelOverrides()
This option controls the log levels for specifically named loggers.
|
void |
setDefaultSdkHarnessLogLevel(SdkHarnessOptions.LogLevel logLevel) |
void |
setGroupingTableMaxSizeMb(int value) |
void |
setJdkAddOpenModules(java.util.List<java.lang.String> options) |
void |
setLogMdc(boolean value) |
void |
setMaxCacheMemoryUsageMb(@NonNegative int value) |
void |
setMaxCacheMemoryUsageMbClass(java.lang.Class<? extends SdkHarnessOptions.MaxCacheMemoryUsageMb> kls) |
void |
setMaxCacheMemoryUsagePercent(@NonNegative float value) |
void |
setSdkHarnessLogLevelOverrides(SdkHarnessOptions.SdkHarnessLogLevelOverrides value) |
as, getJobName, getOptionsId, getRunner, getStableUniqueNames, getTempLocation, getUserAgent, outputRuntimeOptions, setJobName, setOptionsId, setRunner, setStableUniqueNames, setTempLocation, setUserAgentpopulateDisplayData@Default.Enum(value="INFO") SdkHarnessOptions.LogLevel getDefaultSdkHarnessLogLevel()
void setDefaultSdkHarnessLogLevel(SdkHarnessOptions.LogLevel logLevel)
SdkHarnessOptions.SdkHarnessLogLevelOverrides getSdkHarnessLogLevelOverrides()
Later options with equivalent names override earlier options.
See SdkHarnessOptions.SdkHarnessLogLevelOverrides for more information on how to configure logging on
a per Class, Package, or name basis. If used from the command line, the
expected format is {"Name":"LogLevel",...}, further details on SdkHarnessOptions.SdkHarnessLogLevelOverrides.from(java.util.Map<java.lang.String, java.lang.String>).
void setSdkHarnessLogLevelOverrides(SdkHarnessOptions.SdkHarnessLogLevelOverrides value)
@Default.Boolean(value=true) boolean getLogMdc()
void setLogMdc(boolean value)
@Default.Integer(value=100) int getGroupingTableMaxSizeMb()
CAUTION: If set too large, workers may run into OOM conditions more easily, each worker may have many grouping tables in-memory concurrently.
CAUTION: This option does not apply to portable runners such as Dataflow Prime. See setMaxCacheMemoryUsageMb(int), setMaxCacheMemoryUsagePercent(float), or setMaxCacheMemoryUsageMbClass(java.lang.Class<? extends org.apache.beam.sdk.options.SdkHarnessOptions.MaxCacheMemoryUsageMb>) to configure memory thresholds that apply to the grouping table
and other cached objects.
void setGroupingTableMaxSizeMb(int value)
@Default.InstanceFactory(value=SdkHarnessOptions.DefaultMaxCacheMemoryUsageMbFactory.class) @NonNegative int getMaxCacheMemoryUsageMb()
CAUTION: If set too large, SDK harness instances may run into OOM conditions more easily.
See SdkHarnessOptions.DefaultMaxCacheMemoryUsageMbFactory for details on how maxCacheMemoryUsageMb is computed if this parameter is
unspecified.
void setMaxCacheMemoryUsageMb(@NonNegative int value)
@Default.Float(value=20.0f) @NonNegative float getMaxCacheMemoryUsagePercent()
This parameter will only be used if an explicit value was not specified for maxCacheMemoryUsageMb.
void setMaxCacheMemoryUsagePercent(@NonNegative float value)
@Default.Class(value=SdkHarnessOptions.DefaultMaxCacheMemoryUsageMb.class) java.lang.Class<? extends SdkHarnessOptions.MaxCacheMemoryUsageMb> getMaxCacheMemoryUsageMbClass()
This parameter will only be used if an explicit value was not specified for maxCacheMemoryUsageMb.
See SdkHarnessOptions.DefaultMaxCacheMemoryUsageMb for details on how maxCacheMemoryUsageMb is computed if this parameter is
unspecified.
void setMaxCacheMemoryUsageMbClass(java.lang.Class<? extends SdkHarnessOptions.MaxCacheMemoryUsageMb> kls)
java.util.List<java.lang.String> getJdkAddOpenModules()
With JDK 16+, JDK internals are strongly encapsulated and can result in an InaccessibleObjectException being thrown if a tool or library uses reflection that access JDK internals. If you see these errors in your worker logs, you can pass in modules to open using the format module/package=target-module(,target-module)* to allow access to the library. E.g. java.base/java.lang=jamm
You may see warnings that jamm, a library used to more accurately size objects, is unable to make a private field accessible. To resolve the warning, open the specified module/package to jamm.
void setJdkAddOpenModules(java.util.List<java.lang.String> options)
static java.util.List<java.util.logging.Logger> getConfiguredLoggerFromOptions(SdkHarnessOptions loggingOptions)