, NBLabeledElem
/**
* This should be the only way to get a ScenarioResult for a Scenario.
- *
+ *
* The lifecycle of a scenario includes the lifecycles of all of the following:
*
* - The scenario control script, executing within a graaljs context.
* - The lifecycle of every activity which is started within the scenario.
*
- *
+ *
* All of these run asynchronously within the scenario, however the same thread that calls
* the scenario is the one which executes the control script. A scenario ends when all
* of the following conditions are met:
@@ -406,12 +402,14 @@ public class Scenario implements Callable, NBLabeledElem
try {
this.runScenario();
} catch (final Exception e) {
- error =e;
+ error = e;
} finally {
this.logger.debug("{} scenario run", null == this.error ? "NORMAL" : "ERRORED");
}
+ if (this.scriptEnv == null) {
- final String iolog = this.scriptEnv.getTimedLog();
+ }
+ String iolog = error != null ? error.toString() : this.scriptEnv.getTimedLog();
result = new ExecutionMetricsResult(startedAtMillis, endedAtMillis, iolog, this.error);
this.result.reportMetricsSummaryToLog();
this.doReportSummaries(this.reportSummaryTo, this.result);
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/bindings/PolyglotMetricRegistryBindings.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/bindings/PolyglotMetricRegistryBindings.java
index 427e528d6..b14db824b 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/bindings/PolyglotMetricRegistryBindings.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/bindings/PolyglotMetricRegistryBindings.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022 nosqlbench
+ * Copyright (c) 2022-2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,14 +17,16 @@
package io.nosqlbench.engine.core.lifecycle.scenario.script.bindings;
import com.codahale.metrics.*;
-import com.codahale.metrics.Timer;
import io.nosqlbench.engine.core.metrics.MetricMap;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.graalvm.polyglot.Value;
import org.graalvm.polyglot.proxy.ProxyObject;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Objects;
/**
* A view of metrics objects as an object tree.
@@ -82,7 +84,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist
@Override
public void onGaugeRemoved(String name) {
- metrics.findOwner(name).remove(name);
+ metrics.findOrCreateDottedParentPath(name).remove(name);
logger.debug("gauge removed: " + name);
}
@@ -94,7 +96,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist
@Override
public void onCounterRemoved(String name) {
- metrics.findOwner(name).remove(name);
+ metrics.findOrCreateDottedParentPath(name).remove(name);
logger.debug("counter removed: " + name);
}
@@ -106,7 +108,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist
@Override
public void onHistogramRemoved(String name) {
- metrics.findOwner(name).remove(name);
+ metrics.findOrCreateDottedParentPath(name).remove(name);
logger.debug("histogram removed: " + name);
}
@@ -118,7 +120,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist
@Override
public void onMeterRemoved(String name) {
- metrics.findOwner(name).remove(name);
+ metrics.findOrCreateDottedParentPath(name).remove(name);
logger.debug("meter removed: " + name);
}
@@ -131,7 +133,7 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist
@Override
public void onTimerRemoved(String name) {
- metrics.findOwner(name).remove(name);
+ metrics.findOrCreateDottedParentPath(name).remove(name);
logger.debug("timer removed: " + name);
}
@@ -154,4 +156,21 @@ public class PolyglotMetricRegistryBindings implements ProxyObject, MetricRegist
return totalMap;
}
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+
+ PolyglotMetricRegistryBindings that = (PolyglotMetricRegistryBindings) o;
+
+ if (!registry.equals(that.registry)) return false;
+ return Objects.equals(metrics, that.metrics);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = registry.hashCode();
+ result = 31 * result + (metrics != null ? metrics.hashCode() : 0);
+ return result;
+ }
}
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json
new file mode 100644
index 000000000..eff0e394a
--- /dev/null
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json
@@ -0,0 +1,2064 @@
+[
+ {
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.DisableCodeSharing",
+ "help": "Option to force disable code sharing for this engine, even if the context was created with an explicit engine. This option is intended for testing purposes only.",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.ForceCodeSharing",
+ "help": "Option to force enable code sharing for this engine, even if the context was created with a bound engine. This option is intended for testing purposes only.",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "engine.InstrumentExceptionsAreThrown",
+ "help": "Propagates exceptions thrown by instruments. (default: true)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "String",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": ""
+ },
+ "name": "engine.PreinitializeContexts",
+ "help": "Preinitialize language contexts for given languages.",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": true,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.RelaxStaticObjectSafetyChecks",
+ "help": "On property accesses, the Static Object Model does not perform shape checks and uses unsafe casts",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.SafepointALot",
+ "help": "Repeadly submits thread local actions and collects statistics about safepoint intervals in the process. Prints event and interval statistics when the context is closed for each thread. This option significantly slows down execution and is therefore intended for testing purposes only.",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.ShowInternalStackFrames",
+ "help": "Show internal frames specific to the language implementation in stack traces.",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.SpecializationStatistics",
+ "help": "Enables specialization statistics for nodes generated with Truffle DSL and prints the result on exit. In order for this flag to be functional -Atruffle.dsl.GenerateSpecializationStatistics\u003dtrue needs to be set at build time. Enabling this flag and the compiler option has major implications on the performance and footprint of the interpreter. Do not use in production environments.",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "strategy",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": false
+ },
+ "defaultValue": "DEFAULT"
+ },
+ "name": "engine.StaticObjectStorageStrategy",
+ "help": "Set the storage strategy used by the Static Object Model. Accepted values are: [\u0027default\u0027, \u0027array-based\u0027, \u0027field-based\u0027]",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "default|array-based|field-based"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.TraceCodeSharing",
+ "help": "Enables printing of code sharing related information to the logger. This option is intended to support debugging language implementations.",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Long",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 0
+ },
+ "name": "engine.TraceStackTraceInterval",
+ "help": "Prints the stack trace for all threads for a time interval. By default 0, which disables the output.",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "[1, inf)"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.TraceThreadLocalActions",
+ "help": "Traces thread local events and when they are processed on the individual threads.Prints messages with the [engine] [tl] prefix. ",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.TriggerUncaughtExceptionHandlerForCancel",
+ "help": "Propagates cancel execution exception into UncaughtExceptionHandler. For testing purposes only.",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "engine.UseConservativeContextReferences",
+ "help": "Enables conservative context references. This allows invalid sharing between contexts. For testing purposes only.",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": true,
+ "deprecationMessage": "Has no longer any effect. Scheduled for removal in in 22.1.",
+ "usageSyntax": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "engine.UsePreInitializedContext",
+ "help": "Use pre-initialized context when it\u0027s available (default: true).",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "engine.WarnInterpreterOnly",
+ "help": "Print warning when the engine is using a default Truffle runtime (default: true).",
+ "category": "USER",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.agent-can-block",
+ "help": "Determines whether agents can block or not. (default:true)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.annex-b",
+ "help": "Enable ECMAScript Annex B features. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.async-stack-traces",
+ "help": "Include async function frames in stack traces. (default:true)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.atomics",
+ "help": "Enable ECMAScript Atomics. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.await-optimization",
+ "help": "Use PromiseResolve for Await. (default:true)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.bigint",
+ "help": "Provide an implementation of the BigInt proposal. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.bind-member-functions",
+ "help": "Bind functions returned by Value.getMember to the receiver object. (default:true)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "CharsetName",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": false
+ },
+ "defaultValue": ""
+ },
+ "name": "js.charset",
+ "help": "Charset used for decoding/encoding of the input/output streams. (default:)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "UTF-8|UTF-32|\u003cname\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.class-fields",
+ "help": "Enable the class public and private fields proposal. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "commonjs-require-globals",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": false
+ },
+ "defaultValue": {}
+ },
+ "name": "js.commonjs-core-modules-replacements",
+ "help": "Npm packages used to replace global Node.js builtins. (default:{})",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cname\u003e:\u003cmodule\u003e,..."
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.commonjs-require",
+ "help": "Enable CommonJS require emulation. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "String",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": ""
+ },
+ "name": "js.commonjs-require-cwd",
+ "help": "CommonJS default current working directory. (default:)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cpath\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.console",
+ "help": "Provide \u0027console\u0027 global property. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.const-as-var",
+ "help": "Parse const declarations as a var (legacy compatibility option). (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.debug-builtin",
+ "help": "Provide a non-API Debug builtin. Behaviour will likely change. Don\u0027t depend on this in production code. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "String",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": "Debug"
+ },
+ "name": "js.debug-property-name",
+ "help": "The name used for the Graal.js debug builtin. (default:Debug)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cname\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.direct-byte-buffer",
+ "help": "Use direct (off-heap) byte buffer for typed arrays. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.disable-eval",
+ "help": "User code is not allowed to parse code via e.g. eval(). (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.disable-with",
+ "help": "User code is not allowed to use the \u0027with\u0027 statement. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "ecmascript-version",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": false
+ },
+ "defaultValue": 13
+ },
+ "name": "js.ecmascript-version",
+ "help": "ECMAScript version to be compatible with. Default is \u0027latest\u0027 (latest supported version), staged features are in \u0027staging\u0027. (default:13)",
+ "category": "USER",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "latest|staging|[5, 13]|[2015, 2022]"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.error-cause",
+ "help": "Enable the error cause proposal. Allows an error to be chained with a cause using the optional options parameter. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.esm-bare-specifier-relative-lookup",
+ "help": "Resolve ESM bare specifiers relative to the importing module\u0027s path instead of attempting an absolute path lookup. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.esm-eval-returns-exports",
+ "help": "Eval of an ES module through the polyglot API returns its exported symbols. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.foreign-hash-properties",
+ "help": "Allow getting/setting non-JS hash entries using the `[]` and `.` operators. (default:true)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.foreign-object-prototype",
+ "help": "Non-JS objects have prototype (Object/Function/Array.prototype) set. (default:true)",
+ "category": "EXPERT",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Long",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 65535
+ },
+ "name": "js.function-arguments-limit",
+ "help": "Maximum number of arguments for functions. (default:65535)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cint\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 4
+ },
+ "name": "js.function-cache-limit",
+ "help": "Maximum allowed size of a function cache. (default:4)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cint\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 256
+ },
+ "name": "js.function-constructor-cache-size",
+ "help": "Maximum size of the parsing cache used by the Function constructor to avoid re-parsing known sources. (default:256)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cint\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.function-statement-error",
+ "help": "Treat hoistable function statements in blocks as an error (in ES5 mode). (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.global-arguments",
+ "help": "Provide \u0027arguments\u0027 global property. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.global-property",
+ "help": "Provide \u0027global\u0027 global property. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.graal-builtin",
+ "help": "Provide \u0027Graal\u0027 global property. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.import-assertions",
+ "help": "Enable import assertions (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.interop-complete-promises",
+ "help": "Resolve promises when crossing a polyglot language boundary. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.intl-402",
+ "help": "Enable ECMAScript Internationalization API. (default:true)",
+ "category": "USER",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.java-package-globals",
+ "help": "Provide Java package globals: Packages, java, javafx, javax, com, org, edu. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.json-modules",
+ "help": "Enable loading of json modules (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.lazy-translation",
+ "help": "Translate function bodies lazily. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.load",
+ "help": "Provide \u0027load\u0027 global function. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.load-from-classpath",
+ "help": "Allow \u0027load\u0027 to access \u0027classpath:\u0027 URLs. Do not use with untrusted code. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.load-from-url",
+ "help": "Allow \u0027load\u0027 to access URLs. Do not use with untrusted code. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "String",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": ""
+ },
+ "name": "js.locale",
+ "help": "Use a specific default locale for locale-sensitive operations. (default:)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003clocale\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 10000000
+ },
+ "name": "js.max-apply-argument-length",
+ "help": "Maximum allowed number of arguments allowed in an apply function. (default:10000000)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cint\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 32766
+ },
+ "name": "js.max-prototype-chain-length",
+ "help": "Maximum allowed length of a prototype chain. (default:32766)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cint\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 1073741823
+ },
+ "name": "js.max-typed-array-length",
+ "help": "Maximum allowed length for TypedArrays. (default:1073741823)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cint\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.mle-mode",
+ "help": "Provide a non-API MLE builtin. Behaviour will likely change. Don\u0027t depend on this in production code. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.nashorn-compat",
+ "help": "Provide compatibility with the OpenJDK Nashorn engine. Do not use with untrusted code. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.new-set-methods",
+ "help": "Enable new Set methods. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.operator-overloading",
+ "help": "Enable operator overloading (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.parse-only",
+ "help": "Only parse source code, do not run it. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.performance",
+ "help": "Provide \u0027performance\u0027 global property. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.polyglot-builtin",
+ "help": "Provide \u0027Polyglot\u0027 global property. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.polyglot-evalfile",
+ "help": "Provide \u0027Polyglot.evalFile\u0027 function. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.print",
+ "help": "Provide \u0027print\u0027 global function. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.print-no-newline",
+ "help": "Print function will not print new line char. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.private-fields-in",
+ "help": "Enable private field in in operator (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.profile-time",
+ "help": "Enable time profiling. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.profile-time-print-cumulative",
+ "help": "Print cumulative time when time profiling is enabled. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 5
+ },
+ "name": "js.property-cache-limit",
+ "help": "Maximum allowed size of a property cache. (default:5)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cint\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 128
+ },
+ "name": "js.regex-cache-size",
+ "help": "Maximum size of the regex cache used by the RegExp constructor to avoid re-parsing known sources. (default:128)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cint\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.regex-regression-test-mode",
+ "help": "Test mode for TRegex. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.regex.always-eager",
+ "help": "Always match capture groups eagerly. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.regex.dump-automata",
+ "help": "Produce ASTs and automata in JSON, DOT (GraphViz) and LaTeX formats. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.regex.step-execution",
+ "help": "Trace the execution of automata in JSON files. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.regexp-match-indices",
+ "help": "Enable RegExp Match Indices property. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.regexp-static-result",
+ "help": "Provide last RegExp match in RegExp global var, e.g. RegExp.$1. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.scope-optimization",
+ "help": "Allow scope optimizations around closures. (default:true)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.script-engine-global-scope-import",
+ "help": "Enable ScriptEngine-specific global scope import function. (default:false)",
+ "category": "INTERNAL",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.scripting",
+ "help": "Enable scripting features (Nashorn compatibility option). (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.shared-array-buffer",
+ "help": "Enable ECMAScript SharedArrayBuffer. (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.shebang",
+ "help": "Allow parsing files starting with #!. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.shell",
+ "help": "Provide global functions for js shell. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 10
+ },
+ "name": "js.stack-trace-limit",
+ "help": "Number of stack frames to capture. (default:10)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "[0, inf)"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.strict",
+ "help": "Enforce strict mode. (default:false)",
+ "category": "USER",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.string-lazy-substrings",
+ "help": "Allow lazy substrings. (default:true)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Integer",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 1073741799
+ },
+ "name": "js.string-length-limit",
+ "help": "Maximum string length. (default:1073741799)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cchars\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.syntax-extensions",
+ "help": "Enable Nashorn syntax extensions. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.temporal",
+ "help": "Enable JavaScript Temporal API. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.test-clone-uninitialized",
+ "help": "Test uninitialized cloning. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.test262-mode",
+ "help": "Expose global property $262 needed to run the Test262 harness. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.testV8-mode",
+ "help": "Expose internals needed to run the TestV8 harness. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Long",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 1000000
+ },
+ "name": "js.timer-resolution",
+ "help": "Resolution of timers (performance.now() and Date built-ins) in nanoseconds. Fuzzy time is used when set to 0. (default:1000000)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cnanoseconds\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "ZoneId",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": false
+ },
+ "defaultValue": ""
+ },
+ "name": "js.timezone",
+ "help": "Set custom time zone ID. (default:)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cTimeZoneID\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.top-level-await",
+ "help": "Enable top-level-await. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "UnhandledRejectionsTrackingMode",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": "NONE"
+ },
+ "name": "js.unhandled-rejections",
+ "help": "Configure unhandled promise rejections tracking. Accepted values: \u0027none\u0027, unhandled rejections are not tracked. \u0027warn\u0027, a warning is printed to stderr when an unhandled rejection is detected. \u0027throw\u0027, an exception is thrown when an unhandled rejection is detected. \u0027handler\u0027, the handler function set with Graal.setUnhandledPromiseRejectionHandler will be called with the rejection value and promise respectively as arguments. (default:none)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "none|warn|throw|handler"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.use-utc-for-legacy-dates",
+ "help": "Determines what time zone (UTC or local time zone) should be used when UTC offset is absent in a parsed date. (default:true)",
+ "category": "EXPERT",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.v8-compat",
+ "help": "Provide compatibility with the Google V8 engine. (default:false)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.v8-legacy-const",
+ "help": "Emulate v8 behavior when trying to mutate const variables in non-strict mode. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.v8-realm-builtin",
+ "help": "Provide Realm builtin compatible with V8\u0027s d8 shell. (default:false)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.validate-regexp-literals",
+ "help": "Validate regexp literals at parse time. (default:true)",
+ "category": "INTERNAL",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": true
+ },
+ "name": "js.wasm-bigint",
+ "help": "Enable wasm i64 to javascript BigInt support (default:true)",
+ "category": "USER",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false"
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.webassembly",
+ "help": "Enable WebAssembly JavaScript API. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Boolean",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": false
+ },
+ "name": "js.zone-rules-based-time-zones",
+ "help": "Use ZoneRulesProvider instead of time-zone data from ICU4J. (default:false)",
+ "category": "EXPERT",
+ "stability": "EXPERIMENTAL",
+ "deprecated": false,
+ "deprecationMessage": ""
+},
+{
+ "key": {
+ "type": {
+ "name": "Enable",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": false
+ },
+ "defaultValue": {
+ "enabled": false
+ }
+ },
+ "name": "cpusampler",
+ "help": "Enable/Disable the CPU sampler, or enable with specific Output - as specified by the Output option (default: false). Choosing an output with this options defaults to printing the output to std out, except for the flamegraph which is printed to a flamegraph.svg file.",
+ "category": "USER",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "true|false|\u003cOutput\u003e"
+},
+{
+ "key": {
+ "type": {
+ "name": "Long",
+ "converter": {},
+ "validator": {},
+ "isOptionMap": false,
+ "isDefaultType": true
+ },
+ "defaultValue": 0
+ },
+ "name": "cpusampler.Delay",
+ "help": "Delay the sampling for this many milliseconds (default: 0).",
+ "category": "USER",
+ "stability": "STABLE",
+ "deprecated": false,
+ "deprecationMessage": "",
+ "usageSyntax": "\u003cms\u003e"
+}
+]
diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/MetricMap.java b/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/MetricMap.java
index c339d3537..6801efb3e 100644
--- a/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/MetricMap.java
+++ b/engine-core/src/main/java/io/nosqlbench/engine/core/metrics/MetricMap.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022 nosqlbench
+ * Copyright (c) 2022-2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,10 +17,12 @@
package io.nosqlbench.engine.core.metrics;
import com.codahale.metrics.Metric;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import org.graalvm.polyglot.Value;
import org.graalvm.polyglot.proxy.ProxyObject;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.LogManager;
+
+import java.security.InvalidParameterException;
import java.util.*;
public class MetricMap implements ProxyObject {
@@ -30,56 +32,62 @@ public class MetricMap implements ProxyObject {
private final String parent_name;
private final HashMap map = new HashMap<>();
+ public final static char DELIM = '.';
+
public MetricMap(String name, String parent) {
this.name = name;
this.parent_name = parent;
}
- public MetricMap findOwner(String metricName) {
+ public MetricMap() {
+ this("ROOT", "ROOT"); // because of auto-intern, the root node is the only one with parent==parent
+ }
+
+ public MetricMap findOrCreateDottedParentPath(String metricName) {
String[] names = metricName.split("\\.");
String[] pathTraversal = Arrays.copyOfRange(names, 0, names.length - 1);
- MetricMap owner = findPath(pathTraversal);
+ MetricMap owner = findOrCreateNodePath(pathTraversal);
return owner;
}
+ public MetricMap findOrCreateDottedNodePath(String nodeName) {
+ String[] names = nodeName.split("\\.");
+ MetricMap owner = findOrCreateNodePath(names);
+ return owner;
+ }
@Override
public String toString() {
return "MetricMap{" +
"name='" + name + '\'' +
", map=" + map +
- (parent_name!=null ? ", parent=" + parent_name : "") +
+ (parent_name != null ? ", parent=" + parent_name : "") +
'}';
}
- public MetricMap findPath(String... names) {
- MetricMap current = this;
- for (int i = 0; i < names.length; i++) {
- String edgeName = names[i];
-
- if (current.map.containsKey(edgeName)) {
- Object element = current.map.get(edgeName);
- if (element instanceof MetricMap) {
- current = (MetricMap) element;
- logger.trace(() -> "traversing edge:" + edgeName);
- } else {
- String error = "edge exists at level:" + i;
- logger.error(error);
- throw new RuntimeException(error);
- }
- } else {
- MetricMap newMap = new MetricMap(edgeName,this.name);
- current.map.put(edgeName, newMap);
- current = newMap;
- logger.trace(() -> "adding edge:" + edgeName);
- }
+ /**
+ * Given an array of non-delimited component names, walk from the root node to each name, creating any needed nodes
+ * along the way.
+ *
+ * @param names the names of the nodes to traverse or create
+ * @return The MetricMap node in the node tree with the given path-wise address.
+ * @throws InvalidParameterException if any of the component names includes a delimiter
+ */
+ public MetricMap findOrCreateNodePath(String... names) {
+ if (names.length == 0) {
+ return this;
}
- return current;
+ String nodeName = names[0];
+ if (nodeName.contains(String.valueOf(DELIM))) {
+ throw new InvalidParameterException("Path components must not include interior delimiters. (" + DELIM + ").");
+ }
+ MetricMap childNode = (MetricMap) map.computeIfAbsent(nodeName, name -> new MetricMap(names[0], this.name));
+ return childNode.findOrCreateNodePath(Arrays.copyOfRange(names, 1, names.length));
}
public void add(String name, Metric metric) {
- MetricMap owner = findOwner(name);
- String leafName = name.substring(name.lastIndexOf(".")+1);
- owner.map.put(leafName,metric);
+ MetricMap owner = findOrCreateDottedParentPath(name);
+ String leafName = name.substring(name.lastIndexOf(".") + 1);
+ owner.map.put(leafName, metric);
}
public void remove(String name) {
@@ -100,6 +108,9 @@ public class MetricMap implements ProxyObject {
@Override
public Object getMember(String key) {
+ if (key.contains(".")) {
+ throw new InvalidParameterException("Members of the metrics registry tree must have names which do not include the '.' delimiter.");
+ }
Object got = get(key);
return got;
}
@@ -120,4 +131,13 @@ public class MetricMap implements ProxyObject {
public void putMember(String key, Value value) {
throw new RuntimeException("Not allowed here");
}
+
+
+ @Override
+ public int hashCode() {
+ int result = name != null ? name.hashCode() : 0;
+ result = 31 * result + (parent_name != null ? parent_name.hashCode() : 0);
+ result = 31 * result + map.hashCode();
+ return result;
+ }
}
diff --git a/engine-core/src/test/java/io/nosqlbench/engine/core/metrics/MetricMapTest.java b/engine-core/src/test/java/io/nosqlbench/engine/core/metrics/MetricMapTest.java
new file mode 100644
index 000000000..bde1e674f
--- /dev/null
+++ b/engine-core/src/test/java/io/nosqlbench/engine/core/metrics/MetricMapTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2023 nosqlbench
+ *
+ * Licensed 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 io.nosqlbench.engine.core.metrics;
+
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+class MetricMapTest {
+
+ @Test
+ public void testNodeByNodeConstruction() {
+ MetricMap root = new MetricMap();
+ MetricMap alpha = root.findOrCreateNodePath("alpha");
+ MetricMap beta = alpha.findOrCreateNodePath("beta");
+ MetricMap gamma = beta.findOrCreateNodePath("gamma");
+
+ assertThat(root.containsKey("alpha")).isTrue();
+ assertThat(root.findOrCreateNodePath("alpha","beta","gamma")==gamma).isTrue();
+ assertThat(root.findOrCreateDottedNodePath("alpha.beta.gamma")==gamma).isTrue();
+ }
+
+ @Test
+ public void testConcatenatedConstruction() {
+ MetricMap root = new MetricMap();
+ MetricMap gamma = root.findOrCreateDottedNodePath("alpha.beta.gamma");
+ assertThat(root.findOrCreateDottedParentPath("alpha.beta.gamma.abstract_leaf_node")).isEqualTo(gamma);
+ MetricMap alpha = root.findOrCreateDottedParentPath("alpha.beta");
+ MetricMap beta = alpha.findOrCreateDottedParentPath("beta.gamma");
+ MetricMap betaToo = beta.findOrCreateDottedParentPath("gamma");
+ assertThat(beta).isEqualTo(betaToo);
+ }
+
+
+}
diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetrics.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetrics.java
index 43fff8a80..e4acc3654 100644
--- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetrics.java
+++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetrics.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022 nosqlbench
+ * Copyright (c) 2022-2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@ import com.codahale.metrics.MetricRegistry;
import org.apache.logging.log4j.Logger;
import java.io.File;
+import java.util.Objects;
import java.util.concurrent.TimeUnit;
public class CSVMetrics {
@@ -80,6 +81,7 @@ public class CSVMetrics {
}
public CSVMetrics add(Metric metric) {
+ Objects.requireNonNull(metric);
filter.add(metric);
return this;
}
diff --git a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetricsPlugin.java b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetricsPlugin.java
index ff2d65a23..6b89ced14 100644
--- a/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetricsPlugin.java
+++ b/engine-extensions/src/main/java/io/nosqlbench/engine/extensions/csvmetrics/CSVMetricsPlugin.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022 nosqlbench
+ * Copyright (c) 2022-2023 nosqlbench
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -40,7 +40,7 @@ public class CSVMetricsPlugin {
*/
public CSVMetrics log(String filename) {
CSVMetrics csvMetrics = new CSVMetrics(filename, logger, metricRegistry);
- writeStdout("started new csvlogger: " + filename + "\n");
+ writeStdout("started new csvmetrics: " + filename + "\n");
return csvMetrics;
}
diff --git a/hdf-loader/pom.xml b/hdf-loader/pom.xml
index d5ce8a0f8..78063bd3e 100644
--- a/hdf-loader/pom.xml
+++ b/hdf-loader/pom.xml
@@ -13,7 +13,6 @@
~ 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.
- ~
-->
= 0) System.arraycopy(arr[i][j], 0, flat[i], j * dims[2] + 0, dims[2]);
}
}
return flat;
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/embedding/IntEmbeddingGenerator.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/embedding/IntEmbeddingGenerator.java
index e5de526ad..c4f0c1988 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/embedding/IntEmbeddingGenerator.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/embedding/IntEmbeddingGenerator.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.embedding;
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/embedding/StringEmbeddingGenerator.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/embedding/StringEmbeddingGenerator.java
index f72845cf6..01ffb9af4 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/embedding/StringEmbeddingGenerator.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/embedding/StringEmbeddingGenerator.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.embedding;
@@ -25,9 +24,10 @@ import org.deeplearning4j.text.tokenization.tokenizerfactory.DefaultTokenizerFac
import org.deeplearning4j.text.tokenization.tokenizerfactory.TokenizerFactory;
import java.util.Arrays;
+import java.util.Collections;
public class StringEmbeddingGenerator implements EmbeddingGenerator {
- private TokenizerFactory tokenizerFactory= new DefaultTokenizerFactory();
+ private final TokenizerFactory tokenizerFactory= new DefaultTokenizerFactory();
@Override
public float[][] generateEmbeddingFrom(Object o, int[] dims) {
@@ -41,7 +41,7 @@ public class StringEmbeddingGenerator implements EmbeddingGenerator {
}
private float[][] generateWordEmbeddings(String[] text) {
- SentenceIterator iter = new CollectionSentenceIterator(Arrays.asList(text));
+ SentenceIterator iter = new CollectionSentenceIterator(Collections.singletonList(text));
/*Word2Vec vec = new Word2Vec.Builder()
.minWordFrequency(1)
.iterations(1)
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/readers/Hdf5Reader.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/readers/Hdf5Reader.java
index 232207919..af3810202 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/readers/Hdf5Reader.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/readers/Hdf5Reader.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.readers;
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/readers/HdfReader.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/readers/HdfReader.java
index 8dfd58bb8..f9304e6c9 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/readers/HdfReader.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/readers/HdfReader.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.readers;
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/AbstractVectorWriter.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/AbstractVectorWriter.java
index c01801e46..4c1c070e3 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/AbstractVectorWriter.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/AbstractVectorWriter.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.writers;
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/AstraVectorWriter.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/AstraVectorWriter.java
index 120567af8..29bbf6191 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/AstraVectorWriter.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/AstraVectorWriter.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.writers;
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/FileVectorWriter.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/FileVectorWriter.java
index a1eacdb3f..710b419d3 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/FileVectorWriter.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/FileVectorWriter.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.writers;
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/NoopVectorWriter.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/NoopVectorWriter.java
index 15e62f067..51788ac4f 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/NoopVectorWriter.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/NoopVectorWriter.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.writers;
diff --git a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/VectorWriter.java b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/VectorWriter.java
index 31f8993d3..7e1da2edb 100644
--- a/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/VectorWriter.java
+++ b/hdf-loader/src/main/java/io/nosqlbench/loader/hdf/writers/VectorWriter.java
@@ -12,7 +12,6 @@
* 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 io.nosqlbench.loader.hdf.writers;
diff --git a/mvn-defaults/pom.xml b/mvn-defaults/pom.xml
index 1fb8cfe08..c864e0676 100644
--- a/mvn-defaults/pom.xml
+++ b/mvn-defaults/pom.xml
@@ -78,9 +78,9 @@
import