From 8f8c6d1f90c54ed127c04bce40090092ddf9cdb9 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Tue, 24 Oct 2023 15:52:03 +1100 Subject: [PATCH 001/345] Revert "Revert "A test to show that validation rules do not catch a mutation query to schema mismatch"" --- .../graphql/ParseAndValidateTest.groovy | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/test/groovy/graphql/ParseAndValidateTest.groovy b/src/test/groovy/graphql/ParseAndValidateTest.groovy index 949b4aeb5e..a5ffd60717 100644 --- a/src/test/groovy/graphql/ParseAndValidateTest.groovy +++ b/src/test/groovy/graphql/ParseAndValidateTest.groovy @@ -1,6 +1,12 @@ package graphql +import graphql.language.Document import graphql.parser.InvalidSyntaxException +import graphql.parser.Parser +import graphql.schema.GraphQLSchema +import graphql.schema.idl.SchemaParser +import graphql.schema.idl.TypeDefinitionRegistry +import graphql.schema.idl.UnExecutableSchemaGenerator import graphql.validation.ValidationError import graphql.validation.ValidationErrorType import graphql.validation.rules.NoUnusedFragments @@ -155,4 +161,30 @@ class ParseAndValidateTest extends Specification { then: !rs.errors.isEmpty() // all rules apply - we have errors } + + def "issue 2740 - evidence of not working"() { + def sdl = ''' + type Query { + myquery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + def graphQL = GraphQL.newGraphQL(schema).build() + + String request = "mutation MyMutation { mymutation }" + + when: + def er = graphQL.execute(request) + then: + er.errors.size() == 1 + + when: + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + + then: + errors.size() == 1 + } } From 8508be1f6ea6c35cc62f423ddf0625a25018ebd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 16:17:27 +0000 Subject: [PATCH 002/345] Bump org.eclipse.jetty:jetty-server from 11.0.22 to 11.0.24 Bumps org.eclipse.jetty:jetty-server from 11.0.22 to 11.0.24. --- updated-dependencies: - dependency-name: org.eclipse.jetty:jetty-server dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 07509bb943..c74fe0f698 100644 --- a/build.gradle +++ b/build.gradle @@ -110,7 +110,7 @@ dependencies { testImplementation 'org.codehaus.groovy:groovy:3.0.22' testImplementation 'org.codehaus.groovy:groovy-json:3.0.22' testImplementation 'com.google.code.gson:gson:2.11.0' - testImplementation 'org.eclipse.jetty:jetty-server:11.0.22' + testImplementation 'org.eclipse.jetty:jetty-server:11.0.24' testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.17.2' testImplementation 'org.awaitility:awaitility-groovy:4.2.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' From adb00f01aa4ec346287e90b698362abdd13bce3d Mon Sep 17 00:00:00 2001 From: bbaker Date: Sat, 21 Sep 2024 17:39:56 +1000 Subject: [PATCH 003/345] Added some more tests around providing default values --- .../groovy/graphql/DefaultValuesTest.groovy | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/test/groovy/graphql/DefaultValuesTest.groovy diff --git a/src/test/groovy/graphql/DefaultValuesTest.groovy b/src/test/groovy/graphql/DefaultValuesTest.groovy new file mode 100644 index 0000000000..8c7d665145 --- /dev/null +++ b/src/test/groovy/graphql/DefaultValuesTest.groovy @@ -0,0 +1,90 @@ +package graphql + +import graphql.schema.DataFetcher +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput + +class DefaultValuesTest extends Specification { + + def "provided values override defaults"() { + def sdl = """ + type Query { + myField(deleted: Boolean = true) : String + myField2(deleted: Boolean = true) : String + } + """ + + def df = { env -> + return "dataFetcherArg=" + env.getArgument("deleted") + } as DataFetcher + def graphQL = TestUtil.graphQL(sdl, [Query: [ + myField : df, + myField2: df]] + ).build() + + when: + def ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["deleted": null]).build() + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=null"] + + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["deleted": true]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=true"] + + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField(deleted : $deleted) + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField: "dataFetcherArg=false"] + + when: + ei = newExecutionInput(''' + query myQuery($deleted: Boolean = false) { + myField + myField2(deleted : $deleted) + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField : "dataFetcherArg=true", + myField2: "dataFetcherArg=false"] + + when: + ei = newExecutionInput(''' + query myQuery { + myField(deleted :false) + myField2 + } + ''').variables(["NotProvided": "valueNotProvided"]).build() + er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [myField : "dataFetcherArg=false", + myField2: "dataFetcherArg=true"] + } +} From e359053b9a8554d5c181615d8a10a2a1b568593a Mon Sep 17 00:00:00 2001 From: bbaker Date: Sat, 21 Sep 2024 17:44:59 +1000 Subject: [PATCH 004/345] Comments describing each case --- .../groovy/graphql/DefaultValuesTest.groovy | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/test/groovy/graphql/DefaultValuesTest.groovy b/src/test/groovy/graphql/DefaultValuesTest.groovy index 8c7d665145..ab608d0283 100644 --- a/src/test/groovy/graphql/DefaultValuesTest.groovy +++ b/src/test/groovy/graphql/DefaultValuesTest.groovy @@ -23,6 +23,11 @@ class DefaultValuesTest extends Specification { myField2: df]] ).build() + // + // The variable is present in the variables map and its explicitly null + // + // https://spec.graphql.org/October2021/#sec-Coercing-Variable-Values + // when: def ei = newExecutionInput(''' query myQuery($deleted: Boolean = false) { @@ -35,6 +40,11 @@ class DefaultValuesTest extends Specification { er.errors.isEmpty() er.data == [myField: "dataFetcherArg=null"] + // + // The variable is present in the variables map and its explicitly a value + // + // https://spec.graphql.org/October2021/#sec-Coercing-Variable-Values + // when: ei = newExecutionInput(''' query myQuery($deleted: Boolean = false) { @@ -47,6 +57,12 @@ class DefaultValuesTest extends Specification { er.errors.isEmpty() er.data == [myField: "dataFetcherArg=true"] + // + // The variable is NOT present in the variables map it should use a default + // value from the variable declaration + // + // https://spec.graphql.org/October2021/#sec-Coercing-Variable-Values + // when: ei = newExecutionInput(''' query myQuery($deleted: Boolean = false) { @@ -59,6 +75,11 @@ class DefaultValuesTest extends Specification { er.errors.isEmpty() er.data == [myField: "dataFetcherArg=false"] + // + // The variable is NOT present in the variables map and a variable is NOT used + // it should use a default value from the field declaration + // + // when: ei = newExecutionInput(''' query myQuery($deleted: Boolean = false) { @@ -73,6 +94,11 @@ class DefaultValuesTest extends Specification { er.data == [myField : "dataFetcherArg=true", myField2: "dataFetcherArg=false"] + // + // If there are no variables on the query operation + // it should use a default value from the field declaration + // or literals provided + // when: ei = newExecutionInput(''' query myQuery { From ade972c4def24d9c1f460a917acfb114031988ad Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Sun, 22 Sep 2024 12:49:19 -0700 Subject: [PATCH 005/345] Avoid unnecessary String allocations in AstPrinter Avoid the overhead of allocating unnecessary intermediate String instances in AstPrinter by only appending to the supplied StringBuilder. When running the AstPrinterBenchmark with the gc profiler, this significantly reduces the allocation rate: before: gc.alloc.rate: 4846.634 MB/sec gc.alloc.rate.norm: 86960.001 B/op after: gc.alloc.rate: 2524.634 MB/sec gc.alloc.rate.norm: 10432.000 B/op The benchmarks also show a doubling in throughput. --- .../java/graphql/language/AstPrinter.java | 650 ++++++++++-------- src/main/java/graphql/util/EscapeUtil.java | 24 +- 2 files changed, 383 insertions(+), 291 deletions(-) diff --git a/src/main/java/graphql/language/AstPrinter.java b/src/main/java/graphql/language/AstPrinter.java index 3315c1302c..fcc082ee7d 100644 --- a/src/main/java/graphql/language/AstPrinter.java +++ b/src/main/java/graphql/language/AstPrinter.java @@ -5,16 +5,14 @@ import java.io.PrintWriter; import java.io.Writer; -import java.util.Collections; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.StringJoiner; import static graphql.Assert.assertShouldNeverHappen; import static graphql.Assert.assertTrue; -import static graphql.util.EscapeUtil.escapeJsonString; -import static java.lang.String.valueOf; +import static graphql.util.EscapeUtil.escapeJsonStringTo; /** * This can take graphql language AST and print it out as a string @@ -75,40 +73,57 @@ public class AstPrinter { private NodePrinter argument() { if (compactMode) { - return (out, node) -> out.append(node.getName()).append(':').append(value(node.getValue())); + return (out, node) -> { + out.append(node.getName()).append(':'); + value(out, node.getValue()); + }; } - return (out, node) -> out.append(node.getName()).append(": ").append(value(node.getValue())); + return (out, node) -> { + out.append(node.getName()).append(": "); + value(out, node.getValue()); + }; } private NodePrinter document() { if (compactMode) { - return (out, node) -> out.append(join(node.getDefinitions(), " ")); + return (out, node) -> join(out, node.getDefinitions(), " "); } - return (out, node) -> out.append(join(node.getDefinitions(), "\n\n")).append("\n"); + return (out, node) -> { + join(out, node.getDefinitions(), "\n\n"); + out.append('\n'); + }; } private NodePrinter directive() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String arguments = wrap("(", join(node.getArguments(), argSep), ")"); - out.append('@').append(node.getName()).append(arguments); + out.append('@'); + out.append(node.getName()); + if (!isEmpty(node.getArguments())) { + out.append('('); + join(out, node.getArguments(), argSep); + out.append(')'); + } }; } private NodePrinter directiveDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - out.append(description(node)); - String arguments = wrap("(", join(node.getInputValueDefinitions(), argSep), ")"); - String locations = join(node.getDirectiveLocations(), " | "); - String repeatable = node.isRepeatable() ? "repeatable " : ""; - out.append("directive @") - .append(node.getName()) - .append(arguments) - .append(" ") - .append(repeatable) - .append("on ") - .append(locations); + description(out, node); + out.append("directive @"); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append('('); + join(out, node.getInputValueDefinitions(), argSep); + out.append(')'); + } + out.append(" "); + if (node.isRepeatable()) { + out.append("repeatable "); + } + out.append("on "); + join(out, node.getDirectiveLocations(), " | "); }; } @@ -118,13 +133,15 @@ private NodePrinter directiveLocation() { private NodePrinter enumTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "enum", - node.getName(), - directives(node.getDirectives()), - block(node.getEnumValueDefinitions()) - )); + description(out, node); + out.append("enum "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + block(out, node.getEnumValueDefinitions()); }; } @@ -134,11 +151,12 @@ private NodePrinter enumValue() { private NodePrinter enumValueDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - node.getName(), - directives(node.getDirectives()) - )); + description(out, node); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } @@ -146,128 +164,131 @@ private NodePrinter field() { final String argSep = compactMode ? "," : ", "; final String aliasSuffix = compactMode ? ":" : ": "; return (out, node) -> { - String alias = wrap("", node.getAlias(), aliasSuffix); String name = node.getName(); - String arguments = wrap("(", join(node.getArguments(), argSep), ")"); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - - if (compactMode) { - out.append(spaced( - alias + name + arguments, - directives - )); - out.append(selectionSet); - } else { - out.append(spaced( - alias + name + arguments, - directives, - selectionSet - )); - } + if (!isEmpty(node.getAlias())) { + out.append(node.getAlias()); + out.append(aliasSuffix); + } + out.append(name); + if (!isEmpty(node.getArguments())) { + out.append('('); + join(out, node.getArguments(), argSep); + out.append(')'); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (node.getSelectionSet() != null && !isEmpty(node.getSelectionSet().getSelections())) { + if (!compactMode) { + out.append(' '); + } + node(out, node.getSelectionSet()); + } }; } - private NodePrinter fieldDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String args; - if (hasDescription(Collections.singletonList(node)) && !compactMode) { - out.append(description(node)); - args = join(node.getInputValueDefinitions(), "\n"); - out.append(node.getName()) - .append(wrap("(\n", args, ")")) - .append(": ") - .append(spaced( - type(node.getType()), - directives(node.getDirectives()) - )); + if (hasDescription(node) && !compactMode) { + description(out, node); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append("(\n"); + join(out, node.getInputValueDefinitions(), "\n"); + out.append(')'); + } + out.append(": "); + type(out, node.getType()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } } else { - args = join(node.getInputValueDefinitions(), argSep); - out.append(node.getName()) - .append(wrap("(", args, ")")) - .append(": ") - .append(spaced( - type(node.getType()), - directives(node.getDirectives()) - )); + out.append(node.getName()); + if (!isEmpty(node.getInputValueDefinitions())) { + out.append('('); + join(out, node.getInputValueDefinitions(), argSep); + out.append(')'); + } + out.append(": "); + type(out, node.getType()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } } }; } - private boolean hasDescription(List nodes) { - for (Node node : nodes) { - if (node instanceof AbstractDescribedNode) { - AbstractDescribedNode describedNode = (AbstractDescribedNode) node; - if (describedNode.getDescription() != null) { - return true; - } - } + private static boolean hasDescription(Node node) { + if (node instanceof AbstractDescribedNode) { + AbstractDescribedNode describedNode = (AbstractDescribedNode) node; + return describedNode.getDescription() != null; } - return false; } private NodePrinter fragmentDefinition() { return (out, node) -> { - String name = node.getName(); - String typeCondition = type(node.getTypeCondition()); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - - out.append("fragment ").append(name).append(" on ").append(typeCondition) - .append(' ') - .append(directives) - .append(selectionSet); + out.append("fragment "); + out.append(node.getName()); + out.append(" on "); + type(out, node.getTypeCondition()); + out.append(' '); + directives(out, node.getDirectives()); + node(out, node.getSelectionSet()); }; } private NodePrinter fragmentSpread() { return (out, node) -> { - String name = node.getName(); - String directives = directives(node.getDirectives()); - - out.append("...").append(name).append(directives); + out.append("..."); + out.append(node.getName()); + directives(out, node.getDirectives()); }; } private NodePrinter inlineFragment() { return (out, node) -> { - TypeName typeName = node.getTypeCondition(); - //Inline fragments may not have a type condition - String typeCondition = typeName == null ? "" : wrap("on ", type(typeName), ""); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - + out.append("..."); if (compactMode) { // believe it or not but "...on Foo" is valid syntax - out.append("..."); - out.append(spaced( - typeCondition, - directives - )); - out.append(selectionSet); + if (node.getTypeCondition() != null) { + out.append("on "); + type(out, node.getTypeCondition()); + } + directives(out, node.getDirectives()); + node(out, node.getSelectionSet()); } else { - out.append(spaced( - "...", - typeCondition, - directives, - selectionSet - )); + if (node.getTypeCondition() != null) { + out.append(" on "); + type(out, node.getTypeCondition()); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + node(out, node.getSelectionSet()); } }; } private NodePrinter inputObjectTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "input", - node.getName(), - directives(node.getDirectives()), - block(node.getInputValueDefinitions()) - )); + description(out, node); + out.append("input "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getInputValueDefinitions())) { + out.append(' '); + block(out, node.getInputValueDefinitions()); + } }; } @@ -275,192 +296,272 @@ private NodePrinter inputValueDefinition() { String nameTypeSep = compactMode ? ":" : ": "; String defaultValueEquals = compactMode ? "=" : "= "; return (out, node) -> { - Value defaultValue = node.getDefaultValue(); - out.append(description(node)); - out.append(spaced( - node.getName() + nameTypeSep + type(node.getType()), - wrap(defaultValueEquals, defaultValue, ""), - directives(node.getDirectives()) - )); + Value defaultValue = node.getDefaultValue(); + description(out, node); + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getType()); + if (defaultValue != null) { + out.append(' '); + out.append(defaultValueEquals); + node(out, defaultValue); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } private NodePrinter interfaceTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "interface", - node.getName(), - wrap("implements ", join(node.getImplements(), " & "), ""), - directives(node.getDirectives()), - block(node.getFieldDefinitions()) - )); + description(out, node); + out.append("interface "); + out.append(node.getName()); + if (!isEmpty(node.getImplements())) { + out.append(" implements "); + join(out, node.getImplements(), " & "); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getFieldDefinitions())) { + out.append(' '); + block(out, node.getFieldDefinitions()); + } }; } private NodePrinter objectField() { String nameValueSep = compactMode ? ":" : " : "; - return (out, node) -> out.append(node.getName()).append(nameValueSep).append(value(node.getValue())); + return (out, node) -> { + out.append(node.getName()); + out.append(nameValueSep); + value(out, node.getValue()); + }; } private NodePrinter operationDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { - String op = node.getOperation().toString().toLowerCase(); String name = node.getName(); - String varDefinitions = wrap("(", join(nvl(node.getVariableDefinitions()), argSep), ")"); - String directives = directives(node.getDirectives()); - String selectionSet = node(node.getSelectionSet()); - // Anonymous queries with no directives or variable definitions can use // the query short form. - if (isEmpty(name) && isEmpty(directives) && isEmpty(varDefinitions) && op.equals("query")) { - out.append(selectionSet); + if (isEmpty(name) && isEmpty(node.getDirectives()) && isEmpty(node.getVariableDefinitions()) + && node.getOperation() == OperationDefinition.Operation.QUERY) { + node(out, node.getSelectionSet()); } else { - if (compactMode) { - out.append(spaced(op, smooshed(name, varDefinitions), directives)); - out.append(selectionSet); - } else { - out.append(spaced(op, smooshed(name, varDefinitions), directives, selectionSet)); + out.append(node.getOperation().toString().toLowerCase()); + if (!isEmpty(name)) { + out.append(' '); + out.append(name); + } + if (!isEmpty(node.getVariableDefinitions())) { + if (isEmpty(name)) { + out.append(' '); + } + out.append('('); + join(out, node.getVariableDefinitions(), argSep); + out.append(')'); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!compactMode) { + out.append(' '); } + node(out, node.getSelectionSet()); } }; } private NodePrinter operationTypeDefinition() { String nameTypeSep = compactMode ? ":" : ": "; - return (out, node) -> out.append(node.getName()).append(nameTypeSep).append(type(node.getTypeName())); + return (out, node) -> { + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getTypeName()); + }; } private NodePrinter objectTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "type", - node.getName(), - wrap("implements ", join(node.getImplements(), " & "), ""), - directives(node.getDirectives()), - block(node.getFieldDefinitions()) - )); + description(out, node); + out.append("type "); + out.append(node.getName()); + if (!isEmpty(node.getImplements())) { + out.append(" implements "); + join(out, node.getImplements(), " & "); + } + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + if (!isEmpty(node.getFieldDefinitions())) { + out.append(' '); + block(out, node.getFieldDefinitions()); + } }; } private NodePrinter selectionSet() { - return (out, node) -> { - String block = block(node.getSelections()); - out.append(block); - }; + return (out, node) -> block(out, node.getSelections()); } private NodePrinter scalarTypeDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "scalar", - node.getName(), - directives(node.getDirectives()))); + description(out, node); + out.append("scalar "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } }; } private NodePrinter schemaDefinition() { return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "schema", - directives(node.getDirectives()), - block(node.getOperationTypeDefinitions()) - )); + description(out, node); + out.append("schema "); + if (!isEmpty(node.getDirectives())) { + directives(out, node.getDirectives()); + out.append(' '); + } + block(out, node.getOperationTypeDefinitions()); }; } - private NodePrinter type() { - return (out, node) -> out.append(type(node)); + private NodePrinter> type() { + return this::type; } - private String type(Type type) { + private void type(StringBuilder out, Type type) { if (type instanceof NonNullType) { NonNullType inner = (NonNullType) type; - return wrap("", type(inner.getType()), "!"); + type(out, inner.getType()); + out.append('!'); } else if (type instanceof ListType) { ListType inner = (ListType) type; - return wrap("[", type(inner.getType()), "]"); + out.append('['); + type(out, inner.getType()); + out.append(']'); } else { TypeName inner = (TypeName) type; - return inner.getName(); + out.append(inner.getName()); } } private NodePrinter objectTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, ObjectTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, ObjectTypeDefinition.class); + }; } private NodePrinter enumTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, EnumTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, EnumTypeDefinition.class); + }; } private NodePrinter interfaceTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, InterfaceTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, InterfaceTypeDefinition.class); + }; } private NodePrinter unionTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, UnionTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, UnionTypeDefinition.class); + }; } private NodePrinter scalarTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, ScalarTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, ScalarTypeDefinition.class); + }; } private NodePrinter inputObjectTypeExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, InputObjectTypeDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, InputObjectTypeDefinition.class); + }; } private NodePrinter schemaExtensionDefinition() { - return (out, node) -> out.append("extend ").append(node(node, SchemaDefinition.class)); + return (out, node) -> { + out.append("extend "); + node(out, node, SchemaDefinition.class); + }; } private NodePrinter unionTypeDefinition() { String barSep = compactMode ? "|" : " | "; String equals = compactMode ? "=" : "= "; return (out, node) -> { - out.append(description(node)); - out.append(spaced( - "union", - node.getName(), - directives(node.getDirectives()), - equals + join(node.getMemberTypes(), barSep) - )); + description(out, node); + out.append("union "); + out.append(node.getName()); + if (!isEmpty(node.getDirectives())) { + out.append(' '); + directives(out, node.getDirectives()); + } + out.append(' '); + out.append(equals); + join(out, node.getMemberTypes(), barSep); }; } private NodePrinter variableDefinition() { String nameTypeSep = compactMode ? ":" : ": "; String defaultValueEquals = compactMode ? "=" : " = "; - return (out, node) -> out.append('$') - .append(node.getName()) - .append(nameTypeSep) - .append(type(node.getType())) - .append(wrap(defaultValueEquals, node.getDefaultValue(), "")) - .append(directives(node.getDirectives())); + return (out, node) -> { + out.append('$'); + out.append(node.getName()); + out.append(nameTypeSep); + type(out, node.getType()); + if (node.getDefaultValue() != null) { + out.append(defaultValueEquals); + node(out, node.getDefaultValue()); + } + directives(out, node.getDirectives()); + }; } private NodePrinter variableReference() { return (out, node) -> out.append('$').append(node.getName()); } - private String node(Node node) { + private String node(Node node) { return node(node, null); } - private String node(Node node, Class startClass) { + private void node(StringBuilder out, Node node) { + node(out, node, null); + } + + private String node(Node node, Class startClass) { + StringBuilder builder = new StringBuilder(); + node(builder, node, startClass); + return builder.toString(); + } + + private void node(StringBuilder out, Node node, Class startClass) { if (startClass != null) { assertTrue(startClass.isInstance(node), () -> "The starting class must be in the inherit tree"); } - StringBuilder builder = new StringBuilder(); - NodePrinter printer = _findPrinter(node, startClass); - printer.print(builder, node); - return builder.toString(); + NodePrinter> printer = _findPrinter(node, startClass); + printer.print(out, node); } @SuppressWarnings("unchecked") @@ -473,7 +574,7 @@ NodePrinter _findPrinter(Node node, Class startClass) { return (out, type) -> { }; } - Class clazz = startClass != null ? startClass : node.getClass(); + Class clazz = startClass != null ? startClass : node.getClass(); while (clazz != Object.class) { NodePrinter nodePrinter = printers.get(clazz); if (nodePrinter != null) { @@ -485,67 +586,86 @@ NodePrinter _findPrinter(Node node, Class startClass) { return assertShouldNeverHappen("We have a missing printer implementation for %s : report a bug!", clazz); } - private boolean isEmpty(List list) { + private static boolean isEmpty(List list) { return list == null || list.isEmpty(); } - private boolean isEmpty(String s) { + private static boolean isEmpty(String s) { return s == null || s.isBlank(); } - private List nvl(List list) { + private static List nvl(List list) { return list != null ? list : ImmutableKit.emptyList(); } - private NodePrinter value() { - return (out, node) -> out.append(value(node)); + private NodePrinter> value() { + return this::value; } - private String value(Value value) { + private void value(StringBuilder out, Value value) { String argSep = compactMode ? "," : ", "; if (value instanceof IntValue) { - return valueOf(((IntValue) value).getValue()); + out.append(((IntValue) value).getValue()); } else if (value instanceof FloatValue) { - return valueOf(((FloatValue) value).getValue()); + out.append(((FloatValue) value).getValue()); } else if (value instanceof StringValue) { - return "\"" + escapeJsonString(((StringValue) value).getValue()) + "\""; + out.append('"'); + escapeJsonStringTo(out, ((StringValue) value).getValue()); + out.append('"'); } else if (value instanceof EnumValue) { - return valueOf(((EnumValue) value).getName()); + out.append(((EnumValue) value).getName()); } else if (value instanceof BooleanValue) { - return valueOf(((BooleanValue) value).isValue()); + out.append(((BooleanValue) value).isValue()); } else if (value instanceof NullValue) { - return "null"; + out.append("null"); } else if (value instanceof ArrayValue) { - return "[" + join(((ArrayValue) value).getValues(), argSep) + "]"; + out.append('['); + join(out, ((ArrayValue) value).getValues(), argSep); + out.append(']'); } else if (value instanceof ObjectValue) { - return "{" + join(((ObjectValue) value).getObjectFields(), argSep) + "}"; + out.append('{'); + join(out, ((ObjectValue) value).getObjectFields(), argSep); + out.append('}'); } else if (value instanceof VariableReference) { - return "$" + ((VariableReference) value).getName(); + out.append('$'); + out.append(((VariableReference) value).getName()); } - return ""; } - private String description(Node node) { + private void description(StringBuilder out, Node node) { Description description = ((AbstractDescribedNode) node).getDescription(); if (description == null || description.getContent() == null || compactMode) { - return ""; + return; } - String s; - boolean startNewLine = description.getContent().length() > 0 && description.getContent().charAt(0) == '\n'; +; if (description.isMultiLine()) { - s = "\"\"\"" + (startNewLine ? "" : "\n") + description.getContent() + "\n\"\"\"\n"; + out.append("\"\"\""); + if (description.getContent().isEmpty() || description.getContent().charAt(0) != '\n') { + out.append('\n'); + } + out.append(description.getContent()); + out.append("\n\"\"\"\n"); } else { - s = "\"" + escapeJsonString(description.getContent()) + "\"\n"; + out.append('"'); + escapeJsonStringTo(out, description.getContent()); + out.append("\"\n"); } - return s; } - private String directives(List directives) { - return join(nvl(directives), compactMode ? "" : " "); + private void directives(StringBuilder out, List directives) { + join(out, nvl(directives), compactMode ? "" : " "); } - private String join(List nodes, String delim) { - return join(nodes, delim, "", ""); + private > void join(StringBuilder out, List nodes, String delim) { + if (isEmpty(nodes)) { + return; + } + Iterator iterator = nodes.iterator(); + node(out, iterator.next()); + while (iterator.hasNext()) { + out.append(delim); + node(out, iterator.next()); + } } /* @@ -553,58 +673,22 @@ private String join(List nodes, String delim) { * This encodes that knowledge of those that don't require delimiters */ @SuppressWarnings("SameParameterValue") - private String joinTight(List nodes, String delim, String prefix, String suffix) { - StringBuilder joined = new StringBuilder(); - joined.append(prefix); + private > void joinTight(StringBuilder output, List nodes, String delim, String prefix, String suffix) { + output.append(prefix); - String lastNodeText = ""; boolean first = true; for (T node : nodes) { if (first) { first = false; } else { - boolean canButtTogether = lastNodeText.endsWith("}"); - if (!canButtTogether) { - joined.append(delim); + if (output.charAt(output.length() - 1) != '}') { + output.append(delim); } } - String nodeText = this.node(node); - lastNodeText = nodeText; - joined.append(nodeText); - } - - joined.append(suffix); - return joined.toString(); - } - - private String join(List nodes, String delim, String prefix, String suffix) { - StringJoiner joiner = new StringJoiner(delim, prefix, suffix); - - for (T node : nodes) { - joiner.add(node(node)); - } - - return joiner.toString(); - } - - private String spaced(String... args) { - return join(" ", args); - } - - private String smooshed(String... args) { - return join("", args); - } - - private String join(String delim, String... args) { - StringJoiner joiner = new StringJoiner(delim); - - for (final String arg : args) { - if (!isEmpty(arg)) { - joiner.add(arg); - } + node(output, node); } - return joiner.toString(); + output.append(suffix); } String wrap(String start, String maybeString, String end) { @@ -617,27 +701,31 @@ String wrap(String start, String maybeString, String end) { return start + maybeString + (!isEmpty(end) ? end : ""); } - private String block(List nodes) { + private > void block(StringBuilder out, List nodes) { if (isEmpty(nodes)) { - return ""; + return; } if (compactMode) { - String joinedNodes = joinTight(nodes, " ", "", ""); - return "{" + joinedNodes + "}"; + out.append('{'); + joinTight(out, nodes, " ", "", ""); + out.append('}'); + } else { + int offset = out.length(); + out.append("{\n"); + join(out, nodes, "\n"); + indent(out, offset); + out.append("\n}"); } - return indent(new StringBuilder().append("{\n").append(join(nodes, "\n"))) - + "\n}"; } - private StringBuilder indent(StringBuilder maybeString) { - for (int i = 0; i < maybeString.length(); i++) { + private static void indent(StringBuilder maybeString, int offset) { + for (int i = offset; i < maybeString.length(); i++) { char c = maybeString.charAt(i); if (c == '\n') { maybeString.replace(i, i + 1, "\n "); i += 3; } } - return maybeString; } @SuppressWarnings("SameParameterValue") diff --git a/src/main/java/graphql/util/EscapeUtil.java b/src/main/java/graphql/util/EscapeUtil.java index d7a6cb5eeb..521ac35846 100644 --- a/src/main/java/graphql/util/EscapeUtil.java +++ b/src/main/java/graphql/util/EscapeUtil.java @@ -16,37 +16,41 @@ private EscapeUtil() { * @return the encoded string */ public static String escapeJsonString(String stringValue) { + StringBuilder sb = new StringBuilder(stringValue.length()); + escapeJsonStringTo(sb, stringValue); + return sb.toString(); + } + + public static void escapeJsonStringTo(StringBuilder output, String stringValue) { int len = stringValue.length(); - StringBuilder sb = new StringBuilder(len); for (int i = 0; i < len; i++) { char ch = stringValue.charAt(i); switch (ch) { case '"': - sb.append("\\\""); + output.append("\\\""); break; case '\\': - sb.append("\\\\"); + output.append("\\\\"); break; case '\b': - sb.append("\\b"); + output.append("\\b"); break; case '\f': - sb.append("\\f"); + output.append("\\f"); break; case '\n': - sb.append("\\n"); + output.append("\\n"); break; case '\r': - sb.append("\\r"); + output.append("\\r"); break; case '\t': - sb.append("\\t"); + output.append("\\t"); break; default: - sb.append(ch); + output.append(ch); } } - return sb.toString(); } } From 3a3f785a9b25063ff7de84523eaa69de7fbce141 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Oct 2024 16:35:28 +0000 Subject: [PATCH 006/345] Bump google-github-actions/auth from 2.1.5 to 2.1.6 Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.5 to 2.1.6. - [Release notes](https://github.com/google-github-actions/auth/releases) - [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md) - [Commits](https://github.com/google-github-actions/auth/compare/v2.1.5...v2.1.6) --- updated-dependencies: - dependency-name: google-github-actions/auth dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/invoke_test_runner.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/invoke_test_runner.yml b/.github/workflows/invoke_test_runner.yml index 09f5cdb243..551684cbbf 100644 --- a/.github/workflows/invoke_test_runner.yml +++ b/.github/workflows/invoke_test_runner.yml @@ -50,7 +50,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: google-github-actions/auth@v2.1.5 + uses: google-github-actions/auth@v2.1.6 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} From 7e576b1eaad6db2804bdb7f71527a44067ae521c Mon Sep 17 00:00:00 2001 From: Alexandre Carlton Date: Fri, 11 Oct 2024 22:22:14 +1100 Subject: [PATCH 007/345] Implement equals/hashCode for GraphqlErrorImpl We have a great many tests that verify that the errors emitted from a `DataFetcher` fit a certain shape. However, verifying equality of these errors is fiddly and error-prone, as we must directly check each individual attribute on every error - this is painful especially when we are trying to perform assertions on a `List` of `GraphQLError`s. To this end, we add `#equals` / `#hashCode` methods on `GraphqlErrorImpl`. However, it is important to note that `equals` will return `true` if all the attributes match, even if the implementing class is _not_ a `GraphqlErrorImpl`. This is done so that different implementations may be swapped in and out with causing test failures. --- .../java/graphql/GraphqlErrorBuilder.java | 30 ++++++++++++ .../graphql/GraphqlErrorBuilderTest.groovy | 48 ++++++++++++++++++- 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/GraphqlErrorBuilder.java b/src/main/java/graphql/GraphqlErrorBuilder.java index 4cef5beabe..711b71879a 100644 --- a/src/main/java/graphql/GraphqlErrorBuilder.java +++ b/src/main/java/graphql/GraphqlErrorBuilder.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import static graphql.Assert.assertNotNull; @@ -132,6 +133,13 @@ public GraphQLError build() { return new GraphqlErrorImpl(message, locations, errorType, path, extensions); } + /** + * A simple implementation of a {@link GraphQLError}. + *

+ * This provides {@link #hashCode()} and {@link #equals(Object)} methods that afford comparison with other + * {@link GraphQLError} implementations. However, the values in the {@link #getExtensions()} {@link Map} must + * in turn implement {@code hashCode()} and {@link #equals(Object)} for this to function correctly. + */ private static class GraphqlErrorImpl implements GraphQLError { private final String message; private final List locations; @@ -176,6 +184,28 @@ public Map getExtensions() { public String toString() { return message; } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof GraphQLError)) return false; + GraphQLError that = (GraphQLError) o; + return Objects.equals(getMessage(), that.getMessage()) + && Objects.equals(getLocations(), that.getLocations()) + && Objects.equals(getErrorType(), that.getErrorType()) + && Objects.equals(getPath(), that.getPath()) + && Objects.equals(getExtensions(), that.getExtensions()); + } + + @Override + public int hashCode() { + return Objects.hash( + getMessage(), + getLocations(), + getErrorType(), + getPath(), + getExtensions()); + } } /** diff --git a/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy b/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy index 944e1fef35..0c31ccbe0d 100644 --- a/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy +++ b/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy @@ -152,4 +152,50 @@ class GraphqlErrorBuilderTest extends Specification { error.path == null } -} \ No newline at end of file + + def "implements equals correctly"() { + when: + def error1 = GraphQLError.newError().message("msg") + .locations(null) + .extensions([x : "y"]) + .path(null) + .build() + def error2 = GraphQLError.newError().message("msg") + .locations(null) + .extensions([x : "y"]) + .path(null) + .build() + def error3 = GraphQLError.newError().message("msg3") + .locations(null) + .extensions([x : "y"]) + .path(null) + .build() + then: + error1 == error2 + error1 != error3 + error2 != error3 + } + + def "implements hashCode correctly"() { + when: + def error1 = GraphQLError.newError().message("msg") + .locations(null) + .extensions([x : "y"]) + .path(null) + .build() + def error2 = GraphQLError.newError().message("msg") + .locations(null) + .extensions([x : "y"]) + .path(null) + .build() + def error3 = GraphQLError.newError().message("msg3") + .locations(null) + .extensions([x : "y"]) + .path(null) + .build() + def errors = [error1, error2, error3] as Set + then: + errors == [error1, error3] as Set + errors == [error2, error3] as Set + } +} From 2ed23598f55791d1485b3c6b66fafec96689b9c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:25:11 +0000 Subject: [PATCH 008/345] Bump org.jetbrains:annotations from 24.1.0 to 26.0.1 Bumps [org.jetbrains:annotations](https://github.com/JetBrains/java-annotations) from 24.1.0 to 26.0.1. - [Release notes](https://github.com/JetBrains/java-annotations/releases) - [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md) - [Commits](https://github.com/JetBrains/java-annotations/compare/24.1.0...26.0.1) --- updated-dependencies: - dependency-name: org.jetbrains:annotations dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 07509bb943..14c7a3f6f3 100644 --- a/build.gradle +++ b/build.gradle @@ -99,7 +99,7 @@ jar { } dependencies { - compileOnly 'org.jetbrains:annotations:24.1.0' + compileOnly 'org.jetbrains:annotations:26.0.1' implementation 'org.antlr:antlr4-runtime:' + antlrVersion api 'com.graphql-java:java-dataloader:3.3.0' api 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion From 09d367cb5f660f96daf18bda78e00ba581119b8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:58:35 +0000 Subject: [PATCH 009/345] Bump net.bytebuddy:byte-buddy from 1.15.1 to 1.15.5 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.15.1 to 1.15.5. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.1...byte-buddy-1.15.5) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index 7d220cfcdd..cd17cd63fe 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.15.1") + implementation("net.bytebuddy:byte-buddy:1.15.5") // graphql-java itself implementation(rootProject) } From 0ea1c6b6230bef4e3a4e0186bafb26bbf331d0bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:58:39 +0000 Subject: [PATCH 010/345] Bump org.junit.jupiter:junit-jupiter from 5.11.0 to 5.11.3 Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.11.0 to 5.11.3. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.0...r5.11.3) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 3a5911b824..9143512dd9 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -6,7 +6,7 @@ dependencies { implementation(rootProject) implementation("net.bytebuddy:byte-buddy-agent:1.15.1") - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0' + testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation("org.assertj:assertj-core:3.26.3") From 43a7c3e394af133e0cba4b2a66cb69fd8a895cad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:58:42 +0000 Subject: [PATCH 011/345] Bump io.projectreactor:reactor-core from 3.6.9 to 3.6.11 Bumps [io.projectreactor:reactor-core](https://github.com/reactor/reactor-core) from 3.6.9 to 3.6.11. - [Release notes](https://github.com/reactor/reactor-core/releases) - [Commits](https://github.com/reactor/reactor-core/compare/v3.6.9...v3.6.11) --- updated-dependencies: - dependency-name: io.projectreactor:reactor-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 07509bb943..dca0bd65ed 100644 --- a/build.gradle +++ b/build.gradle @@ -117,7 +117,7 @@ dependencies { testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" - testImplementation "io.projectreactor:reactor-core:3.6.9" + testImplementation "io.projectreactor:reactor-core:3.6.11" testImplementation 'org.testng:testng:7.10.2' // use for reactive streams test inheritance From e5c4b031724b73a3f7fcdaa35e78f37220bca6f2 Mon Sep 17 00:00:00 2001 From: bbaker Date: Sun, 27 Oct 2024 17:30:17 +1100 Subject: [PATCH 012/345] Removed empty file --- .../adapters/ExecuteObjectInstrumentationContextAdapter.java | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/java/graphql/execution/instrumentation/adapters/ExecuteObjectInstrumentationContextAdapter.java diff --git a/src/main/java/graphql/execution/instrumentation/adapters/ExecuteObjectInstrumentationContextAdapter.java b/src/main/java/graphql/execution/instrumentation/adapters/ExecuteObjectInstrumentationContextAdapter.java deleted file mode 100644 index e69de29bb2..0000000000 From 34747352ed899894b1ab759885f92b72831c48c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:09:49 +0000 Subject: [PATCH 013/345] Bump com.fasterxml.jackson.core:jackson-databind from 2.17.2 to 2.18.0 Bumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.17.2 to 2.18.0. - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index eb70069011..d980d76095 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ dependencies { testImplementation 'org.codehaus.groovy:groovy-json:3.0.22' testImplementation 'com.google.code.gson:gson:2.11.0' testImplementation 'org.eclipse.jetty:jetty-server:11.0.22' - testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.17.2' + testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.0' testImplementation 'org.awaitility:awaitility-groovy:4.2.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' From 5ea8517a19f82ca8831ab630e9f3f8e728aa2457 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:09:53 +0000 Subject: [PATCH 014/345] Bump net.bytebuddy:byte-buddy-agent from 1.15.1 to 1.15.7 Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.15.1 to 1.15.7. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.1...byte-buddy-1.15.7) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 9143512dd9..fb4b383537 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.15.1") + implementation("net.bytebuddy:byte-buddy-agent:1.15.7") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 90b2de4c1d904ba33c4e63eb6da8e3b11ed2fc91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Oct 2024 16:09:58 +0000 Subject: [PATCH 015/345] Bump net.bytebuddy:byte-buddy from 1.15.5 to 1.15.7 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.15.5 to 1.15.7. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.5...byte-buddy-1.15.7) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index cd17cd63fe..03e9b6fefe 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.15.5") + implementation("net.bytebuddy:byte-buddy:1.15.7") // graphql-java itself implementation(rootProject) } From e84845e423c786f44f08e3fecbe1bc7dd8af7c24 Mon Sep 17 00:00:00 2001 From: Franklin Wang Date: Mon, 4 Nov 2024 11:16:40 +1100 Subject: [PATCH 016/345] Remove SDLExtensionDefinition from InterfaceTypeDefinition --- src/main/java/graphql/language/InterfaceTypeDefinition.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/graphql/language/InterfaceTypeDefinition.java b/src/main/java/graphql/language/InterfaceTypeDefinition.java index 51b6ef61e8..c86c0fa486 100644 --- a/src/main/java/graphql/language/InterfaceTypeDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeDefinition.java @@ -21,7 +21,7 @@ import static graphql.language.NodeChildrenContainer.newNodeChildrenContainer; @PublicApi -public class InterfaceTypeDefinition extends AbstractDescribedNode implements ImplementingTypeDefinition, DirectivesContainer, NamedNode, SDLExtensionDefinition { +public class InterfaceTypeDefinition extends AbstractDescribedNode implements ImplementingTypeDefinition, DirectivesContainer, NamedNode { private final String name; private final ImmutableList implementz; From f5baa07d0b66ba9a3182b92c398f2e77e78d72b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 16:12:57 +0000 Subject: [PATCH 017/345] Bump google-github-actions/auth from 2.1.6 to 2.1.7 Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.6 to 2.1.7. - [Release notes](https://github.com/google-github-actions/auth/releases) - [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md) - [Commits](https://github.com/google-github-actions/auth/compare/v2.1.6...v2.1.7) --- updated-dependencies: - dependency-name: google-github-actions/auth dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/invoke_test_runner.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/invoke_test_runner.yml b/.github/workflows/invoke_test_runner.yml index 551684cbbf..0e157e3636 100644 --- a/.github/workflows/invoke_test_runner.yml +++ b/.github/workflows/invoke_test_runner.yml @@ -50,7 +50,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: google-github-actions/auth@v2.1.6 + uses: google-github-actions/auth@v2.1.7 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} From 13f854a7de23bfce399bec07c81ed8db8c74cffc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 16:24:50 +0000 Subject: [PATCH 018/345] Bump net.bytebuddy:byte-buddy-agent from 1.15.7 to 1.15.10 Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.15.7 to 1.15.10. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.7...byte-buddy-1.15.10) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index fb4b383537..9c36612d9c 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.15.7") + implementation("net.bytebuddy:byte-buddy-agent:1.15.10") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 7a6f42faa6b59fb1f944f872d30e6c7d13f8adaf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 16:24:52 +0000 Subject: [PATCH 019/345] Bump com.fasterxml.jackson.core:jackson-databind from 2.18.0 to 2.18.1 Bumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.18.0 to 2.18.1. - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d980d76095..beb998c535 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ dependencies { testImplementation 'org.codehaus.groovy:groovy-json:3.0.22' testImplementation 'com.google.code.gson:gson:2.11.0' testImplementation 'org.eclipse.jetty:jetty-server:11.0.22' - testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.0' + testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.1' testImplementation 'org.awaitility:awaitility-groovy:4.2.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' From 8d10e928d46a68ead447a48db10a579a175c7287 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 16:24:55 +0000 Subject: [PATCH 020/345] Bump net.bytebuddy:byte-buddy from 1.15.7 to 1.15.10 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.15.7 to 1.15.10. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.7...byte-buddy-1.15.10) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index 03e9b6fefe..b1ad9c55b0 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.15.7") + implementation("net.bytebuddy:byte-buddy:1.15.10") // graphql-java itself implementation(rootProject) } From 812c0bb2487abdacda27fa9bec34139e48e0a3fd Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:54:45 +1100 Subject: [PATCH 021/345] Update src/test/groovy/graphql/DefaultValuesTest.groovy --- src/test/groovy/graphql/DefaultValuesTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/DefaultValuesTest.groovy b/src/test/groovy/graphql/DefaultValuesTest.groovy index ab608d0283..7be8579664 100644 --- a/src/test/groovy/graphql/DefaultValuesTest.groovy +++ b/src/test/groovy/graphql/DefaultValuesTest.groovy @@ -26,7 +26,7 @@ class DefaultValuesTest extends Specification { // // The variable is present in the variables map and its explicitly null // - // https://spec.graphql.org/October2021/#sec-Coercing-Variable-Values + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values // when: def ei = newExecutionInput(''' From 6da973009685ec34ed54ce83314a686ca501827e Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:54:50 +1100 Subject: [PATCH 022/345] Update src/test/groovy/graphql/DefaultValuesTest.groovy --- src/test/groovy/graphql/DefaultValuesTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/DefaultValuesTest.groovy b/src/test/groovy/graphql/DefaultValuesTest.groovy index 7be8579664..c0b3314cea 100644 --- a/src/test/groovy/graphql/DefaultValuesTest.groovy +++ b/src/test/groovy/graphql/DefaultValuesTest.groovy @@ -43,7 +43,7 @@ class DefaultValuesTest extends Specification { // // The variable is present in the variables map and its explicitly a value // - // https://spec.graphql.org/October2021/#sec-Coercing-Variable-Values + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values // when: ei = newExecutionInput(''' From beef01288b0587ae28694dd50d7fb8bfacc27bb4 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:54:58 +1100 Subject: [PATCH 023/345] Update src/test/groovy/graphql/DefaultValuesTest.groovy --- src/test/groovy/graphql/DefaultValuesTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/DefaultValuesTest.groovy b/src/test/groovy/graphql/DefaultValuesTest.groovy index c0b3314cea..ccb26fe979 100644 --- a/src/test/groovy/graphql/DefaultValuesTest.groovy +++ b/src/test/groovy/graphql/DefaultValuesTest.groovy @@ -61,7 +61,7 @@ class DefaultValuesTest extends Specification { // The variable is NOT present in the variables map it should use a default // value from the variable declaration // - // https://spec.graphql.org/October2021/#sec-Coercing-Variable-Values + // https://spec.graphql.org/draft/#sec-Coercing-Variable-Values // when: ei = newExecutionInput(''' From 1229e743182cb447aa542ae71e5747c333d1d561 Mon Sep 17 00:00:00 2001 From: Donna Zhou Date: Thu, 7 Nov 2024 13:19:35 +1100 Subject: [PATCH 024/345] Shift SDL extension interface implementation --- .../java/graphql/language/InterfaceTypeExtensionDefinition.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java index a693c52866..2de917065b 100644 --- a/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java +++ b/src/main/java/graphql/language/InterfaceTypeExtensionDefinition.java @@ -14,7 +14,7 @@ import static graphql.collect.ImmutableKit.emptyList; @PublicApi -public class InterfaceTypeExtensionDefinition extends InterfaceTypeDefinition { +public class InterfaceTypeExtensionDefinition extends InterfaceTypeDefinition implements SDLExtensionDefinition { @Internal protected InterfaceTypeExtensionDefinition(String name, From f6d6f006571fe8b7bfaf8b779fb33c5cae805295 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Nov 2024 16:16:01 +0000 Subject: [PATCH 025/345] Bump org.codehaus.groovy:groovy from 3.0.22 to 3.0.23 Bumps [org.codehaus.groovy:groovy](https://github.com/apache/groovy) from 3.0.22 to 3.0.23. - [Commits](https://github.com/apache/groovy/commits) --- updated-dependencies: - dependency-name: org.codehaus.groovy:groovy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 50de8561ce..4377a9be21 100644 --- a/build.gradle +++ b/build.gradle @@ -107,8 +107,8 @@ dependencies { implementation 'com.google.guava:guava:' + guavaVersion testImplementation group: 'junit', name: 'junit', version: '4.13.2' testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0' - testImplementation 'org.codehaus.groovy:groovy:3.0.22' - testImplementation 'org.codehaus.groovy:groovy-json:3.0.22' + testImplementation 'org.codehaus.groovy:groovy:3.0.23' + testImplementation 'org.codehaus.groovy:groovy-json:3.0.23' testImplementation 'com.google.code.gson:gson:2.11.0' testImplementation 'org.eclipse.jetty:jetty-server:11.0.24' testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.1' From 702ae2eea5e64aa3f556771bf90935f188f01739 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 13 Nov 2024 21:44:32 +1000 Subject: [PATCH 026/345] initial tests for regular performance testing --- .../performance/ComplexQueryPerformance.java | 272 ++++++++++++++++++ ...OverlappingFieldValidationPerformance.java | 86 ++++++ .../performance/PerformanceTestingUtils.java | 84 ++++++ 3 files changed, 442 insertions(+) create mode 100644 src/test/java/performance/ComplexQueryPerformance.java create mode 100644 src/test/java/performance/OverlappingFieldValidationPerformance.java create mode 100644 src/test/java/performance/PerformanceTestingUtils.java diff --git a/src/test/java/performance/ComplexQueryPerformance.java b/src/test/java/performance/ComplexQueryPerformance.java new file mode 100644 index 0000000000..e8b2c3da0e --- /dev/null +++ b/src/test/java/performance/ComplexQueryPerformance.java @@ -0,0 +1,272 @@ +package performance; + +import benchmark.BenchmarkUtils; +import com.google.common.collect.ImmutableList; +import graphql.ExecutionInput; +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.schema.DataFetcher; +import graphql.schema.DataFetchingEnvironment; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.RuntimeWiring; +import graphql.schema.idl.SchemaGenerator; +import graphql.schema.idl.SchemaParser; +import graphql.schema.idl.TypeDefinitionRegistry; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.profile.GCProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Supplier; + +import static graphql.schema.idl.TypeRuntimeWiring.newTypeWiring; + +/** + * This benchmark is an attempt to have a more complex query that involves async and sync work together + * along with multiple threads happening. + *

+ * It can also be run in a forever mode say if you want to connect a profiler to it say + */ +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 2) +@Fork(2) +public class ComplexQueryPerformance { + + @Param({"5", "10", "20"}) + int howManyItems = 5; + int howLongToSleep = 5; + int howManyQueries = 10; + int howManyQueryThreads = 10; + int howManyFetcherThreads = 10; + + ExecutorService queryExecutorService; + ExecutorService fetchersExecutorService; + GraphQL graphQL; + volatile boolean shutDown; + + @Setup(Level.Trial) + public void setUp() { + shutDown = false; + queryExecutorService = Executors.newFixedThreadPool(howManyQueryThreads); + fetchersExecutorService = Executors.newFixedThreadPool(howManyFetcherThreads); + graphQL = buildGraphQL(); + } + + @TearDown(Level.Trial) + public void tearDown() { + shutDown = true; + queryExecutorService.shutdownNow(); + fetchersExecutorService.shutdownNow(); + } + + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public Object benchMarkSimpleQueriesThroughput() { + return runManyQueriesToCompletion(); + } + + + public static void main(String[] args) throws Exception { + // just to make sure it's all valid before testing + runAtStartup(); + + Options opt = new OptionsBuilder() + .include("benchmark.ComplexQueryBenchmark") + .addProfiler(GCProfiler.class) + .build(); + + new Runner(opt).run(); + } + + @SuppressWarnings({"ConstantValue", "LoopConditionNotUpdatedInsideLoop"}) + private static void runAtStartup() { + + ComplexQueryPerformance complexQueryBenchmark = new ComplexQueryPerformance(); + complexQueryBenchmark.howManyQueries = 5; + complexQueryBenchmark.howManyItems = 10; + + BenchmarkUtils.runInToolingForSomeTimeThenExit( + complexQueryBenchmark::setUp, + complexQueryBenchmark::runManyQueriesToCompletion, + complexQueryBenchmark::tearDown + + ); + } + + + @SuppressWarnings("UnnecessaryLocalVariable") + private Void runManyQueriesToCompletion() { + CompletableFuture[] cfs = new CompletableFuture[howManyQueries]; + for (int i = 0; i < howManyQueries; i++) { + cfs[i] = CompletableFuture.supplyAsync(() -> executeQuery(howManyItems, howLongToSleep), queryExecutorService).thenCompose(cf -> cf); + } + Void result = CompletableFuture.allOf(cfs).join(); + return result; + } + + public CompletableFuture executeQuery(int howMany, int howLong) { + String fields = "id name f1 f2 f3 f4 f5 f6 f7 f8 f9 f10"; + String query = "query q {" + + String.format("shops(howMany : %d) { %s departments( howMany : %d) { %s products(howMany : %d) { %s }}}\n" + , howMany, fields, 10, fields, 5, fields) + + String.format("expensiveShops(howMany : %d howLong : %d) { %s expensiveDepartments( howMany : %d howLong : %d) { %s expensiveProducts(howMany : %d howLong : %d) { %s }}}\n" + , howMany, howLong, fields, 10, howLong, fields, 5, howLong, fields) + + "}"; + return graphQL.executeAsync(ExecutionInput.newExecutionInput(query).build()); + } + + private GraphQL buildGraphQL() { + TypeDefinitionRegistry definitionRegistry = new SchemaParser().parse(PerformanceTestingUtils.loadResource("storesanddepartments.graphqls")); + + DataFetcher shopsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveShopsDF = env -> supplyAsync(() -> sleepAndReturnThings(env)); + DataFetcher departmentsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveDepartmentsDF = env -> supplyAsyncListItems(env, () -> sleepAndReturnThings(env)); + DataFetcher productsDF = env -> mkHowManyThings(env.getArgument("howMany")); + DataFetcher expensiveProductsDF = env -> supplyAsyncListItems(env, () -> sleepAndReturnThings(env)); + + RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring() + .type(newTypeWiring("Query") + .dataFetcher("shops", shopsDF) + .dataFetcher("expensiveShops", expensiveShopsDF)) + .type(newTypeWiring("Shop") + .dataFetcher("departments", departmentsDF) + .dataFetcher("expensiveDepartments", expensiveDepartmentsDF)) + .type(newTypeWiring("Department") + .dataFetcher("products", productsDF) + .dataFetcher("expensiveProducts", expensiveProductsDF)) + .build(); + + GraphQLSchema graphQLSchema = new SchemaGenerator().makeExecutableSchema(definitionRegistry, runtimeWiring); + + return GraphQL.newGraphQL(graphQLSchema).build(); + } + + private CompletableFuture supplyAsyncListItems(DataFetchingEnvironment environment, Supplier codeToRun) { + return supplyAsync(codeToRun); + } + + private CompletableFuture supplyAsync(Supplier codeToRun) { + if (!shutDown) { + //logEvery(100, "async fetcher"); + return CompletableFuture.supplyAsync(codeToRun, fetchersExecutorService); + } else { + // if we have shutdown - get on with it, so we shut down quicker + return CompletableFuture.completedFuture(codeToRun.get()); + } + } + + private List sleepAndReturnThings(DataFetchingEnvironment env) { + // by sleeping, we hope to cause the objects to stay longer in GC land and hence have a longer lifecycle + // then a simple stack say or young gen gc. I don't know this will work, but I am trying it + // to represent work that takes some tie to complete + sleep(env.getArgument("howLong")); + return mkHowManyThings(env.getArgument("howMany")); + } + + private void sleep(Integer howLong) { + if (howLong > 0) { + try { + Thread.sleep(howLong); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + } + + AtomicInteger logCount = new AtomicInteger(); + + private void logEvery(int every, String s) { + int count = logCount.getAndIncrement(); + if (count == 0 || count % every == 0) { + System.out.println("\t" + count + "\t" + s); + } + } + + private List mkHowManyThings(Integer howMany) { + ImmutableList.Builder builder = ImmutableList.builder(); + for (int i = 0; i < howMany; i++) { + builder.add(new IdAndNamedThing(i)); + } + return builder.build(); + } + + @SuppressWarnings("unused") + static class IdAndNamedThing { + private final int i; + + public IdAndNamedThing(int i) { + this.i = i; + } + + public String getId() { + return "id" + i; + } + + public String getName() { + return "name" + i; + } + + public String getF1() { + return "f1" + i; + } + + public String getF2() { + return "f2" + i; + } + + public String getF3() { + return "f3" + i; + } + + public String getF4() { + return "f4" + i; + } + + public String getF5() { + return "f5" + i; + } + + public String getF6() { + return "f6" + i; + } + + public String getF7() { + return "f7" + i; + } + + public String getF8() { + return "f8" + i; + } + + public String getF9() { + return "f9" + i; + } + + public String getF10() { + return "f10" + i; + } + } +} diff --git a/src/test/java/performance/OverlappingFieldValidationPerformance.java b/src/test/java/performance/OverlappingFieldValidationPerformance.java new file mode 100644 index 0000000000..77a2af6aec --- /dev/null +++ b/src/test/java/performance/OverlappingFieldValidationPerformance.java @@ -0,0 +1,86 @@ +package performance; + +import graphql.ExecutionResult; +import graphql.GraphQL; +import graphql.i18n.I18n; +import graphql.language.Document; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import graphql.validation.LanguageTraversal; +import graphql.validation.RulesVisitor; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationError; +import graphql.validation.ValidationErrorCollector; +import graphql.validation.rules.OverlappingFieldsCanBeMerged; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.concurrent.TimeUnit; + +import static graphql.Assert.assertTrue; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(3) +public class OverlappingFieldValidationPerformance { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = PerformanceTestingUtils.loadResource("large-schema-4.graphqls"); + String query = PerformanceTestingUtils.loadResource("large-schema-4-query.graphql"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + document = Parser.parse(query); + + // make sure this is a valid query overall + GraphQL graphQL = GraphQL.newGraphQL(schema).build(); + ExecutionResult executionResult = graphQL.execute(query); + assertTrue(executionResult.getErrors().size() == 0); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + public void overlappingFieldValidationAbgTime(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); + } + + @Benchmark + @OutputTimeUnit(TimeUnit.SECONDS) + public void overlappingFieldValidationThroughput(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); + } + + private List validateQuery(GraphQLSchema schema, Document document) { + ValidationErrorCollector errorCollector = new ValidationErrorCollector(); + I18n i18n = I18n.i18n(I18n.BundleType.Validation, Locale.ENGLISH); + ValidationContext validationContext = new ValidationContext(schema, document, i18n); + OverlappingFieldsCanBeMerged overlappingFieldsCanBeMerged = new OverlappingFieldsCanBeMerged(validationContext, errorCollector); + LanguageTraversal languageTraversal = new LanguageTraversal(); + languageTraversal.traverse(document, new RulesVisitor(validationContext, Collections.singletonList(overlappingFieldsCanBeMerged))); + return errorCollector.getErrors(); + } +} diff --git a/src/test/java/performance/PerformanceTestingUtils.java b/src/test/java/performance/PerformanceTestingUtils.java new file mode 100644 index 0000000000..9e05fd661c --- /dev/null +++ b/src/test/java/performance/PerformanceTestingUtils.java @@ -0,0 +1,84 @@ +package performance; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.URL; +import java.nio.charset.Charset; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.Callable; + +public class PerformanceTestingUtils { + + @SuppressWarnings("UnstableApiUsage") + static String loadResource(String name) { + return asRTE(() -> { + URL resource = PerformanceTestingUtils.class.getClassLoader().getResource(name); + if (resource == null) { + throw new IllegalArgumentException("missing resource: " + name); + } + byte[] bytes; + try (InputStream inputStream = resource.openStream()) { + bytes = inputStream.readAllBytes(); + } + return new String(bytes, Charset.defaultCharset()); + }); + } + + static T asRTE(Callable callable) { + try { + return callable.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + public static void runInToolingForSomeTimeThenExit(Runnable setup, Runnable r, Runnable tearDown) { + int runForMillis = getRunForMillis(); + if (runForMillis <= 0) { + System.out.print("'runForMillis' environment var is not set - continuing \n"); + return; + } + System.out.printf("Running initial code in some tooling - runForMillis=%d \n", runForMillis); + System.out.print("Get your tooling in order and press enter..."); + readLine(); + System.out.print("Lets go...\n"); + setup.run(); + + DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss"); + long now, then = System.currentTimeMillis(); + do { + now = System.currentTimeMillis(); + long msLeft = runForMillis - (now - then); + System.out.printf("\t%s Running in loop... %s ms left\n", dtf.format(LocalDateTime.now()), msLeft); + r.run(); + now = System.currentTimeMillis(); + } while ((now - then) < runForMillis); + + tearDown.run(); + + System.out.printf("This ran for %d millis. Exiting...\n", System.currentTimeMillis() - then); + System.exit(0); + } + + private static void readLine() { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + try { + br.readLine(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private static int getRunForMillis() { + String runFor = System.getenv("runForMillis"); + try { + return Integer.parseInt(runFor); + } catch (NumberFormatException e) { + return -1; + } + } + +} From 25a3b9fbb2efa4ff93ed68be73b72efafb3c3712 Mon Sep 17 00:00:00 2001 From: Alexandre Carlton Date: Sat, 16 Nov 2024 15:13:48 +1100 Subject: [PATCH 027/345] Include more thorough testing of GraphqlErrorImpl#equals/hashCode This now tests the other attributes, and also checks inequality explicitly. --- .../java/graphql/GraphqlErrorBuilder.java | 9 +- .../graphql/GraphqlErrorBuilderTest.groovy | 92 +++++++++++-------- 2 files changed, 61 insertions(+), 40 deletions(-) diff --git a/src/main/java/graphql/GraphqlErrorBuilder.java b/src/main/java/graphql/GraphqlErrorBuilder.java index 711b71879a..db71eb20e0 100644 --- a/src/main/java/graphql/GraphqlErrorBuilder.java +++ b/src/main/java/graphql/GraphqlErrorBuilder.java @@ -137,8 +137,13 @@ public GraphQLError build() { * A simple implementation of a {@link GraphQLError}. *

* This provides {@link #hashCode()} and {@link #equals(Object)} methods that afford comparison with other - * {@link GraphQLError} implementations. However, the values in the {@link #getExtensions()} {@link Map} must - * in turn implement {@code hashCode()} and {@link #equals(Object)} for this to function correctly. + * {@link GraphQLError} implementations. However, the values provided in the following fields must + * in turn implement {@link #hashCode()} and {@link #equals(Object)} for this to function correctly: + *

    + *
  • the values in the {@link #getPath()} {@link List}. + *
  • the {@link #getErrorType()} {@link ErrorClassification}. + *
  • the values in the {@link #getExtensions()} {@link Map}. + *
*/ private static class GraphqlErrorImpl implements GraphQLError { private final String message; diff --git a/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy b/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy index 0c31ccbe0d..8713100d02 100644 --- a/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy +++ b/src/test/groovy/graphql/GraphqlErrorBuilderTest.groovy @@ -153,49 +153,65 @@ class GraphqlErrorBuilderTest extends Specification { } - def "implements equals correctly"() { + def "implements equals/hashCode correctly for matching errors"() { when: - def error1 = GraphQLError.newError().message("msg") - .locations(null) - .extensions([x : "y"]) - .path(null) - .build() - def error2 = GraphQLError.newError().message("msg") - .locations(null) - .extensions([x : "y"]) - .path(null) - .build() - def error3 = GraphQLError.newError().message("msg3") - .locations(null) - .extensions([x : "y"]) - .path(null) - .build() + def firstError = toGraphQLError(first) + def secondError = toGraphQLError(second) + then: - error1 == error2 - error1 != error3 - error2 != error3 + firstError == secondError + firstError.hashCode() == secondError.hashCode() + + where: + first | second + [message: "msg"] | [message: "msg"] + [message: "msg", locations: [new SourceLocation(1, 2)]] | [message: "msg", locations: [new SourceLocation(1, 2)]] + [message: "msg", errorType: ErrorType.InvalidSyntax] | [message: "msg", errorType: ErrorType.InvalidSyntax] + [message: "msg", path: ["items", 1, "item"]] | [message: "msg", path: ["items", 1, "item"]] + [message: "msg", extensions: [aBoolean: true, aString: "foo"]] | [message: "msg", extensions: [aBoolean: true, aString: "foo"]] } - def "implements hashCode correctly"() { + def "implements equals/hashCode correctly for different errors"() { when: - def error1 = GraphQLError.newError().message("msg") - .locations(null) - .extensions([x : "y"]) - .path(null) - .build() - def error2 = GraphQLError.newError().message("msg") - .locations(null) - .extensions([x : "y"]) - .path(null) - .build() - def error3 = GraphQLError.newError().message("msg3") - .locations(null) - .extensions([x : "y"]) - .path(null) - .build() - def errors = [error1, error2, error3] as Set + def firstError = toGraphQLError(first) + def secondError = toGraphQLError(second) + then: - errors == [error1, error3] as Set - errors == [error2, error3] as Set + firstError != secondError + firstError.hashCode() != secondError.hashCode() + + where: + first | second + [message: "msg"] | [message: "different msg"] + [message: "msg", locations: [new SourceLocation(1, 2)]] | [message: "msg", locations: [new SourceLocation(3, 4)]] + [message: "msg", errorType: ErrorType.InvalidSyntax] | [message: "msg", errorType: ErrorType.DataFetchingException] + [message: "msg", path: ["items", "1", "item"]] | [message: "msg", path: ["items"]] + [message: "msg", extensions: [aBoolean: false]] | [message: "msg", extensions: [aString: "foo"]] + } + + private static GraphQLError toGraphQLError(Map errorFields) { + def errorBuilder = GraphQLError.newError(); + errorFields.forEach { key, value -> + if (value != null) { + switch (key) { + case "message": + errorBuilder.message(value as String); + break; + case "locations": + errorBuilder.locations(value as List); + break; + case "errorType": + errorBuilder.errorType(value as ErrorClassification); + break; + case "path": + errorBuilder.path(value as List); + break; + case "extensions": + errorBuilder.extensions(value as Map); + break; + } + } + } + return errorBuilder.build(); } } From 2cc76d61f3e426086fd8eb682af8fb4593f65722 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Nov 2024 16:33:36 +0000 Subject: [PATCH 028/345] Bump io.projectreactor:reactor-core from 3.6.11 to 3.7.0 Bumps [io.projectreactor:reactor-core](https://github.com/reactor/reactor-core) from 3.6.11 to 3.7.0. - [Release notes](https://github.com/reactor/reactor-core/releases) - [Commits](https://github.com/reactor/reactor-core/compare/v3.6.11...v3.7.0) --- updated-dependencies: - dependency-name: io.projectreactor:reactor-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 4377a9be21..5827022e71 100644 --- a/build.gradle +++ b/build.gradle @@ -117,7 +117,7 @@ dependencies { testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" - testImplementation "io.projectreactor:reactor-core:3.6.11" + testImplementation "io.projectreactor:reactor-core:3.7.0" testImplementation 'org.testng:testng:7.10.2' // use for reactive streams test inheritance From af201b4f68b2fddc4a3ddc9c87e7a138e968e14f Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:27:26 +1100 Subject: [PATCH 029/345] Add GitHub action to automate failed test info --- .github/workflows/master.yml | 7 +++++++ .github/workflows/pull_request.yml | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index e0a2801043..18b7bec031 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -4,6 +4,8 @@ on: push: branches: - master +permissions: + checks: write jobs: buildAndPublish: runs-on: ubuntu-latest @@ -22,3 +24,8 @@ jobs: distribution: 'corretto' - name: build test and publish run: ./gradlew assemble && ./gradlew check --info && ./gradlew publishToSonatype closeAndReleaseSonatypeStagingRepository -x check --info --stacktrace + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2.18.0 + if: always() + with: + files: '**/build/test-results/test/TEST-*.xml' diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index ef52a4f3cb..d10cb2b0dd 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -11,6 +11,9 @@ on: - 21.x - 20.x - 19.x +permissions: + checks: write + pull-requests: write jobs: buildAndTest: runs-on: ubuntu-latest @@ -24,3 +27,9 @@ jobs: distribution: 'corretto' - name: build and test run: ./gradlew assemble && ./gradlew check --info --stacktrace + - name: Publish Test Results + uses: EnricoMi/publish-unit-test-result-action@v2.18.0 + if: always() + with: + files: '**/build/test-results/test/TEST-*.xml' + From 1789ece07676a59d07755ec030e904bd62d935fa Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:27:41 +1100 Subject: [PATCH 030/345] Check in deliberately failing test to try out the new GitHub Action --- .../groovy/graphql/schema/DataFetcherFactoriesTest.groovy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy index 5050ba0ef1..0ca369da8e 100644 --- a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy @@ -10,6 +10,11 @@ class DataFetcherFactoriesTest extends Specification { def cfDF = new StaticDataFetcher(CompletableFuture.completedFuture("hello")) def pojoDF = new StaticDataFetcher("goodbye") + def "testing the GitHub Action on failing tests"() { + // TODO: I will remove this test before merging the PR. This is only to generate a test failure message. + false + } + def "delegation happens as expected"() { given: From ed53b77052b9765eabbaf4fb559d5b66bda9d37e Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:31:20 +1100 Subject: [PATCH 031/345] Add description --- .github/workflows/master.yml | 2 +- .github/workflows/pull_request.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 18b7bec031..74651d8847 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -4,7 +4,7 @@ on: push: branches: - master -permissions: +permissions: # For test summary bot checks: write jobs: buildAndPublish: diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index d10cb2b0dd..6a68d71271 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -11,7 +11,7 @@ on: - 21.x - 20.x - 19.x -permissions: +permissions: # For test comment bot checks: write pull-requests: write jobs: From 6f247cb2c6ff99b0521c0a7329e0d1e5e5ac3262 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:35:23 +1100 Subject: [PATCH 032/345] Add a deliberately failing test --- .../groovy/graphql/schema/DataFetcherFactoriesTest.groovy | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy index 0ca369da8e..4f5871c61f 100644 --- a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy @@ -12,7 +12,13 @@ class DataFetcherFactoriesTest extends Specification { def "testing the GitHub Action on failing tests"() { // TODO: I will remove this test before merging the PR. This is only to generate a test failure message. - false + def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) + + when: + def value = fetcherFactory.get(null).get(null) + + then: + value != "goodbye" } def "delegation happens as expected"() { From d6facee5cf5625d174577c3df0a5a55746fdc100 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Wed, 20 Nov 2024 14:53:32 +1100 Subject: [PATCH 033/345] Remove deliberately failing test --- .../graphql/schema/DataFetcherFactoriesTest.groovy | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy index 4f5871c61f..5050ba0ef1 100644 --- a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy @@ -10,17 +10,6 @@ class DataFetcherFactoriesTest extends Specification { def cfDF = new StaticDataFetcher(CompletableFuture.completedFuture("hello")) def pojoDF = new StaticDataFetcher("goodbye") - def "testing the GitHub Action on failing tests"() { - // TODO: I will remove this test before merging the PR. This is only to generate a test failure message. - def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) - - when: - def value = fetcherFactory.get(null).get(null) - - then: - value != "goodbye" - } - def "delegation happens as expected"() { given: From 69569de374a0699b4eb9448bd9c846f5620c3f01 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 24 Nov 2024 14:51:40 +1100 Subject: [PATCH 034/345] Filter out negative line and column locations from toSpecification --- src/main/java/graphql/GraphqlErrorHelper.java | 18 ++++++++---- .../groovy/graphql/GraphQLErrorTest.groovy | 28 +++++++++++++++++-- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/main/java/graphql/GraphqlErrorHelper.java b/src/main/java/graphql/GraphqlErrorHelper.java index 5b2aaa1342..c422a18436 100644 --- a/src/main/java/graphql/GraphqlErrorHelper.java +++ b/src/main/java/graphql/GraphqlErrorHelper.java @@ -7,7 +7,7 @@ import java.util.Map; import java.util.Objects; -import static graphql.collect.ImmutableKit.map; +import static graphql.collect.ImmutableKit.mapAndDropNulls; /** * This little helper allows GraphQlErrors to implement @@ -51,14 +51,20 @@ public static Map toSpecification(GraphQLError error) { } public static Object locations(List locations) { - return map(locations, GraphqlErrorHelper::location); + return mapAndDropNulls(locations, GraphqlErrorHelper::location); } + /** + * Positive integers starting from 1 required for error locations, + * from the spec ... + */ public static Object location(SourceLocation location) { - Map map = new LinkedHashMap<>(); - map.put("line", location.getLine()); - map.put("column", location.getColumn()); - return map; + int line = location.getLine(); + int column = location.getColumn(); + if (line < 1 || column < 1) { + return null; + } + return Map.of("line", line, "column", column); } public static int hashCode(GraphQLError dis) { diff --git a/src/test/groovy/graphql/GraphQLErrorTest.groovy b/src/test/groovy/graphql/GraphQLErrorTest.groovy index ca9fc1e8d7..f9c2a2358f 100644 --- a/src/test/groovy/graphql/GraphQLErrorTest.groovy +++ b/src/test/groovy/graphql/GraphQLErrorTest.groovy @@ -31,7 +31,7 @@ class GraphQLErrorTest extends Specification { .description("Test ValidationError") .build() | [ - locations: [[line: 666, column: 999], [line: 333, column: 0]], + locations: [[line: 666, column: 999], [line: 333, column: 1]], message : "Test ValidationError", extensions:[classification:"ValidationError"], ] @@ -44,7 +44,7 @@ class GraphQLErrorTest extends Specification { new InvalidSyntaxError(mkLocations(), "Not good syntax m'kay") | [ - locations: [[line: 666, column: 999], [line: 333, column: 0]], + locations: [[line: 666, column: 999], [line: 333, column: 1]], message : "Not good syntax m'kay", extensions:[classification:"InvalidSyntax"], ] @@ -72,6 +72,28 @@ class GraphQLErrorTest extends Specification { } + def "toSpecification filters out error locations with line and column not starting at 1, as required in spec"() { + // See specification wording: https://spec.graphql.org/draft/#sec-Errors.Error-Result-Format + + given: + def error = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.UnknownType) + .sourceLocations([mkLocation(-1, -1), mkLocation(333, 1)]) + .description("Test ValidationError") + .build() + + def expectedMap = [ + locations: [ + [line: 333, column: 1] + ], + message: "Test ValidationError", + extensions: [classification:"ValidationError"] + ] + + expect: + error.toSpecification() == expectedMap + } + class CustomException extends RuntimeException implements GraphQLError { private LinkedHashMap map @@ -110,7 +132,7 @@ class GraphQLErrorTest extends Specification { } List mkLocations() { - return [mkLocation(666, 999), mkLocation(333, 0)] + return [mkLocation(666, 999), mkLocation(333, 1)] } SourceLocation mkLocation(int line, int column) { From 689e40171b88e123adc413797d5d64bfc6c5ef0c Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 25 Nov 2024 15:44:30 +1100 Subject: [PATCH 035/345] Use a singleton PropertyFetcher by default --- .../graphql/schema/GraphQLCodeRegistry.java | 2 +- .../graphql/schema/PropertyDataFetcher.java | 53 +++- .../groovy/graphql/DataFetcherTest.groovy | 42 ++- .../graphql/LargeSchemaDataFetcherTest.groovy | 43 +++ .../InstrumentationTest.groovy | 2 +- .../schema/PropertyDataFetcherTest.groovy | 272 +++++++++++++----- 6 files changed, 333 insertions(+), 81 deletions(-) create mode 100644 src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy diff --git a/src/main/java/graphql/schema/GraphQLCodeRegistry.java b/src/main/java/graphql/schema/GraphQLCodeRegistry.java index 768d13897e..98877bae36 100644 --- a/src/main/java/graphql/schema/GraphQLCodeRegistry.java +++ b/src/main/java/graphql/schema/GraphQLCodeRegistry.java @@ -189,7 +189,7 @@ public static class Builder { private final Map> systemDataFetcherMap = new LinkedHashMap<>(); private final Map typeResolverMap = new HashMap<>(); private GraphqlFieldVisibility fieldVisibility = DEFAULT_FIELD_VISIBILITY; - private DataFetcherFactory defaultDataFetcherFactory = env -> PropertyDataFetcher.fetching(env.getFieldDefinition().getName()); + private DataFetcherFactory defaultDataFetcherFactory = PropertyDataFetcher.singletonFactory(); private boolean changed = false; private Builder() { diff --git a/src/main/java/graphql/schema/PropertyDataFetcher.java b/src/main/java/graphql/schema/PropertyDataFetcher.java index 77cfdcf062..48aca93176 100644 --- a/src/main/java/graphql/schema/PropertyDataFetcher.java +++ b/src/main/java/graphql/schema/PropertyDataFetcher.java @@ -33,6 +33,35 @@ @PublicApi public class PropertyDataFetcher implements LightDataFetcher { + private static final PropertyDataFetcher SINGLETON_FETCHER = new PropertyDataFetcher<>() { + @Override + Object fetchImpl(String propertyName, Object source, GraphQLFieldDefinition fieldDefinition, Supplier environmentSupplier) { + return super.fetchImpl(fieldDefinition.getName(), source, fieldDefinition, environmentSupplier); + } + }; + + private static final DataFetcherFactory SINGLETON_FETCHER_FACTORY = environment -> SINGLETON_FETCHER; + + /** + * This returns the same singleton {@link PropertyDataFetcher} that fetches property values + * based on the name of the field that iis passed into it. + * + * @return a singleton property data fetcher + */ + public static PropertyDataFetcher singleton() { + return SINGLETON_FETCHER; + } + + /** + * This returns the same singleton {@link DataFetcherFactory} that returns the value of {@link #singleton()} + * + * @return a singleton data fetcher factory + */ + public static DataFetcherFactory singletonFactory() { + return SINGLETON_FETCHER_FACTORY; + } + + private final String propertyName; private final Function function; @@ -53,6 +82,11 @@ private PropertyDataFetcher(Function function) { this.propertyName = null; } + private PropertyDataFetcher() { + this.function = null; + this.propertyName = null; + } + /** * Returns a data fetcher that will use the property name to examine the {@link DataFetchingEnvironment#getSource()} object * for a getter method or field with that name, or if it's a map, it will look up a value using @@ -109,17 +143,26 @@ public String getPropertyName() { @Override public T get(GraphQLFieldDefinition fieldDefinition, Object source, Supplier environmentSupplier) throws Exception { - return getImpl(source, fieldDefinition.getType(), environmentSupplier); + return fetchImpl(propertyName, source, fieldDefinition, environmentSupplier); } @Override public T get(DataFetchingEnvironment environment) { - Object source = environment.getSource(); - return getImpl(source, environment.getFieldType(), () -> environment); + return fetchImpl(propertyName, environment.getSource(), environment.getFieldDefinition(), () -> environment); } + /** + * This is our implementation of property fetching + * + * @param propertyName the name of the property to fetch in the source object + * @param source the source object to fetch from + * @param fieldDefinition the field definition of the field being fetched for + * @param environmentSupplier a supplied of thee {@link DataFetchingEnvironment} + * + * @return a value of type T + */ @SuppressWarnings("unchecked") - private T getImpl(Object source, GraphQLOutputType fieldDefinition, Supplier environmentSupplier) { + T fetchImpl(String propertyName, Object source, GraphQLFieldDefinition fieldDefinition, Supplier environmentSupplier) { if (source == null) { return null; } @@ -128,7 +171,7 @@ private T getImpl(Object source, GraphQLOutputType fieldDefinition, Supplier f = { obj -> obj['value'] } def fetcher = PropertyDataFetcher.fetching(f) expect: @@ -53,7 +70,7 @@ class PropertyDataFetcherTest extends Specification { } def "function based fetcher works with null source"() { - def environment = env(null) + def environment = mkDFE("notused", null) Function f = { obj -> obj['value'] } def fetcher = PropertyDataFetcher.fetching(f) expect: @@ -61,46 +78,87 @@ class PropertyDataFetcherTest extends Specification { } def "fetch via map lookup"() { - def environment = env(["mapProperty": "aValue"]) - def fetcher = PropertyDataFetcher.fetching("mapProperty") + given: + def environment = mkDFE("mapProperty", ["mapProperty": "aValue"]) + expect: fetcher.get(environment) == "aValue" + + where: + fetcher | _ + PropertyDataFetcher.fetching("mapProperty") | _ + PropertyDataFetcher.singleton() | _ } def "fetch via public getter with private subclass"() { - def environment = env(TestClass.createPackageProtectedImpl("aValue")) - def fetcher = new PropertyDataFetcher("packageProtectedProperty") + given: + def environment = mkDFE("packageProtectedProperty", TestClass.createPackageProtectedImpl("aValue")) + expect: fetcher.get(environment) == "aValue" + + where: + fetcher | _ + new PropertyDataFetcher("packageProtectedProperty") | _ + PropertyDataFetcher.singleton() | _ } def "fetch via method that isn't present"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("valueNotPresent") + given: + def environment = mkDFE("valueNotPresent", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == null + + where: + fetcher | _ + new PropertyDataFetcher("valueNotPresent") | _ + PropertyDataFetcher.singleton() | _ + } def "fetch via method that is private"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateProperty") + given: + def environment = mkDFE("privateProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == "privateValue" + + where: + fetcher | _ + new PropertyDataFetcher("privateProperty") | _ + PropertyDataFetcher.singleton() | _ + } def "fetch via method that is private with setAccessible OFF"() { + given: PropertyDataFetcher.setUseSetAccessible(false) - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateProperty") + def environment = mkDFE("privateProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == null + + where: + fetcher | _ + new PropertyDataFetcher("privateProperty") | _ + PropertyDataFetcher.singleton() | _ + } def "fetch via record method"() { - def environment = env(new RecordLikeClass()) + given: + def environment = mkDFE("recordProperty", new RecordLikeClass()) + when: def fetcher = new PropertyDataFetcher("recordProperty") def result = fetcher.get(environment) @@ -144,57 +202,95 @@ class PropertyDataFetcherTest extends Specification { result == "toString" } + def "fetch via record method with singleton fetcher"() { + given: + def environment = mkDFE("recordProperty", new RecordLikeClass()) + + when: + def fetcher = PropertyDataFetcher.singleton() + def result = fetcher.get(environment) + then: + result == "recordProperty" + } + def "can fetch record like methods that are public and on super classes"() { - def environment = env(new RecordLikeTwoClassesDown()) + given: + def environment = mkDFE("recordProperty", new RecordLikeTwoClassesDown()) + when: - def fetcher = new PropertyDataFetcher("recordProperty") def result = fetcher.get(environment) + then: result == "recordProperty" + + where: + fetcher | _ + new PropertyDataFetcher("recordProperty") | _ + PropertyDataFetcher.singleton() | _ } def "fetch via record method without lambda support"() { + given: PropertyDataFetcherHelper.setUseLambdaFactory(false) PropertyDataFetcherHelper.clearReflectionCache() when: - def environment = env(new RecordLikeClass()) + def environment = mkDFE("recordProperty", new RecordLikeClass()) def fetcher = new PropertyDataFetcher("recordProperty") def result = fetcher.get(environment) + then: result == "recordProperty" when: - environment = env(new RecordLikeTwoClassesDown()) + environment = mkDFE("recordProperty", new RecordLikeTwoClassesDown()) fetcher = new PropertyDataFetcher("recordProperty") result = fetcher.get(environment) + then: result == "recordProperty" } def "fetch via record method without lambda support in preference to getter methods"() { + given: PropertyDataFetcherHelper.setUseLambdaFactory(false) PropertyDataFetcherHelper.clearReflectionCache() when: - def environment = env(new ConfusedPojo()) - def fetcher = new PropertyDataFetcher("recordLike") + def environment = mkDFE("recordLike", new ConfusedPojo()) def result = fetcher.get(environment) + then: result == "recordLike" + + where: + fetcher | _ + new PropertyDataFetcher("recordLike") | _ + PropertyDataFetcher.singleton() | _ } def "fetch via public method"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("publicProperty") + given: + def environment = mkDFE("publicProperty", new TestClass()) + + when: def result = fetcher.get(environment) - expect: + + then: result == "publicValue" + + where: + fetcher | _ + new PropertyDataFetcher("publicProperty") | _ + PropertyDataFetcher.singleton() | _ + } def "fetch via public method declared two classes up"() { - def environment = env(new TwoClassesDown("aValue")) + given: + def environment = mkDFE("publicProperty", new TwoClassesDown("aValue")) def fetcher = new PropertyDataFetcher("publicProperty") + when: def result = fetcher.get(environment) then: @@ -208,42 +304,69 @@ class PropertyDataFetcherTest extends Specification { } def "fetch via property only defined on package protected impl"() { - def environment = env(TestClass.createPackageProtectedImpl("aValue")) - def fetcher = new PropertyDataFetcher("propertyOnlyDefinedOnPackageProtectedImpl") + given: + def environment = mkDFE("propertyOnlyDefinedOnPackageProtectedImpl", TestClass.createPackageProtectedImpl("aValue")) + + when: def result = fetcher.get(environment) - expect: + + then: result == "valueOnlyDefinedOnPackageProtectedIpl" + + where: + fetcher | _ + new PropertyDataFetcher("propertyOnlyDefinedOnPackageProtectedImpl") | _ + PropertyDataFetcher.singleton() | _ } def "fetch via public field"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("publicField") + given: + + def environment = mkDFE("publicField", new TestClass()) def result = fetcher.get(environment) + expect: result == "publicFieldValue" + + where: + fetcher | _ + new PropertyDataFetcher("publicField") | _ + PropertyDataFetcher.singleton() | _ } def "fetch via private field"() { - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateField") + given: + def environment = mkDFE("privateField", new TestClass()) def result = fetcher.get(environment) + expect: result == "privateFieldValue" + + where: + fetcher | _ + new PropertyDataFetcher("privateField") | _ + PropertyDataFetcher.singleton() | _ } def "fetch via private field when setAccessible OFF"() { + given: PropertyDataFetcher.setUseSetAccessible(false) - def environment = env(new TestClass()) - def fetcher = new PropertyDataFetcher("privateField") + def environment = mkDFE("privateField", new TestClass()) def result = fetcher.get(environment) + expect: result == null + + where: + fetcher | _ + new PropertyDataFetcher("privateField") | _ + PropertyDataFetcher.singleton() | _ } def "fetch when caching is in place has no bad effects"() { - def environment = env(new TestClass()) + def environment = mkDFE("publicProperty", new TestClass()) def fetcher = new PropertyDataFetcher("publicProperty") when: def result = fetcher.get(environment) @@ -317,8 +440,10 @@ class PropertyDataFetcherTest extends Specification { } def "support for DFE on methods"() { - def environment = env(new ClassWithDFEMethods()) + given: + def environment = mkDFE("methodWithDFE", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("methodWithDFE") + when: def result = fetcher.get(environment) then: @@ -370,7 +495,7 @@ class PropertyDataFetcherTest extends Specification { def "finds interface methods"() { when: - def environment = env(new ClassWithInterfaces()) + def environment = mkDFE("methodYouMustImplement", new ClassWithInterfaces()) def fetcher = new PropertyDataFetcher("methodYouMustImplement") def result = fetcher.get(environment) then: @@ -397,7 +522,7 @@ class PropertyDataFetcherTest extends Specification { } def "finds interface methods with inheritance"() { - def environment = env(new ClassWithInteritanceAndInterfaces.StartingClass()) + def environment = mkDFE("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.StartingClass()) when: def fetcher = new PropertyDataFetcher("methodYouMustImplement") @@ -411,7 +536,7 @@ class PropertyDataFetcherTest extends Specification { then: result == "methodThatIsADefault" - def environment2 = env(new ClassWithInteritanceAndInterfaces.InheritedClass()) + def environment2 = mkDFE("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.InheritedClass()) when: fetcher = new PropertyDataFetcher("methodYouMustImplement") @@ -440,7 +565,7 @@ class PropertyDataFetcherTest extends Specification { def "ensure DFE is passed to method"() { - def environment = env(new ClassWithDFEMethods()) + def environment = mkDFE("methodUsesDataFetchingEnvironment", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("methodUsesDataFetchingEnvironment") when: def result = fetcher.get(environment) @@ -455,7 +580,7 @@ class PropertyDataFetcherTest extends Specification { } def "negative caching works as expected"() { - def environment = env(new ClassWithDFEMethods()) + def environment = mkDFE("doesNotExist", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("doesNotExist") when: def result = fetcher.get(environment) @@ -546,69 +671,81 @@ class PropertyDataFetcherTest extends Specification { def "search for private getter in class hierarchy"() { given: Bar bar = new Baz() - PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("something") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> bar + def dfe = mkDFE("something", bar) + when: - def result = propertyDataFetcher.get(dfe) + def result = fetcher.get(dfe) then: result == "bar" // repeat - should be cached when: - result = propertyDataFetcher.get(dfe) + result = fetcher.get(dfe) then: result == "bar" + + where: + fetcher | _ + new PropertyDataFetcher("something") | _ + PropertyDataFetcher.singleton() | _ } def "issue 3247 - record like statics should not be used"() { given: def payload = new UpdateOrganizerSubscriptionPayload(true, new OrganizerSubscriptionError()) - PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("success") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> payload + def dfe = mkDFE("success", payload) + when: - def result = propertyDataFetcher.get(dfe) + def result = fetcher.get(dfe) then: result == true // repeat - should be cached when: - result = propertyDataFetcher.get(dfe) + result = fetcher.get(dfe) then: result == true + + where: + fetcher | _ + new PropertyDataFetcher("success") | _ + PropertyDataFetcher.singleton() | _ } def "issue 3247 - record like statics should not be found"() { given: def errorShape = new OrganizerSubscriptionError() - PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("message") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> errorShape + def dfe = mkDFE("message", errorShape) + when: - def result = propertyDataFetcher.get(dfe) + def result = fetcher.get(dfe) then: result == null // not found as its a static recordLike() method // repeat - should be cached when: - result = propertyDataFetcher.get(dfe) + result = fetcher.get(dfe) then: result == null + + where: + fetcher | _ + new PropertyDataFetcher("message") | _ + PropertyDataFetcher.singleton() | _ } def "issue 3247 - getter statics should be found"() { given: def objectInQuestion = new BarClassWithStaticProperties() + def dfe = mkDFE("foo", objectInQuestion) PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("foo") - def dfe = Mock(DataFetchingEnvironment) - dfe.getSource() >> objectInQuestion + when: def result = propertyDataFetcher.get(dfe) @@ -657,15 +794,22 @@ class PropertyDataFetcherTest extends Specification { Locale oldLocale = Locale.getDefault() Locale.setDefault(new Locale("tr", "TR")) - def environment = env(new OtherObject(id: "aValue")) - def fetcher = PropertyDataFetcher.fetching("id") + def environment = mkDFE("id", new OtherObject(id: "aValue")) when: + def fetcher = PropertyDataFetcher.fetching("id") String propValue = fetcher.get(environment) then: propValue == 'aValue' + when: + fetcher = PropertyDataFetcher.singleton() + propValue = fetcher.get(environment) + + then: + propValue == 'aValue' + cleanup: Locale.setDefault(oldLocale) } From a5a22c09921d84503fd0f3d4cddedcff7497ea82 Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 25 Nov 2024 15:56:03 +1100 Subject: [PATCH 036/345] Use a singleton PropertyFetcher by default - schema generator will use it --- .../java/graphql/schema/idl/SchemaGeneratorHelper.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java index 0b4e74c45b..68bfdd5683 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java @@ -849,7 +849,7 @@ private DataFetcherFactory buildDataFetcherFactory(BuildContext buildCtx, if (codeRegistryDFF != null) { return codeRegistryDFF; } - dataFetcher = dataFetcherOfLastResort(wiringEnvironment); + dataFetcher = dataFetcherOfLastResort(); } } } @@ -1087,9 +1087,8 @@ private Optional getOperationNamed(String name, Map dataFetcherOfLastResort(FieldWiringEnvironment environment) { - String fieldName = environment.getFieldDefinition().getName(); - return new PropertyDataFetcher(fieldName); + private DataFetcher dataFetcherOfLastResort() { + return PropertyDataFetcher.singleton(); } private List directivesOf(List> typeDefinitions) { From 0d80213f72936ba9a4d6448dc721a70b12c499f5 Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 25 Nov 2024 16:11:33 +1100 Subject: [PATCH 037/345] Use a singleton PropertyFetcher by default - renamed back to env for diff reasons --- .../groovy/graphql/DataFetcherTest.groovy | 10 +-- .../schema/PropertyDataFetcherTest.groovy | 66 +++++++++---------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/test/groovy/graphql/DataFetcherTest.groovy b/src/test/groovy/graphql/DataFetcherTest.groovy index 1c3efec655..e06b134489 100644 --- a/src/test/groovy/graphql/DataFetcherTest.groovy +++ b/src/test/groovy/graphql/DataFetcherTest.groovy @@ -56,14 +56,14 @@ class DataFetcherTest extends Specification { } - def mkDFE(String propertyName, GraphQLOutputType type) { + def env(String propertyName, GraphQLOutputType type) { def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition().name(propertyName).type(type).build() newDataFetchingEnvironment().source(dataHolder).fieldType(type).fieldDefinition(fieldDefinition).build() } def "get property value"() { given: - def environment = mkDFE("property", GraphQLString) + def environment = env("property", GraphQLString) when: def result = fetcher.get(environment) then: @@ -77,7 +77,7 @@ class DataFetcherTest extends Specification { def "get Boolean property value"() { given: - def environment = mkDFE("booleanField", GraphQLBoolean) + def environment = env("booleanField", GraphQLBoolean) when: def result = fetcher.get(environment) then: @@ -91,7 +91,7 @@ class DataFetcherTest extends Specification { def "get Boolean property value with get"() { given: - def environment = mkDFE("booleanFieldWithGet", GraphQLBoolean) + def environment = env("booleanFieldWithGet", GraphQLBoolean) when: def result = fetcher.get(environment) then: @@ -105,7 +105,7 @@ class DataFetcherTest extends Specification { def "get public field value as property"() { given: - def environment = mkDFE("publicField", GraphQLString) + def environment = env("publicField", GraphQLString) when: def result = fetcher.get(environment) then: diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy index bfea90afa7..ceadabe88a 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy @@ -35,7 +35,7 @@ class PropertyDataFetcherTest extends Specification { PropertyDataFetcherHelper.setUseLambdaFactory(true) } - def mkDFE(String propertyName, Object obj) { + def env(String propertyName, Object obj) { def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition().name(propertyName).type(Scalars.GraphQLString).build() newDataFetchingEnvironment() .source(obj) @@ -50,7 +50,7 @@ class PropertyDataFetcherTest extends Specification { def "null source is always null"() { given: - def environment = mkDFE("someProperty", null) + def environment = env("someProperty", null) expect: fetcher.get(environment) == null @@ -62,7 +62,7 @@ class PropertyDataFetcherTest extends Specification { } def "function based fetcher works with non null source"() { - def environment = mkDFE("notused", new SomeObject(value: "aValue")) + def environment = env("notused", new SomeObject(value: "aValue")) Function f = { obj -> obj['value'] } def fetcher = PropertyDataFetcher.fetching(f) expect: @@ -70,7 +70,7 @@ class PropertyDataFetcherTest extends Specification { } def "function based fetcher works with null source"() { - def environment = mkDFE("notused", null) + def environment = env("notused", null) Function f = { obj -> obj['value'] } def fetcher = PropertyDataFetcher.fetching(f) expect: @@ -79,7 +79,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via map lookup"() { given: - def environment = mkDFE("mapProperty", ["mapProperty": "aValue"]) + def environment = env("mapProperty", ["mapProperty": "aValue"]) expect: fetcher.get(environment) == "aValue" @@ -92,7 +92,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via public getter with private subclass"() { given: - def environment = mkDFE("packageProtectedProperty", TestClass.createPackageProtectedImpl("aValue")) + def environment = env("packageProtectedProperty", TestClass.createPackageProtectedImpl("aValue")) expect: fetcher.get(environment) == "aValue" @@ -105,7 +105,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via method that isn't present"() { given: - def environment = mkDFE("valueNotPresent", new TestClass()) + def environment = env("valueNotPresent", new TestClass()) when: def result = fetcher.get(environment) @@ -122,7 +122,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via method that is private"() { given: - def environment = mkDFE("privateProperty", new TestClass()) + def environment = env("privateProperty", new TestClass()) when: def result = fetcher.get(environment) @@ -140,7 +140,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via method that is private with setAccessible OFF"() { given: PropertyDataFetcher.setUseSetAccessible(false) - def environment = mkDFE("privateProperty", new TestClass()) + def environment = env("privateProperty", new TestClass()) when: def result = fetcher.get(environment) @@ -157,7 +157,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via record method"() { given: - def environment = mkDFE("recordProperty", new RecordLikeClass()) + def environment = env("recordProperty", new RecordLikeClass()) when: def fetcher = new PropertyDataFetcher("recordProperty") @@ -204,7 +204,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via record method with singleton fetcher"() { given: - def environment = mkDFE("recordProperty", new RecordLikeClass()) + def environment = env("recordProperty", new RecordLikeClass()) when: def fetcher = PropertyDataFetcher.singleton() @@ -215,7 +215,7 @@ class PropertyDataFetcherTest extends Specification { def "can fetch record like methods that are public and on super classes"() { given: - def environment = mkDFE("recordProperty", new RecordLikeTwoClassesDown()) + def environment = env("recordProperty", new RecordLikeTwoClassesDown()) when: def result = fetcher.get(environment) @@ -235,7 +235,7 @@ class PropertyDataFetcherTest extends Specification { PropertyDataFetcherHelper.clearReflectionCache() when: - def environment = mkDFE("recordProperty", new RecordLikeClass()) + def environment = env("recordProperty", new RecordLikeClass()) def fetcher = new PropertyDataFetcher("recordProperty") def result = fetcher.get(environment) @@ -243,7 +243,7 @@ class PropertyDataFetcherTest extends Specification { result == "recordProperty" when: - environment = mkDFE("recordProperty", new RecordLikeTwoClassesDown()) + environment = env("recordProperty", new RecordLikeTwoClassesDown()) fetcher = new PropertyDataFetcher("recordProperty") result = fetcher.get(environment) @@ -257,7 +257,7 @@ class PropertyDataFetcherTest extends Specification { PropertyDataFetcherHelper.clearReflectionCache() when: - def environment = mkDFE("recordLike", new ConfusedPojo()) + def environment = env("recordLike", new ConfusedPojo()) def result = fetcher.get(environment) then: @@ -271,7 +271,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via public method"() { given: - def environment = mkDFE("publicProperty", new TestClass()) + def environment = env("publicProperty", new TestClass()) when: def result = fetcher.get(environment) @@ -288,7 +288,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via public method declared two classes up"() { given: - def environment = mkDFE("publicProperty", new TwoClassesDown("aValue")) + def environment = env("publicProperty", new TwoClassesDown("aValue")) def fetcher = new PropertyDataFetcher("publicProperty") when: @@ -305,7 +305,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via property only defined on package protected impl"() { given: - def environment = mkDFE("propertyOnlyDefinedOnPackageProtectedImpl", TestClass.createPackageProtectedImpl("aValue")) + def environment = env("propertyOnlyDefinedOnPackageProtectedImpl", TestClass.createPackageProtectedImpl("aValue")) when: def result = fetcher.get(environment) @@ -323,7 +323,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via public field"() { given: - def environment = mkDFE("publicField", new TestClass()) + def environment = env("publicField", new TestClass()) def result = fetcher.get(environment) expect: @@ -337,7 +337,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via private field"() { given: - def environment = mkDFE("privateField", new TestClass()) + def environment = env("privateField", new TestClass()) def result = fetcher.get(environment) expect: @@ -352,7 +352,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch via private field when setAccessible OFF"() { given: PropertyDataFetcher.setUseSetAccessible(false) - def environment = mkDFE("privateField", new TestClass()) + def environment = env("privateField", new TestClass()) def result = fetcher.get(environment) expect: @@ -366,7 +366,7 @@ class PropertyDataFetcherTest extends Specification { def "fetch when caching is in place has no bad effects"() { - def environment = mkDFE("publicProperty", new TestClass()) + def environment = env("publicProperty", new TestClass()) def fetcher = new PropertyDataFetcher("publicProperty") when: def result = fetcher.get(environment) @@ -441,7 +441,7 @@ class PropertyDataFetcherTest extends Specification { def "support for DFE on methods"() { given: - def environment = mkDFE("methodWithDFE", new ClassWithDFEMethods()) + def environment = env("methodWithDFE", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("methodWithDFE") when: @@ -495,7 +495,7 @@ class PropertyDataFetcherTest extends Specification { def "finds interface methods"() { when: - def environment = mkDFE("methodYouMustImplement", new ClassWithInterfaces()) + def environment = env("methodYouMustImplement", new ClassWithInterfaces()) def fetcher = new PropertyDataFetcher("methodYouMustImplement") def result = fetcher.get(environment) then: @@ -522,7 +522,7 @@ class PropertyDataFetcherTest extends Specification { } def "finds interface methods with inheritance"() { - def environment = mkDFE("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.StartingClass()) + def environment = env("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.StartingClass()) when: def fetcher = new PropertyDataFetcher("methodYouMustImplement") @@ -536,7 +536,7 @@ class PropertyDataFetcherTest extends Specification { then: result == "methodThatIsADefault" - def environment2 = mkDFE("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.InheritedClass()) + def environment2 = env("methodYouMustImplement", new ClassWithInteritanceAndInterfaces.InheritedClass()) when: fetcher = new PropertyDataFetcher("methodYouMustImplement") @@ -565,7 +565,7 @@ class PropertyDataFetcherTest extends Specification { def "ensure DFE is passed to method"() { - def environment = mkDFE("methodUsesDataFetchingEnvironment", new ClassWithDFEMethods()) + def environment = env("methodUsesDataFetchingEnvironment", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("methodUsesDataFetchingEnvironment") when: def result = fetcher.get(environment) @@ -580,7 +580,7 @@ class PropertyDataFetcherTest extends Specification { } def "negative caching works as expected"() { - def environment = mkDFE("doesNotExist", new ClassWithDFEMethods()) + def environment = env("doesNotExist", new ClassWithDFEMethods()) def fetcher = new PropertyDataFetcher("doesNotExist") when: def result = fetcher.get(environment) @@ -671,7 +671,7 @@ class PropertyDataFetcherTest extends Specification { def "search for private getter in class hierarchy"() { given: Bar bar = new Baz() - def dfe = mkDFE("something", bar) + def dfe = env("something", bar) when: def result = fetcher.get(dfe) @@ -695,7 +695,7 @@ class PropertyDataFetcherTest extends Specification { def "issue 3247 - record like statics should not be used"() { given: def payload = new UpdateOrganizerSubscriptionPayload(true, new OrganizerSubscriptionError()) - def dfe = mkDFE("success", payload) + def dfe = env("success", payload) when: def result = fetcher.get(dfe) @@ -719,7 +719,7 @@ class PropertyDataFetcherTest extends Specification { def "issue 3247 - record like statics should not be found"() { given: def errorShape = new OrganizerSubscriptionError() - def dfe = mkDFE("message", errorShape) + def dfe = env("message", errorShape) when: def result = fetcher.get(dfe) @@ -743,7 +743,7 @@ class PropertyDataFetcherTest extends Specification { def "issue 3247 - getter statics should be found"() { given: def objectInQuestion = new BarClassWithStaticProperties() - def dfe = mkDFE("foo", objectInQuestion) + def dfe = env("foo", objectInQuestion) PropertyDataFetcher propertyDataFetcher = new PropertyDataFetcher("foo") when: @@ -794,7 +794,7 @@ class PropertyDataFetcherTest extends Specification { Locale oldLocale = Locale.getDefault() Locale.setDefault(new Locale("tr", "TR")) - def environment = mkDFE("id", new OtherObject(id: "aValue")) + def environment = env("id", new OtherObject(id: "aValue")) when: def fetcher = PropertyDataFetcher.fetching("id") From 612084e025c4ca4e5ed04b989a58eba2b4ff7fbd Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 25 Nov 2024 16:17:12 +1100 Subject: [PATCH 038/345] Use a singleton PropertyFetcher by default - tweaked test wiring --- src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy | 6 +++--- .../graphql/schema/idl/TestMockedWiringFactory.groovy | 8 ++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy b/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy index 6c68eb72de..b445c09ff3 100644 --- a/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy +++ b/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy @@ -21,15 +21,15 @@ class LargeSchemaDataFetcherTest extends Specification { def schema = TestUtil.schema(sdl) def codeRegistry = schema.getCodeRegistry() + def singletonDF = PropertyDataFetcher.singleton() + then: for (int i = 0; i < howManyFields; i++) { def fieldName = "f$i" def fieldDef = GraphQLFieldDefinition.newFieldDefinition().name(fieldName).type(Scalars.GraphQLString).build() def df = codeRegistry.getDataFetcher(FieldCoordinates.coordinates("Query", fieldName), fieldDef) - - // in the future we hope to make this the same DF instance - assert df instanceof PropertyDataFetcher + assert df == singletonDF } } diff --git a/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy b/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy index 9082c7b79b..827fadafbb 100644 --- a/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy +++ b/src/test/groovy/graphql/schema/idl/TestMockedWiringFactory.groovy @@ -49,12 +49,8 @@ class TestMockedWiringFactory implements WiringFactory { @Override boolean providesDataFetcher(FieldWiringEnvironment environment) { - return true - } - - @Override - DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return new PropertyDataFetcher(environment.getFieldDefinition().getName()) + // rely on defaulting in code registry + return false } @Override From b8bfd4bb03b5d3fffb0c9d9d1b24d45ecd40ba6f Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 25 Nov 2024 16:21:08 +1100 Subject: [PATCH 039/345] Use a singleton PropertyFetcher by default - tweaked test wiring and mocks --- src/main/java/graphql/schema/idl/MockedWiringFactory.java | 2 +- .../graphql/schema/idl/TestLiveMockedWiringFactory.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/graphql/schema/idl/MockedWiringFactory.java b/src/main/java/graphql/schema/idl/MockedWiringFactory.java index 3dc4b1ca2b..1f6c698e09 100644 --- a/src/main/java/graphql/schema/idl/MockedWiringFactory.java +++ b/src/main/java/graphql/schema/idl/MockedWiringFactory.java @@ -44,7 +44,7 @@ public boolean providesDataFetcher(FieldWiringEnvironment environment) { @Override public DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return new PropertyDataFetcher(environment.getFieldDefinition().getName()); + return PropertyDataFetcher.singleton(); } @Override diff --git a/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy b/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy index 476c13ac13..d72a87417d 100644 --- a/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy +++ b/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy @@ -74,7 +74,7 @@ class TestLiveMockedWiringFactory implements WiringFactory { @Override DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return new PropertyDataFetcher(environment.getFieldDefinition().getName()) + return PropertyDataFetcher.singleton() } @Override From 70bac09b89a6970137b6ea4e3480f53ae9a17ffe Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 25 Nov 2024 17:38:50 +1100 Subject: [PATCH 040/345] Use a singleton PropertyFetcher by default - now with SchemaGeneratorHelper that does NOT put in an entry for defaulted values --- .../graphql/schema/DataFetcherFactory.java | 13 ++++++++++ .../graphql/schema/GraphQLCodeRegistry.java | 12 ++++++--- .../graphql/schema/PropertyDataFetcher.java | 12 ++++++++- .../schema/idl/SchemaGeneratorHelper.java | 26 ++++++++++++------- 4 files changed, 49 insertions(+), 14 deletions(-) diff --git a/src/main/java/graphql/schema/DataFetcherFactory.java b/src/main/java/graphql/schema/DataFetcherFactory.java index ece0dcb6ea..4a3263b38a 100644 --- a/src/main/java/graphql/schema/DataFetcherFactory.java +++ b/src/main/java/graphql/schema/DataFetcherFactory.java @@ -22,4 +22,17 @@ public interface DataFetcherFactory { */ DataFetcher get(DataFetcherFactoryEnvironment environment); + /** + * Returns a {@link graphql.schema.DataFetcher} given the field definition + * which is cheaper in object allocation terms. + * + * @param fieldDefinition the field that needs the data fetcher + * + * @return a data fetcher + */ + + default DataFetcher getViaField(GraphQLFieldDefinition fieldDefinition) { + return null; + } + } diff --git a/src/main/java/graphql/schema/GraphQLCodeRegistry.java b/src/main/java/graphql/schema/GraphQLCodeRegistry.java index 98877bae36..a59c8a25ee 100644 --- a/src/main/java/graphql/schema/GraphQLCodeRegistry.java +++ b/src/main/java/graphql/schema/GraphQLCodeRegistry.java @@ -95,9 +95,15 @@ private static DataFetcher getDataFetcherImpl(FieldCoordinates coordinates, G dataFetcherFactory = defaultDataFetcherFactory; } } - return dataFetcherFactory.get(newDataFetchingFactoryEnvironment() - .fieldDefinition(fieldDefinition) - .build()); + // call direct from the field - cheaper to not make a new environment object + DataFetcher dataFetcher = dataFetcherFactory.getViaField(fieldDefinition); + if (dataFetcher == null) { + DataFetcherFactoryEnvironment factoryEnvironment = newDataFetchingFactoryEnvironment() + .fieldDefinition(fieldDefinition) + .build(); + dataFetcher = dataFetcherFactory.get(factoryEnvironment); + } + return dataFetcher; } private static boolean hasDataFetcherImpl(FieldCoordinates coords, Map> dataFetcherMap, Map> systemDataFetcherMap) { diff --git a/src/main/java/graphql/schema/PropertyDataFetcher.java b/src/main/java/graphql/schema/PropertyDataFetcher.java index 48aca93176..962244dedf 100644 --- a/src/main/java/graphql/schema/PropertyDataFetcher.java +++ b/src/main/java/graphql/schema/PropertyDataFetcher.java @@ -40,7 +40,17 @@ Object fetchImpl(String propertyName, Object source, GraphQLFieldDefinition fiel } }; - private static final DataFetcherFactory SINGLETON_FETCHER_FACTORY = environment -> SINGLETON_FETCHER; + private static final DataFetcherFactory SINGLETON_FETCHER_FACTORY = new DataFetcherFactory() { + @Override + public DataFetcher get(DataFetcherFactoryEnvironment environment) { + return SINGLETON_FETCHER; + } + + @Override + public DataFetcher getViaField(GraphQLFieldDefinition fieldDefinition) { + return SINGLETON_FETCHER; + } + }; /** * This returns the same singleton {@link PropertyDataFetcher} that fetches property values diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java index 68bfdd5683..efcb15d0ef 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java @@ -801,23 +801,27 @@ GraphQLFieldDefinition buildField(BuildContext buildCtx, TypeDefinition paren // if they have already wired in a fetcher - then leave it alone FieldCoordinates coordinates = FieldCoordinates.coordinates(parentType.getName(), fieldDefinition.getName()); if (!buildCtx.getCodeRegistry().hasDataFetcher(coordinates)) { - DataFetcherFactory dataFetcherFactory = buildDataFetcherFactory(buildCtx, + Optional> dataFetcherFactory = buildDataFetcherFactory(buildCtx, parentType, fieldDef, fieldType, appliedDirectives.first, appliedDirectives.second); - buildCtx.getCodeRegistry().dataFetcher(coordinates, dataFetcherFactory); + + // if the dataFetcherFactory is empty, then it must have been the code registry default one + // and hence we don't need to make a "map entry" in the code registry since it will be defaulted + // anyway + dataFetcherFactory.ifPresent(fetcherFactory -> buildCtx.getCodeRegistry().dataFetcher(coordinates, fetcherFactory)); } return directivesObserve(buildCtx, fieldDefinition); } - private DataFetcherFactory buildDataFetcherFactory(BuildContext buildCtx, - TypeDefinition parentType, - FieldDefinition fieldDef, - GraphQLOutputType fieldType, - List directives, - List appliedDirectives) { + private Optional> buildDataFetcherFactory(BuildContext buildCtx, + TypeDefinition parentType, + FieldDefinition fieldDef, + GraphQLOutputType fieldType, + List directives, + List appliedDirectives) { String fieldName = fieldDef.getName(); String parentTypeName = parentType.getName(); TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); @@ -847,7 +851,9 @@ private DataFetcherFactory buildDataFetcherFactory(BuildContext buildCtx, if (dataFetcher == null) { DataFetcherFactory codeRegistryDFF = codeRegistry.getDefaultDataFetcherFactory(); if (codeRegistryDFF != null) { - return codeRegistryDFF; + // this will use the default of the code registry when its + // asked for at runtime + return Optional.empty(); } dataFetcher = dataFetcherOfLastResort(); } @@ -856,7 +862,7 @@ private DataFetcherFactory buildDataFetcherFactory(BuildContext buildCtx, } dataFetcherFactory = DataFetcherFactories.useDataFetcher(dataFetcher); } - return dataFetcherFactory; + return Optional.of(dataFetcherFactory); } GraphQLArgument buildArgument(BuildContext buildCtx, InputValueDefinition valueDefinition) { From b8b2e2614df37dc88063a51c1c91a2e58eb058bd Mon Sep 17 00:00:00 2001 From: bbaker Date: Tue, 26 Nov 2024 07:29:08 +1100 Subject: [PATCH 041/345] Use a singleton PropertyFetcher by default - now with SchemaGeneratorHelper that does NOT put in an entry for defaulted values- DFF tweaked --- .../java/graphql/schema/DataFetcherFactories.java | 12 +++++++++++- .../graphql/schema/DataFetcherFactoriesTest.groovy | 10 ++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/schema/DataFetcherFactories.java b/src/main/java/graphql/schema/DataFetcherFactories.java index e9f6a88bb5..28460a7be7 100644 --- a/src/main/java/graphql/schema/DataFetcherFactories.java +++ b/src/main/java/graphql/schema/DataFetcherFactories.java @@ -20,7 +20,17 @@ public class DataFetcherFactories { * @return a data fetcher factory that always returns the provided data fetcher */ public static DataFetcherFactory useDataFetcher(DataFetcher dataFetcher) { - return fieldDefinition -> dataFetcher; + return new DataFetcherFactory() { + @Override + public DataFetcher get(DataFetcherFactoryEnvironment environment) { + return dataFetcher; + } + + @Override + public DataFetcher getViaField(GraphQLFieldDefinition fieldDefinition) { + return dataFetcher; + } + }; } /** diff --git a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy index 5050ba0ef1..369e1123ba 100644 --- a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy @@ -37,4 +37,14 @@ class DataFetcherFactoriesTest extends Specification { then: value == "goodbye" } + + def "will use given df via field"() { + def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) + + when: + def value = fetcherFactory.getViaField(null).get(null) + + then: + value == "goodbye" + } } From 7af39a9d26db13185f92c53896c886e8a605ec94 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 26 Nov 2024 10:04:57 +1000 Subject: [PATCH 042/345] add publish commit workflow --- .github/workflows/publish_commit.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/publish_commit.yml diff --git a/.github/workflows/publish_commit.yml b/.github/workflows/publish_commit.yml new file mode 100644 index 0000000000..28ec3aabc1 --- /dev/null +++ b/.github/workflows/publish_commit.yml @@ -0,0 +1,17 @@ +name: Publish Commit for performance testing +on: + push: + branches: + - master +permissions: + id-token: write # This is required for requesting the JWT + contents: read # This is required for actions/checkout +jobs: + publishCommit: + runs-on: ubuntu-latest + steps: + - uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: GitHubActionGrahQLJava + aws-region: "ap-southeast-2" + - run: aws sns publish --topic-arn "arn:aws:sns:ap-southeast-2:637423498965:graphql-java-commits.fifo" --message $GITHUB_SHA \ No newline at end of file From ab3e767ef25c98ccf2e9cfcc2e2f7eaa131093c4 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 26 Nov 2024 12:02:46 +1000 Subject: [PATCH 043/345] add publish commit workflow --- .github/workflows/publish_commit.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish_commit.yml b/.github/workflows/publish_commit.yml index 28ec3aabc1..9d6bc23dfd 100644 --- a/.github/workflows/publish_commit.yml +++ b/.github/workflows/publish_commit.yml @@ -12,6 +12,6 @@ jobs: steps: - uses: aws-actions/configure-aws-credentials@v4 with: - role-to-assume: GitHubActionGrahQLJava + role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava aws-region: "ap-southeast-2" - run: aws sns publish --topic-arn "arn:aws:sns:ap-southeast-2:637423498965:graphql-java-commits.fifo" --message $GITHUB_SHA \ No newline at end of file From 488aa0afe098b3ead71b6d9e651f73f5c9e6eb20 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 26 Nov 2024 12:12:13 +1000 Subject: [PATCH 044/345] add publish commit workflow --- .github/workflows/publish_commit.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish_commit.yml b/.github/workflows/publish_commit.yml index 9d6bc23dfd..fdb1747c26 100644 --- a/.github/workflows/publish_commit.yml +++ b/.github/workflows/publish_commit.yml @@ -1,4 +1,4 @@ -name: Publish Commit for performance testing +name: Publish Commit SHA for performance testing on: push: branches: @@ -14,4 +14,4 @@ jobs: with: role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava aws-region: "ap-southeast-2" - - run: aws sns publish --topic-arn "arn:aws:sns:ap-southeast-2:637423498965:graphql-java-commits.fifo" --message $GITHUB_SHA \ No newline at end of file + - run: aws sns publish --topic-arn "arn:aws:sns:ap-southeast-2:637423498965:graphql-java-commits.fifo" --message $GITHUB_SHA --message-group-id "graphql-java-commits" \ No newline at end of file From 56130cc78ad6e9fc576432e390c15fee3b342b2a Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 26 Nov 2024 13:18:26 +1000 Subject: [PATCH 045/345] remove support by yourkit --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 893dd2f6f7..ffb1d72984 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,3 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by - -![YourKit](https://www.yourkit.com/images/yklogo.png) - -[YourKit](https://www.yourkit.com/) supports this project by providing the YourKit Java Profiler. From 45aab4e79553151a8727f4882b7482044d2dc0f1 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 26 Nov 2024 13:30:02 +1000 Subject: [PATCH 046/345] test --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ffb1d72984..c62746dcf6 100644 --- a/README.md +++ b/README.md @@ -34,3 +34,4 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by + From 424cac7dad93c6009c7d460c3adacf0434dfecde Mon Sep 17 00:00:00 2001 From: bbaker Date: Tue, 26 Nov 2024 15:01:02 +1100 Subject: [PATCH 047/345] Use a singleton PropertyFetcher by default - broke out the code into a SingletonPropertyDataFetcher class --- .../graphql/schema/GraphQLCodeRegistry.java | 4 +- .../graphql/schema/PropertyDataFetcher.java | 53 ++------------ .../schema/SingletonPropertyDataFetcher.java | 60 ++++++++++++++++ .../schema/idl/MockedWiringFactory.java | 3 +- .../schema/idl/SchemaGeneratorHelper.java | 3 +- .../groovy/graphql/DataFetcherTest.groovy | 54 +++++++++++--- .../graphql/LargeSchemaDataFetcherTest.groovy | 6 +- .../InstrumentationTest.groovy | 3 +- .../schema/GraphQLCodeRegistryTest.groovy | 19 ++--- .../graphql/schema/GraphQLSchemaTest.groovy | 2 +- .../schema/PropertyDataFetcherTest.groovy | 70 +++++++++---------- .../idl/TestLiveMockedWiringFactory.groovy | 3 +- 12 files changed, 167 insertions(+), 113 deletions(-) create mode 100644 src/main/java/graphql/schema/SingletonPropertyDataFetcher.java diff --git a/src/main/java/graphql/schema/GraphQLCodeRegistry.java b/src/main/java/graphql/schema/GraphQLCodeRegistry.java index 98877bae36..240dd4a4eb 100644 --- a/src/main/java/graphql/schema/GraphQLCodeRegistry.java +++ b/src/main/java/graphql/schema/GraphQLCodeRegistry.java @@ -149,7 +149,7 @@ private static TypeResolver getTypeResolverForUnion(GraphQLUnionType parentType, if (typeResolver == null) { typeResolver = parentType.getTypeResolver(); } - return assertNotNull(typeResolver, "There must be a type resolver for union %s",parentType.getName()); + return assertNotNull(typeResolver, "There must be a type resolver for union %s", parentType.getName()); } /** @@ -189,7 +189,7 @@ public static class Builder { private final Map> systemDataFetcherMap = new LinkedHashMap<>(); private final Map typeResolverMap = new HashMap<>(); private GraphqlFieldVisibility fieldVisibility = DEFAULT_FIELD_VISIBILITY; - private DataFetcherFactory defaultDataFetcherFactory = PropertyDataFetcher.singletonFactory(); + private DataFetcherFactory defaultDataFetcherFactory = SingletonPropertyDataFetcher.singletonFactory(); private boolean changed = false; private Builder() { diff --git a/src/main/java/graphql/schema/PropertyDataFetcher.java b/src/main/java/graphql/schema/PropertyDataFetcher.java index 48aca93176..77cfdcf062 100644 --- a/src/main/java/graphql/schema/PropertyDataFetcher.java +++ b/src/main/java/graphql/schema/PropertyDataFetcher.java @@ -33,35 +33,6 @@ @PublicApi public class PropertyDataFetcher implements LightDataFetcher { - private static final PropertyDataFetcher SINGLETON_FETCHER = new PropertyDataFetcher<>() { - @Override - Object fetchImpl(String propertyName, Object source, GraphQLFieldDefinition fieldDefinition, Supplier environmentSupplier) { - return super.fetchImpl(fieldDefinition.getName(), source, fieldDefinition, environmentSupplier); - } - }; - - private static final DataFetcherFactory SINGLETON_FETCHER_FACTORY = environment -> SINGLETON_FETCHER; - - /** - * This returns the same singleton {@link PropertyDataFetcher} that fetches property values - * based on the name of the field that iis passed into it. - * - * @return a singleton property data fetcher - */ - public static PropertyDataFetcher singleton() { - return SINGLETON_FETCHER; - } - - /** - * This returns the same singleton {@link DataFetcherFactory} that returns the value of {@link #singleton()} - * - * @return a singleton data fetcher factory - */ - public static DataFetcherFactory singletonFactory() { - return SINGLETON_FETCHER_FACTORY; - } - - private final String propertyName; private final Function function; @@ -82,11 +53,6 @@ private PropertyDataFetcher(Function function) { this.propertyName = null; } - private PropertyDataFetcher() { - this.function = null; - this.propertyName = null; - } - /** * Returns a data fetcher that will use the property name to examine the {@link DataFetchingEnvironment#getSource()} object * for a getter method or field with that name, or if it's a map, it will look up a value using @@ -143,26 +109,17 @@ public String getPropertyName() { @Override public T get(GraphQLFieldDefinition fieldDefinition, Object source, Supplier environmentSupplier) throws Exception { - return fetchImpl(propertyName, source, fieldDefinition, environmentSupplier); + return getImpl(source, fieldDefinition.getType(), environmentSupplier); } @Override public T get(DataFetchingEnvironment environment) { - return fetchImpl(propertyName, environment.getSource(), environment.getFieldDefinition(), () -> environment); + Object source = environment.getSource(); + return getImpl(source, environment.getFieldType(), () -> environment); } - /** - * This is our implementation of property fetching - * - * @param propertyName the name of the property to fetch in the source object - * @param source the source object to fetch from - * @param fieldDefinition the field definition of the field being fetched for - * @param environmentSupplier a supplied of thee {@link DataFetchingEnvironment} - * - * @return a value of type T - */ @SuppressWarnings("unchecked") - T fetchImpl(String propertyName, Object source, GraphQLFieldDefinition fieldDefinition, Supplier environmentSupplier) { + private T getImpl(Object source, GraphQLOutputType fieldDefinition, Supplier environmentSupplier) { if (source == null) { return null; } @@ -171,7 +128,7 @@ T fetchImpl(String propertyName, Object source, GraphQLFieldDefinition fieldDefi return (T) function.apply(source); } - return (T) PropertyDataFetcherHelper.getPropertyValue(propertyName, source, fieldDefinition.getType(), environmentSupplier); + return (T) PropertyDataFetcherHelper.getPropertyValue(propertyName, source, fieldDefinition, environmentSupplier); } /** diff --git a/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java b/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java new file mode 100644 index 0000000000..45af96c843 --- /dev/null +++ b/src/main/java/graphql/schema/SingletonPropertyDataFetcher.java @@ -0,0 +1,60 @@ +package graphql.schema; + +import java.util.function.Supplier; + +/** + * The {@link SingletonPropertyDataFetcher} is much like the {@link PropertyDataFetcher} except + * that it is designed to only ever fetch properties via the name of the field passed in. + *

+ * This uses the same code as {@link PropertyDataFetcher} and hence is also controlled + * by static methods such as {@link PropertyDataFetcher#setUseNegativeCache(boolean)} + * + * @param for two + */ +public class SingletonPropertyDataFetcher implements LightDataFetcher { + + private static final SingletonPropertyDataFetcher SINGLETON_FETCHER = new SingletonPropertyDataFetcher<>(); + + private static final DataFetcherFactory SINGLETON_FETCHER_FACTORY = environment -> SINGLETON_FETCHER; + + /** + * This returns the same singleton {@link LightDataFetcher} that fetches property values + * based on the name of the field that iis passed into it. + * + * @return a singleton property data fetcher + */ + public static LightDataFetcher singleton() { + return SINGLETON_FETCHER; + } + + /** + * This returns the same singleton {@link DataFetcherFactory} that returns the value of {@link #singleton()} + * + * @return a singleton data fetcher factory + */ + public static DataFetcherFactory singletonFactory() { + return SINGLETON_FETCHER_FACTORY; + } + + private SingletonPropertyDataFetcher() { + } + + @Override + public T get(GraphQLFieldDefinition fieldDefinition, Object sourceObject, Supplier environmentSupplier) throws Exception { + return fetchImpl(fieldDefinition, sourceObject, environmentSupplier); + } + + @Override + public T get(DataFetchingEnvironment environment) throws Exception { + return fetchImpl(environment.getFieldDefinition(), environment.getSource(), () -> environment); + } + + private T fetchImpl(GraphQLFieldDefinition fieldDefinition, Object source, Supplier environmentSupplier) { + if (source == null) { + return null; + } + // this is the same code that PropertyDataFetcher uses and hence unit tests for it include this one + //noinspection unchecked + return (T) PropertyDataFetcherHelper.getPropertyValue(fieldDefinition.getName(), source, fieldDefinition.getType(), environmentSupplier); + } +} diff --git a/src/main/java/graphql/schema/idl/MockedWiringFactory.java b/src/main/java/graphql/schema/idl/MockedWiringFactory.java index 1f6c698e09..fcfca1f474 100644 --- a/src/main/java/graphql/schema/idl/MockedWiringFactory.java +++ b/src/main/java/graphql/schema/idl/MockedWiringFactory.java @@ -8,6 +8,7 @@ import graphql.schema.DataFetcher; import graphql.schema.GraphQLScalarType; import graphql.schema.PropertyDataFetcher; +import graphql.schema.SingletonPropertyDataFetcher; import graphql.schema.TypeResolver; @PublicApi @@ -44,7 +45,7 @@ public boolean providesDataFetcher(FieldWiringEnvironment environment) { @Override public DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return PropertyDataFetcher.singleton(); + return SingletonPropertyDataFetcher.singleton(); } @Override diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java index 68bfdd5683..241416ff35 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java @@ -57,6 +57,7 @@ import graphql.schema.GraphQLUnionType; import graphql.schema.GraphqlTypeComparatorRegistry; import graphql.schema.PropertyDataFetcher; +import graphql.schema.SingletonPropertyDataFetcher; import graphql.schema.TypeResolver; import graphql.schema.TypeResolverProxy; import graphql.schema.idl.errors.NotAnInputTypeError; @@ -1088,7 +1089,7 @@ private Optional getOperationNamed(String name, Map dataFetcherOfLastResort() { - return PropertyDataFetcher.singleton(); + return SingletonPropertyDataFetcher.singleton(); } private List directivesOf(List> typeDefinitions) { diff --git a/src/test/groovy/graphql/DataFetcherTest.groovy b/src/test/groovy/graphql/DataFetcherTest.groovy index e06b134489..2f57c41efd 100644 --- a/src/test/groovy/graphql/DataFetcherTest.groovy +++ b/src/test/groovy/graphql/DataFetcherTest.groovy @@ -4,6 +4,7 @@ package graphql import graphql.schema.GraphQLFieldDefinition import graphql.schema.GraphQLOutputType import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import spock.lang.Specification import static graphql.Scalars.GraphQLBoolean @@ -57,63 +58,94 @@ class DataFetcherTest extends Specification { } def env(String propertyName, GraphQLOutputType type) { - def fieldDefinition = GraphQLFieldDefinition.newFieldDefinition().name(propertyName).type(type).build() + GraphQLFieldDefinition fieldDefinition = mkField(propertyName, type) newDataFetchingEnvironment().source(dataHolder).fieldType(type).fieldDefinition(fieldDefinition).build() } + def mkField(String propertyName, GraphQLOutputType type) { + GraphQLFieldDefinition.newFieldDefinition().name(propertyName).type(type).build() + } + def "get property value"() { given: def environment = env("property", GraphQLString) + def field = mkField("property", GraphQLString) when: def result = fetcher.get(environment) then: result == "propertyValue" + when: + result = fetcher.get(field, dataHolder, { environment }) + then: + result == "propertyValue" + where: - fetcher | _ - new PropertyDataFetcher("property") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("property") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get Boolean property value"() { given: def environment = env("booleanField", GraphQLBoolean) + def field = mkField("booleanField", GraphQLBoolean) + when: def result = fetcher.get(environment) then: result == true + when: + result = fetcher.get(field, dataHolder, { environment }) + then: + result == true + where: - fetcher | _ - new PropertyDataFetcher("booleanField") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("booleanField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get Boolean property value with get"() { given: def environment = env("booleanFieldWithGet", GraphQLBoolean) + def field = mkField("booleanFieldWithGet", GraphQLBoolean) + when: def result = fetcher.get(environment) then: result == false + when: + result = fetcher.get(field, dataHolder, { environment }) + then: + result == false + where: fetcher | _ new PropertyDataFetcher("booleanFieldWithGet") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } def "get public field value as property"() { given: def environment = env("publicField", GraphQLString) + def field = mkField("publicField", GraphQLString) + when: def result = fetcher.get(environment) then: result == "publicValue" + when: + result = fetcher.get(field, dataHolder, { environment }) + then: + result == "publicValue" + where: - fetcher | _ - new PropertyDataFetcher("publicField") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("publicField") | _ + SingletonPropertyDataFetcher.singleton() | _ } } diff --git a/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy b/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy index b445c09ff3..1aa971c6e7 100644 --- a/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy +++ b/src/test/groovy/graphql/LargeSchemaDataFetcherTest.groovy @@ -4,13 +4,14 @@ package graphql import graphql.schema.FieldCoordinates import graphql.schema.GraphQLFieldDefinition import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import spock.lang.Specification class LargeSchemaDataFetcherTest extends Specification { def howManyFields = 100_000 - def "large schema with lots of fields has a property data fetcher by default"() { + def "large schema with lots of fields has the same property data fetcher by default"() { def sdl = """ type Query { ${mkFields()} @@ -20,8 +21,7 @@ class LargeSchemaDataFetcherTest extends Specification { when: def schema = TestUtil.schema(sdl) def codeRegistry = schema.getCodeRegistry() - - def singletonDF = PropertyDataFetcher.singleton() + def singletonDF = SingletonPropertyDataFetcher.singleton() then: diff --git a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy index a1a85b617e..bd5237700c 100644 --- a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy @@ -13,6 +13,7 @@ import graphql.language.AstPrinter import graphql.parser.Parser import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment +import graphql.schema.LightDataFetcher import graphql.schema.PropertyDataFetcher import graphql.schema.StaticDataFetcher import org.awaitility.Awaitility @@ -99,7 +100,7 @@ class InstrumentationTest extends Specification { instrumentation.dfClasses.size() == 2 instrumentation.dfClasses[0] == StaticDataFetcher.class - PropertyDataFetcher.isAssignableFrom(instrumentation.dfClasses[1]) + LightDataFetcher.class.isAssignableFrom(instrumentation.dfClasses[1]) instrumentation.dfInvocations.size() == 2 diff --git a/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy b/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy index eef53c9794..d3266bf336 100644 --- a/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy @@ -5,6 +5,7 @@ import graphql.GraphQL import graphql.Scalars import graphql.StarWarsSchema import graphql.TestUtil +import graphql.TrivialDataFetcher import graphql.TypeResolutionEnvironment import graphql.schema.visibility.GraphqlFieldVisibility import spock.lang.Specification @@ -98,7 +99,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistryBuilder.getDataFetcher(objectType("parentType3"), field("fieldD")) as NamedDF).name == "D" (codeRegistryBuilder.getDataFetcher(objectType("parentType3"), field("fieldE")) as NamedDF).name == "E" - codeRegistryBuilder.getDataFetcher(objectType("parentType2"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistryBuilder.getDataFetcher(objectType("parentType2"), field("A")) instanceof SingletonPropertyDataFetcher // a default one when: def codeRegistry = codeRegistryBuilder.build() @@ -108,7 +109,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistry.getDataFetcher(objectType("parentType3"), field("fieldD")) as NamedDF).name == "D" (codeRegistry.getDataFetcher(objectType("parentType3"), field("fieldE")) as NamedDF).name == "E" - codeRegistry.getDataFetcher(objectType("parentType2"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistry.getDataFetcher(objectType("parentType2"), field("A")) instanceof SingletonPropertyDataFetcher // a default one } def "data fetchers can be retrieved using field coordinates"() { @@ -125,7 +126,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldD"), field("fieldD")) as NamedDF).name == "D" (codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldE"), field("fieldE")) as NamedDF).name == "E" - codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistryBuilder.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof SingletonPropertyDataFetcher // a default one when: def codeRegistry = codeRegistryBuilder.build() @@ -135,7 +136,7 @@ class GraphQLCodeRegistryTest extends Specification { (codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldD"), field("fieldD")) as NamedDF).name == "D" (codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType3", "fieldE"), field("fieldE")) as NamedDF).name == "E" - codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof PropertyDataFetcher // a default one + codeRegistry.getDataFetcher(FieldCoordinates.coordinates("parentType2", "A"), field("A")) instanceof SingletonPropertyDataFetcher // a default one } def "records type resolvers against unions and interfaces"() { @@ -179,13 +180,13 @@ class GraphQLCodeRegistryTest extends Specification { (schema.getCodeRegistry().getFieldVisibility() as NamedFieldVisibility).name == "B" } - def "PropertyDataFetcher is the default data fetcher used when no data fetcher is available"() { + def "SingletonPropertyDataFetcher is the default data fetcher used when no data fetcher is available"() { when: def codeRegistry = GraphQLCodeRegistry.newCodeRegistry().build() def dataFetcher = codeRegistry.getDataFetcher(StarWarsSchema.humanType, StarWarsSchema.humanType.getFieldDefinition("name")) then: - dataFetcher instanceof PropertyDataFetcher + dataFetcher instanceof SingletonPropertyDataFetcher } def "custom DF can be the default data fetcher used when no data fetcher is available"() { @@ -251,8 +252,8 @@ class GraphQLCodeRegistryTest extends Specification { er.errors.isEmpty() er.data == [codeRegistryField: "codeRegistryFieldValue", nonCodeRegistryField: "nonCodeRegistryFieldValue", neitherSpecified: "neitherSpecifiedValue"] - // when nothing is specified then its a plain old PropertyDataFetcher - schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof PropertyDataFetcher + // when nothing is specified then its a plain old SingletonPropertyDataFetcher + schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof SingletonPropertyDataFetcher } @@ -287,7 +288,7 @@ class GraphQLCodeRegistryTest extends Specification { // when nothing is specified then its a plain old PropertyDataFetcher def queryType = schema.getObjectType("Query") - schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof PropertyDataFetcher + schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof LightDataFetcher } def "will detect system versus user data fetchers"() { diff --git a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy index bf18e083c2..f3eabc1eeb 100644 --- a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy @@ -508,7 +508,7 @@ class GraphQLSchemaTest extends Specification { def newDF = newRegistry.getDataFetcher(dogType, dogType.getField("name")) newDF !== nameDF - newDF instanceof PropertyDataFetcher // defaulted in + newDF instanceof LightDataFetcher // defaulted in } def "can get by field co-ordinate"() { diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy index ceadabe88a..7903f14229 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherTest.groovy @@ -18,7 +18,7 @@ import java.util.function.Function import static graphql.schema.DataFetchingEnvironmentImpl.newDataFetchingEnvironment /** - * Note : That `new PropertyDataFetcher("someProperty")` and `PropertyDataFetcher.singleton()` + * Note : That `new PropertyDataFetcher("someProperty")` and `SingletonPropertyDataFetcher.singleton()` * should really be the equivalent since they both go via `PropertyDataFetcherHelper.getPropertyValue` * under the covers. * @@ -56,9 +56,9 @@ class PropertyDataFetcherTest extends Specification { fetcher.get(environment) == null where: - fetcher | _ - new PropertyDataFetcher("someProperty") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("someProperty") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "function based fetcher works with non null source"() { @@ -87,7 +87,7 @@ class PropertyDataFetcherTest extends Specification { where: fetcher | _ PropertyDataFetcher.fetching("mapProperty") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via public getter with private subclass"() { @@ -100,7 +100,7 @@ class PropertyDataFetcherTest extends Specification { where: fetcher | _ new PropertyDataFetcher("packageProtectedProperty") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via method that isn't present"() { @@ -116,7 +116,7 @@ class PropertyDataFetcherTest extends Specification { where: fetcher | _ new PropertyDataFetcher("valueNotPresent") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } @@ -133,7 +133,7 @@ class PropertyDataFetcherTest extends Specification { where: fetcher | _ new PropertyDataFetcher("privateProperty") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } @@ -151,7 +151,7 @@ class PropertyDataFetcherTest extends Specification { where: fetcher | _ new PropertyDataFetcher("privateProperty") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } @@ -207,7 +207,7 @@ class PropertyDataFetcherTest extends Specification { def environment = env("recordProperty", new RecordLikeClass()) when: - def fetcher = PropertyDataFetcher.singleton() + def fetcher = SingletonPropertyDataFetcher.singleton() def result = fetcher.get(environment) then: result == "recordProperty" @@ -226,7 +226,7 @@ class PropertyDataFetcherTest extends Specification { where: fetcher | _ new PropertyDataFetcher("recordProperty") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via record method without lambda support"() { @@ -264,9 +264,9 @@ class PropertyDataFetcherTest extends Specification { result == "recordLike" where: - fetcher | _ - new PropertyDataFetcher("recordLike") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("recordLike") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via public method"() { @@ -282,7 +282,7 @@ class PropertyDataFetcherTest extends Specification { where: fetcher | _ new PropertyDataFetcher("publicProperty") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } @@ -316,7 +316,7 @@ class PropertyDataFetcherTest extends Specification { where: fetcher | _ new PropertyDataFetcher("propertyOnlyDefinedOnPackageProtectedImpl") | _ - PropertyDataFetcher.singleton() | _ + SingletonPropertyDataFetcher.singleton() | _ } @@ -330,9 +330,9 @@ class PropertyDataFetcherTest extends Specification { result == "publicFieldValue" where: - fetcher | _ - new PropertyDataFetcher("publicField") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("publicField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via private field"() { @@ -344,9 +344,9 @@ class PropertyDataFetcherTest extends Specification { result == "privateFieldValue" where: - fetcher | _ - new PropertyDataFetcher("privateField") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("privateField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch via private field when setAccessible OFF"() { @@ -359,9 +359,9 @@ class PropertyDataFetcherTest extends Specification { result == null where: - fetcher | _ - new PropertyDataFetcher("privateField") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("privateField") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "fetch when caching is in place has no bad effects"() { @@ -687,9 +687,9 @@ class PropertyDataFetcherTest extends Specification { result == "bar" where: - fetcher | _ - new PropertyDataFetcher("something") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("something") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "issue 3247 - record like statics should not be used"() { @@ -711,9 +711,9 @@ class PropertyDataFetcherTest extends Specification { result == true where: - fetcher | _ - new PropertyDataFetcher("success") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("success") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "issue 3247 - record like statics should not be found"() { @@ -735,9 +735,9 @@ class PropertyDataFetcherTest extends Specification { result == null where: - fetcher | _ - new PropertyDataFetcher("message") | _ - PropertyDataFetcher.singleton() | _ + fetcher | _ + new PropertyDataFetcher("message") | _ + SingletonPropertyDataFetcher.singleton() | _ } def "issue 3247 - getter statics should be found"() { @@ -804,7 +804,7 @@ class PropertyDataFetcherTest extends Specification { propValue == 'aValue' when: - fetcher = PropertyDataFetcher.singleton() + fetcher = SingletonPropertyDataFetcher.singleton() propValue = fetcher.get(environment) then: diff --git a/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy b/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy index d72a87417d..fe12c3a1b1 100644 --- a/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy +++ b/src/test/groovy/graphql/schema/idl/TestLiveMockedWiringFactory.groovy @@ -12,6 +12,7 @@ import graphql.schema.GraphQLScalarType import graphql.schema.GraphQLTypeUtil import graphql.schema.GraphQLUnionType import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import graphql.schema.TypeResolver class TestLiveMockedWiringFactory implements WiringFactory { @@ -74,7 +75,7 @@ class TestLiveMockedWiringFactory implements WiringFactory { @Override DataFetcher getDataFetcher(FieldWiringEnvironment environment) { - return PropertyDataFetcher.singleton() + return SingletonPropertyDataFetcher.singleton() } @Override From 886d745e762a6c43a524bd97dc75494c301f0856 Mon Sep 17 00:00:00 2001 From: bbaker Date: Tue, 26 Nov 2024 15:09:04 +1100 Subject: [PATCH 048/345] Use a singleton PropertyFetcher by default - tweaked tests --- .../execution/instrumentation/InstrumentationTest.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy index bd5237700c..a98cf833e2 100644 --- a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy @@ -15,6 +15,7 @@ import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.LightDataFetcher import graphql.schema.PropertyDataFetcher +import graphql.schema.SingletonPropertyDataFetcher import graphql.schema.StaticDataFetcher import org.awaitility.Awaitility import org.jetbrains.annotations.NotNull @@ -100,7 +101,7 @@ class InstrumentationTest extends Specification { instrumentation.dfClasses.size() == 2 instrumentation.dfClasses[0] == StaticDataFetcher.class - LightDataFetcher.class.isAssignableFrom(instrumentation.dfClasses[1]) + instrumentation.dfClasses[1] == SingletonPropertyDataFetcher.class instrumentation.dfInvocations.size() == 2 From 9ca4d3069856007fde9c81a8290e8b017b66a99b Mon Sep 17 00:00:00 2001 From: bbaker Date: Tue, 26 Nov 2024 15:16:55 +1100 Subject: [PATCH 049/345] Use a singleton PropertyFetcher by default - tweaked tests moar --- src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy b/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy index d3266bf336..e528f5619f 100644 --- a/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLCodeRegistryTest.groovy @@ -288,7 +288,7 @@ class GraphQLCodeRegistryTest extends Specification { // when nothing is specified then its a plain old PropertyDataFetcher def queryType = schema.getObjectType("Query") - schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof LightDataFetcher + schema.getCodeRegistry().getDataFetcher(queryType, queryType.getFieldDefinition("neitherSpecified")) instanceof SingletonPropertyDataFetcher } def "will detect system versus user data fetchers"() { From b13b7c8309bd428358bcfc8ddb2e3edd49689659 Mon Sep 17 00:00:00 2001 From: bbaker Date: Tue, 26 Nov 2024 15:30:26 +1100 Subject: [PATCH 050/345] Use a singleton PropertyFetcher by default - deprecated DFF method --- src/main/java/graphql/schema/DataFetcherFactories.java | 7 ++++--- src/main/java/graphql/schema/DataFetcherFactory.java | 5 ++++- .../java/graphql/schema/DataFetcherFactoryEnvironment.java | 4 ++++ src/main/java/graphql/schema/GraphQLCodeRegistry.java | 3 ++- .../groovy/graphql/schema/DataFetcherFactoriesTest.groovy | 4 ++-- .../groovy/graphql/schema/idl/SchemaGeneratorTest.groovy | 5 +++++ 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/main/java/graphql/schema/DataFetcherFactories.java b/src/main/java/graphql/schema/DataFetcherFactories.java index 28460a7be7..2345535d56 100644 --- a/src/main/java/graphql/schema/DataFetcherFactories.java +++ b/src/main/java/graphql/schema/DataFetcherFactories.java @@ -20,14 +20,15 @@ public class DataFetcherFactories { * @return a data fetcher factory that always returns the provided data fetcher */ public static DataFetcherFactory useDataFetcher(DataFetcher dataFetcher) { - return new DataFetcherFactory() { + //noinspection deprecation + return new DataFetcherFactory<>() { @Override public DataFetcher get(DataFetcherFactoryEnvironment environment) { return dataFetcher; } @Override - public DataFetcher getViaField(GraphQLFieldDefinition fieldDefinition) { + public DataFetcher get(GraphQLFieldDefinition fieldDefinition) { return dataFetcher; } }; @@ -42,7 +43,7 @@ public DataFetcher getViaField(GraphQLFieldDefinition fieldDefinition) { * * @return a new data fetcher that wraps the provided data fetcher */ - public static DataFetcher wrapDataFetcher(DataFetcher delegateDataFetcher, BiFunction mapFunction) { + public static DataFetcher wrapDataFetcher(DataFetcher delegateDataFetcher, BiFunction mapFunction) { return environment -> { Object value = delegateDataFetcher.get(environment); if (value instanceof CompletionStage) { diff --git a/src/main/java/graphql/schema/DataFetcherFactory.java b/src/main/java/graphql/schema/DataFetcherFactory.java index 4a3263b38a..9e7eafa872 100644 --- a/src/main/java/graphql/schema/DataFetcherFactory.java +++ b/src/main/java/graphql/schema/DataFetcherFactory.java @@ -19,7 +19,10 @@ public interface DataFetcherFactory { * @param environment the environment that needs the data fetcher * * @return a data fetcher + * + * @deprecated This method will go away at some point and {@link DataFetcherFactory#get(GraphQLFieldDefinition)} will be used */ + @Deprecated(since = "2024-11-26") DataFetcher get(DataFetcherFactoryEnvironment environment); /** @@ -31,7 +34,7 @@ public interface DataFetcherFactory { * @return a data fetcher */ - default DataFetcher getViaField(GraphQLFieldDefinition fieldDefinition) { + default DataFetcher get(GraphQLFieldDefinition fieldDefinition) { return null; } diff --git a/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java b/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java index 318b5f2bd3..7ff5aefb9a 100644 --- a/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java +++ b/src/main/java/graphql/schema/DataFetcherFactoryEnvironment.java @@ -5,8 +5,12 @@ /** * This is passed to a {@link graphql.schema.DataFetcherFactory} when it is invoked to * get a {@link graphql.schema.DataFetcher} + * + * @deprecated This class will go away at some point in the future since its pointless wrapper + * of a {@link GraphQLFieldDefinition} */ @PublicApi +@Deprecated(since = "2024-11-26") public class DataFetcherFactoryEnvironment { private final GraphQLFieldDefinition fieldDefinition; diff --git a/src/main/java/graphql/schema/GraphQLCodeRegistry.java b/src/main/java/graphql/schema/GraphQLCodeRegistry.java index 4d11ebecee..26574b819c 100644 --- a/src/main/java/graphql/schema/GraphQLCodeRegistry.java +++ b/src/main/java/graphql/schema/GraphQLCodeRegistry.java @@ -84,6 +84,7 @@ public boolean hasDataFetcher(FieldCoordinates coordinates) { return hasDataFetcherImpl(coordinates, dataFetcherMap, systemDataFetcherMap); } + @SuppressWarnings("deprecation") private static DataFetcher getDataFetcherImpl(FieldCoordinates coordinates, GraphQLFieldDefinition fieldDefinition, Map> dataFetcherMap, Map> systemDataFetcherMap, DataFetcherFactory defaultDataFetcherFactory) { assertNotNull(coordinates); assertNotNull(fieldDefinition); @@ -96,7 +97,7 @@ private static DataFetcher getDataFetcherImpl(FieldCoordinates coordinates, G } } // call direct from the field - cheaper to not make a new environment object - DataFetcher dataFetcher = dataFetcherFactory.getViaField(fieldDefinition); + DataFetcher dataFetcher = dataFetcherFactory.get(fieldDefinition); if (dataFetcher == null) { DataFetcherFactoryEnvironment factoryEnvironment = newDataFetchingFactoryEnvironment() .fieldDefinition(fieldDefinition) diff --git a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy index 369e1123ba..3fb58ed1e7 100644 --- a/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetcherFactoriesTest.groovy @@ -32,7 +32,7 @@ class DataFetcherFactoriesTest extends Specification { def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) when: - def value = fetcherFactory.get(null).get(null) + def value = fetcherFactory.get((GraphQLFieldDefinition)null).get(null) then: value == "goodbye" @@ -42,7 +42,7 @@ class DataFetcherFactoriesTest extends Specification { def fetcherFactory = DataFetcherFactories.useDataFetcher(pojoDF) when: - def value = fetcherFactory.getViaField(null).get(null) + def value = fetcherFactory.get((GraphQLFieldDefinition) null).get(null) then: value == "goodbye" diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy index d8895370c6..20000c8bc8 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy @@ -2282,6 +2282,11 @@ class SchemaGeneratorTest extends Specification { DataFetcher get(DataFetcherFactoryEnvironment environment) { return df } + + @Override + DataFetcher get(GraphQLFieldDefinition fieldDefinition) { + return df + } } GraphQLCodeRegistry codeRegistry = newCodeRegistry() From 1098c531f1aab6bed324029cbf5fec9e302e6c41 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 26 Nov 2024 15:57:08 +1000 Subject: [PATCH 051/345] test --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c62746dcf6..ffb1d72984 100644 --- a/README.md +++ b/README.md @@ -34,4 +34,3 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by - From 3488331a233a741313018cf7bce176f36a9420bd Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 27 Nov 2024 21:45:36 +1000 Subject: [PATCH 052/345] test --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ffb1d72984..c62746dcf6 100644 --- a/README.md +++ b/README.md @@ -34,3 +34,4 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by + From fa52b0fc9192334645d195fd031d489efbf0ed71 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 27 Nov 2024 21:48:24 +1000 Subject: [PATCH 053/345] test --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c62746dcf6..ffb1d72984 100644 --- a/README.md +++ b/README.md @@ -34,4 +34,3 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by - From 540d229fc8d94fe2a1e83736a86b0bb747a21fcf Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 27 Nov 2024 22:51:03 +1000 Subject: [PATCH 054/345] test --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ffb1d72984..c62746dcf6 100644 --- a/README.md +++ b/README.md @@ -34,3 +34,4 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by + From d84eb74bdc20893ce4e29d597de04f572b1840ca Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 28 Nov 2024 08:57:32 +1000 Subject: [PATCH 055/345] workflow to copy performance results --- .../workflows/commit_performance_result.yml | 30 +++++++++++++++++++ performance-results/.gitkeep | 0 2 files changed, 30 insertions(+) create mode 100644 .github/workflows/commit_performance_result.yml create mode 100644 performance-results/.gitkeep diff --git a/.github/workflows/commit_performance_result.yml b/.github/workflows/commit_performance_result.yml new file mode 100644 index 0000000000..25601d2459 --- /dev/null +++ b/.github/workflows/commit_performance_result.yml @@ -0,0 +1,30 @@ +name: Copy performance results from S3 +on: + workflow_dispatch: + inputs: + sha: + description: 'the commit sha which was performance tested' + required: true + +permissions: + id-token: write # This is required for requesting the JWT + contents: write # This is required for pushing changes back to the repo +jobs: + publishCommit: + runs-on: ubuntu-latest + steps: + - uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava + aws-region: "ap-southeast-2" + - uses: actions/checkout@v4 + - run: | + aws s3 cp s3://graphql-java-jmh-output/${{ github.event.inputs.sha }}-jdk17.json ./performance-results + git add performance-results/${{ github.event.inputs.sha }}-jdk17.json + if [ -z "$(git status --porcelain)" ]; then + echo "Performance results already present" + exit 0 + fi + git commit -m "Add performance results for commit ${{ github.event.inputs.sha }}" + git push + diff --git a/performance-results/.gitkeep b/performance-results/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 From 08f1c891765d8085b7e7b7c39b7d51eab8f1aad8 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 28 Nov 2024 08:59:46 +1000 Subject: [PATCH 056/345] workflow to copy performance results --- .github/workflows/commit_performance_result.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/commit_performance_result.yml b/.github/workflows/commit_performance_result.yml index 25601d2459..b4bfce830a 100644 --- a/.github/workflows/commit_performance_result.yml +++ b/.github/workflows/commit_performance_result.yml @@ -20,6 +20,8 @@ jobs: - uses: actions/checkout@v4 - run: | aws s3 cp s3://graphql-java-jmh-output/${{ github.event.inputs.sha }}-jdk17.json ./performance-results + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git add performance-results/${{ github.event.inputs.sha }}-jdk17.json if [ -z "$(git status --porcelain)" ]; then echo "Performance results already present" From 2f7e7243ee21b85c626e9f10767b3ea8d2609dee Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 28 Nov 2024 09:00:30 +1000 Subject: [PATCH 057/345] workflow to copy performance results --- .github/workflows/commit_performance_result.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/commit_performance_result.yml b/.github/workflows/commit_performance_result.yml index b4bfce830a..b041852653 100644 --- a/.github/workflows/commit_performance_result.yml +++ b/.github/workflows/commit_performance_result.yml @@ -1,4 +1,4 @@ -name: Copy performance results from S3 +name: Commit performance results into repo on: workflow_dispatch: inputs: @@ -10,7 +10,7 @@ permissions: id-token: write # This is required for requesting the JWT contents: write # This is required for pushing changes back to the repo jobs: - publishCommit: + commitPerformanceResults: runs-on: ubuntu-latest steps: - uses: aws-actions/configure-aws-credentials@v4 From 6d92f873375e0dce7f196ce9aa5f1ae870d5dba2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 23:08:44 +0000 Subject: [PATCH 058/345] Add performance results for commit 540d229fc8d94fe2a1e83736a86b0bb747a21fcf --- ...8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/540d229fc8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json diff --git a/performance-results/540d229fc8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json b/performance-results/540d229fc8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json new file mode 100644 index 0000000000..3adb4867d0 --- /dev/null +++ b/performance-results/540d229fc8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.425027671334907, + "scoreError" : 0.019394874897190422, + "scoreConfidence" : [ + 3.4056327964377164, + 3.444422546232097 + ], + "scorePercentiles" : { + "0.0" : 3.420975063130007, + "50.0" : 3.4256720602887833, + "90.0" : 3.4277915016320537, + "95.0" : 3.4277915016320537, + "99.0" : 3.4277915016320537, + "99.9" : 3.4277915016320537, + "99.99" : 3.4277915016320537, + "99.999" : 3.4277915016320537, + "99.9999" : 3.4277915016320537, + "100.0" : 3.4277915016320537 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.424639599455906, + 3.4267045211216614 + ], + [ + 3.420975063130007, + 3.4277915016320537 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7280782697921466, + "scoreError" : 0.006372553685903318, + "scoreConfidence" : [ + 1.7217057161062432, + 1.73445082347805 + ], + "scorePercentiles" : { + "0.0" : 1.7266877099364115, + "50.0" : 1.7283196945833703, + "90.0" : 1.728985980065435, + "95.0" : 1.728985980065435, + "99.0" : 1.728985980065435, + "99.9" : 1.728985980065435, + "99.99" : 1.728985980065435, + "99.999" : 1.728985980065435, + "99.9999" : 1.728985980065435, + "100.0" : 1.728985980065435 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7266877099364115, + 1.728985980065435 + ], + [ + 1.7281724421340159, + 1.7284669470327245 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8709303844730016, + "scoreError" : 0.00492635936324371, + "scoreConfidence" : [ + 0.8660040251097579, + 0.8758567438362453 + ], + "scorePercentiles" : { + "0.0" : 0.8703405464341464, + "50.0" : 0.8707150420166001, + "90.0" : 0.8719509074246605, + "95.0" : 0.8719509074246605, + "99.0" : 0.8719509074246605, + "99.9" : 0.8719509074246605, + "99.99" : 0.8719509074246605, + "99.999" : 0.8719509074246605, + "99.9999" : 0.8719509074246605, + "100.0" : 0.8719509074246605 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8703405464341464, + 0.8703534790461147 + ], + [ + 0.8710766049870854, + 0.8719509074246605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.465749524208896, + "scoreError" : 2.154709431526372, + "scoreConfidence" : [ + 42.311040092682525, + 46.620458955735266 + ], + "scorePercentiles" : { + "0.0" : 42.77767639257472, + "50.0" : 44.56642718342104, + "90.0" : 45.907360988402964, + "95.0" : 45.907360988402964, + "99.0" : 45.907360988402964, + "99.9" : 45.907360988402964, + "99.99" : 45.907360988402964, + "99.999" : 45.907360988402964, + "99.9999" : 45.907360988402964, + "100.0" : 45.907360988402964 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.77767639257472, + 43.033173805913385, + 43.03032852363221 + ], + [ + 45.88530648785466, + 45.907360988402964, + 45.90523489485257 + ], + [ + 44.50398480677225, + 44.582252634456125, + 44.56642718342104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023150489301090548, + "scoreError" : 0.0020925790760395664, + "scoreConfidence" : [ + 0.02105791022505098, + 0.025243068377130116 + ], + "scorePercentiles" : { + "0.0" : 0.022130810703539824, + "50.0" : 0.022517480159550563, + "90.0" : 0.024807574037128712, + "95.0" : 0.024807574037128712, + "99.0" : 0.024807574037128712, + "99.9" : 0.024807574037128712, + "99.99" : 0.024807574037128712, + "99.999" : 0.024807574037128712, + "99.9999" : 0.024807574037128712, + "100.0" : 0.024807574037128712 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022146164626106194, + 0.022135313243362834, + 0.022130810703539824 + ], + [ + 0.022517480159550563, + 0.022521949348314606, + 0.022514097997752808 + ], + [ + 0.024776576205445544, + 0.024804437388613862, + 0.024807574037128712 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 8f998e222fb53aa5b2532005d1a80113b5fc35b4 Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 28 Nov 2024 10:33:09 +1100 Subject: [PATCH 059/345] Extra tests to show that the document compiler can inline everything --- ...ormalizedOperationToAstCompilerTest.groovy | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy index a135ac3f9b..a1f1ae3329 100644 --- a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy @@ -2068,7 +2068,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat } - def "test a combination of plain objects and interfaces will be all variables"() { + def "test a combination of plain objects and interfaces with all variables and no variables"() { def sdl = ''' type Query { listField1(arg: [Int]): String @@ -2153,6 +2153,46 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat v3: [arg1: "barFragArg"], v4: [arg1: "barArg"], v5: [arg1: "fooArg"]] + + // + // Test the opposite - when we use no variables predicate everything should be inlined + // + when: "it has no variables" + + fields = createNormalizedFields(schema, query, [v0: [1, 2, 3], + v1: [[arg1: "v1", arg2: [[arg1: "v1.1"]]], [arg1: "v2"], [arg1: "v3"]], + v2: [[arg1: "fooNonNullArg1"], [arg1: "fooNonNullArg2"]], + v3: [arg1: "barFragArg"], + v4: [arg1: "barArg"], + v5: [arg1: "fooArg"]]) + + result = localCompileToDocument(schema, QUERY, "named", fields, noVariables) + document = result.document + vars = result.variables + ast = AstPrinter.printAst(new AstSorter().sort(document)) + + then: "they should be inlined as values" + + // no vars created + vars == [:] + + // everything inlined + ast == '''query named { + foo(arg: {arg1 : "fooArg"}) { + bar(arg: {arg1 : "barArg"}) { + baz { + ... on ABaz { + a + boo(arg: {arg1 : "barFragArg"}) + } + } + } + } + fooNonNull(arg: [{arg1 : "fooNonNullArg1"}, {arg1 : "fooNonNullArg2"}]) + listField1(arg: [1, 2, 3]) + listField2(arg: [{arg1 : "v1", arg2 : [{arg1 : "v1.1"}]}, {arg1 : "v2"}, {arg1 : "v3"}]) +} +''' } private ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { @@ -2186,7 +2226,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat List topLevelFields, VariablePredicate variablePredicate ) { - return localCompileToDocument(schema, operationKind, operationName, topLevelFields,Map.of(), variablePredicate); + return localCompileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); } private static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( From af4d15af57e9debe0c3eb1bbaa125462b4de5f0c Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 28 Nov 2024 09:51:03 +1000 Subject: [PATCH 060/345] test --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c62746dcf6..ffb1d72984 100644 --- a/README.md +++ b/README.md @@ -34,4 +34,3 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by - From 32802f267b83b608fd70fa35893a46517ba92e93 Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 28 Nov 2024 11:24:07 +1100 Subject: [PATCH 061/345] Extra tests to show that the document compiler can inline everything --- ...ormalizedOperationToAstCompilerTest.groovy | 163 +++++++++++++----- 1 file changed, 117 insertions(+), 46 deletions(-) diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy index a1f1ae3329..f4a72f0090 100644 --- a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy @@ -134,7 +134,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == '''{ animal { @@ -204,7 +204,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -255,7 +255,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -336,7 +336,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -428,7 +428,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -523,7 +523,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -590,7 +590,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -647,7 +647,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: printed == """{ @@ -705,7 +705,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: // Perhaps the typename should be hoisted out of the fragments, but the impl currently generates @@ -772,7 +772,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: // Note: the name field is spread across both fragments @@ -870,7 +870,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: // Ensure that age location name etc are not surrounded by fragments unnecessarily @@ -968,7 +968,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, QUERY, null, tree.topLevelFields, noVariables) - def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + def printed = printDoc(result.document) then: // Ensure that __typename id fieldId fieldName etc. are not surrounded by fragments unnecessarily @@ -1035,7 +1035,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ @@ -1069,7 +1069,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ @@ -1095,7 +1095,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, "My_Op23", fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''query My_Op23 { @@ -1140,7 +1140,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ @@ -1174,7 +1174,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query, ["v": 123]) when: def result = localCompileToDocument(schema, QUERY, null, fields, allVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: fields[0].normalizedArguments["arg"].value["a"].value["b"].value["c"].value.isEqualTo(IntValue.of(123)) @@ -1206,7 +1206,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''mutation { @@ -1237,7 +1237,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, SUBSCRIPTION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''subscription { @@ -1287,7 +1287,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat OperationDefinition operationDefinition = result.document.getDefinitionsOfType(OperationDefinition.class)[0] def fooField = (Field) operationDefinition.selectionSet.children[0] def nameField = (Field) fooField.selectionSet.children[0] - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: @@ -1332,7 +1332,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''mutation { @@ -1377,7 +1377,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ foo1(arg: {arg1 : "Query"}) { @@ -1409,7 +1409,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ __schema { @@ -1444,7 +1444,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ __type(name: "World") { @@ -1488,7 +1488,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ foo1 { @@ -1527,7 +1527,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: documentPrinted == '''{ foo1 { @@ -1578,7 +1578,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: // Note: the typename field moves out of a fragment because AFoo is the only impl documentPrinted == '''{ @@ -1629,7 +1629,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: // Note: the typename field moves out of a fragment because AFoo is the only impl documentPrinted == '''{ @@ -1679,7 +1679,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def fields = createNormalizedFields(schema, query) when: def result = localCompileToDocument(schema, QUERY, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: // Note: the typename field moves out of a fragment because AFoo is the only impl documentPrinted == '''{ @@ -1715,7 +1715,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [v0: ["48x48": "hello"]] @@ -1747,7 +1747,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [v0: "hello there"] @@ -1779,7 +1779,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [v0: 1] @@ -1809,7 +1809,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [:] @@ -1839,7 +1839,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [:] @@ -1869,7 +1869,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [v0: [one: "two", three: ["four", "five"]]] @@ -1899,7 +1899,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables.size() == 2 @@ -1936,7 +1936,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) def vars = result.variables then: @@ -1973,7 +1973,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [:] @@ -2008,7 +2008,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, noVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables == [:] @@ -2051,7 +2051,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat when: def result = localCompileToDocument(schema, MUTATION, null, fields, jsonVariables) - def documentPrinted = AstPrinter.printAst(new AstSorter().sort(result.document)) + def documentPrinted = printDoc(result.document) then: result.variables.size() == 1 @@ -2126,7 +2126,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat def result = localCompileToDocument(schema, QUERY, "named", fields, allVariables) def document = result.document def vars = result.variables - def ast = AstPrinter.printAst(new AstSorter().sort(document)) + def ast = printDoc(document) then: @@ -2169,7 +2169,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat result = localCompileToDocument(schema, QUERY, "named", fields, noVariables) document = result.document vars = result.variables - ast = AstPrinter.printAst(new AstSorter().sort(document)) + ast = printDoc(document) then: "they should be inlined as values" @@ -2195,7 +2195,70 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat ''' } - private ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { + def "can extract variables or inline values for directives on the query"() { + def sdl = ''' + type Query { + foo(fooArg : String) : Foo + } + + type Foo { + bar(barArg : String) : String + } + + directive @optIn(to : [String!]!) repeatable on FIELD + ''' + + def query = ''' + query named($fooArgVar : String, $barArgVar : String, $skipVar : Boolean!) { + foo(fooArg : $fooArgVar) @skip(if : $skipVar) { + bar(barArg : $barArgVar) @optIn(to : ["optToX"]) + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def fields = createNormalizedFields(schema, query, + [fooArgVar: "fooArgVar", barArgVar: "barArgVar", skipVar: false]) + + when: + def result = localCompileToDocument(schema, QUERY, "named", fields, allVariables) + def document = result.document + def vars = result.variables + def ast = printDoc(document) + + then: + vars == [v0:"barArgVar", v1:"fooArgVar"] + // + // the below is what ir currently produces but its WRONG + // fix up when the other tests starts to work + // + ast == '''query named($v0: String, $v1: String) { + foo(fooArg: $v1) { + bar(barArg: $v0) + } +} +''' + + + when: "it has no variables" + + + result = localCompileToDocument(schema, QUERY, "named", fields, noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) + + then: + vars == [:] + ast == '''query named { + foo(fooArg: "fooArgVar") @skip(if: false) { + bar(barArg: "barArgVar") @optIn(to: ["optToX"]) + } +} +''' + + } + + private static ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { assertValidQuery(schema, query, variables) Document originalDocument = TestUtil.parseQuery(query) @@ -2203,16 +2266,16 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat return ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables(schema, originalDocument, null, RawVariables.of(variables), options) } - private List createNormalizedFields(GraphQLSchema schema, String query, Map variables = [:]) { + private static List createNormalizedFields(GraphQLSchema schema, String query, Map variables = [:]) { return createNormalizedTree(schema, query, variables).getTopLevelFields() } - private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + private static void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() } - GraphQLSchema mkSchema(String sdl) { + static GraphQLSchema mkSchema(String sdl) { def wiringFactory = new TestLiveMockedWiringFactory([JsonScalar.JSON_SCALAR]) def runtimeWiring = RuntimeWiring.newRuntimeWiring() .wiringFactory(wiringFactory).build() @@ -2229,6 +2292,14 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat return localCompileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); } + private static Document sortDoc(Document doc) { + return new AstSorter().sort(doc) + } + + private static printDoc(Document doc) { + return AstPrinter.printAst(sortDoc(doc)) + } + private static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( GraphQLSchema schema, OperationDefinition.Operation operationKind, From 8a7a525db9b5717f09967ea72a17539c752f5139 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 28 Nov 2024 10:28:33 +1000 Subject: [PATCH 062/345] test --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ffb1d72984..c62746dcf6 100644 --- a/README.md +++ b/README.md @@ -34,3 +34,4 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by + From 7fe1826e9d93509e185ab0aa64e0f8300acec95a Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Thu, 28 Nov 2024 11:38:52 +1100 Subject: [PATCH 063/345] DataLoader on Mutations and Queries (#3737) * POC - DataLoader on Mutations and Queries * POC - DataLoader on Mutations and Queries - hanging test ignored for now * POC - DataLoader on Mutations and Queries - added extra calls * POC - DataLoader on Mutations and Queries - added new method * simplify test * make serial execution work with per level field tracking + some refactoring * DataLoader on Mutations and Queries - added more test methods * DataLoader on Mutations and Queries - tweaked AsyncSerialExecutionStrategy.java --------- Co-authored-by: Andreas Marek --- .../execution/AsyncExecutionStrategy.java | 4 +- .../AsyncSerialExecutionStrategy.java | 23 +- .../execution/DataLoaderDispatchStrategy.java | 8 +- .../java/graphql/execution/Execution.java | 2 +- .../graphql/execution/ExecutionContext.java | 28 ++ .../FallbackDataLoaderDispatchStrategy.java | 2 +- .../PerLevelDataLoaderDispatchStrategy.java | 108 ++++-- ...spatchStrategyWithDeferAlwaysDispatch.java | 14 +- src/test/groovy/graphql/MutationTest.groovy | 358 ++++++++++++++++++ .../DataLoaderDispatcherTest.groovy | 11 +- 10 files changed, 504 insertions(+), 54 deletions(-) diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index 27e24ace88..bbd4a9cf68 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -72,14 +72,14 @@ public CompletableFuture execute(ExecutionContext executionCont for (FieldValueInfo completeValueInfo : completeValueInfos) { fieldValuesFutures.addObject(completeValueInfo.getFieldValueObject()); } - dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos, parameters); + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos); executionStrategyCtx.onFieldValuesInfo(completeValueInfos); fieldValuesFutures.await().whenComplete(handleResultsConsumer); }).exceptionally((ex) -> { // if there are any issues with combining/handling the field results, // complete the future at all costs and bubble up any thrown exception so // the execution does not hang. - dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex, parameters); + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex); executionStrategyCtx.onFieldValuesException(); overallResult.completeExceptionally(ex); return null; diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index 6f64b8cd8c..fb871712da 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -32,7 +32,7 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler @Override @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - executionContext.getDataLoaderDispatcherStrategy().executionStrategy(executionContext, parameters); + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); @@ -54,7 +54,8 @@ public CompletableFuture execute(ExecutionContext executionCont ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); ExecutionStrategyParameters newParameters = parameters .transform(builder -> builder.field(currentField).path(fieldPath)); - return resolveField(executionContext, newParameters); + + return resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); }); CompletableFuture overallResult = new CompletableFuture<>(); @@ -65,4 +66,22 @@ public CompletableFuture execute(ExecutionContext executionCont return overallResult; } + private Object resolveSerialField(ExecutionContext executionContext, + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy, + ExecutionStrategyParameters newParameters) { + dataLoaderDispatcherStrategy.executionSerialStrategy(executionContext, newParameters); + + Object fieldWithInfo = resolveFieldWithInfo(executionContext, newParameters); + if (fieldWithInfo instanceof CompletableFuture) { + //noinspection unchecked + return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> { + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); + return fvi.getFieldValueFuture(); + }); + } else { + FieldValueInfo fvi = (FieldValueInfo) fieldWithInfo; + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); + return fvi.getFieldValueObject(); + } + } } diff --git a/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java index 9e21b94bfa..5101ae3a56 100644 --- a/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java +++ b/src/main/java/graphql/execution/DataLoaderDispatchStrategy.java @@ -16,11 +16,15 @@ default void executionStrategy(ExecutionContext executionContext, ExecutionStrat } - default void executionStrategyOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { + default void executionSerialStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { } - default void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrategyParameters parameters) { + default void executionStrategyOnFieldValuesInfo(List fieldValueInfoList) { + + } + + default void executionStrategyOnFieldValuesException(Throwable t) { } diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index cf805a84fb..2403e5294d 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -228,7 +228,7 @@ private DataLoaderDispatchStrategy createDataLoaderDispatchStrategy(ExecutionCon if (executionContext.getDataLoaderRegistry() == EMPTY_DATALOADER_REGISTRY || doNotAutomaticallyDispatchDataLoader) { return DataLoaderDispatchStrategy.NO_OP; } - if (executionStrategy instanceof AsyncExecutionStrategy) { + if (! executionContext.isSubscriptionOperation()) { boolean deferEnabled = Optional.ofNullable(executionContext.getGraphQLContext()) .map(graphqlContext -> graphqlContext.getBoolean(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT)) .orElse(false); diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index c122f9d2c3..ddb1fd6db8 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -170,6 +170,34 @@ public ValueUnboxer getValueUnboxer() { return valueUnboxer; } + /** + * @return true if the current operation is a Query + */ + public boolean isQueryOperation() { + return isOpType(OperationDefinition.Operation.QUERY); + } + + /** + * @return true if the current operation is a Mutation + */ + public boolean isMutationOperation() { + return isOpType(OperationDefinition.Operation.MUTATION); + } + + /** + * @return true if the current operation is a Subscription + */ + public boolean isSubscriptionOperation() { + return isOpType(OperationDefinition.Operation.SUBSCRIPTION); + } + + private boolean isOpType(OperationDefinition.Operation operation) { + if (operationDefinition != null) { + return operation.equals(operationDefinition.getOperation()); + } + return false; + } + /** * This method will only put one error per field path. * diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/FallbackDataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/instrumentation/dataloader/FallbackDataLoaderDispatchStrategy.java index dba4378046..f33657cb63 100644 --- a/src/main/java/graphql/execution/instrumentation/dataloader/FallbackDataLoaderDispatchStrategy.java +++ b/src/main/java/graphql/execution/instrumentation/dataloader/FallbackDataLoaderDispatchStrategy.java @@ -7,7 +7,7 @@ /** - * Used when the execution strategy is not an AsyncExecutionStrategy: simply dispatch always after each DF. + * Used when we cant guarantee the fields will be counted right: simply dispatch always after each DF. */ @Internal public class FallbackDataLoaderDispatchStrategy implements DataLoaderDispatchStrategy { diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java index 60bd36e6f9..0d1903eaab 100644 --- a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java +++ b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategy.java @@ -6,7 +6,6 @@ import graphql.execution.ExecutionContext; import graphql.execution.ExecutionStrategyParameters; import graphql.execution.FieldValueInfo; -import graphql.execution.MergedField; import graphql.schema.DataFetcher; import graphql.util.LockKit; import org.dataloader.DataLoaderRegistry; @@ -27,55 +26,81 @@ private static class CallStack { private final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); private final LevelMap expectedFetchCountPerLevel = new LevelMap(); private final LevelMap fetchCountPerLevel = new LevelMap(); - private final LevelMap expectedStrategyCallsPerLevel = new LevelMap(); - private final LevelMap happenedStrategyCallsPerLevel = new LevelMap(); + + private final LevelMap expectedExecuteObjectCallsPerLevel = new LevelMap(); + private final LevelMap happenedExecuteObjectCallsPerLevel = new LevelMap(); + private final LevelMap happenedOnFieldValueCallsPerLevel = new LevelMap(); private final Set dispatchedLevels = new LinkedHashSet<>(); public CallStack() { - expectedStrategyCallsPerLevel.set(1, 1); + expectedExecuteObjectCallsPerLevel.set(1, 1); } void increaseExpectedFetchCount(int level, int count) { expectedFetchCountPerLevel.increment(level, count); } + void clearExpectedFetchCount() { + expectedFetchCountPerLevel.clear(); + } + void increaseFetchCount(int level) { fetchCountPerLevel.increment(level, 1); } - void increaseExpectedStrategyCalls(int level, int count) { - expectedStrategyCallsPerLevel.increment(level, count); + void clearFetchCount() { + fetchCountPerLevel.clear(); + } + + void increaseExpectedExecuteObjectCalls(int level, int count) { + expectedExecuteObjectCallsPerLevel.increment(level, count); } - void increaseHappenedStrategyCalls(int level) { - happenedStrategyCallsPerLevel.increment(level, 1); + void clearExpectedObjectCalls() { + expectedExecuteObjectCallsPerLevel.clear(); + } + + void increaseHappenedExecuteObjectCalls(int level) { + happenedExecuteObjectCallsPerLevel.increment(level, 1); + } + + void clearHappenedExecuteObjectCalls() { + happenedExecuteObjectCallsPerLevel.clear(); } void increaseHappenedOnFieldValueCalls(int level) { happenedOnFieldValueCallsPerLevel.increment(level, 1); } - boolean allStrategyCallsHappened(int level) { - return happenedStrategyCallsPerLevel.get(level) == expectedStrategyCallsPerLevel.get(level); + void clearHappenedOnFieldValueCalls() { + happenedOnFieldValueCallsPerLevel.clear(); + } + + boolean allExecuteObjectCallsHappened(int level) { + return happenedExecuteObjectCallsPerLevel.get(level) == expectedExecuteObjectCallsPerLevel.get(level); } boolean allOnFieldCallsHappened(int level) { - return happenedOnFieldValueCallsPerLevel.get(level) == expectedStrategyCallsPerLevel.get(level); + return happenedOnFieldValueCallsPerLevel.get(level) == expectedExecuteObjectCallsPerLevel.get(level); } boolean allFetchesHappened(int level) { return fetchCountPerLevel.get(level) == expectedFetchCountPerLevel.get(level); } + void clearDispatchLevels() { + dispatchedLevels.clear(); + } + @Override public String toString() { return "CallStack{" + "expectedFetchCountPerLevel=" + expectedFetchCountPerLevel + ", fetchCountPerLevel=" + fetchCountPerLevel + - ", expectedStrategyCallsPerLevel=" + expectedStrategyCallsPerLevel + - ", happenedStrategyCallsPerLevel=" + happenedStrategyCallsPerLevel + + ", expectedExecuteObjectCallsPerLevel=" + expectedExecuteObjectCallsPerLevel + + ", happenedExecuteObjectCallsPerLevel=" + happenedExecuteObjectCallsPerLevel + ", happenedOnFieldValueCallsPerLevel=" + happenedOnFieldValueCallsPerLevel + ", dispatchedLevels" + dispatchedLevels + '}'; @@ -105,19 +130,23 @@ public void executeDeferredOnFieldValueInfo(FieldValueInfo fieldValueInfo, Execu @Override public void executionStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { int curLevel = parameters.getExecutionStepInfo().getPath().getLevel() + 1; - increaseCallCounts(curLevel, parameters); + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, parameters); } @Override - public void executionStrategyOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { - int curLevel = parameters.getPath().getLevel() + 1; - onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel, parameters); + public void executionSerialStrategy(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + resetCallStack(); + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(1, 1); + } + + @Override + public void executionStrategyOnFieldValuesInfo(List fieldValueInfoList) { + onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, 1); } - public void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrategyParameters executionStrategyParameters) { - int curLevel = executionStrategyParameters.getPath().getLevel() + 1; + public void executionStrategyOnFieldValuesException(Throwable t) { callStack.lock.runLocked(() -> - callStack.increaseHappenedOnFieldValueCalls(curLevel) + callStack.increaseHappenedOnFieldValueCalls(1) ); } @@ -125,13 +154,13 @@ public void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrate @Override public void executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { int curLevel = parameters.getExecutionStepInfo().getPath().getLevel() + 1; - increaseCallCounts(curLevel, parameters); + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, parameters); } @Override public void executeObjectOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { int curLevel = parameters.getPath().getLevel() + 1; - onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel, parameters); + onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel); } @@ -143,16 +172,30 @@ public void executeObjectOnFieldValuesException(Throwable t, ExecutionStrategyPa ); } + private void increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(int curLevel, ExecutionStrategyParameters executionStrategyParameters) { + increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(curLevel, executionStrategyParameters.getFields().size()); + } - private void increaseCallCounts(int curLevel, ExecutionStrategyParameters executionStrategyParameters) { - int fieldCount = executionStrategyParameters.getFields().size(); + private void increaseHappenedExecuteObjectAndIncreaseExpectedFetchCount(int curLevel, int fieldCount) { callStack.lock.runLocked(() -> { + callStack.increaseHappenedExecuteObjectCalls(curLevel); callStack.increaseExpectedFetchCount(curLevel, fieldCount); - callStack.increaseHappenedStrategyCalls(curLevel); }); } - private void onFieldValuesInfoDispatchIfNeeded(List fieldValueInfoList, int curLevel, ExecutionStrategyParameters parameters) { + private void resetCallStack() { + callStack.lock.runLocked(() -> { + callStack.clearDispatchLevels(); + callStack.clearExpectedObjectCalls(); + callStack.clearExpectedFetchCount(); + callStack.clearFetchCount(); + callStack.clearHappenedExecuteObjectCalls(); + callStack.clearHappenedOnFieldValueCalls(); + callStack.expectedExecuteObjectCallsPerLevel.set(1, 1); + }); + } + + private void onFieldValuesInfoDispatchIfNeeded(List fieldValueInfoList, int curLevel) { boolean dispatchNeeded = callStack.lock.callLocked(() -> handleOnFieldValuesInfo(fieldValueInfoList, curLevel) ); @@ -166,18 +209,21 @@ private void onFieldValuesInfoDispatchIfNeeded(List fieldValueIn // private boolean handleOnFieldValuesInfo(List fieldValueInfos, int curLevel) { callStack.increaseHappenedOnFieldValueCalls(curLevel); - int expectedStrategyCalls = getCountForList(fieldValueInfos); - callStack.increaseExpectedStrategyCalls(curLevel + 1, expectedStrategyCalls); + int expectedOnObjectCalls = getObjectCountForList(fieldValueInfos); + callStack.increaseExpectedExecuteObjectCalls(curLevel + 1, expectedOnObjectCalls); return dispatchIfNeeded(curLevel + 1); } - private int getCountForList(List fieldValueInfos) { + /** + * the amount of (non nullable) objects that will require an execute object call + */ + private int getObjectCountForList(List fieldValueInfos) { int result = 0; for (FieldValueInfo fieldValueInfo : fieldValueInfos) { if (fieldValueInfo.getCompleteValueType() == FieldValueInfo.CompleteValueType.OBJECT) { result += 1; } else if (fieldValueInfo.getCompleteValueType() == FieldValueInfo.CompleteValueType.LIST) { - result += getCountForList(fieldValueInfo.getFieldValueInfos()); + result += getObjectCountForList(fieldValueInfo.getFieldValueInfos()); } } return result; @@ -221,7 +267,7 @@ private boolean levelReady(int level) { return callStack.allFetchesHappened(1); } if (levelReady(level - 1) && callStack.allOnFieldCallsHappened(level - 1) - && callStack.allStrategyCallsHappened(level) && callStack.allFetchesHappened(level)) { + && callStack.allExecuteObjectCallsHappened(level) && callStack.allFetchesHappened(level)) { return true; } diff --git a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch.java b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch.java index e81ef3948c..26c847b754 100644 --- a/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch.java +++ b/src/main/java/graphql/execution/instrumentation/dataloader/PerLevelDataLoaderDispatchStrategyWithDeferAlwaysDispatch.java @@ -137,19 +137,17 @@ public void executeObject(ExecutionContext executionContext, ExecutionStrategyPa } @Override - public void executionStrategyOnFieldValuesInfo(List fieldValueInfoList, ExecutionStrategyParameters parameters) { + public void executionStrategyOnFieldValuesInfo(List fieldValueInfoList) { if (this.startedDeferredExecution.get()) { this.dispatch(); } - int curLevel = parameters.getPath().getLevel() + 1; - onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel, parameters); + onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, 1); } @Override - public void executionStrategyOnFieldValuesException(Throwable t, ExecutionStrategyParameters executionStrategyParameters) { - int curLevel = executionStrategyParameters.getPath().getLevel() + 1; + public void executionStrategyOnFieldValuesException(Throwable t) { callStack.lock.runLocked(() -> - callStack.increaseHappenedOnFieldValueCalls(curLevel) + callStack.increaseHappenedOnFieldValueCalls(1) ); } @@ -159,7 +157,7 @@ public void executeObjectOnFieldValuesInfo(List fieldValueInfoLi this.dispatch(); } int curLevel = parameters.getPath().getLevel() + 1; - onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel, parameters); + onFieldValuesInfoDispatchIfNeeded(fieldValueInfoList, curLevel); } @@ -207,7 +205,7 @@ private void increaseCallCounts(int curLevel, ExecutionStrategyParameters parame }); } - private void onFieldValuesInfoDispatchIfNeeded(List fieldValueInfoList, int curLevel, ExecutionStrategyParameters parameters) { + private void onFieldValuesInfoDispatchIfNeeded(List fieldValueInfoList, int curLevel) { boolean dispatchNeeded = callStack.lock.callLocked(() -> handleOnFieldValuesInfo(fieldValueInfoList, curLevel) ); diff --git a/src/test/groovy/graphql/MutationTest.groovy b/src/test/groovy/graphql/MutationTest.groovy index d99506880d..5c872b1f83 100644 --- a/src/test/groovy/graphql/MutationTest.groovy +++ b/src/test/groovy/graphql/MutationTest.groovy @@ -1,7 +1,14 @@ package graphql +import graphql.schema.DataFetcher +import org.awaitility.Awaitility +import org.dataloader.BatchLoader +import org.dataloader.BatchLoaderWithContext +import org.dataloader.DataLoaderFactory +import org.dataloader.DataLoaderRegistry import spock.lang.Specification +import java.util.concurrent.CompletableFuture class MutationTest extends Specification { @@ -102,4 +109,355 @@ class MutationTest extends Specification { executionResult.errors.every({ it instanceof ExceptionWhileDataFetching }) } + + def "simple async mutation"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + plus1(arg: Int) : Int + plus2(arg: Int) : Int + plus3(arg: Int) : Int + } + """ + + def mutationDF = { env -> + CompletableFuture.supplyAsync { + + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + return value + factor + } + } as DataFetcher + + def schema = TestUtil.schema(sdl, [Mutation: [ + plus1: mutationDF, + plus2: mutationDF, + plus3: mutationDF, + ]]) + + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def er = graphQL.execute(""" + mutation m { + plus1(arg:10) + plus2(arg:10) + plus3(arg:10) + } + """) + + then: + er.errors.isEmpty() + er.data == [ + plus1: 11, + plus2: 12, + plus3: 13, + ] + } + + def "simple async mutation with DataLoader"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + plus1(arg: Int) : Int + plus2(arg: Int) : Int + plus3(arg: Int) : Int + } + + """ + + BatchLoader batchLoader = { keys -> + CompletableFuture.supplyAsync { + return keys + } + + } as BatchLoader + + + DataLoaderRegistry dlReg = DataLoaderRegistry.newRegistry() + .register("dl", DataLoaderFactory.newDataLoader(batchLoader)) + .build() + + def mutationDF = { env -> + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + def key = value + factor + return env.getDataLoader("dl").load(key) + } as DataFetcher + + def schema = TestUtil.schema(sdl, [Mutation: [ + plus1: mutationDF, + plus2: mutationDF, + plus3: mutationDF, + ]]) + + + def graphQL = GraphQL.newGraphQL(schema) + .build() + + + def ei = ExecutionInput.newExecutionInput(""" + mutation m { + plus1(arg:10) + plus2(arg:10) + plus3(arg:10) + } + """).dataLoaderRegistry(dlReg).build() + when: + def er = graphQL.execute(ei) + + then: + er.errors.isEmpty() + er.data == [ + plus1: 11, + plus2: 12, + plus3: 13, + ] + } + + /* + This test shows a dataloader being called at the mutation field level, in serial via AsyncSerialExecutionStrategy, and then + again at the sub field level, in parallel, via AsyncExecutionStrategy. + */ + def "more complex async mutation with DataLoader"() { + def sdl = """ + type Query { + q : String + } + + type Mutation { + topLevelF1(arg: Int) : ComplexType + topLevelF2(arg: Int) : ComplexType + topLevelF3(arg: Int) : ComplexType + topLevelF4(arg: Int) : ComplexType + } + + type ComplexType { + f1 : ComplexType + f2 : ComplexType + f3 : ComplexType + f4 : ComplexType + end : String + } + """ + + def emptyComplexMap = [ + f1: null, + f2: null, + f3: null, + f4: null, + ] + + BatchLoaderWithContext fieldBatchLoader = { keys, context -> + assert keys.size() == 2, "since only f1 and f2 are DL based, we will only get 2 key values" + + def batchValue = [ + emptyComplexMap, + emptyComplexMap, + ] + CompletableFuture.supplyAsync { + return batchValue + } + + } as BatchLoaderWithContext + + BatchLoader mutationBatchLoader = { keys -> + CompletableFuture.supplyAsync { + return keys + } + + } as BatchLoader + + + DataLoaderRegistry dlReg = DataLoaderRegistry.newRegistry() + .register("topLevelDL", DataLoaderFactory.newDataLoader(mutationBatchLoader)) + .register("fieldDL", DataLoaderFactory.newDataLoader(fieldBatchLoader)) + .build() + + def mutationDF = { env -> + def fieldName = env.getField().name + def factor = Integer.parseInt(fieldName.substring(fieldName.length() - 1)) + def value = env.getArgument("arg") + + def key = value + factor + return env.getDataLoader("topLevelDL").load(key) + } as DataFetcher + + def fieldDataLoaderDF = { env -> + def fieldName = env.getField().name + def level = env.getExecutionStepInfo().getPath().getLevel() + return env.getDataLoader("fieldDL").load(fieldName, level) + } as DataFetcher + + def fieldDataLoaderNonDF = { env -> + return emptyComplexMap + } as DataFetcher + + def schema = TestUtil.schema(sdl, + [Mutation : [ + topLevelF1: mutationDF, + topLevelF2: mutationDF, + topLevelF3: mutationDF, + topLevelF4: mutationDF, + ], + // only f1 and f3 are using data loaders - f2 and f4 are plain old property based + // so some fields with batch loader and some without + ComplexType: [ + f1: fieldDataLoaderDF, + f2: fieldDataLoaderNonDF, + f3: fieldDataLoaderDF, + f4: fieldDataLoaderNonDF, + ] + ]) + + + def graphQL = GraphQL.newGraphQL(schema) + .build() + + + def ei = ExecutionInput.newExecutionInput(""" + mutation m { + topLevelF1(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF2(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF3(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + + topLevelF4(arg:10) { + f1 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f2 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f3 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + f4 { + f1 { end } + f2 { end } + f3 { end } + f4 { end } + } + } + } + """).dataLoaderRegistry(dlReg).build() + when: + def cf = graphQL.executeAsync(ei) + + Awaitility.await().until { cf.isDone() } + def er = cf.join() + + then: + + er.errors.isEmpty() + + def expectedMap = [ + f1: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f2: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f3: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + f4: [f1: [end: null], f2: [end: null], f3: [end: null], f4: [end: null]], + ] + + er.data == [ + topLevelF1: expectedMap, + topLevelF2: expectedMap, + topLevelF3: expectedMap, + topLevelF4: expectedMap, + ] + } } diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy index 839621f727..5ed01769f7 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy @@ -20,8 +20,8 @@ import org.jetbrains.annotations.NotNull import org.reactivestreams.Publisher import reactor.core.publisher.Mono import spock.lang.Specification -import spock.lang.Unroll +import java.time.Duration import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage @@ -120,10 +120,10 @@ class DataLoaderDispatcherTest extends Specification { } - @Unroll - def "ensure DataLoaderDispatcher works for #executionStrategyName"() { + def "ensure DataLoaderDispatcher works for async serial execution strategy"() { given: + def executionStrategy = new AsyncSerialExecutionStrategy() def starWarsWiring = new StarWarsDataLoaderWiring() def dlRegistry = starWarsWiring.newDataLoaderRegistry() @@ -136,15 +136,12 @@ class DataLoaderDispatcherTest extends Specification { def asyncResult = graphql.executeAsync(newExecutionInput().query(query).dataLoaderRegistry(dlRegistry)) + Awaitility.await().atMost(Duration.ofMillis(200)).until { -> asyncResult.isDone() } def er = asyncResult.join() then: er.data == expectedQueryData - where: - executionStrategyName | executionStrategy || _ - "AsyncExecutionStrategy" | new AsyncSerialExecutionStrategy() || _ - "AsyncSerialExecutionStrategy" | new AsyncSerialExecutionStrategy() || _ } def "basic batch loading is possible"() { From d854425ef5365ed8bdbcf1098c40738b66e4759b Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Thu, 28 Nov 2024 11:39:11 +1100 Subject: [PATCH 064/345] Added support for reactive Publishers to be returned from data fetchers (#3731) * Added support for reactive Publishers to be returned from data fetchers * Added support for reactive Publishers to be returned from data fetchers - review tweaks * Added support for reactive Publishers to be returned from data fetchers - never on subscriptions * Added support for reactive Publishers to be returned from data fetchers - never on subscriptions with tests working --- src/main/java/graphql/DuckTyped.java | 22 ++ src/main/java/graphql/Internal.java | 3 +- .../graphql/execution/ExecutionStrategy.java | 47 ++-- .../execution/reactive/ReactiveSupport.java | 184 +++++++++++++++ .../ExecutionContextBuilderTest.groovy | 29 +++ .../execution/pubsub/CountingFlux.groovy | 23 ++ .../reactive/ReactiveSupportTest.groovy | 222 ++++++++++++++++++ 7 files changed, 509 insertions(+), 21 deletions(-) create mode 100644 src/main/java/graphql/DuckTyped.java create mode 100644 src/main/java/graphql/execution/reactive/ReactiveSupport.java create mode 100644 src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy create mode 100644 src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy diff --git a/src/main/java/graphql/DuckTyped.java b/src/main/java/graphql/DuckTyped.java new file mode 100644 index 0000000000..83e298b6e1 --- /dev/null +++ b/src/main/java/graphql/DuckTyped.java @@ -0,0 +1,22 @@ +package graphql; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; + +/** + * An annotation that marks a method return value or method parameter as returning a duck type value. + *

+ * For efficiency reasons, the graphql engine methods can return {@link Object} values + * which maybe two well known types of values. Often a {@link java.util.concurrent.CompletableFuture} + * or a plain old {@link Object}, to represent an async value or a materialised value. + */ +@Internal +@Retention(RetentionPolicy.RUNTIME) +@Target(value = {METHOD, PARAMETER}) +public @interface DuckTyped { + String shape(); +} diff --git a/src/main/java/graphql/Internal.java b/src/main/java/graphql/Internal.java index 9ba6a340f1..cf9d0c3e4b 100644 --- a/src/main/java/graphql/Internal.java +++ b/src/main/java/graphql/Internal.java @@ -4,6 +4,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; import static java.lang.annotation.ElementType.CONSTRUCTOR; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; @@ -17,6 +18,6 @@ * In general unnecessary changes will be avoided but you should not depend on internal classes being stable */ @Retention(RetentionPolicy.RUNTIME) -@Target(value = {CONSTRUCTOR, METHOD, TYPE, FIELD, PACKAGE}) +@Target(value = {CONSTRUCTOR, METHOD, TYPE, FIELD, PACKAGE, ANNOTATION_TYPE}) public @interface Internal { } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index f2cccd4072..31a0ed71c8 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -2,6 +2,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; +import graphql.DuckTyped; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; import graphql.ExperimentalApi; @@ -24,6 +25,7 @@ import graphql.execution.instrumentation.parameters.InstrumentationFieldCompleteParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters; +import graphql.execution.reactive.ReactiveSupport; import graphql.extensions.ExtensionsBuilder; import graphql.introspection.Introspection; import graphql.language.Argument; @@ -197,8 +199,8 @@ public static String mkNameForPath(List currentField) { * @throws NonNullableFieldWasNullException in the {@link CompletableFuture} if a non-null field resolved to a null value */ @SuppressWarnings("unchecked") - protected Object /* CompletableFuture> | Map */ - executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + @DuckTyped(shape = "CompletableFuture> | Map") + protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -356,8 +358,8 @@ Async.CombinedBuilder getAsyncFieldValueInfo( * @throws NonNullableFieldWasNullException in the future if a non-null field resolved to a null value */ @SuppressWarnings("unchecked") - protected Object /* CompletableFuture | Object */ - resolveField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @DuckTyped(shape = " CompletableFuture | Object") + protected Object resolveField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { Object fieldWithInfo = resolveFieldWithInfo(executionContext, parameters); if (fieldWithInfo instanceof CompletableFuture) { return ((CompletableFuture) fieldWithInfo).thenCompose(FieldValueInfo::getFieldValueFuture); @@ -384,8 +386,8 @@ Async.CombinedBuilder getAsyncFieldValueInfo( * if a nonnull field resolves to a null value */ @SuppressWarnings("unchecked") - protected Object /* CompletableFuture | FieldValueInfo */ - resolveFieldWithInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | FieldValueInfo") + protected Object resolveFieldWithInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { GraphQLFieldDefinition fieldDef = getFieldDef(executionContext, parameters, parameters.getField().getSingleField()); Supplier executionStepInfo = FpKit.intraThreadMemoize(() -> createExecutionStepInfo(executionContext, parameters, fieldDef, null)); @@ -430,16 +432,16 @@ Async.CombinedBuilder getAsyncFieldValueInfo( * * @throws NonNullableFieldWasNullException in the future if a non null field resolves to a null value */ - protected Object /*CompletableFuture | FetchedValue>*/ - fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | FetchedValue") + protected Object fetchField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { MergedField field = parameters.getField(); GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); GraphQLFieldDefinition fieldDef = getFieldDef(executionContext.getGraphQLSchema(), parentType, field.getSingleField()); return fetchField(fieldDef, executionContext, parameters); } - private Object /*CompletableFuture | FetchedValue>*/ - fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | FetchedValue") + private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters) { if (incrementAndCheckMaxNodesExceeded(executionContext)) { return new FetchedValue(null, Collections.emptyList(), null); @@ -498,6 +500,11 @@ Async.CombinedBuilder getAsyncFieldValueInfo( executionContext.getDataLoaderDispatcherStrategy().fieldFetched(executionContext, parameters, dataFetcher, fetchedObject); fetchCtx.onDispatched(); fetchCtx.onFetchedValue(fetchedObject); + // if it's a subscription, leave any reactive objects alone + if (!executionContext.isSubscriptionOperation()) { + // possible convert reactive objects into CompletableFutures + fetchedObject = ReactiveSupport.fetchedObject(fetchedObject); + } if (fetchedObject instanceof CompletableFuture) { @SuppressWarnings("unchecked") CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; @@ -737,8 +744,8 @@ private FieldValueInfo getFieldValueInfoForNull(ExecutionStrategyParameters para * * @throws NonNullableFieldWasNullException inside the {@link CompletableFuture} if a non-null field resolves to a null value */ - protected Object /* CompletableFuture | Object */ - completeValueForNull(ExecutionStrategyParameters parameters) { + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForNull(ExecutionStrategyParameters parameters) { try { return parameters.getNonNullFieldValidator().validate(parameters, null); } catch (Exception e) { @@ -876,8 +883,8 @@ protected void handleValueException(CompletableFuture overallResult, Thro * * @return a materialized scalar value or exceptionally completed {@link CompletableFuture} if there is a problem */ - protected Object /* CompletableFuture | Object */ - completeValueForScalar(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLScalarType scalarType, Object result) { + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForScalar(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLScalarType scalarType, Object result) { Object serialized; try { serialized = scalarType.getCoercing().serialize(result, executionContext.getGraphQLContext(), executionContext.getLocale()); @@ -903,8 +910,8 @@ protected void handleValueException(CompletableFuture overallResult, Thro * * @return a materialized enum value or exceptionally completed {@link CompletableFuture} if there is a problem */ - protected Object /* CompletableFuture | Object */ - completeValueForEnum(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLEnumType enumType, Object result) { + @DuckTyped(shape = "CompletableFuture | Object") + protected Object completeValueForEnum(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLEnumType enumType, Object result) { Object serialized; try { serialized = enumType.serialize(result, executionContext.getGraphQLContext(), executionContext.getLocale()); @@ -929,8 +936,8 @@ protected void handleValueException(CompletableFuture overallResult, Thro * * @return a {@link CompletableFuture} promise to a map of object field values or a materialized map of object field values */ - protected Object /* CompletableFuture> | Map */ - completeValueForObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLObjectType resolvedObjectType, Object result) { + @DuckTyped(shape = "CompletableFuture> | Map") + protected Object completeValueForObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters, GraphQLObjectType resolvedObjectType, Object result) { ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); FieldCollectorParameters collectorParameters = newParameters() @@ -1000,7 +1007,6 @@ private void handleTypeMismatchProblem(ExecutionContext context, ExecutionStrate * if max nodes were exceeded for this request. * * @param executionContext the execution context in play - * * @return true if max nodes were exceeded */ private boolean incrementAndCheckMaxNodesExceeded(ExecutionContext executionContext) { @@ -1053,7 +1059,6 @@ protected GraphQLFieldDefinition getFieldDef(GraphQLSchema schema, GraphQLObject * * @param e this indicates that a null value was returned for a non null field, which needs to cause the parent field * to become null OR continue on as an exception - * * @throws NonNullableFieldWasNullException if a non null field resolves to a null value */ protected void assertNonNullFieldPrecondition(NonNullableFieldWasNullException e) throws NonNullableFieldWasNullException { @@ -1167,4 +1172,6 @@ private static void addErrorsToRightContext(List errors, Execution executionContext.addErrors(errors); } } + + } diff --git a/src/main/java/graphql/execution/reactive/ReactiveSupport.java b/src/main/java/graphql/execution/reactive/ReactiveSupport.java new file mode 100644 index 0000000000..3e02f11592 --- /dev/null +++ b/src/main/java/graphql/execution/reactive/ReactiveSupport.java @@ -0,0 +1,184 @@ +package graphql.execution.reactive; + +import graphql.DuckTyped; +import graphql.Internal; +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; +import org.reactivestreams.Subscription; + +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Flow; +import java.util.concurrent.atomic.AtomicReference; + +/** + * This provides support for a DataFetcher to be able to + * return a reactive streams {@link Publisher} or Java JDK {@link Flow.Publisher} + * as a value, and it can be turned into a {@link CompletableFuture} + * that we can get an async value from. + */ +@Internal +public class ReactiveSupport { + + @DuckTyped(shape = "CompletableFuture | Object") + public static Object fetchedObject(Object fetchedObject) { + if (fetchedObject instanceof Flow.Publisher) { + return flowPublisherToCF((Flow.Publisher) fetchedObject); + } + if (fetchedObject instanceof Publisher) { + return reactivePublisherToCF((Publisher) fetchedObject); + } + return fetchedObject; + } + + private static CompletableFuture reactivePublisherToCF(Publisher publisher) { + ReactivePublisherToCompletableFuture cf = new ReactivePublisherToCompletableFuture<>(); + publisher.subscribe(cf); + return cf; + } + + private static CompletableFuture flowPublisherToCF(Flow.Publisher publisher) { + FlowPublisherToCompletableFuture cf = new FlowPublisherToCompletableFuture<>(); + publisher.subscribe(cf); + return cf; + } + + /** + * The implementations between reactive Publishers and Flow.Publishers are almost exactly the same except the + * subscription class is different. So this is a common class that contains most of the common logic + * + * @param for two + * @param for subscription + */ + private static abstract class PublisherToCompletableFuture extends CompletableFuture { + + private final AtomicReference subscriptionRef = new AtomicReference<>(); + + abstract void doSubscriptionCancel(S s); + + @SuppressWarnings("SameParameterValue") + abstract void doSubscriptionRequest(S s, long n); + + private boolean validateSubscription(S current, S next) { + Objects.requireNonNull(next, "Subscription cannot be null"); + if (current != null) { + doSubscriptionCancel(next); + return false; + } + return true; + } + + /** + * This overrides the {@link CompletableFuture#cancel(boolean)} method + * such that subscription is also cancelled. + * + * @param mayInterruptIfRunning this value has no effect in this + * implementation because interrupts are not used to control + * processing. + * @return a boolean if it was cancelled + */ + @Override + public boolean cancel(boolean mayInterruptIfRunning) { + boolean cancelled = super.cancel(mayInterruptIfRunning); + if (cancelled) { + S s = subscriptionRef.getAndSet(null); + if (s != null) { + doSubscriptionCancel(s); + } + } + return cancelled; + } + + void onSubscribeImpl(S s) { + if (validateSubscription(subscriptionRef.getAndSet(s), s)) { + doSubscriptionRequest(s, Long.MAX_VALUE); + } + } + + void onNextImpl(T t) { + S s = subscriptionRef.getAndSet(null); + if (s != null) { + complete(t); + doSubscriptionCancel(s); + } + } + + void onErrorImpl(Throwable t) { + if (subscriptionRef.getAndSet(null) != null) { + completeExceptionally(t); + } + } + + void onCompleteImpl() { + if (subscriptionRef.getAndSet(null) != null) { + complete(null); + } + } + } + + private static class ReactivePublisherToCompletableFuture extends PublisherToCompletableFuture implements Subscriber { + + @Override + void doSubscriptionCancel(Subscription subscription) { + subscription.cancel(); + } + + @Override + void doSubscriptionRequest(Subscription subscription, long n) { + subscription.request(n); + } + + @Override + public void onSubscribe(Subscription s) { + onSubscribeImpl(s); + } + + @Override + public void onNext(T t) { + onNextImpl(t); + } + + @Override + public void onError(Throwable t) { + onErrorImpl(t); + } + + @Override + public void onComplete() { + onCompleteImpl(); + } + } + + private static class FlowPublisherToCompletableFuture extends PublisherToCompletableFuture implements Flow.Subscriber { + + @Override + void doSubscriptionCancel(Flow.Subscription subscription) { + subscription.cancel(); + } + + @Override + void doSubscriptionRequest(Flow.Subscription subscription, long n) { + subscription.request(n); + } + + @Override + public void onSubscribe(Flow.Subscription s) { + onSubscribeImpl(s); + } + + @Override + public void onNext(T t) { + onNextImpl(t); + } + + @Override + public void onError(Throwable t) { + onErrorImpl(t); + } + + @Override + public void onComplete() { + onCompleteImpl(); + } + } +} diff --git a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy index 6fdbeef3f4..49032be15e 100644 --- a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy @@ -236,4 +236,33 @@ class ExecutionContextBuilderTest extends Specification { then: executionContext.getDataLoaderDispatcherStrategy() == mockDataLoaderDispatcherStrategy } + + def "can detect operation type"() { + when: + def executionContext = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .operationDefinition(OperationDefinition.newOperationDefinition().operation(opType).build()) + .build() + + then: + executionContext.isQueryOperation() == isQuery + executionContext.isMutationOperation() == isMutation + executionContext.isSubscriptionOperation() == isSubscription + + where: + opType | isQuery | isMutation | isSubscription + OperationDefinition.Operation.QUERY | true | false | false + OperationDefinition.Operation.MUTATION | false | true | false + OperationDefinition.Operation.SUBSCRIPTION | false | false | true + } } diff --git a/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy b/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy new file mode 100644 index 0000000000..64cf0eab5f --- /dev/null +++ b/src/test/groovy/graphql/execution/pubsub/CountingFlux.groovy @@ -0,0 +1,23 @@ +package graphql.execution.pubsub + +import reactor.core.publisher.Flux + +/** + * A flux that counts how many values it has given out + */ +class CountingFlux { + Flux flux + Integer count = 0 + + CountingFlux(List values) { + flux = Flux.generate({ -> 0 }, { Integer counter, sink -> + if (counter >= values.size()) { + sink.complete() + } else { + sink.next(values[counter]) + count++ + } + return counter + 1; + }) + } +} diff --git a/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy b/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy new file mode 100644 index 0000000000..a5197af4ed --- /dev/null +++ b/src/test/groovy/graphql/execution/reactive/ReactiveSupportTest.groovy @@ -0,0 +1,222 @@ +package graphql.execution.reactive + +import graphql.GraphQL +import graphql.TestUtil +import graphql.execution.pubsub.CapturingSubscriber +import graphql.execution.pubsub.CountingFlux +import graphql.schema.DataFetcher +import reactor.adapter.JdkFlowAdapter +import reactor.core.publisher.Mono +import spock.lang.Specification + +import java.time.Duration +import java.util.concurrent.CancellationException +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CompletionException +import java.util.concurrent.Flow + +class ReactiveSupportTest extends Specification { + + private static Flow.Publisher toFlow(Mono stringMono) { + return JdkFlowAdapter.publisherToFlowPublisher(stringMono) + } + + private static Mono delayedMono(String X, Integer millis) { + Mono.just(X).delayElement(Duration.ofMillis(millis)) + } + + def "will pass through non reactive things and leave them as is"() { + + when: + def val = ReactiveSupport.fetchedObject("X") + then: + val === "X" + + when: + def cf = CompletableFuture.completedFuture("X") + val = ReactiveSupport.fetchedObject(cf) + then: + val === cf + } + + def "can get a reactive or flow publisher and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == "X" + + where: + reactiveObject || _ + Mono.just("X") || _ + toFlow(Mono.just("X")) || _ + } + + def "can get a reactive or flow publisher that takes some time and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + !cf.isDone() + + cf.join() == "X" + + where: + reactiveObject || _ + delayedMono("X", 100) || _ + toFlow(delayedMono("X", 100)) || _ + } + + def "can get a reactive or flow publisher with an error and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + cf.isCompletedExceptionally() + cf.isDone() + + when: + cf.join() + + then: + def e = thrown(CompletionException.class) + e.cause.message == "Bang!" + + where: + reactiveObject || _ + Mono.error(new RuntimeException("Bang!")) || _ + toFlow(Mono.error(new RuntimeException("Bang!"))) || _ + } + + def "can get a empty reactive or flow publisher and make a CF from it"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == null + + where: + reactiveObject || _ + Mono.empty() || _ + toFlow(Mono.empty()) || _ + } + + + def "can get a reactive or flow publisher but cancel it before a value turns up"() { + + when: + CompletableFuture cf = ReactiveSupport.fetchedObject(reactiveObject) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + !cf.isDone() + + when: + def cfCancelled = cf.cancel(true) + + then: + cfCancelled + cf.isCancelled() + cf.isCompletedExceptionally() + cf.isDone() + + when: + cf.join() + + then: + thrown(CancellationException.class) + + where: + reactiveObject || _ + delayedMono("X", 1000) || _ + toFlow(delayedMono("X", 1000)) || _ + + } + + + def "can get a reactive Flux and only take one value and make a CF from it"() { + + def xyzStrings = ["X", "Y", "Z"] + when: + def countingFlux = new CountingFlux(xyzStrings) + CompletableFuture cf = ReactiveSupport.fetchedObject(countingFlux.flux) as CompletableFuture + + then: + !cf.isCancelled() + !cf.isCompletedExceptionally() + cf.isDone() + + cf.join() == "X" + countingFlux.count == 1 + + when: + def capturingSubscriber = new CapturingSubscriber<>() + countingFlux.flux.subscribe(capturingSubscriber) + + then: + // second subscriber + capturingSubscriber.events == ["X", "Y", "Z"] + countingFlux.count == 4 + } + + def "integration test showing reactive values in data fetchers as well as the ones we know and love"() { + def sdl = """ + type Query { + reactorField : String + flowField : String + cfField : String + materialisedField : String + } + """ + + // with some delay + def reactorDF = { env -> delayedMono("reactor", 100) } as DataFetcher + def flowDF = { env -> toFlow(delayedMono("flow", 50)) } as DataFetcher + + def cfDF = { env -> CompletableFuture.completedFuture("cf") } as DataFetcher + def materialisedDF = { env -> "materialised" } as DataFetcher + + def schema = TestUtil.schema(sdl, [Query: [ + reactorField : reactorDF, + flowField : flowDF, + cfField : cfDF, + materialisedField: materialisedDF, + ]]) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + def er = graphQL.execute(""" + query q { + reactorField + flowField + cfField + materialisedField + } + """) + + then: + er.errors.isEmpty() + er.data == [ + reactorField : "reactor", + flowField : "flow", + cfField : "cf", + materialisedField: "materialised" + ] + } +} From 046545c7114c47860c3ad412ea486a0c452527c4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 00:44:23 +0000 Subject: [PATCH 065/345] Add performance results for commit 8a7a525db9b5717f09967ea72a17539c752f5139 --- ...9b5717f09967ea72a17539c752f5139-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json diff --git a/performance-results/8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json b/performance-results/8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json new file mode 100644 index 0000000000..a49990b07b --- /dev/null +++ b/performance-results/8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420949896379392, + "scoreError" : 0.01628403194646752, + "scoreConfidence" : [ + 3.4046658644329244, + 3.4372339283258593 + ], + "scorePercentiles" : { + "0.0" : 3.4188435432529154, + "50.0" : 3.4204396423535104, + "90.0" : 3.424076757557632, + "95.0" : 3.424076757557632, + "99.0" : 3.424076757557632, + "99.9" : 3.424076757557632, + "99.99" : 3.424076757557632, + "99.999" : 3.424076757557632, + "99.9999" : 3.424076757557632, + "100.0" : 3.424076757557632 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4188435432529154, + 3.421908668137999 + ], + [ + 3.418970616569022, + 3.424076757557632 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7255102024647864, + "scoreError" : 0.021364883909079587, + "scoreConfidence" : [ + 1.7041453185557067, + 1.746875086373866 + ], + "scorePercentiles" : { + "0.0" : 1.72128683784593, + "50.0" : 1.725701071306684, + "90.0" : 1.7293518293998478, + "95.0" : 1.7293518293998478, + "99.0" : 1.7293518293998478, + "99.9" : 1.7293518293998478, + "99.99" : 1.7293518293998478, + "99.999" : 1.7293518293998478, + "99.9999" : 1.7293518293998478, + "100.0" : 1.7293518293998478 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.72128683784593, + 1.7259519592811081 + ], + [ + 1.7254501833322597, + 1.7293518293998478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685547429061956, + "scoreError" : 0.005290556037275178, + "scoreConfidence" : [ + 0.8632641868689205, + 0.8738452989434707 + ], + "scorePercentiles" : { + "0.0" : 0.8674724113669483, + "50.0" : 0.8687026144586406, + "90.0" : 0.8693413313405531, + "95.0" : 0.8693413313405531, + "99.0" : 0.8693413313405531, + "99.9" : 0.8693413313405531, + "99.99" : 0.8693413313405531, + "99.999" : 0.8693413313405531, + "99.9999" : 0.8693413313405531, + "100.0" : 0.8693413313405531 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8684051170091848, + 0.8693413313405531 + ], + [ + 0.8674724113669483, + 0.8690001119080965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.089227612809836, + "scoreError" : 1.3531101295796832, + "scoreConfidence" : [ + 41.73611748323015, + 44.44233774238952 + ], + "scorePercentiles" : { + "0.0" : 41.991026181776746, + "50.0" : 42.96985075423238, + "90.0" : 44.3727715406368, + "95.0" : 44.3727715406368, + "99.0" : 44.3727715406368, + "99.9" : 44.3727715406368, + "99.99" : 44.3727715406368, + "99.999" : 44.3727715406368, + "99.9999" : 44.3727715406368, + "100.0" : 44.3727715406368 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.3727715406368, + 43.87067960599124, + 43.8173678318773 + ], + [ + 41.991026181776746, + 42.25170045029962, + 42.41654248350573 + ], + [ + 42.96985075423238, + 43.16197952726839, + 42.95113013970035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022683338380857662, + "scoreError" : 3.284773036128061E-4, + "scoreConfidence" : [ + 0.022354861077244857, + 0.023011815684470468 + ], + "scorePercentiles" : { + "0.0" : 0.022339839379464287, + "50.0" : 0.02270586256235828, + "90.0" : 0.022924023535469108, + "95.0" : 0.022924023535469108, + "99.0" : 0.022924023535469108, + "99.9" : 0.022924023535469108, + "99.99" : 0.022924023535469108, + "99.999" : 0.022924023535469108, + "99.9999" : 0.022924023535469108, + "100.0" : 0.022924023535469108 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02280316886332574, + 0.02270586256235828, + 0.02270913211564626 + ], + [ + 0.022924023535469108, + 0.022892388743707096, + 0.02265831473755656 + ], + [ + 0.02269794418594104, + 0.022339839379464287, + 0.02241937130425056 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From d7c47f97deae069f84fba0066d1ceac68b24a480 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 28 Nov 2024 11:38:17 +1000 Subject: [PATCH 066/345] testing --- .github/workflows/commit_performance_result.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/commit_performance_result.yml b/.github/workflows/commit_performance_result.yml index b041852653..c4db0610e8 100644 --- a/.github/workflows/commit_performance_result.yml +++ b/.github/workflows/commit_performance_result.yml @@ -5,6 +5,10 @@ on: sha: description: 'the commit sha which was performance tested' required: true + branch: + description: 'the branch which the results should be commited in' + required: false + default: 'master' permissions: id-token: write # This is required for requesting the JWT @@ -18,11 +22,13 @@ jobs: role-to-assume: arn:aws:iam::637423498965:role/GitHubActionGrahQLJava aws-region: "ap-southeast-2" - uses: actions/checkout@v4 + with: + ref: ${{ github.event.inputs.branch }} - run: | - aws s3 cp s3://graphql-java-jmh-output/${{ github.event.inputs.sha }}-jdk17.json ./performance-results + aws s3 cp s3://graphql-java-jmh-output/ ./performance-results --recursive --exclude "*" --include "*-${{ github.event.inputs.sha }}-jdk17.json" git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add performance-results/${{ github.event.inputs.sha }}-jdk17.json + git add performance-results/*-${{ github.event.inputs.sha }}-jdk17.json if [ -z "$(git status --porcelain)" ]; then echo "Performance results already present" exit 0 From 1d50c655aaf1a907b65f39e2eba310f3463ba5d5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 01:39:20 +0000 Subject: [PATCH 067/345] Add performance results for commit 8a7a525db9b5717f09967ea72a17539c752f5139 --- ...9b5717f09967ea72a17539c752f5139-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-11-28T10:10:10Z-8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json diff --git a/performance-results/2024-11-28T10:10:10Z-8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json b/performance-results/2024-11-28T10:10:10Z-8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json new file mode 100644 index 0000000000..a49990b07b --- /dev/null +++ b/performance-results/2024-11-28T10:10:10Z-8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420949896379392, + "scoreError" : 0.01628403194646752, + "scoreConfidence" : [ + 3.4046658644329244, + 3.4372339283258593 + ], + "scorePercentiles" : { + "0.0" : 3.4188435432529154, + "50.0" : 3.4204396423535104, + "90.0" : 3.424076757557632, + "95.0" : 3.424076757557632, + "99.0" : 3.424076757557632, + "99.9" : 3.424076757557632, + "99.99" : 3.424076757557632, + "99.999" : 3.424076757557632, + "99.9999" : 3.424076757557632, + "100.0" : 3.424076757557632 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4188435432529154, + 3.421908668137999 + ], + [ + 3.418970616569022, + 3.424076757557632 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7255102024647864, + "scoreError" : 0.021364883909079587, + "scoreConfidence" : [ + 1.7041453185557067, + 1.746875086373866 + ], + "scorePercentiles" : { + "0.0" : 1.72128683784593, + "50.0" : 1.725701071306684, + "90.0" : 1.7293518293998478, + "95.0" : 1.7293518293998478, + "99.0" : 1.7293518293998478, + "99.9" : 1.7293518293998478, + "99.99" : 1.7293518293998478, + "99.999" : 1.7293518293998478, + "99.9999" : 1.7293518293998478, + "100.0" : 1.7293518293998478 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.72128683784593, + 1.7259519592811081 + ], + [ + 1.7254501833322597, + 1.7293518293998478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685547429061956, + "scoreError" : 0.005290556037275178, + "scoreConfidence" : [ + 0.8632641868689205, + 0.8738452989434707 + ], + "scorePercentiles" : { + "0.0" : 0.8674724113669483, + "50.0" : 0.8687026144586406, + "90.0" : 0.8693413313405531, + "95.0" : 0.8693413313405531, + "99.0" : 0.8693413313405531, + "99.9" : 0.8693413313405531, + "99.99" : 0.8693413313405531, + "99.999" : 0.8693413313405531, + "99.9999" : 0.8693413313405531, + "100.0" : 0.8693413313405531 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8684051170091848, + 0.8693413313405531 + ], + [ + 0.8674724113669483, + 0.8690001119080965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.089227612809836, + "scoreError" : 1.3531101295796832, + "scoreConfidence" : [ + 41.73611748323015, + 44.44233774238952 + ], + "scorePercentiles" : { + "0.0" : 41.991026181776746, + "50.0" : 42.96985075423238, + "90.0" : 44.3727715406368, + "95.0" : 44.3727715406368, + "99.0" : 44.3727715406368, + "99.9" : 44.3727715406368, + "99.99" : 44.3727715406368, + "99.999" : 44.3727715406368, + "99.9999" : 44.3727715406368, + "100.0" : 44.3727715406368 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.3727715406368, + 43.87067960599124, + 43.8173678318773 + ], + [ + 41.991026181776746, + 42.25170045029962, + 42.41654248350573 + ], + [ + 42.96985075423238, + 43.16197952726839, + 42.95113013970035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022683338380857662, + "scoreError" : 3.284773036128061E-4, + "scoreConfidence" : [ + 0.022354861077244857, + 0.023011815684470468 + ], + "scorePercentiles" : { + "0.0" : 0.022339839379464287, + "50.0" : 0.02270586256235828, + "90.0" : 0.022924023535469108, + "95.0" : 0.022924023535469108, + "99.0" : 0.022924023535469108, + "99.9" : 0.022924023535469108, + "99.99" : 0.022924023535469108, + "99.999" : 0.022924023535469108, + "99.9999" : 0.022924023535469108, + "100.0" : 0.022924023535469108 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02280316886332574, + 0.02270586256235828, + 0.02270913211564626 + ], + [ + 0.022924023535469108, + 0.022892388743707096, + 0.02265831473755656 + ], + [ + 0.02269794418594104, + 0.022339839379464287, + 0.02241937130425056 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 7825307760f46969a656fd1fe451eaf1baa42c36 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 01:54:08 +0000 Subject: [PATCH 068/345] Add performance results for commit 1d50c655aaf1a907b65f39e2eba310f3463ba5d5 --- ...af1a907b65f39e2eba310f3463ba5d5-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json diff --git a/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json b/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json new file mode 100644 index 0000000000..e038ff0fed --- /dev/null +++ b/performance-results/2024-11-28T01:53:48Z-1d50c655aaf1a907b65f39e2eba310f3463ba5d5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4098507705676995, + "scoreError" : 0.0248935503366656, + "scoreConfidence" : [ + 3.384957220231034, + 3.434744320904365 + ], + "scorePercentiles" : { + "0.0" : 3.40519673991893, + "50.0" : 3.409982052692473, + "90.0" : 3.414242236966922, + "95.0" : 3.414242236966922, + "99.0" : 3.414242236966922, + "99.9" : 3.414242236966922, + "99.99" : 3.414242236966922, + "99.999" : 3.414242236966922, + "99.9999" : 3.414242236966922, + "100.0" : 3.414242236966922 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411312710571647, + 3.414242236966922 + ], + [ + 3.40519673991893, + 3.4086513948132993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7231380231942457, + "scoreError" : 0.01856164149472618, + "scoreConfidence" : [ + 1.7045763816995194, + 1.741699664688972 + ], + "scorePercentiles" : { + "0.0" : 1.7201780646528506, + "50.0" : 1.722962619633562, + "90.0" : 1.7264487888570081, + "95.0" : 1.7264487888570081, + "99.0" : 1.7264487888570081, + "99.9" : 1.7264487888570081, + "99.99" : 1.7264487888570081, + "99.999" : 1.7264487888570081, + "99.9999" : 1.7264487888570081, + "100.0" : 1.7264487888570081 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7213864558761982, + 1.7264487888570081 + ], + [ + 1.7201780646528506, + 1.7245387833909256 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8669447004278835, + "scoreError" : 0.0033409895220654477, + "scoreConfidence" : [ + 0.8636037109058181, + 0.8702856899499489 + ], + "scorePercentiles" : { + "0.0" : 0.8663656186685549, + "50.0" : 0.8669349875468758, + "90.0" : 0.8675432079492276, + "95.0" : 0.8675432079492276, + "99.0" : 0.8675432079492276, + "99.9" : 0.8675432079492276, + "99.99" : 0.8675432079492276, + "99.999" : 0.8675432079492276, + "99.9999" : 0.8675432079492276, + "100.0" : 0.8675432079492276 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675432079492276, + 0.8663656186685549 + ], + [ + 0.8667023944569926, + 0.867167580636759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.926276842278895, + "scoreError" : 2.4191606861477783, + "scoreConfidence" : [ + 40.50711615613112, + 45.34543752842667 + ], + "scorePercentiles" : { + "0.0" : 40.61444079049615, + "50.0" : 42.970686811193, + "90.0" : 45.1302030720952, + "95.0" : 45.1302030720952, + "99.0" : 45.1302030720952, + "99.9" : 45.1302030720952, + "99.99" : 45.1302030720952, + "99.999" : 45.1302030720952, + "99.9999" : 45.1302030720952, + "100.0" : 45.1302030720952 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.40817053790828, + 43.939215333141064, + 45.1302030720952 + ], + [ + 42.18269950399568, + 40.61444079049615, + 41.31916000552604 + ], + [ + 42.799976301303936, + 42.970686811193, + 42.971939224850715 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022611135359511498, + "scoreError" : 5.924153810738151E-4, + "scoreConfidence" : [ + 0.022018719978437684, + 0.02320355074058531 + ], + "scorePercentiles" : { + "0.0" : 0.02192285936323851, + "50.0" : 0.022678289092760182, + "90.0" : 0.023260692930232557, + "95.0" : 0.023260692930232557, + "99.0" : 0.023260692930232557, + "99.9" : 0.023260692930232557, + "99.99" : 0.023260692930232557, + "99.999" : 0.023260692930232557, + "99.9999" : 0.023260692930232557, + "100.0" : 0.023260692930232557 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022732881079545453, + 0.023260692930232557, + 0.022742364038636362 + ], + [ + 0.022468225233183856, + 0.022678289092760182, + 0.02192285936323851 + ], + [ + 0.022457287367713005, + 0.022713271950113377, + 0.02252434718018018 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 08c6bb833c18034c051725c41206260ab907805e Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 28 Nov 2024 14:36:57 +1100 Subject: [PATCH 069/345] Extra tests to show that the document compiler can inline everything or not --- ...ormalizedOperationToAstCompilerTest.groovy | 45 ++++++++++--------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy index f4a72f0090..0c3d024a0c 100644 --- a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy @@ -2209,18 +2209,19 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat ''' def query = ''' - query named($fooArgVar : String, $barArgVar : String, $skipVar : Boolean!) { + query named($fooArgVar : String, $barArgVar : String, $skipVar : Boolean!, $optVar : [String!]!) { foo(fooArg : $fooArgVar) @skip(if : $skipVar) { - bar(barArg : $barArgVar) @optIn(to : ["optToX"]) + bar(barArg : $barArgVar) @optIn(to : ["optToX"]) @optIn(to : $optVar) } } ''' GraphQLSchema schema = mkSchema(sdl) - def fields = createNormalizedFields(schema, query, - [fooArgVar: "fooArgVar", barArgVar: "barArgVar", skipVar: false]) + def eno = createNormalizedTree(schema, query, + [fooArgVar: "fooArgVar", barArgVar: "barArgVar", skipVar: false, optVar : ["optToY"]]) when: - def result = localCompileToDocument(schema, QUERY, "named", fields, allVariables) + def result = localCompileToDocument(schema, QUERY, "named", + eno.getTopLevelFields(),eno.getNormalizedFieldToQueryDirectives(), allVariables) def document = result.document def vars = result.variables def ast = printDoc(document) @@ -2231,18 +2232,19 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat // the below is what ir currently produces but its WRONG // fix up when the other tests starts to work // - ast == '''query named($v0: String, $v1: String) { - foo(fooArg: $v1) { - bar(barArg: $v0) - } -} -''' +// ast == '''query named { +// foo(fooArg: "fooArgVar") @skip(if: false) { +// bar(barArg: "barArgVar") @optIn(to: ["optToX"]) @optIn(to: ["optToY"]) +// } +//} +//''' when: "it has no variables" - result = localCompileToDocument(schema, QUERY, "named", fields, noVariables) + result = localCompileToDocument(schema, QUERY, "named", + eno.getTopLevelFields(),eno.getNormalizedFieldToQueryDirectives(), noVariables) document = result.document vars = result.variables ast = printDoc(document) @@ -2251,7 +2253,7 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat vars == [:] ast == '''query named { foo(fooArg: "fooArgVar") @skip(if: false) { - bar(barArg: "barArgVar") @optIn(to: ["optToX"]) + bar(barArg: "barArgVar") @optIn(to: ["optToX"]) @optIn(to: ["optToY"]) } } ''' @@ -2292,14 +2294,6 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat return localCompileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); } - private static Document sortDoc(Document doc) { - return new AstSorter().sort(doc) - } - - private static printDoc(Document doc) { - return AstPrinter.printAst(sortDoc(doc)) - } - private static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( GraphQLSchema schema, OperationDefinition.Operation operationKind, @@ -2313,6 +2307,15 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat } return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) } + + private static Document sortDoc(Document doc) { + return new AstSorter().sort(doc) + } + + private static printDoc(Document doc) { + return AstPrinter.printAst(sortDoc(doc)) + } + } class ExecutableNormalizedOperationToAstCompilerTestWithDeferSupport extends ExecutableNormalizedOperationToAstCompilerTest { From a3fcfcb843b2104f40e75940cea4ed03e6de12c0 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 28 Nov 2024 13:41:07 +1000 Subject: [PATCH 070/345] cleanup test runs for performance testing --- ...9b5717f09967ea72a17539c752f5139-jdk17.json | 287 ------------------ ...8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json | 287 ------------------ ...9b5717f09967ea72a17539c752f5139-jdk17.json | 287 ------------------ 3 files changed, 861 deletions(-) delete mode 100644 performance-results/2024-11-28T10:10:10Z-8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json delete mode 100644 performance-results/540d229fc8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json delete mode 100644 performance-results/8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json diff --git a/performance-results/2024-11-28T10:10:10Z-8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json b/performance-results/2024-11-28T10:10:10Z-8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json deleted file mode 100644 index a49990b07b..0000000000 --- a/performance-results/2024-11-28T10:10:10Z-8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json +++ /dev/null @@ -1,287 +0,0 @@ -[ - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "5" - }, - "primaryMetric" : { - "score" : 3.420949896379392, - "scoreError" : 0.01628403194646752, - "scoreConfidence" : [ - 3.4046658644329244, - 3.4372339283258593 - ], - "scorePercentiles" : { - "0.0" : 3.4188435432529154, - "50.0" : 3.4204396423535104, - "90.0" : 3.424076757557632, - "95.0" : 3.424076757557632, - "99.0" : 3.424076757557632, - "99.9" : 3.424076757557632, - "99.99" : 3.424076757557632, - "99.999" : 3.424076757557632, - "99.9999" : 3.424076757557632, - "100.0" : 3.424076757557632 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 3.4188435432529154, - 3.421908668137999 - ], - [ - 3.418970616569022, - 3.424076757557632 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "10" - }, - "primaryMetric" : { - "score" : 1.7255102024647864, - "scoreError" : 0.021364883909079587, - "scoreConfidence" : [ - 1.7041453185557067, - 1.746875086373866 - ], - "scorePercentiles" : { - "0.0" : 1.72128683784593, - "50.0" : 1.725701071306684, - "90.0" : 1.7293518293998478, - "95.0" : 1.7293518293998478, - "99.0" : 1.7293518293998478, - "99.9" : 1.7293518293998478, - "99.99" : 1.7293518293998478, - "99.999" : 1.7293518293998478, - "99.9999" : 1.7293518293998478, - "100.0" : 1.7293518293998478 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 1.72128683784593, - 1.7259519592811081 - ], - [ - 1.7254501833322597, - 1.7293518293998478 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "20" - }, - "primaryMetric" : { - "score" : 0.8685547429061956, - "scoreError" : 0.005290556037275178, - "scoreConfidence" : [ - 0.8632641868689205, - 0.8738452989434707 - ], - "scorePercentiles" : { - "0.0" : 0.8674724113669483, - "50.0" : 0.8687026144586406, - "90.0" : 0.8693413313405531, - "95.0" : 0.8693413313405531, - "99.0" : 0.8693413313405531, - "99.9" : 0.8693413313405531, - "99.99" : 0.8693413313405531, - "99.999" : 0.8693413313405531, - "99.9999" : 0.8693413313405531, - "100.0" : 0.8693413313405531 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 0.8684051170091848, - 0.8693413313405531 - ], - [ - 0.8674724113669483, - 0.8690001119080965 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 3, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 3, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 43.089227612809836, - "scoreError" : 1.3531101295796832, - "scoreConfidence" : [ - 41.73611748323015, - 44.44233774238952 - ], - "scorePercentiles" : { - "0.0" : 41.991026181776746, - "50.0" : 42.96985075423238, - "90.0" : 44.3727715406368, - "95.0" : 44.3727715406368, - "99.0" : 44.3727715406368, - "99.9" : 44.3727715406368, - "99.99" : 44.3727715406368, - "99.999" : 44.3727715406368, - "99.9999" : 44.3727715406368, - "100.0" : 44.3727715406368 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 44.3727715406368, - 43.87067960599124, - 43.8173678318773 - ], - [ - 41.991026181776746, - 42.25170045029962, - 42.41654248350573 - ], - [ - 42.96985075423238, - 43.16197952726839, - 42.95113013970035 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", - "mode" : "avgt", - "threads" : 1, - "forks" : 3, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 3, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 0.022683338380857662, - "scoreError" : 3.284773036128061E-4, - "scoreConfidence" : [ - 0.022354861077244857, - 0.023011815684470468 - ], - "scorePercentiles" : { - "0.0" : 0.022339839379464287, - "50.0" : 0.02270586256235828, - "90.0" : 0.022924023535469108, - "95.0" : 0.022924023535469108, - "99.0" : 0.022924023535469108, - "99.9" : 0.022924023535469108, - "99.99" : 0.022924023535469108, - "99.999" : 0.022924023535469108, - "99.9999" : 0.022924023535469108, - "100.0" : 0.022924023535469108 - }, - "scoreUnit" : "s/op", - "rawData" : [ - [ - 0.02280316886332574, - 0.02270586256235828, - 0.02270913211564626 - ], - [ - 0.022924023535469108, - 0.022892388743707096, - 0.02265831473755656 - ], - [ - 0.02269794418594104, - 0.022339839379464287, - 0.02241937130425056 - ] - ] - }, - "secondaryMetrics" : { - } - } -] - - diff --git a/performance-results/540d229fc8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json b/performance-results/540d229fc8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json deleted file mode 100644 index 3adb4867d0..0000000000 --- a/performance-results/540d229fc8d94fe2a1e83736a86b0bb747a21fcf-jdk17.json +++ /dev/null @@ -1,287 +0,0 @@ -[ - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "5" - }, - "primaryMetric" : { - "score" : 3.425027671334907, - "scoreError" : 0.019394874897190422, - "scoreConfidence" : [ - 3.4056327964377164, - 3.444422546232097 - ], - "scorePercentiles" : { - "0.0" : 3.420975063130007, - "50.0" : 3.4256720602887833, - "90.0" : 3.4277915016320537, - "95.0" : 3.4277915016320537, - "99.0" : 3.4277915016320537, - "99.9" : 3.4277915016320537, - "99.99" : 3.4277915016320537, - "99.999" : 3.4277915016320537, - "99.9999" : 3.4277915016320537, - "100.0" : 3.4277915016320537 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 3.424639599455906, - 3.4267045211216614 - ], - [ - 3.420975063130007, - 3.4277915016320537 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "10" - }, - "primaryMetric" : { - "score" : 1.7280782697921466, - "scoreError" : 0.006372553685903318, - "scoreConfidence" : [ - 1.7217057161062432, - 1.73445082347805 - ], - "scorePercentiles" : { - "0.0" : 1.7266877099364115, - "50.0" : 1.7283196945833703, - "90.0" : 1.728985980065435, - "95.0" : 1.728985980065435, - "99.0" : 1.728985980065435, - "99.9" : 1.728985980065435, - "99.99" : 1.728985980065435, - "99.999" : 1.728985980065435, - "99.9999" : 1.728985980065435, - "100.0" : 1.728985980065435 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 1.7266877099364115, - 1.728985980065435 - ], - [ - 1.7281724421340159, - 1.7284669470327245 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "20" - }, - "primaryMetric" : { - "score" : 0.8709303844730016, - "scoreError" : 0.00492635936324371, - "scoreConfidence" : [ - 0.8660040251097579, - 0.8758567438362453 - ], - "scorePercentiles" : { - "0.0" : 0.8703405464341464, - "50.0" : 0.8707150420166001, - "90.0" : 0.8719509074246605, - "95.0" : 0.8719509074246605, - "99.0" : 0.8719509074246605, - "99.9" : 0.8719509074246605, - "99.99" : 0.8719509074246605, - "99.999" : 0.8719509074246605, - "99.9999" : 0.8719509074246605, - "100.0" : 0.8719509074246605 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 0.8703405464341464, - 0.8703534790461147 - ], - [ - 0.8710766049870854, - 0.8719509074246605 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 3, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 3, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 44.465749524208896, - "scoreError" : 2.154709431526372, - "scoreConfidence" : [ - 42.311040092682525, - 46.620458955735266 - ], - "scorePercentiles" : { - "0.0" : 42.77767639257472, - "50.0" : 44.56642718342104, - "90.0" : 45.907360988402964, - "95.0" : 45.907360988402964, - "99.0" : 45.907360988402964, - "99.9" : 45.907360988402964, - "99.99" : 45.907360988402964, - "99.999" : 45.907360988402964, - "99.9999" : 45.907360988402964, - "100.0" : 45.907360988402964 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 42.77767639257472, - 43.033173805913385, - 43.03032852363221 - ], - [ - 45.88530648785466, - 45.907360988402964, - 45.90523489485257 - ], - [ - 44.50398480677225, - 44.582252634456125, - 44.56642718342104 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", - "mode" : "avgt", - "threads" : 1, - "forks" : 3, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 3, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 0.023150489301090548, - "scoreError" : 0.0020925790760395664, - "scoreConfidence" : [ - 0.02105791022505098, - 0.025243068377130116 - ], - "scorePercentiles" : { - "0.0" : 0.022130810703539824, - "50.0" : 0.022517480159550563, - "90.0" : 0.024807574037128712, - "95.0" : 0.024807574037128712, - "99.0" : 0.024807574037128712, - "99.9" : 0.024807574037128712, - "99.99" : 0.024807574037128712, - "99.999" : 0.024807574037128712, - "99.9999" : 0.024807574037128712, - "100.0" : 0.024807574037128712 - }, - "scoreUnit" : "s/op", - "rawData" : [ - [ - 0.022146164626106194, - 0.022135313243362834, - 0.022130810703539824 - ], - [ - 0.022517480159550563, - 0.022521949348314606, - 0.022514097997752808 - ], - [ - 0.024776576205445544, - 0.024804437388613862, - 0.024807574037128712 - ] - ] - }, - "secondaryMetrics" : { - } - } -] - - diff --git a/performance-results/8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json b/performance-results/8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json deleted file mode 100644 index a49990b07b..0000000000 --- a/performance-results/8a7a525db9b5717f09967ea72a17539c752f5139-jdk17.json +++ /dev/null @@ -1,287 +0,0 @@ -[ - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "5" - }, - "primaryMetric" : { - "score" : 3.420949896379392, - "scoreError" : 0.01628403194646752, - "scoreConfidence" : [ - 3.4046658644329244, - 3.4372339283258593 - ], - "scorePercentiles" : { - "0.0" : 3.4188435432529154, - "50.0" : 3.4204396423535104, - "90.0" : 3.424076757557632, - "95.0" : 3.424076757557632, - "99.0" : 3.424076757557632, - "99.9" : 3.424076757557632, - "99.99" : 3.424076757557632, - "99.999" : 3.424076757557632, - "99.9999" : 3.424076757557632, - "100.0" : 3.424076757557632 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 3.4188435432529154, - 3.421908668137999 - ], - [ - 3.418970616569022, - 3.424076757557632 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "10" - }, - "primaryMetric" : { - "score" : 1.7255102024647864, - "scoreError" : 0.021364883909079587, - "scoreConfidence" : [ - 1.7041453185557067, - 1.746875086373866 - ], - "scorePercentiles" : { - "0.0" : 1.72128683784593, - "50.0" : 1.725701071306684, - "90.0" : 1.7293518293998478, - "95.0" : 1.7293518293998478, - "99.0" : 1.7293518293998478, - "99.9" : 1.7293518293998478, - "99.99" : 1.7293518293998478, - "99.999" : 1.7293518293998478, - "99.9999" : 1.7293518293998478, - "100.0" : 1.7293518293998478 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 1.72128683784593, - 1.7259519592811081 - ], - [ - 1.7254501833322597, - 1.7293518293998478 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 2, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 2, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "params" : { - "howManyItems" : "20" - }, - "primaryMetric" : { - "score" : 0.8685547429061956, - "scoreError" : 0.005290556037275178, - "scoreConfidence" : [ - 0.8632641868689205, - 0.8738452989434707 - ], - "scorePercentiles" : { - "0.0" : 0.8674724113669483, - "50.0" : 0.8687026144586406, - "90.0" : 0.8693413313405531, - "95.0" : 0.8693413313405531, - "99.0" : 0.8693413313405531, - "99.9" : 0.8693413313405531, - "99.99" : 0.8693413313405531, - "99.999" : 0.8693413313405531, - "99.9999" : 0.8693413313405531, - "100.0" : 0.8693413313405531 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 0.8684051170091848, - 0.8693413313405531 - ], - [ - 0.8674724113669483, - 0.8690001119080965 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", - "mode" : "thrpt", - "threads" : 1, - "forks" : 3, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 3, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 43.089227612809836, - "scoreError" : 1.3531101295796832, - "scoreConfidence" : [ - 41.73611748323015, - 44.44233774238952 - ], - "scorePercentiles" : { - "0.0" : 41.991026181776746, - "50.0" : 42.96985075423238, - "90.0" : 44.3727715406368, - "95.0" : 44.3727715406368, - "99.0" : 44.3727715406368, - "99.9" : 44.3727715406368, - "99.99" : 44.3727715406368, - "99.999" : 44.3727715406368, - "99.9999" : 44.3727715406368, - "100.0" : 44.3727715406368 - }, - "scoreUnit" : "ops/s", - "rawData" : [ - [ - 44.3727715406368, - 43.87067960599124, - 43.8173678318773 - ], - [ - 41.991026181776746, - 42.25170045029962, - 42.41654248350573 - ], - [ - 42.96985075423238, - 43.16197952726839, - 42.95113013970035 - ] - ] - }, - "secondaryMetrics" : { - } - }, - { - "jmhVersion" : "1.37", - "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", - "mode" : "avgt", - "threads" : 1, - "forks" : 3, - "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", - "jvmArgs" : [ - ], - "jdkVersion" : "17.0.10", - "vmName" : "OpenJDK 64-Bit Server VM", - "vmVersion" : "17.0.10+7-LTS", - "warmupIterations" : 2, - "warmupTime" : "5 s", - "warmupBatchSize" : 1, - "measurementIterations" : 3, - "measurementTime" : "10 s", - "measurementBatchSize" : 1, - "primaryMetric" : { - "score" : 0.022683338380857662, - "scoreError" : 3.284773036128061E-4, - "scoreConfidence" : [ - 0.022354861077244857, - 0.023011815684470468 - ], - "scorePercentiles" : { - "0.0" : 0.022339839379464287, - "50.0" : 0.02270586256235828, - "90.0" : 0.022924023535469108, - "95.0" : 0.022924023535469108, - "99.0" : 0.022924023535469108, - "99.9" : 0.022924023535469108, - "99.99" : 0.022924023535469108, - "99.999" : 0.022924023535469108, - "99.9999" : 0.022924023535469108, - "100.0" : 0.022924023535469108 - }, - "scoreUnit" : "s/op", - "rawData" : [ - [ - 0.02280316886332574, - 0.02270586256235828, - 0.02270913211564626 - ], - [ - 0.022924023535469108, - 0.022892388743707096, - 0.02265831473755656 - ], - [ - 0.02269794418594104, - 0.022339839379464287, - 0.02241937130425056 - ] - ] - }, - "secondaryMetrics" : { - } - } -] - - From add6dc559452ae0749db28d6325664be07cf765f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 28 Nov 2024 03:57:01 +0000 Subject: [PATCH 071/345] Add performance results for commit a3fcfcb843b2104f40e75940cea4ed03e6de12c0 --- ...3b2104f40e75940cea4ed03e6de12c0-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json diff --git a/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json b/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json new file mode 100644 index 0000000000..f08161aec7 --- /dev/null +++ b/performance-results/2024-11-28T03:56:43Z-a3fcfcb843b2104f40e75940cea4ed03e6de12c0-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4102578842457145, + "scoreError" : 0.02449629894447283, + "scoreConfidence" : [ + 3.3857615853012417, + 3.4347541831901873 + ], + "scorePercentiles" : { + "0.0" : 3.4062196008890453, + "50.0" : 3.40974951823215, + "90.0" : 3.4153128996295132, + "95.0" : 3.4153128996295132, + "99.0" : 3.4153128996295132, + "99.9" : 3.4153128996295132, + "99.99" : 3.4153128996295132, + "99.999" : 3.4153128996295132, + "99.9999" : 3.4153128996295132, + "100.0" : 3.4153128996295132 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4062196008890453, + 3.409143970092387 + ], + [ + 3.4103550663719124, + 3.4153128996295132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.723628882965939, + "scoreError" : 0.01684992650921796, + "scoreConfidence" : [ + 1.706778956456721, + 1.7404788094751569 + ], + "scorePercentiles" : { + "0.0" : 1.720348242957288, + "50.0" : 1.7237243857120972, + "90.0" : 1.7267185174822728, + "95.0" : 1.7267185174822728, + "99.0" : 1.7267185174822728, + "99.9" : 1.7267185174822728, + "99.99" : 1.7267185174822728, + "99.999" : 1.7267185174822728, + "99.9999" : 1.7267185174822728, + "100.0" : 1.7267185174822728 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.720348242957288, + 1.7239130487239118 + ], + [ + 1.7235357227002823, + 1.7267185174822728 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8675344687711203, + "scoreError" : 0.007218718093431595, + "scoreConfidence" : [ + 0.8603157506776887, + 0.8747531868645518 + ], + "scorePercentiles" : { + "0.0" : 0.8659004700112273, + "50.0" : 0.8679187802361048, + "90.0" : 0.8683998446010442, + "95.0" : 0.8683998446010442, + "99.0" : 0.8683998446010442, + "99.9" : 0.8683998446010442, + "99.99" : 0.8683998446010442, + "99.999" : 0.8683998446010442, + "99.9999" : 0.8683998446010442, + "100.0" : 0.8683998446010442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677972271860673, + 0.8680403332861423 + ], + [ + 0.8659004700112273, + 0.8683998446010442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.18911184050926, + "scoreError" : 0.9546618037946293, + "scoreConfidence" : [ + 41.234450036714634, + 43.14377364430389 + ], + "scorePercentiles" : { + "0.0" : 41.342744086435644, + "50.0" : 42.42040842447684, + "90.0" : 42.949395639087484, + "95.0" : 42.949395639087484, + "99.0" : 42.949395639087484, + "99.9" : 42.949395639087484, + "99.99" : 42.949395639087484, + "99.999" : 42.949395639087484, + "99.9999" : 42.949395639087484, + "100.0" : 42.949395639087484 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.949395639087484, + 42.43053158382356, + 42.77870012159051 + ], + [ + 42.10668734070957, + 42.47808802236617, + 42.42040842447684 + ], + [ + 41.342744086435644, + 41.459171410149246, + 41.736279935944374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022785715830115526, + "scoreError" : 7.765947574646602E-4, + "scoreConfidence" : [ + 0.022009121072650868, + 0.023562310587580185 + ], + "scorePercentiles" : { + "0.0" : 0.02206299895154185, + "50.0" : 0.022887831881006866, + "90.0" : 0.023311196390697675, + "95.0" : 0.023311196390697675, + "99.0" : 0.023311196390697675, + "99.9" : 0.023311196390697675, + "99.99" : 0.023311196390697675, + "99.999" : 0.023311196390697675, + "99.9999" : 0.023311196390697675, + "100.0" : 0.023311196390697675 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022410095964205817, + 0.02206299895154185, + 0.022154066898230088 + ], + [ + 0.022887831881006866, + 0.022883768581235697, + 0.023030873466666667 + ], + [ + 0.02313581221939954, + 0.023311196390697675, + 0.023194798118055554 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 4b4935ffc9944c534ac9fd39268c2648e9aa432c Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 1 Dec 2024 12:43:25 +1100 Subject: [PATCH 072/345] Make deprecated reason non-null --- src/main/java/graphql/Directives.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/graphql/Directives.java b/src/main/java/graphql/Directives.java index da5bfc80ba..f0d9eb6745 100644 --- a/src/main/java/graphql/Directives.java +++ b/src/main/java/graphql/Directives.java @@ -63,7 +63,7 @@ public class Directives { newInputValueDefinition() .name("reason") .description(createDescription("The reason for the deprecation")) - .type(newTypeName().name(STRING).build()) + .type(newNonNullType(newTypeName().name(STRING).build()).build()) .defaultValue(StringValue.newStringValue().value(NO_LONGER_SUPPORTED).build()) .build()) .build(); @@ -197,7 +197,7 @@ public class Directives { .description("Marks the field, argument, input field or enum value as deprecated") .argument(newArgument() .name("reason") - .type(GraphQLString) + .type(nonNull(GraphQLString)) .defaultValueProgrammatic(NO_LONGER_SUPPORTED) .description("The reason for the deprecation")) .validLocations(FIELD_DEFINITION, ENUM_VALUE, ARGUMENT_DEFINITION, INPUT_FIELD_DEFINITION) From b3c99aa6b250b0338e8a025445f6c938e190d566 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 1 Dec 2024 20:52:36 +1100 Subject: [PATCH 073/345] Update schema printer tests --- src/test/groovy/graphql/Issue2141.groovy | 2 +- .../schema/idl/SchemaPrinterTest.groovy | 26 +++++++++---------- .../groovy/graphql/util/AnonymizerTest.groovy | 2 +- src/test/resources/large-schema-1.graphqls | 2 +- src/test/resources/many-fragments.graphqls | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/test/groovy/graphql/Issue2141.groovy b/src/test/groovy/graphql/Issue2141.groovy index 100058c710..4bcd6b6359 100644 --- a/src/test/groovy/graphql/Issue2141.groovy +++ b/src/test/groovy/graphql/Issue2141.groovy @@ -27,7 +27,7 @@ class Issue2141 extends Specification { "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Directs the executor to include this field or fragment only when the `if` argument is true" diff --git a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy index 2802f72808..0d82101be4 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy @@ -968,7 +968,7 @@ type Query { "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @enumTypeDirective on ENUM @@ -1144,7 +1144,7 @@ input SomeInput { result == '''"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Directs the executor to include this field or fragment only when the `if` argument is true" @@ -1240,7 +1240,7 @@ type Query { resultWithDirectives == '''"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @example on FIELD_DEFINITION @@ -1308,7 +1308,7 @@ type Query { resultWithDirectiveDefinitions == '''"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @example on FIELD_DEFINITION @@ -1405,7 +1405,7 @@ extend schema { "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Directs the executor to include this field or fragment only when the `if` argument is true" @@ -1491,7 +1491,7 @@ schema @schemaDirective{ "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Directs the executor to include this field or fragment only when the `if` argument is true" @@ -1631,7 +1631,7 @@ type MyQuery { result == '''"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @directive1 on SCALAR @@ -1873,7 +1873,7 @@ type Query { result == '''"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION type Query { @@ -2167,7 +2167,7 @@ type PrintMeType { "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION directive @foo on SCHEMA @@ -2399,7 +2399,7 @@ directive @include( "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION union ZUnion = XQuery | Query @@ -2515,7 +2515,7 @@ schema { "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION " custom directive 'example' description 1" @@ -2752,7 +2752,7 @@ schema { "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION " custom directive 'example' description 1" @@ -2940,7 +2940,7 @@ input Input { result == """"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" - reason: String = "No longer supported" + reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Directs the executor to include this field or fragment only when the `if` argument is true" diff --git a/src/test/groovy/graphql/util/AnonymizerTest.groovy b/src/test/groovy/graphql/util/AnonymizerTest.groovy index 439132eda3..fab1e37cd3 100644 --- a/src/test/groovy/graphql/util/AnonymizerTest.groovy +++ b/src/test/groovy/graphql/util/AnonymizerTest.groovy @@ -729,7 +729,7 @@ type Object1 { directive @Directive1(argument1: String! = "stringValue4") repeatable on SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION - directive @deprecated(reason: String) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + directive @deprecated(reason: String!) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION interface Interface1 @Directive1(argument1 : "stringValue12") { field2: String diff --git a/src/test/resources/large-schema-1.graphqls b/src/test/resources/large-schema-1.graphqls index 65f548089a..2d4db04b13 100644 --- a/src/test/resources/large-schema-1.graphqls +++ b/src/test/resources/large-schema-1.graphqls @@ -15,7 +15,7 @@ directive @skip( if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -directive @deprecated(reason: String) on FIELD_DEFINITION | ENUM_VALUE +directive @deprecated(reason: String!) on FIELD_DEFINITION | ENUM_VALUE "Exposes a URL that specifies the behaviour of this scalar." directive @specifiedBy( diff --git a/src/test/resources/many-fragments.graphqls b/src/test/resources/many-fragments.graphqls index 977da297a9..f1c76c51eb 100644 --- a/src/test/resources/many-fragments.graphqls +++ b/src/test/resources/many-fragments.graphqls @@ -25,7 +25,7 @@ directive @Directive8(argument7: Enum3!) on FIELD_DEFINITION directive @Directive9(argument8: String!) on OBJECT -directive @deprecated(reason: String) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +directive @deprecated(reason: String!) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( From 017f8acc8c63dc34db8947542a65ea5c3ce656a1 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 1 Dec 2024 21:08:03 +1100 Subject: [PATCH 074/345] Update schema generator test --- .../groovy/graphql/schema/idl/SchemaGeneratorTest.groovy | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy index 20000c8bc8..fd5d118f42 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy @@ -1770,7 +1770,8 @@ class SchemaGeneratorTest extends Specification { def appliedDirective = f1.getAppliedDirective("deprecated") appliedDirective.name == "deprecated" - appliedDirective.getArgument("reason").type == GraphQLString + appliedDirective.getArgument("reason").type instanceof GraphQLNonNull + (appliedDirective.getArgument("reason").type as GraphQLNonNull).wrappedType == GraphQLString printAst(appliedDirective.getArgument("reason").argumentValue.value as Node) == '"No longer supported"' when: @@ -1781,7 +1782,8 @@ class SchemaGeneratorTest extends Specification { def appliedDirective2 = f2.getAppliedDirective("deprecated") appliedDirective2.name == "deprecated" - appliedDirective2.getArgument("reason").type == GraphQLString + appliedDirective2.getArgument("reason").type instanceof GraphQLNonNull + (appliedDirective2.getArgument("reason").type as GraphQLNonNull).wrappedType == GraphQLString printAst(appliedDirective2.getArgument("reason").argumentValue.value as Node) == '"Just because"' def directive2 = f2.getDirective("deprecated") printAst(directive2.getArgument("reason").argumentDefaultValue.value as Node) == '"No longer supported"' From 0a1559b93659dd66589f12919eed58ea78ad8f6d Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 1 Dec 2024 21:50:49 +1100 Subject: [PATCH 075/345] Update anonymizer --- src/main/java/graphql/util/Anonymizer.java | 17 +++++------------ .../groovy/graphql/util/AnonymizerTest.groovy | 8 ++++++-- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/java/graphql/util/Anonymizer.java b/src/main/java/graphql/util/Anonymizer.java index 2d0497eca6..a7f23cfa2f 100644 --- a/src/main/java/graphql/util/Anonymizer.java +++ b/src/main/java/graphql/util/Anonymizer.java @@ -70,6 +70,7 @@ import graphql.schema.GraphQLTypeVisitor; import graphql.schema.GraphQLTypeVisitorStub; import graphql.schema.GraphQLUnionType; +import graphql.schema.InputValueWithState; import graphql.schema.SchemaTransformer; import graphql.schema.TypeResolver; import graphql.schema.idl.DirectiveInfo; @@ -94,6 +95,7 @@ import static graphql.Assert.assertNotNull; import static graphql.parser.ParserEnvironment.newParserEnvironment; import static graphql.schema.GraphQLArgument.newArgument; +import static graphql.schema.GraphQLNonNull.nonNull; import static graphql.schema.GraphQLTypeUtil.unwrapNonNull; import static graphql.schema.GraphQLTypeUtil.unwrapNonNullAs; import static graphql.schema.GraphQLTypeUtil.unwrapOneAs; @@ -260,16 +262,6 @@ public TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition graph @Override public TraversalControl visitGraphQLDirective(GraphQLDirective graphQLDirective, TraverserContext context) { - if (Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName().equals(graphQLDirective.getName())) { - GraphQLArgument reason = newArgument().name("reason") - .type(Scalars.GraphQLString) - .clearValue().build(); - GraphQLDirective newElement = graphQLDirective.transform(builder -> { - builder.description(null).argument(reason); - }); - changeNode(context, newElement); - return TraversalControl.ABORT; - } if (DirectiveInfo.isGraphqlSpecifiedDirective(graphQLDirective.getName())) { return TraversalControl.ABORT; } @@ -285,7 +277,8 @@ public TraversalControl visitGraphQLAppliedDirective(GraphQLAppliedDirective gra if (Directives.DEPRECATED_DIRECTIVE_DEFINITION.getName().equals(graphQLDirective.getName())) { GraphQLAppliedDirectiveArgument reason = GraphQLAppliedDirectiveArgument.newArgument().name("reason") .type(Scalars.GraphQLString) - .clearValue().build(); + .clearValue() + .build(); GraphQLAppliedDirective newElement = graphQLDirective.transform(builder -> { builder.description(null).argument(reason); }); @@ -918,7 +911,7 @@ private static GraphQLType fromTypeToGraphQLType(Type type, GraphQLSchema schema graphql.Assert.assertNotNull(graphQLType, "Schema must contain type %s", typeName); return graphQLType; } else if (type instanceof NonNullType) { - return GraphQLNonNull.nonNull(fromTypeToGraphQLType(TypeUtil.unwrapOne(type), schema)); + return nonNull(fromTypeToGraphQLType(TypeUtil.unwrapOne(type), schema)); } else if (type instanceof ListType) { return GraphQLList.list(fromTypeToGraphQLType(TypeUtil.unwrapOne(type), schema)); } else { diff --git a/src/test/groovy/graphql/util/AnonymizerTest.groovy b/src/test/groovy/graphql/util/AnonymizerTest.groovy index fab1e37cd3..48f5ecde40 100644 --- a/src/test/groovy/graphql/util/AnonymizerTest.groovy +++ b/src/test/groovy/graphql/util/AnonymizerTest.groovy @@ -729,8 +729,12 @@ type Object1 { directive @Directive1(argument1: String! = "stringValue4") repeatable on SCHEMA | SCALAR | OBJECT | FIELD_DEFINITION | ARGUMENT_DEFINITION | INTERFACE | UNION | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION - directive @deprecated(reason: String!) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION - + "Marks the field, argument, input field or enum value as deprecated" + directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" + ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION + interface Interface1 @Directive1(argument1 : "stringValue12") { field2: String field3: Enum1 From a95cc0287cada4ea7045dda536d1f648f4382ba2 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 1 Dec 2024 22:03:14 +1100 Subject: [PATCH 076/345] Tidy up --- src/main/java/graphql/util/Anonymizer.java | 3 --- src/test/resources/large-schema-1.graphqls | 8 ++++++-- src/test/resources/many-fragments.graphqls | 6 +++++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/graphql/util/Anonymizer.java b/src/main/java/graphql/util/Anonymizer.java index a7f23cfa2f..11b3f30309 100644 --- a/src/main/java/graphql/util/Anonymizer.java +++ b/src/main/java/graphql/util/Anonymizer.java @@ -60,7 +60,6 @@ import graphql.schema.GraphQLNamedOutputType; import graphql.schema.GraphQLNamedSchemaElement; import graphql.schema.GraphQLNamedType; -import graphql.schema.GraphQLNonNull; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLScalarType; import graphql.schema.GraphQLSchema; @@ -70,7 +69,6 @@ import graphql.schema.GraphQLTypeVisitor; import graphql.schema.GraphQLTypeVisitorStub; import graphql.schema.GraphQLUnionType; -import graphql.schema.InputValueWithState; import graphql.schema.SchemaTransformer; import graphql.schema.TypeResolver; import graphql.schema.idl.DirectiveInfo; @@ -94,7 +92,6 @@ import static graphql.Assert.assertNotNull; import static graphql.parser.ParserEnvironment.newParserEnvironment; -import static graphql.schema.GraphQLArgument.newArgument; import static graphql.schema.GraphQLNonNull.nonNull; import static graphql.schema.GraphQLTypeUtil.unwrapNonNull; import static graphql.schema.GraphQLTypeUtil.unwrapNonNullAs; diff --git a/src/test/resources/large-schema-1.graphqls b/src/test/resources/large-schema-1.graphqls index 2d4db04b13..d56a03590d 100644 --- a/src/test/resources/large-schema-1.graphqls +++ b/src/test/resources/large-schema-1.graphqls @@ -15,7 +15,11 @@ directive @skip( if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT -directive @deprecated(reason: String!) on FIELD_DEFINITION | ENUM_VALUE +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" +) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Exposes a URL that specifies the behaviour of this scalar." directive @specifiedBy( @@ -544,4 +548,4 @@ input InputObject9 { inputField32: [ID!] inputField33: [Scalar2] inputField34: InputObject8 -} \ No newline at end of file +} diff --git a/src/test/resources/many-fragments.graphqls b/src/test/resources/many-fragments.graphqls index f1c76c51eb..928774ea70 100644 --- a/src/test/resources/many-fragments.graphqls +++ b/src/test/resources/many-fragments.graphqls @@ -25,7 +25,11 @@ directive @Directive8(argument7: Enum3!) on FIELD_DEFINITION directive @Directive9(argument8: String!) on OBJECT -directive @deprecated(reason: String!) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"Marks the field, argument, input field or enum value as deprecated" +directive @deprecated( + "The reason for the deprecation" + reason: String! = "No longer supported" +) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( From c146bc6f3acc2b365d2bb2c04ef9df2d65224dcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 10:44:31 +1100 Subject: [PATCH 077/345] Bump biz.aQute.bnd.builder from 6.4.0 to 7.1.0 (#3762) Bumps [biz.aQute.bnd.builder](https://github.com/bndtools/bnd) from 6.4.0 to 7.1.0. - [Release notes](https://github.com/bndtools/bnd/releases) - [Changelog](https://github.com/bndtools/bnd/blob/master/docs/ADDING_RELEASE_DOCS.md) - [Commits](https://github.com/bndtools/bnd/compare/6.4.0...7.1.0) --- updated-dependencies: - dependency-name: biz.aQute.bnd.builder dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5827022e71..a759e1deae 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { id 'antlr' id 'signing' id "com.github.johnrengelman.shadow" version "8.1.1" - id "biz.aQute.bnd.builder" version "6.4.0" + id "biz.aQute.bnd.builder" version "7.1.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" id "me.champeau.jmh" version "0.7.2" From 9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Tue, 3 Dec 2024 11:56:15 +1100 Subject: [PATCH 078/345] Revert "Bump biz.aQute.bnd.builder from 6.4.0 to 7.1.0 (#3762)" (#3763) This reverts commit c146bc6f3acc2b365d2bb2c04ef9df2d65224dcb. --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a759e1deae..5827022e71 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { id 'antlr' id 'signing' id "com.github.johnrengelman.shadow" version "8.1.1" - id "biz.aQute.bnd.builder" version "7.1.0" + id "biz.aQute.bnd.builder" version "6.4.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" id "me.champeau.jmh" version "0.7.2" From 5a1b9a37731b80850210b9aee382fb1f2277a0d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 12:01:20 +1100 Subject: [PATCH 079/345] Bump com.fasterxml.jackson.core:jackson-databind from 2.18.1 to 2.18.2 (#3761) Bumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.18.1 to 2.18.2. - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 5827022e71..97312894f6 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ dependencies { testImplementation 'org.codehaus.groovy:groovy-json:3.0.23' testImplementation 'com.google.code.gson:gson:2.11.0' testImplementation 'org.eclipse.jetty:jetty-server:11.0.24' - testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.1' + testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.2' testImplementation 'org.awaitility:awaitility-groovy:4.2.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' From dfe16bd381f6f97f2614a17db3d57d005b46ffaf Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 3 Dec 2024 12:21:11 +1000 Subject: [PATCH 080/345] test --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c62746dcf6..ffb1d72984 100644 --- a/README.md +++ b/README.md @@ -34,4 +34,3 @@ take the time to read it. Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) ### Supported by - From cb9a93ce520d0642866588f3e7e27b8b4c7ed913 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 3 Dec 2024 02:58:28 +0000 Subject: [PATCH 081/345] Add performance results for commit 9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a --- ...7f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json diff --git a/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json b/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json new file mode 100644 index 0000000000..cc3c0e1c6c --- /dev/null +++ b/performance-results/2024-12-03T01:09:26Z-9d6e31e367f7b2929dd393a694dc05a0c5bb6e1a-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.416195951743301, + "scoreError" : 0.026850420058968587, + "scoreConfidence" : [ + 3.3893455316843326, + 3.4430463718022697 + ], + "scorePercentiles" : { + "0.0" : 3.4104756625310313, + "50.0" : 3.417284846910124, + "90.0" : 3.4197384506219257, + "95.0" : 3.4197384506219257, + "99.0" : 3.4197384506219257, + "99.9" : 3.4197384506219257, + "99.99" : 3.4197384506219257, + "99.999" : 3.4197384506219257, + "99.9999" : 3.4197384506219257, + "100.0" : 3.4197384506219257 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.415843843944456, + 3.4197384506219257 + ], + [ + 3.4104756625310313, + 3.4187258498757913 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7230485586886197, + "scoreError" : 0.020087806386833534, + "scoreConfidence" : [ + 1.7029607523017862, + 1.7431363650754532 + ], + "scorePercentiles" : { + "0.0" : 1.7187149064375862, + "50.0" : 1.7237077757716905, + "90.0" : 1.726063776773511, + "95.0" : 1.726063776773511, + "99.0" : 1.726063776773511, + "99.9" : 1.726063776773511, + "99.99" : 1.726063776773511, + "99.999" : 1.726063776773511, + "99.9999" : 1.726063776773511, + "100.0" : 1.726063776773511 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7187149064375862, + 1.7240607327472357 + ], + [ + 1.7233548187961456, + 1.726063776773511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8672591450106986, + "scoreError" : 0.0031722136235199333, + "scoreConfidence" : [ + 0.8640869313871786, + 0.8704313586342185 + ], + "scorePercentiles" : { + "0.0" : 0.8668100501731115, + "50.0" : 0.8671493032151358, + "90.0" : 0.8679279234394113, + "95.0" : 0.8679279234394113, + "99.0" : 0.8679279234394113, + "99.9" : 0.8679279234394113, + "99.99" : 0.8679279234394113, + "99.999" : 0.8679279234394113, + "99.9999" : 0.8679279234394113, + "100.0" : 0.8679279234394113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673072236763956, + 0.8668100501731115 + ], + [ + 0.866991382753876, + 0.8679279234394113 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.98710131013886, + "scoreError" : 1.2857923706741503, + "scoreConfidence" : [ + 41.70130893946471, + 44.27289368081301 + ], + "scorePercentiles" : { + "0.0" : 41.39140519888467, + "50.0" : 43.14941248747299, + "90.0" : 44.20711145156694, + "95.0" : 44.20711145156694, + "99.0" : 44.20711145156694, + "99.9" : 44.20711145156694, + "99.99" : 44.20711145156694, + "99.999" : 44.20711145156694, + "99.9999" : 44.20711145156694, + "100.0" : 44.20711145156694 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.20711145156694, + 43.20559444971562, + 43.38709980039055 + ], + [ + 42.65699183021884, + 43.40605138244976, + 42.67513011200432 + ], + [ + 43.14941248747299, + 42.80511507854605, + 41.39140519888467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022628376233754664, + "scoreError" : 0.0010121779437417262, + "scoreConfidence" : [ + 0.021616198290012937, + 0.02364055417749639 + ], + "scorePercentiles" : { + "0.0" : 0.02194287973464912, + "50.0" : 0.02243926284753363, + "90.0" : 0.023448793035128805, + "95.0" : 0.023448793035128805, + "99.0" : 0.023448793035128805, + "99.9" : 0.023448793035128805, + "99.99" : 0.023448793035128805, + "99.999" : 0.023448793035128805, + "99.9999" : 0.023448793035128805, + "100.0" : 0.023448793035128805 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02333720638927739, + 0.023367165808411215, + 0.023448793035128805 + ], + [ + 0.022580380595936794, + 0.022375214377232142, + 0.02243926284753363 + ], + [ + 0.022161285869469027, + 0.022003197446153845, + 0.02194287973464912 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 3e5c77ba3f27de559a65c42684fc7deb9dead263 Mon Sep 17 00:00:00 2001 From: Rafael da Costa Farias Date: Tue, 3 Dec 2024 23:17:49 -0300 Subject: [PATCH 082/345] Update SchemaDirectiveWiringEnvironment.java (#3764) little typo --- .../graphql/schema/idl/SchemaDirectiveWiringEnvironment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java index e888039308..538582ed32 100644 --- a/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java +++ b/src/main/java/graphql/schema/idl/SchemaDirectiveWiringEnvironment.java @@ -126,7 +126,7 @@ public interface SchemaDirectiveWiringEnvironment getBuildContext(); From 7e5987e0f5a525f7a103e3a71ee699fe3758bbd3 Mon Sep 17 00:00:00 2001 From: Alejandro Date: Tue, 3 Dec 2024 20:32:42 -0600 Subject: [PATCH 083/345] ResultPath: Check object type before casting to int (#3765) * Check object type before casting to int * ResultPathTest: Check object type before casting to int --- src/main/java/graphql/execution/ResultPath.java | 4 +++- src/test/groovy/graphql/execution/ResultPathTest.groovy | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/execution/ResultPath.java b/src/main/java/graphql/execution/ResultPath.java index 472b5fa529..c4441b332f 100644 --- a/src/main/java/graphql/execution/ResultPath.java +++ b/src/main/java/graphql/execution/ResultPath.java @@ -149,8 +149,10 @@ public static ResultPath fromList(List objects) { for (Object object : objects) { if (object instanceof String) { path = path.segment(((String) object)); - } else { + } else if (object instanceof Integer) { path = path.segment((int) object); + } else if (object != null) { + path = path.segment(object.toString()); } } return path; diff --git a/src/test/groovy/graphql/execution/ResultPathTest.groovy b/src/test/groovy/graphql/execution/ResultPathTest.groovy index 8242a740b6..a7fe960f19 100644 --- a/src/test/groovy/graphql/execution/ResultPathTest.groovy +++ b/src/test/groovy/graphql/execution/ResultPathTest.groovy @@ -212,6 +212,13 @@ class ResultPathTest extends Specification { path.toList() == ["a", "b"] } + def "pass any other object than string or int"(){ + when: + ResultPath.fromList(["a", "b", true]) + + then: + notThrown(ClassCastException) + } def "can append paths"() { when: From 3e9c5da34867d819dd100077d7cedbc19836ffe1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 4 Dec 2024 02:33:45 +0000 Subject: [PATCH 084/345] Add performance results for commit 3e5c77ba3f27de559a65c42684fc7deb9dead263 --- ...f27de559a65c42684fc7deb9dead263-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json diff --git a/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json b/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json new file mode 100644 index 0000000000..2c04859665 --- /dev/null +++ b/performance-results/2024-12-04T02:33:30Z-3e5c77ba3f27de559a65c42684fc7deb9dead263-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4152001755669277, + "scoreError" : 0.021628843464137723, + "scoreConfidence" : [ + 3.39357133210279, + 3.4368290190310655 + ], + "scorePercentiles" : { + "0.0" : 3.4121139027546206, + "50.0" : 3.4144609174987552, + "90.0" : 3.419764964515579, + "95.0" : 3.419764964515579, + "99.0" : 3.419764964515579, + "99.9" : 3.419764964515579, + "99.99" : 3.419764964515579, + "99.999" : 3.419764964515579, + "99.9999" : 3.419764964515579, + "100.0" : 3.419764964515579 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4134232276246173, + 3.419764964515579 + ], + [ + 3.4121139027546206, + 3.415498607372893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7263020460260308, + "scoreError" : 0.019054912694287184, + "scoreConfidence" : [ + 1.7072471333317436, + 1.745356958720318 + ], + "scorePercentiles" : { + "0.0" : 1.7233094219683196, + "50.0" : 1.7257643130488556, + "90.0" : 1.7303701360380923, + "95.0" : 1.7303701360380923, + "99.0" : 1.7303701360380923, + "99.9" : 1.7303701360380923, + "99.99" : 1.7303701360380923, + "99.999" : 1.7303701360380923, + "99.9999" : 1.7303701360380923, + "100.0" : 1.7303701360380923 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7233094219683196, + 1.7257308147936137 + ], + [ + 1.7257978113040977, + 1.7303701360380923 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680565422533224, + "scoreError" : 0.004144184933370064, + "scoreConfidence" : [ + 0.8639123573199523, + 0.8722007271866925 + ], + "scorePercentiles" : { + "0.0" : 0.8673780217192926, + "50.0" : 0.8680285063653239, + "90.0" : 0.8687911345633491, + "95.0" : 0.8687911345633491, + "99.0" : 0.8687911345633491, + "99.9" : 0.8687911345633491, + "99.99" : 0.8687911345633491, + "99.999" : 0.8687911345633491, + "99.9999" : 0.8687911345633491, + "100.0" : 0.8687911345633491 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673780217192926, + 0.8687911345633491 + ], + [ + 0.8683692960924105, + 0.8676877166382374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.24510151191392, + "scoreError" : 1.658507364853044, + "scoreConfidence" : [ + 41.58659414706088, + 44.90360887676697 + ], + "scorePercentiles" : { + "0.0" : 41.770911843921056, + "50.0" : 43.48692947280641, + "90.0" : 44.42339392286783, + "95.0" : 44.42339392286783, + "99.0" : 44.42339392286783, + "99.9" : 44.42339392286783, + "99.99" : 44.42339392286783, + "99.999" : 44.42339392286783, + "99.9999" : 44.42339392286783, + "100.0" : 44.42339392286783 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.42339392286783, + 43.72390047070996, + 44.0283409955762 + ], + [ + 41.770911843921056, + 41.938385219028056, + 42.33876278427692 + ], + [ + 43.36311706281474, + 43.48692947280641, + 44.13217183522408 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022512762277781196, + "scoreError" : 5.112572288638061E-4, + "scoreConfidence" : [ + 0.02200150504891739, + 0.023024019506645003 + ], + "scorePercentiles" : { + "0.0" : 0.022083574353200883, + "50.0" : 0.022541668768018018, + "90.0" : 0.02301931708275862, + "95.0" : 0.02301931708275862, + "99.0" : 0.02301931708275862, + "99.9" : 0.02301931708275862, + "99.99" : 0.02301931708275862, + "99.999" : 0.02301931708275862, + "99.9999" : 0.02301931708275862, + "100.0" : 0.02301931708275862 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02301931708275862, + 0.02268371470068027, + 0.022794350806378132 + ], + [ + 0.02236791441517857, + 0.02244032732735426, + 0.022571994894144146 + ], + [ + 0.02211199815231788, + 0.022083574353200883, + 0.022541668768018018 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 3e23fea41c3c6e1ba812ae27ed33b5e481936390 Mon Sep 17 00:00:00 2001 From: bbaker Date: Wed, 4 Dec 2024 14:34:23 +1100 Subject: [PATCH 085/345] This adds more support for Query directives in ENFs and the ability to print them back out - we need NormalisedValues for this --- .../java/graphql/execution/Execution.java | 7 ++ .../graphql/execution/ExecutionContext.java | 6 + .../execution/ExecutionContextBuilder.java | 6 + .../graphql/execution/ExecutionStrategy.java | 1 + .../execution/NormalizedVariables.java | 45 +++++++ .../graphql/execution/ValuesResolver.java | 6 +- .../execution/directives/QueryDirectives.java | 14 +++ .../directives/QueryDirectivesBuilder.java | 10 +- .../directives/QueryDirectivesImpl.java | 58 +++++++-- .../graphql/normalized/ArgumentMaker.java | 110 ++++++++++++++++++ .../ExecutableNormalizedOperationFactory.java | 18 ++- ...tableNormalizedOperationToAstCompiler.java | 90 ++++---------- .../normalized/VariableAccumulator.java | 9 +- .../graphql/normalized/VariablePredicate.java | 23 +++- .../directives/QueryDirectivesImplTest.groovy | 6 +- .../QueryDirectivesIntegrationTest.groovy | 23 ++++ .../values/InputInterceptorTest.groovy | 2 +- ...ormalizedOperationToAstCompilerTest.groovy | 4 +- 18 files changed, 347 insertions(+), 91 deletions(-) create mode 100644 src/main/java/graphql/execution/NormalizedVariables.java create mode 100644 src/main/java/graphql/normalized/ArgumentMaker.java diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index cf805a84fb..260d235fd1 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -77,8 +77,14 @@ public CompletableFuture execute(Document document, GraphQLSche List variableDefinitions = operationDefinition.getVariableDefinitions(); CoercedVariables coercedVariables; + NormalizedVariables normalizedVariableValues; try { coercedVariables = ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); + + normalizedVariableValues = ValuesResolver.getNormalizedVariableValues(graphQLSchema, + variableDefinitions, + inputVariables, + executionInput.getGraphQLContext(), executionInput.getLocale()); } catch (RuntimeException rte) { if (rte instanceof GraphQLError) { return completedFuture(new ExecutionResultImpl((GraphQLError) rte)); @@ -100,6 +106,7 @@ public CompletableFuture execute(Document document, GraphQLSche .root(executionInput.getRoot()) .fragmentsByName(fragmentsByName) .coercedVariables(coercedVariables) + .normalizedVariableValues(normalizedVariableValues) .document(document) .operationDefinition(operationDefinition) .dataLoaderRegistry(executionInput.getDataLoaderRegistry()) diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index c122f9d2c3..864446607e 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -45,6 +45,7 @@ public class ExecutionContext { private final OperationDefinition operationDefinition; private final Document document; private final CoercedVariables coercedVariables; + private final NormalizedVariables normalizedVariables; private final Object root; private final Object context; private final GraphQLContext graphQLContext; @@ -74,6 +75,7 @@ public class ExecutionContext { this.subscriptionStrategy = builder.subscriptionStrategy; this.fragmentsByName = builder.fragmentsByName; this.coercedVariables = builder.coercedVariables; + this.normalizedVariables = builder.normalizedVariables; this.document = builder.document; this.operationDefinition = builder.operationDefinition; this.context = builder.context; @@ -127,6 +129,10 @@ public CoercedVariables getCoercedVariables() { return coercedVariables; } + public NormalizedVariables getNormalizedVariables() { + return normalizedVariables; + } + /** * @param for two * diff --git a/src/main/java/graphql/execution/ExecutionContextBuilder.java b/src/main/java/graphql/execution/ExecutionContextBuilder.java index b60c793b20..5e1cdd7071 100644 --- a/src/main/java/graphql/execution/ExecutionContextBuilder.java +++ b/src/main/java/graphql/execution/ExecutionContextBuilder.java @@ -38,6 +38,7 @@ public class ExecutionContextBuilder { Document document; OperationDefinition operationDefinition; CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); + NormalizedVariables normalizedVariables = NormalizedVariables.emptyVariables(); ImmutableMap fragmentsByName = ImmutableKit.emptyMap(); DataLoaderRegistry dataLoaderRegistry; Locale locale; @@ -170,6 +171,11 @@ public ExecutionContextBuilder coercedVariables(CoercedVariables coercedVariable return this; } + public ExecutionContextBuilder normalizedVariableValues(NormalizedVariables normalizedVariables) { + this.normalizedVariables = normalizedVariables; + return this; + } + public ExecutionContextBuilder fragmentsByName(Map fragmentsByName) { this.fragmentsByName = ImmutableMap.copyOf(fragmentsByName); return this; diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index f2cccd4072..f751f3ddbb 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -464,6 +464,7 @@ Async.CombinedBuilder getAsyncFieldValueInfo( QueryDirectives queryDirectives = new QueryDirectivesImpl(field, executionContext.getGraphQLSchema(), executionContext.getCoercedVariables().toMap(), + executionContext.getNormalizedVariables().toMap(), executionContext.getGraphQLContext(), executionContext.getLocale()); diff --git a/src/main/java/graphql/execution/NormalizedVariables.java b/src/main/java/graphql/execution/NormalizedVariables.java new file mode 100644 index 0000000000..ef16fec3cf --- /dev/null +++ b/src/main/java/graphql/execution/NormalizedVariables.java @@ -0,0 +1,45 @@ +package graphql.execution; + +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.collect.ImmutableMapWithNullValues; +import graphql.normalized.NormalizedInputValue; + +import java.util.Map; + +/** + * Holds coerced variables, that is their values are now in a normalized {@link graphql.normalized.NormalizedInputValue} form. + */ +@PublicApi +public class NormalizedVariables { + private final ImmutableMapWithNullValues normalisedVariables; + + public NormalizedVariables(Map normalisedVariables) { + this.normalisedVariables = ImmutableMapWithNullValues.copyOf(normalisedVariables); + } + + public Map toMap() { + return normalisedVariables; + } + + public boolean containsKey(String key) { + return normalisedVariables.containsKey(key); + } + + public Object get(String key) { + return normalisedVariables.get(key); + } + + public static NormalizedVariables emptyVariables() { + return new NormalizedVariables(ImmutableKit.emptyMap()); + } + + public static NormalizedVariables of(Map normalisedVariables) { + return new NormalizedVariables(normalisedVariables); + } + + @Override + public String toString() { + return normalisedVariables.toString(); + } +} diff --git a/src/main/java/graphql/execution/ValuesResolver.java b/src/main/java/graphql/execution/ValuesResolver.java index 94073cbe6d..e86bc18170 100644 --- a/src/main/java/graphql/execution/ValuesResolver.java +++ b/src/main/java/graphql/execution/ValuesResolver.java @@ -101,7 +101,7 @@ public static CoercedVariables coerceVariableValues(GraphQLSchema schema, * * @return a map of the normalised values */ - public static Map getNormalizedVariableValues( + public static NormalizedVariables getNormalizedVariableValues( GraphQLSchema schema, List variableDefinitions, RawVariables rawVariables, @@ -131,9 +131,7 @@ public static Map getNormalizedVariableValues( } } } - - return result; - + return NormalizedVariables.of(result); } diff --git a/src/main/java/graphql/execution/directives/QueryDirectives.java b/src/main/java/graphql/execution/directives/QueryDirectives.java index 162b6f3c53..7063f566c3 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectives.java +++ b/src/main/java/graphql/execution/directives/QueryDirectives.java @@ -4,7 +4,9 @@ import graphql.PublicApi; import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; import graphql.language.Field; +import graphql.normalized.NormalizedInputValue; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; @@ -66,6 +68,16 @@ public interface QueryDirectives { */ Map> getImmediateAppliedDirectivesByField(); + /** + * This will return a map of {@link QueryAppliedDirective} to a map of their argument values in {@link NormalizedInputValue} form + *

+ * NOTE : This will only be available when {@link graphql.normalized.ExecutableNormalizedOperationFactory} is used + * to create the {@link QueryAppliedDirective} information + * + * @return a map of applied directive to named argument values + */ + Map> getNormalizedInputValueByImmediateAppliedDirectives(); + /** * This will return a list of the named directives that are immediately on this merged field. * @@ -108,6 +120,8 @@ interface Builder { Builder coercedVariables(CoercedVariables coercedVariables); + Builder normalizedVariables(NormalizedVariables normalizedVariables); + Builder graphQLContext(GraphQLContext graphQLContext); Builder locale(Locale locale); diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java b/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java index 80f80d1a06..27c98c93dd 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java @@ -4,6 +4,7 @@ import graphql.Internal; import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; import graphql.language.Field; import graphql.schema.GraphQLSchema; @@ -15,6 +16,7 @@ public class QueryDirectivesBuilder implements QueryDirectives.Builder { private MergedField mergedField; private GraphQLSchema schema; private CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); + private NormalizedVariables normalizedVariables = NormalizedVariables.emptyVariables(); private GraphQLContext graphQLContext = GraphQLContext.getDefault(); private Locale locale = Locale.getDefault(); @@ -42,6 +44,12 @@ public QueryDirectives.Builder coercedVariables(CoercedVariables coercedVariable return this; } + @Override + public QueryDirectives.Builder normalizedVariables(NormalizedVariables normalizedVariables) { + this.normalizedVariables = normalizedVariables; + return this; + } + @Override public QueryDirectives.Builder graphQLContext(GraphQLContext graphQLContext) { this.graphQLContext = graphQLContext; @@ -57,6 +65,6 @@ public QueryDirectives.Builder locale(Locale locale) { @Override public QueryDirectives build() { - return new QueryDirectivesImpl(mergedField, schema, coercedVariables.toMap(), graphQLContext, locale); + return new QueryDirectivesImpl(mergedField, schema, coercedVariables.toMap(), normalizedVariables.toMap(), graphQLContext, locale); } } diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java index 68c9b46b57..7981677419 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java @@ -1,13 +1,16 @@ package graphql.execution.directives; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import graphql.GraphQLContext; import graphql.Internal; -import graphql.collect.ImmutableKit; import graphql.execution.MergedField; +import graphql.execution.ValuesResolver; import graphql.language.Directive; import graphql.language.Field; +import graphql.normalized.NormalizedInputValue; import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; @@ -33,7 +36,8 @@ public class QueryDirectivesImpl implements QueryDirectives { private final DirectivesResolver directivesResolver = new DirectivesResolver(); private final MergedField mergedField; private final GraphQLSchema schema; - private final Map variables; + private final Map coercedVariables; + private final Map normalizedVariableValues; private final GraphQLContext graphQLContext; private final Locale locale; @@ -42,11 +46,13 @@ public class QueryDirectivesImpl implements QueryDirectives { private volatile ImmutableMap> fieldDirectivesByName; private volatile ImmutableMap> fieldAppliedDirectivesByField; private volatile ImmutableMap> fieldAppliedDirectivesByName; + private volatile ImmutableMap> normalizedValuesByAppliedDirective; - public QueryDirectivesImpl(MergedField mergedField, GraphQLSchema schema, Map variables, GraphQLContext graphQLContext, Locale locale) { + public QueryDirectivesImpl(MergedField mergedField, GraphQLSchema schema, Map coercedVariables, Map normalizedVariableValues, GraphQLContext graphQLContext, Locale locale) { this.mergedField = mergedField; this.schema = schema; - this.variables = variables; + this.coercedVariables = coercedVariables; + this.normalizedVariableValues = normalizedVariableValues; this.graphQLContext = graphQLContext; this.locale = locale; } @@ -56,16 +62,32 @@ private void computeValuesLazily() { final Map> byField = new LinkedHashMap<>(); final Map> byFieldApplied = new LinkedHashMap<>(); + + BiMap directiveCounterParts = HashBiMap.create(); + BiMap gqlDirectiveCounterParts = HashBiMap.create(); + BiMap gqlDirectiveCounterPartsInverse = gqlDirectiveCounterParts.inverse(); mergedField.getFields().forEach(field -> { List directives = field.getDirectives(); ImmutableList resolvedDirectives = ImmutableList.copyOf(FpKit.flatList( directivesResolver - .resolveDirectives(directives, schema, variables, graphQLContext, locale) + .resolveDirectives(directives, schema, coercedVariables, graphQLContext, locale) .values() )); + for (int i = 0; i < directives.size(); i++) { + Directive directive = directives.get(i); + GraphQLDirective graphQLDirective = resolvedDirectives.get(i); + directiveCounterParts.put(graphQLDirective, directive); + } + + ImmutableList.Builder appliedDirectiveBuilder = ImmutableList.builder(); + for (GraphQLDirective resolvedDirective : resolvedDirectives) { + QueryAppliedDirective appliedDirective = toAppliedDirective(resolvedDirective); + gqlDirectiveCounterParts.put(resolvedDirective, appliedDirective); + appliedDirectiveBuilder.add(appliedDirective); + } byField.put(field, resolvedDirectives); // at some point we will only use applied - byFieldApplied.put(field, ImmutableKit.map(resolvedDirectives, this::toAppliedDirective)); + byFieldApplied.put(field, appliedDirectiveBuilder.build()); }); Map> byName = new LinkedHashMap<>(); @@ -74,13 +96,29 @@ private void computeValuesLazily() { String name = directive.getName(); byName.computeIfAbsent(name, k -> new ArrayList<>()).add(directive); // at some point we will only use applied - byNameApplied.computeIfAbsent(name, k -> new ArrayList<>()).add(toAppliedDirective(directive)); + QueryAppliedDirective appliedDirective = gqlDirectiveCounterParts.get(directive); + byNameApplied.computeIfAbsent(name, k -> new ArrayList<>()).add(appliedDirective); })); + // create NormalizedInputValue values for directive arguments + Map> normalizedValuesByAppliedDirective = new LinkedHashMap<>(); + if (this.normalizedVariableValues != null) { + byNameApplied.values().forEach(directiveList -> { + for (QueryAppliedDirective queryAppliedDirective : directiveList) { + GraphQLDirective graphQLDirective = gqlDirectiveCounterPartsInverse.get(queryAppliedDirective); + Directive directive = directiveCounterParts.get(graphQLDirective); + + Map normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(graphQLDirective.getArguments(), directive.getArguments(), this.normalizedVariableValues); + normalizedValuesByAppliedDirective.put(queryAppliedDirective, normalizedArgumentValues); + } + }); + } + this.fieldDirectivesByName = ImmutableMap.copyOf(byName); this.fieldDirectivesByField = ImmutableMap.copyOf(byField); this.fieldAppliedDirectivesByName = ImmutableMap.copyOf(byNameApplied); this.fieldAppliedDirectivesByField = ImmutableMap.copyOf(byFieldApplied); + this.normalizedValuesByAppliedDirective = ImmutableMap.copyOf(normalizedValuesByAppliedDirective); }); } @@ -114,6 +152,12 @@ public Map> getImmediateAppliedDirectivesByFi return fieldAppliedDirectivesByField; } + @Override + public Map> getNormalizedInputValueByImmediateAppliedDirectives() { + computeValuesLazily(); + return normalizedValuesByAppliedDirective; + } + @Override public Map> getImmediateDirectivesByName() { computeValuesLazily(); diff --git a/src/main/java/graphql/normalized/ArgumentMaker.java b/src/main/java/graphql/normalized/ArgumentMaker.java new file mode 100644 index 0000000000..29d6a0ae8b --- /dev/null +++ b/src/main/java/graphql/normalized/ArgumentMaker.java @@ -0,0 +1,110 @@ +package graphql.normalized; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.Internal; +import graphql.execution.directives.QueryAppliedDirective; +import graphql.execution.directives.QueryAppliedDirectiveArgument; +import graphql.execution.directives.QueryDirectives; +import graphql.language.Argument; +import graphql.language.ArrayValue; +import graphql.language.NullValue; +import graphql.language.ObjectField; +import graphql.language.ObjectValue; +import graphql.language.Value; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.Map; + +import static graphql.collect.ImmutableKit.emptyMap; +import static graphql.collect.ImmutableKit.map; +import static graphql.language.Argument.newArgument; + +/** + * This class is a peer class and broken out of {@link ExecutableNormalizedOperationToAstCompiler} to deal with + * argument value making. + */ +@Internal +class ArgumentMaker { + + static List createArguments(ExecutableNormalizedField executableNormalizedField, + VariableAccumulator variableAccumulator) { + ImmutableList.Builder result = ImmutableList.builder(); + ImmutableMap normalizedArguments = executableNormalizedField.getNormalizedArguments(); + for (String argName : normalizedArguments.keySet()) { + NormalizedInputValue normalizedInputValue = normalizedArguments.get(argName); + Value value = argValue(executableNormalizedField, null, argName, normalizedInputValue, variableAccumulator); + Argument argument = newArgument() + .name(argName) + .value(value) + .build(); + result.add(argument); + } + return result.build(); + } + + static List createDirectiveArguments(ExecutableNormalizedField executableNormalizedField, + QueryDirectives queryDirectives, + QueryAppliedDirective queryAppliedDirective, + VariableAccumulator variableAccumulator) { + + Map argValueMap = queryDirectives.getNormalizedInputValueByImmediateAppliedDirectives().getOrDefault(queryAppliedDirective, emptyMap()); + + ImmutableList.Builder result = ImmutableList.builder(); + for (QueryAppliedDirectiveArgument directiveArgument : queryAppliedDirective.getArguments()) { + String argName = directiveArgument.getName(); + if (argValueMap != null && argValueMap.containsKey(argName)) { + NormalizedInputValue normalizedInputValue = argValueMap.get(argName); + Value value = argValue(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue, variableAccumulator); + Argument argument = newArgument() + .name(argName) + .value(value) + .build(); + result.add(argument); + } + } + return result.build(); + } + + @SuppressWarnings("unchecked") + private static Value argValue(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + @Nullable Object value, + VariableAccumulator variableAccumulator) { + if (value instanceof List) { + ArrayValue.Builder arrayValue = ArrayValue.newArrayValue(); + arrayValue.values(map((List) value, val -> argValue(executableNormalizedField, queryAppliedDirective, argName, val, variableAccumulator))); + return arrayValue.build(); + } + if (value instanceof Map) { + ObjectValue.Builder objectValue = ObjectValue.newObjectValue(); + Map map = (Map) value; + for (String fieldName : map.keySet()) { + Value fieldValue = argValue(executableNormalizedField, queryAppliedDirective, argName, (NormalizedInputValue) map.get(fieldName), variableAccumulator); + objectValue.objectField(ObjectField.newObjectField().name(fieldName).value(fieldValue).build()); + } + return objectValue.build(); + } + if (value == null) { + return NullValue.newNullValue().build(); + } + return (Value) value; + } + + @NotNull + private static Value argValue(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + NormalizedInputValue normalizedInputValue, + VariableAccumulator variableAccumulator) { + if (variableAccumulator.shouldMakeVariable(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue)) { + VariableValueWithDefinition variableWithDefinition = variableAccumulator.accumulateVariable(normalizedInputValue); + return variableWithDefinition.getVariableReference(); + } else { + return argValue(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue.getValue(), variableAccumulator); + } + } +} diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index 085fad0afb..6292b46688 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -12,6 +12,7 @@ import graphql.execution.AbortExecutionException; import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; import graphql.execution.RawVariables; import graphql.execution.ValuesResolver; import graphql.execution.conditional.ConditionalNodes; @@ -52,6 +53,7 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.function.Function; import java.util.function.Predicate; @@ -423,7 +425,7 @@ public static ExecutableNormalizedOperation createExecutableNormalizedOperationW rawVariables, options.getGraphQLContext(), options.getLocale()); - Map normalizedVariableValues = ValuesResolver.getNormalizedVariableValues(graphQLSchema, + NormalizedVariables normalizedVariableValues = ValuesResolver.getNormalizedVariableValues(graphQLSchema, variableDefinitions, rawVariables, options.getGraphQLContext(), @@ -445,7 +447,7 @@ private static class ExecutableNormalizedOperationFactoryImpl { private final OperationDefinition operationDefinition; private final Map fragments; private final CoercedVariables coercedVariableValues; - private final @Nullable Map normalizedVariableValues; + private final @Nullable NormalizedVariables normalizedVariableValues; private final Options options; private final List possibleMergerList = new ArrayList<>(); @@ -462,7 +464,7 @@ private ExecutableNormalizedOperationFactoryImpl( OperationDefinition operationDefinition, Map fragments, CoercedVariables coercedVariableValues, - @Nullable Map normalizedVariableValues, + @Nullable NormalizedVariables normalizedVariableValues, Options options ) { this.graphQLSchema = graphQLSchema; @@ -516,7 +518,13 @@ private ExecutableNormalizedOperation createNormalizedQueryImpl() { private void captureMergedField(ExecutableNormalizedField enf, MergedField mergedFld) { // QueryDirectivesImpl is a lazy object and only computes itself when asked for - QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, coercedVariableValues.toMap(), options.getGraphQLContext(), options.getLocale()); + Map normalizedVariableValues = Optional.ofNullable(this.normalizedVariableValues).map(NormalizedVariables::toMap).orElse(null); + QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, + graphQLSchema, + coercedVariableValues.toMap(), + normalizedVariableValues, + options.getGraphQLContext(), + options.getLocale()); normalizedFieldToQueryDirectives.put(enf, queryDirectives); normalizedFieldToMergedField.put(enf, mergedFld); } @@ -674,7 +682,7 @@ private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGro Map argumentValues = ValuesResolver.getArgumentValues(fieldDefinition.getArguments(), field.getArguments(), CoercedVariables.of(this.coercedVariableValues.toMap()), this.options.graphQLContext, this.options.locale); Map normalizedArgumentValues = null; if (this.normalizedVariableValues != null) { - normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(fieldDefinition.getArguments(), field.getArguments(), this.normalizedVariableValues); + normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(fieldDefinition.getArguments(), field.getArguments(), this.normalizedVariableValues.toMap()); } ImmutableList objectTypeNames = map(objectTypes, GraphQLObjectType::getName); return ExecutableNormalizedField.newNormalizedField() diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java index 877decb767..cb499eaab4 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java @@ -1,28 +1,23 @@ package graphql.normalized; import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; import graphql.Assert; import graphql.Directives; import graphql.ExperimentalApi; import graphql.PublicApi; +import graphql.execution.directives.QueryAppliedDirective; import graphql.execution.directives.QueryDirectives; import graphql.introspection.Introspection; import graphql.language.Argument; -import graphql.language.ArrayValue; import graphql.language.Directive; import graphql.language.Document; import graphql.language.Field; import graphql.language.InlineFragment; -import graphql.language.NullValue; -import graphql.language.ObjectField; -import graphql.language.ObjectValue; import graphql.language.OperationDefinition; import graphql.language.Selection; import graphql.language.SelectionSet; import graphql.language.StringValue; import graphql.language.TypeName; -import graphql.language.Value; import graphql.normalized.incremental.NormalizedDeferredExecution; import graphql.schema.GraphQLCompositeType; import graphql.schema.GraphQLFieldDefinition; @@ -41,12 +36,12 @@ import java.util.stream.Collectors; import static graphql.collect.ImmutableKit.emptyList; -import static graphql.collect.ImmutableKit.map; import static graphql.language.Argument.newArgument; import static graphql.language.Field.newField; import static graphql.language.InlineFragment.newInlineFragment; import static graphql.language.SelectionSet.newSelectionSet; import static graphql.language.TypeName.newTypeName; +import static graphql.normalized.ArgumentMaker.createArguments; import static graphql.schema.GraphQLTypeUtil.unwrapAll; /** @@ -382,20 +377,34 @@ private static Field selectionForNormalizedField(GraphQLSchema schema, QueryDirectives queryDirectives = normalizedFieldToQueryDirectives.get(executableNormalizedField); - Field.Builder builder = newField() .name(executableNormalizedField.getFieldName()) .alias(executableNormalizedField.getAlias()) .selectionSet(selectionSet) .arguments(arguments); + + List directives = buildDirectives(executableNormalizedField, queryDirectives, variableAccumulator); + return builder + .directives(directives) + .build(); + } + + private static @NotNull List buildDirectives(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, VariableAccumulator variableAccumulator) { if (queryDirectives == null || queryDirectives.getImmediateAppliedDirectivesByField().isEmpty()) { - return builder.build(); - } else { - List directives = queryDirectives.getImmediateAppliedDirectivesByField().keySet().stream().flatMap(field -> field.getDirectives().stream()).collect(Collectors.toList()); - return builder - .directives(directives) - .build(); + return emptyList(); } + return queryDirectives.getImmediateAppliedDirectivesByField().entrySet().stream() + .flatMap(entry -> entry.getValue().stream()) + .map(queryAppliedDirective -> buildDirective(executableNormalizedField, queryDirectives, queryAppliedDirective, variableAccumulator)) + .collect(Collectors.toList()); + } + + private static Directive buildDirective(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, QueryAppliedDirective queryAppliedDirective, VariableAccumulator variableAccumulator) { + + List arguments = ArgumentMaker.createDirectiveArguments(executableNormalizedField,queryDirectives,queryAppliedDirective, variableAccumulator); + return Directive.newDirective() + .name(queryAppliedDirective.getName()) + .arguments(arguments).build(); } @Nullable @@ -407,59 +416,6 @@ private static SelectionSet selectionSet(List fields) { return newSelectionSet().selections(fields).build(); } - private static List createArguments(ExecutableNormalizedField executableNormalizedField, - VariableAccumulator variableAccumulator) { - ImmutableList.Builder result = ImmutableList.builder(); - ImmutableMap normalizedArguments = executableNormalizedField.getNormalizedArguments(); - for (String argName : normalizedArguments.keySet()) { - NormalizedInputValue normalizedInputValue = normalizedArguments.get(argName); - Value value = argValue(executableNormalizedField, argName, normalizedInputValue, variableAccumulator); - Argument argument = newArgument() - .name(argName) - .value(value) - .build(); - result.add(argument); - } - return result.build(); - } - - @SuppressWarnings("unchecked") - private static Value argValue(ExecutableNormalizedField executableNormalizedField, - String argName, - @Nullable Object value, - VariableAccumulator variableAccumulator) { - if (value instanceof List) { - ArrayValue.Builder arrayValue = ArrayValue.newArrayValue(); - arrayValue.values(map((List) value, val -> argValue(executableNormalizedField, argName, val, variableAccumulator))); - return arrayValue.build(); - } - if (value instanceof Map) { - ObjectValue.Builder objectValue = ObjectValue.newObjectValue(); - Map map = (Map) value; - for (String fieldName : map.keySet()) { - Value fieldValue = argValue(executableNormalizedField, argName, (NormalizedInputValue) map.get(fieldName), variableAccumulator); - objectValue.objectField(ObjectField.newObjectField().name(fieldName).value(fieldValue).build()); - } - return objectValue.build(); - } - if (value == null) { - return NullValue.newNullValue().build(); - } - return (Value) value; - } - - @NotNull - private static Value argValue(ExecutableNormalizedField executableNormalizedField, - String argName, - NormalizedInputValue normalizedInputValue, - VariableAccumulator variableAccumulator) { - if (variableAccumulator.shouldMakeVariable(executableNormalizedField, argName, normalizedInputValue)) { - VariableValueWithDefinition variableWithDefinition = variableAccumulator.accumulateVariable(normalizedInputValue); - return variableWithDefinition.getVariableReference(); - } else { - return argValue(executableNormalizedField, argName, normalizedInputValue.getValue(), variableAccumulator); - } - } @NotNull private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, diff --git a/src/main/java/graphql/normalized/VariableAccumulator.java b/src/main/java/graphql/normalized/VariableAccumulator.java index ccf1d43e12..d2a7fe2a37 100644 --- a/src/main/java/graphql/normalized/VariableAccumulator.java +++ b/src/main/java/graphql/normalized/VariableAccumulator.java @@ -1,6 +1,7 @@ package graphql.normalized; import graphql.Internal; +import graphql.execution.directives.QueryAppliedDirective; import graphql.language.VariableDefinition; import org.jetbrains.annotations.Nullable; @@ -28,8 +29,12 @@ public VariableAccumulator(@Nullable VariablePredicate variablePredicate) { valueWithDefinitions = new ArrayList<>(); } - public boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { - return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, argName, normalizedInputValue); + public boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + if (queryAppliedDirective != null) { + return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue); + } else { + return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, argName, normalizedInputValue); + } } public VariableValueWithDefinition accumulateVariable(NormalizedInputValue normalizedInputValue) { diff --git a/src/main/java/graphql/normalized/VariablePredicate.java b/src/main/java/graphql/normalized/VariablePredicate.java index e4a0347050..a516c308ec 100644 --- a/src/main/java/graphql/normalized/VariablePredicate.java +++ b/src/main/java/graphql/normalized/VariablePredicate.java @@ -1,6 +1,7 @@ package graphql.normalized; import graphql.PublicSpi; +import graphql.execution.directives.QueryAppliedDirective; /** * This predicate indicates whether a variable should be made for this field argument OR whether it will be compiled @@ -17,5 +18,25 @@ public interface VariablePredicate { * * @return true if a variable should be made */ - boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue); + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, + String argName, + NormalizedInputValue normalizedInputValue); + + /** + * Return true if a variable should be made for this query directive argument + * on the specified field + * + * @param executableNormalizedField the field in question + * @param queryAppliedDirective the query directive in question + * @param argName the argument on the directive + * @param normalizedInputValue the input value for that argument + * + * @return true if a variable should be made + */ + default boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, + QueryAppliedDirective queryAppliedDirective, + String argName, + NormalizedInputValue normalizedInputValue) { + return false; + } } diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy index 227681b555..1ddf0f62d3 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy @@ -4,6 +4,9 @@ import graphql.GraphQLContext import graphql.TestUtil import graphql.execution.CoercedVariables import graphql.execution.MergedField +import graphql.execution.NormalizedVariables +import graphql.language.IntValue +import graphql.normalized.NormalizedInputValue import spock.lang.Specification import static graphql.language.AstPrinter.printAst @@ -32,7 +35,7 @@ class QueryDirectivesImplTest extends Specification { def mergedField = MergedField.newMergedField([f1, f2]).build() - def impl = new QueryDirectivesImpl(mergedField, schema, [var: 10], GraphQLContext.getDefault(), Locale.getDefault()) + def impl = new QueryDirectivesImpl(mergedField, schema, [var: 10], [var : new NormalizedInputValue("type", IntValue.of(10))], GraphQLContext.getDefault(), Locale.getDefault()) when: def directives = impl.getImmediateDirectivesByName() @@ -77,6 +80,7 @@ class QueryDirectivesImplTest extends Specification { .mergedField(mergedField) .schema(schema) .coercedVariables(CoercedVariables.of([var: 10])) + .normalizedVariables(NormalizedVariables.of([var: new NormalizedInputValue("type", IntValue.of(10))])) .graphQLContext(GraphQLContext.getDefault()) .locale(Locale.getDefault()) .build() diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy index 89a5d85a07..ab7c2dc206 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy @@ -1,8 +1,14 @@ package graphql.execution.directives +import com.google.common.collect.ImmutableList import graphql.GraphQL import graphql.TestUtil +import graphql.execution.CoercedVariables +import graphql.execution.RawVariables +import graphql.normalized.ExecutableNormalizedField +import graphql.normalized.ExecutableNormalizedOperationFactory import graphql.schema.DataFetcher +import graphql.schema.FieldCoordinates import spock.lang.Specification /** @@ -134,4 +140,21 @@ class QueryDirectivesIntegrationTest extends Specification { joinArgs(immediate) == "cached(forMillis:10)" } + def "can capture directive argument values inside ENO path"() { + def query = TestUtil.parseQuery(pathologicalQuery) + when: + def eno = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables( + schema, query, "Books", RawVariables.emptyVariables()) + + + then: + def booksENF = eno.getTopLevelFields()[0] + booksENF != null + def bookQueryDirectives = eno.getQueryDirectives(booksENF) + bookQueryDirectives.immediateAppliedDirectivesByName.isEmpty() + + def reviewField = eno.getCoordinatesToNormalizedFields().get(FieldCoordinates.coordinates("Book", "review")) + def reviewQueryDirectives = eno.getQueryDirectives(reviewField[0]) + !reviewQueryDirectives.immediateAppliedDirectivesByName.isEmpty() + } } diff --git a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy index de6914a50d..46b15a3d9f 100644 --- a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy +++ b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy @@ -98,7 +98,7 @@ class InputInterceptorTest extends Specification { ''') .graphQLContext({ it.put(InputInterceptor.class, interceptor) }) .variables( - "booleanArg": "truthy", + "booleanArg": false, "stringArg": "sdrawkcab" ) diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy index 0c3d024a0c..f44cb23477 100644 --- a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy @@ -1294,8 +1294,8 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat fooField.directives.size() == 1 nameField.directives.size() == 1 documentPrinted == '''subscription { - foo1(arg: {arg1 : "Subscription"}) @optIn(to: "foo") { - name @optIn(to: "devOps") + foo1(arg: {arg1 : "Subscription"}) @optIn(to: ["foo"]) { + name @optIn(to: ["devOps"]) } } ''' From 641bea451bdaef63cf6184c51615a633f1c99431 Mon Sep 17 00:00:00 2001 From: bbaker Date: Wed, 4 Dec 2024 15:24:30 +1100 Subject: [PATCH 086/345] Tweaked code and fixed test --- .../directives/QueryDirectivesImpl.java | 32 ++++++++++++------- .../groovy/graphql/schema/CoercingTest.groovy | 7 ++++ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java index 7981677419..652e43b6a2 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java @@ -16,6 +16,7 @@ import graphql.schema.GraphQLSchema; import graphql.util.FpKit; import graphql.util.LockKit; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -37,6 +38,7 @@ public class QueryDirectivesImpl implements QueryDirectives { private final MergedField mergedField; private final GraphQLSchema schema; private final Map coercedVariables; + @Nullable private final Map normalizedVariableValues; private final GraphQLContext graphQLContext; private final Locale locale; @@ -68,22 +70,26 @@ private void computeValuesLazily() { BiMap gqlDirectiveCounterPartsInverse = gqlDirectiveCounterParts.inverse(); mergedField.getFields().forEach(field -> { List directives = field.getDirectives(); - ImmutableList resolvedDirectives = ImmutableList.copyOf(FpKit.flatList( - directivesResolver - .resolveDirectives(directives, schema, coercedVariables, graphQLContext, locale) - .values() - )); - for (int i = 0; i < directives.size(); i++) { - Directive directive = directives.get(i); + Map astDirectivesByName = FpKit.getByName(directives, Directive::getName); + Map> directivesMap = directivesResolver + .resolveDirectives(directives, schema, coercedVariables, graphQLContext, locale); + ImmutableList resolvedDirectives = ImmutableList.copyOf( + FpKit.flatList(directivesMap.values())); + + // build a counterpart map of GraphQLDirective to AST directive + for (int i = 0; i < resolvedDirectives.size(); i++) { GraphQLDirective graphQLDirective = resolvedDirectives.get(i); - directiveCounterParts.put(graphQLDirective, directive); + Directive astDirective = astDirectivesByName.get(graphQLDirective.getName()); + if (astDirective != null) { + directiveCounterParts.put(graphQLDirective, astDirective); + } } ImmutableList.Builder appliedDirectiveBuilder = ImmutableList.builder(); for (GraphQLDirective resolvedDirective : resolvedDirectives) { QueryAppliedDirective appliedDirective = toAppliedDirective(resolvedDirective); - gqlDirectiveCounterParts.put(resolvedDirective, appliedDirective); appliedDirectiveBuilder.add(appliedDirective); + gqlDirectiveCounterParts.put(resolvedDirective, appliedDirective); } byField.put(field, resolvedDirectives); // at some point we will only use applied @@ -106,10 +112,12 @@ private void computeValuesLazily() { byNameApplied.values().forEach(directiveList -> { for (QueryAppliedDirective queryAppliedDirective : directiveList) { GraphQLDirective graphQLDirective = gqlDirectiveCounterPartsInverse.get(queryAppliedDirective); + // we need this counterpart because the ValuesResolver needs the runtime and AST element Directive directive = directiveCounterParts.get(graphQLDirective); - - Map normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(graphQLDirective.getArguments(), directive.getArguments(), this.normalizedVariableValues); - normalizedValuesByAppliedDirective.put(queryAppliedDirective, normalizedArgumentValues); + if (directive != null) { + Map normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(graphQLDirective.getArguments(), directive.getArguments(), this.normalizedVariableValues); + normalizedValuesByAppliedDirective.put(queryAppliedDirective, normalizedArgumentValues); + } } }); } diff --git a/src/test/groovy/graphql/schema/CoercingTest.groovy b/src/test/groovy/graphql/schema/CoercingTest.groovy index ad1d306603..5e96baece1 100644 --- a/src/test/groovy/graphql/schema/CoercingTest.groovy +++ b/src/test/groovy/graphql/schema/CoercingTest.groovy @@ -1,6 +1,7 @@ package graphql.schema import graphql.ExecutionInput +import graphql.GraphQLContext import graphql.TestUtil import graphql.analysis.MaxQueryDepthInstrumentation import graphql.language.ArrayValue @@ -13,6 +14,7 @@ import graphql.language.StringValue import graphql.language.VariableReference import graphql.schema.idl.RuntimeWiring import graphql.schema.idl.TypeRuntimeWiring +import org.jetbrains.annotations.NotNull import spock.lang.Specification import java.time.ZonedDateTime @@ -244,6 +246,11 @@ class CoercingTest extends Specification { Object parseLiteral(Object input) throws CoercingParseLiteralException { return input } + + @Override + StringValue valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + return new StringValue(input.toString()) + } }) .build() From f4939e39ffea67b5ddfbe247810fdd09a73d91b1 Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 5 Dec 2024 13:30:39 +1100 Subject: [PATCH 087/345] Added more tests cases to QueryDirectivesIntegrationTest.groovy --- .../QueryDirectivesIntegrationTest.groovy | 55 +++++++++++++++++-- 1 file changed, 51 insertions(+), 4 deletions(-) diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy index ab7c2dc206..2b99d6e3be 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy @@ -1,12 +1,12 @@ package graphql.execution.directives -import com.google.common.collect.ImmutableList + import graphql.GraphQL import graphql.TestUtil -import graphql.execution.CoercedVariables import graphql.execution.RawVariables -import graphql.normalized.ExecutableNormalizedField +import graphql.language.IntValue import graphql.normalized.ExecutableNormalizedOperationFactory +import graphql.normalized.NormalizedInputValue import graphql.schema.DataFetcher import graphql.schema.FieldCoordinates import spock.lang.Specification @@ -155,6 +155,53 @@ class QueryDirectivesIntegrationTest extends Specification { def reviewField = eno.getCoordinatesToNormalizedFields().get(FieldCoordinates.coordinates("Book", "review")) def reviewQueryDirectives = eno.getQueryDirectives(reviewField[0]) - !reviewQueryDirectives.immediateAppliedDirectivesByName.isEmpty() + def reviewImmediateDirectivesMap = reviewQueryDirectives.immediateAppliedDirectivesByName + def argInputValues = simplifiedInputValuesWithState(reviewImmediateDirectivesMap) + argInputValues == [ + timeout: [ + [timeout: [[afterMillis: 5]]], [timeout: [[afterMillis: 28]]], [timeout: [[afterMillis: 10]]] + ], + cached : [ + [cached: [[forMillis: 5]]], [cached: [[forMillis: 10]]] + ] + ] + + // normalised values are AST values + def normalizedValues = simplifiedNormalizedValues(reviewQueryDirectives.getNormalizedInputValueByImmediateAppliedDirectives()) + normalizedValues == [ + timeout: [ + [afterMillis: 5], [afterMillis: 28], [afterMillis: 10]], + cached : [ + [forMillis: 5], [forMillis: 10]] + ] + + } + + def simplifiedInputValuesWithState(Map> mapOfDirectives) { + def simpleMap = [:] + mapOfDirectives.forEach { k, listOfDirectives -> + + def dirVals = listOfDirectives.collect { qd -> + def argVals = qd.getArguments().collect { arg -> + def argValue = arg.getArgumentValue() + return [(arg.name): argValue?.value] + } + return [(qd.name): argVals] + } + simpleMap[k] = dirVals + } + return simpleMap + } + + def simplifiedNormalizedValues(Map> mapOfDirectives) { + Map>> simpleMap = new LinkedHashMap<>() + mapOfDirectives.forEach { qd, argMap -> + def argVals = argMap.collect { entry -> + def argValueAst = entry.value?.value as IntValue // just assume INtValue for these tests + return [(entry.key): argValueAst?.value?.toInteger()] + } + simpleMap.computeIfAbsent(qd.name, { _ -> [] }).addAll(argVals) + } + return simpleMap } } From 6563ef9124f1dffc3b9275f51c155c6e329dfc26 Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 5 Dec 2024 16:25:21 +1100 Subject: [PATCH 088/345] Fixed up tests and made a new test class --- .../directives/DirectivesResolver.java | 16 +- .../directives/QueryDirectivesImpl.java | 18 +- .../ENOToAstCompilerDirectivesTest.groovy | 169 +++++++++++++++ ...ormalizedOperationToAstCompilerTest.groovy | 205 +++++++----------- 4 files changed, 263 insertions(+), 145 deletions(-) create mode 100644 src/test/groovy/graphql/normalized/ENOToAstCompilerDirectivesTest.groovy diff --git a/src/main/java/graphql/execution/directives/DirectivesResolver.java b/src/main/java/graphql/execution/directives/DirectivesResolver.java index 4163c268cb..187f7ef5e6 100644 --- a/src/main/java/graphql/execution/directives/DirectivesResolver.java +++ b/src/main/java/graphql/execution/directives/DirectivesResolver.java @@ -1,6 +1,8 @@ package graphql.execution.directives; -import com.google.common.collect.ImmutableMap; +import com.google.common.collect.BiMap; +import com.google.common.collect.HashBiMap; +import com.google.common.collect.ImmutableBiMap; import graphql.GraphQLContext; import graphql.Internal; import graphql.execution.CoercedVariables; @@ -11,8 +13,6 @@ import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; -import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -26,17 +26,17 @@ public class DirectivesResolver { public DirectivesResolver() { } - public Map> resolveDirectives(List directives, GraphQLSchema schema, Map variables, GraphQLContext graphQLContext, Locale locale) { + public BiMap resolveDirectives(List directives, GraphQLSchema schema, Map variables, GraphQLContext graphQLContext, Locale locale) { GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry(); - Map> directiveMap = new LinkedHashMap<>(); + BiMap directiveMap = HashBiMap.create(); directives.forEach(directive -> { GraphQLDirective protoType = schema.getDirective(directive.getName()); if (protoType != null) { - GraphQLDirective newDirective = protoType.transform(builder -> buildArguments(builder, codeRegistry, protoType, directive, variables, graphQLContext, locale)); - directiveMap.computeIfAbsent(newDirective.getName(), k -> new ArrayList<>()).add(newDirective); + GraphQLDirective graphQLDirective = protoType.transform(builder -> buildArguments(builder, codeRegistry, protoType, directive, variables, graphQLContext, locale)); + directiveMap.put(graphQLDirective, directive); } }); - return ImmutableMap.copyOf(directiveMap); + return ImmutableBiMap.copyOf(directiveMap); } private void buildArguments(GraphQLDirective.Builder directiveBuilder, diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java index 652e43b6a2..fe216a1341 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java @@ -70,20 +70,12 @@ private void computeValuesLazily() { BiMap gqlDirectiveCounterPartsInverse = gqlDirectiveCounterParts.inverse(); mergedField.getFields().forEach(field -> { List directives = field.getDirectives(); - Map astDirectivesByName = FpKit.getByName(directives, Directive::getName); - Map> directivesMap = directivesResolver + BiMap directivesMap = directivesResolver .resolveDirectives(directives, schema, coercedVariables, graphQLContext, locale); - ImmutableList resolvedDirectives = ImmutableList.copyOf( - FpKit.flatList(directivesMap.values())); - - // build a counterpart map of GraphQLDirective to AST directive - for (int i = 0; i < resolvedDirectives.size(); i++) { - GraphQLDirective graphQLDirective = resolvedDirectives.get(i); - Directive astDirective = astDirectivesByName.get(graphQLDirective.getName()); - if (astDirective != null) { - directiveCounterParts.put(graphQLDirective, astDirective); - } - } + + directiveCounterParts.putAll(directivesMap); + + ImmutableList resolvedDirectives = ImmutableList.copyOf(directivesMap.keySet()); ImmutableList.Builder appliedDirectiveBuilder = ImmutableList.builder(); for (GraphQLDirective resolvedDirective : resolvedDirectives) { diff --git a/src/test/groovy/graphql/normalized/ENOToAstCompilerDirectivesTest.groovy b/src/test/groovy/graphql/normalized/ENOToAstCompilerDirectivesTest.groovy new file mode 100644 index 0000000000..9d55d3dccc --- /dev/null +++ b/src/test/groovy/graphql/normalized/ENOToAstCompilerDirectivesTest.groovy @@ -0,0 +1,169 @@ +package graphql.normalized + +import graphql.schema.GraphQLSchema + +import static graphql.language.OperationDefinition.Operation.QUERY + +/** + * Test related to ENO and directives + */ +class ENOToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { + + def "can extract variables or inline values for directives on the query"() { + def sdl = ''' + type Query { + foo(fooArg : String) : Foo + } + + type Foo { + bar(barArg : String) : String + } + + directive @optIn(to : [String!]!) repeatable on FIELD + ''' + + def query = ''' + query named($fooArgVar : String, $barArgVar : String, $skipVar : Boolean!, $optVar : [String!]!) { + foo(fooArg : $fooArgVar) @skip(if : $skipVar) { + bar(barArg : $barArgVar) @optIn(to : ["optToX"]) @optIn(to : $optVar) + } + } + ''' + GraphQLSchema schema = mkSchema(sdl) + def eno = createNormalizedTree(schema, query, + [fooArgVar: "fooArgVar", barArgVar: "barArgVar", skipVar: false, optVar: ["optToY"]]) + + when: + def result = localCompileToDocument(schema, QUERY, "named", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + allVariables) + def document = result.document + def vars = result.variables + def ast = printDoc(document) + + then: + vars == [v0: "barArgVar", v1: ["optToX"], v2: ["optToY"], v3: "fooArgVar", v4: false] + // + // the below is what ir currently produces but its WRONG + // fix up when the other tests starts to work + // + ast == '''query named($v0: String, $v1: [String!]!, $v2: [String!]!, $v3: String, $v4: Boolean!) { + foo(fooArg: $v3) @skip(if: $v4) { + bar(barArg: $v0) @optIn(to: $v1) @optIn(to: $v2) + } +} +''' + + + when: "it has no variables" + + + result = localCompileToDocument(schema, QUERY, "named", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) + + then: + vars == [:] + ast == '''query named { + foo(fooArg: "fooArgVar") @skip(if: false) { + bar(barArg: "barArgVar") @optIn(to: ["optToX"]) @optIn(to: ["optToY"]) + } +} +''' + + } + + def "can handle quite a pathological fragment query as expected"() { + def sdl = ''' + directive @timeout(afterMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + directive @cached(forMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + directive @importance(place : String) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + type Query { + books(searchString : String) : [Book] + } + + type Book { + id : ID + title : String + review : String + } + ''' + + def pathologicalQuery = ''' + fragment Details on Book @timeout(afterMillis: 25) @cached(forMillis : 25) @importance(place:"FragDef") { + title + review @timeout(afterMillis: 5) @cached(forMillis : 5) + ...InnerDetails @timeout(afterMillis: 26) + } + + fragment InnerDetails on Book @timeout(afterMillis: 27) { + review @timeout(afterMillis: 28) + } + + query Books @timeout(afterMillis: 30) @importance(place:"Operation") { + books(searchString: "monkey") { + id + ...Details @timeout(afterMillis: 20) + ...on Book @timeout(afterMillis: 15) { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + } + } + } + ''' + + GraphQLSchema schema = mkSchema(sdl) + def eno = createNormalizedTree(schema, pathologicalQuery, [:]) + + when: + def result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + allVariables) + def document = result.document + def vars = result.variables + def ast = printDoc(document) + + then: + vars == [v0:5, v1:5, v2:28, v3:10, v4:10, v5:"monkey"] + // + // the below is what ir currently produces but its WRONG + // fix up when the other tests starts to work + // + ast == '''query Books($v0: Int, $v1: Int, $v2: Int, $v3: Int, $v4: Int, $v5: String) { + books(searchString: $v5) { + id + review @cached(forMillis: $v1) @cached(forMillis: $v4) @timeout(afterMillis: $v0) @timeout(afterMillis: $v2) @timeout(afterMillis: $v3) + title + } +} +''' + + + when: "it has no variables" + + + result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + document = result.document + vars = result.variables + ast = printDoc(document) + + then: + vars == [:] + ast == '''query Books { + books(searchString: "monkey") { + id + review @cached(forMillis: 5) @cached(forMillis: 10) @timeout(afterMillis: 5) @timeout(afterMillis: 28) @timeout(afterMillis: 10) + title + } +} +''' + + } +} diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy index f44cb23477..8f4a0851ac 100644 --- a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerTest.groovy @@ -3,6 +3,7 @@ package graphql.normalized import graphql.GraphQL import graphql.TestUtil import graphql.execution.RawVariables +import graphql.execution.directives.QueryAppliedDirective import graphql.execution.directives.QueryDirectives import graphql.language.AstPrinter import graphql.language.AstSorter @@ -25,11 +26,16 @@ import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION import static graphql.normalized.ExecutableNormalizedOperationToAstCompiler.compileToDocument import static graphql.normalized.ExecutableNormalizedOperationToAstCompiler.compileToDocumentWithDeferSupport -abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specification { +abstract class ENOToAstCompilerTestBase extends Specification { static boolean deferSupport - VariablePredicate noVariables = new VariablePredicate() { + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + return false + } + @Override boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { return false @@ -41,6 +47,11 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { "JSON" == normalizedInputValue.unwrappedTypeName && normalizedInputValue.value != null } + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + "JSON" == normalizedInputValue.unwrappedTypeName && normalizedInputValue.value != null + } } VariablePredicate allVariables = new VariablePredicate() { @@ -48,8 +59,76 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue) { return true } + + @Override + boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + return true + } + } + + + static ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { + assertValidQuery(schema, query, variables) + Document originalDocument = TestUtil.parseQuery(query) + + def options = ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(deferSupport) + return ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables(schema, originalDocument, null, RawVariables.of(variables), options) + } + + static List createNormalizedFields(GraphQLSchema schema, String query, Map variables = [:]) { + return createNormalizedTree(schema, query, variables).getTopLevelFields() + } + + static void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() + } + + static GraphQLSchema mkSchema(String sdl) { + def wiringFactory = new TestLiveMockedWiringFactory([JsonScalar.JSON_SCALAR]) + def runtimeWiring = RuntimeWiring.newRuntimeWiring() + .wiringFactory(wiringFactory).build() + TestUtil.schema(sdl, runtimeWiring) + } + + static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( + GraphQLSchema schema, + OperationDefinition.Operation operationKind, + String operationName, + List topLevelFields, + VariablePredicate variablePredicate + ) { + return localCompileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); + } + + static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( + GraphQLSchema schema, + OperationDefinition.Operation operationKind, + String operationName, + List topLevelFields, + Map normalizedFieldToQueryDirectives, + VariablePredicate variablePredicate + ) { + if (deferSupport) { + return compileToDocumentWithDeferSupport(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) + } + return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) } + static Document sortDoc(Document doc) { + return new AstSorter().sort(doc) + } + + static printDoc(Document doc) { + return AstPrinter.printAst(sortDoc(doc)) + } +} + +/** + * Test code in here - helps in the base class + */ +abstract class ExecutableNormalizedOperationToAstCompilerTest extends ENOToAstCompilerTestBase { + def "test pet interfaces"() { String sdl = """ type Query { @@ -2194,128 +2273,6 @@ abstract class ExecutableNormalizedOperationToAstCompilerTest extends Specificat } ''' } - - def "can extract variables or inline values for directives on the query"() { - def sdl = ''' - type Query { - foo(fooArg : String) : Foo - } - - type Foo { - bar(barArg : String) : String - } - - directive @optIn(to : [String!]!) repeatable on FIELD - ''' - - def query = ''' - query named($fooArgVar : String, $barArgVar : String, $skipVar : Boolean!, $optVar : [String!]!) { - foo(fooArg : $fooArgVar) @skip(if : $skipVar) { - bar(barArg : $barArgVar) @optIn(to : ["optToX"]) @optIn(to : $optVar) - } - } - ''' - GraphQLSchema schema = mkSchema(sdl) - def eno = createNormalizedTree(schema, query, - [fooArgVar: "fooArgVar", barArgVar: "barArgVar", skipVar: false, optVar : ["optToY"]]) - - when: - def result = localCompileToDocument(schema, QUERY, "named", - eno.getTopLevelFields(),eno.getNormalizedFieldToQueryDirectives(), allVariables) - def document = result.document - def vars = result.variables - def ast = printDoc(document) - - then: - vars == [v0:"barArgVar", v1:"fooArgVar"] - // - // the below is what ir currently produces but its WRONG - // fix up when the other tests starts to work - // -// ast == '''query named { -// foo(fooArg: "fooArgVar") @skip(if: false) { -// bar(barArg: "barArgVar") @optIn(to: ["optToX"]) @optIn(to: ["optToY"]) -// } -//} -//''' - - - when: "it has no variables" - - - result = localCompileToDocument(schema, QUERY, "named", - eno.getTopLevelFields(),eno.getNormalizedFieldToQueryDirectives(), noVariables) - document = result.document - vars = result.variables - ast = printDoc(document) - - then: - vars == [:] - ast == '''query named { - foo(fooArg: "fooArgVar") @skip(if: false) { - bar(barArg: "barArgVar") @optIn(to: ["optToX"]) @optIn(to: ["optToY"]) - } -} -''' - - } - - private static ExecutableNormalizedOperation createNormalizedTree(GraphQLSchema schema, String query, Map variables = [:]) { - assertValidQuery(schema, query, variables) - Document originalDocument = TestUtil.parseQuery(query) - - def options = ExecutableNormalizedOperationFactory.Options.defaultOptions().deferSupport(deferSupport) - return ExecutableNormalizedOperationFactory.createExecutableNormalizedOperationWithRawVariables(schema, originalDocument, null, RawVariables.of(variables), options) - } - - private static List createNormalizedFields(GraphQLSchema schema, String query, Map variables = [:]) { - return createNormalizedTree(schema, query, variables).getTopLevelFields() - } - - private static void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { - GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() - assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() - } - - static GraphQLSchema mkSchema(String sdl) { - def wiringFactory = new TestLiveMockedWiringFactory([JsonScalar.JSON_SCALAR]) - def runtimeWiring = RuntimeWiring.newRuntimeWiring() - .wiringFactory(wiringFactory).build() - TestUtil.schema(sdl, runtimeWiring) - } - - private static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( - GraphQLSchema schema, - OperationDefinition.Operation operationKind, - String operationName, - List topLevelFields, - VariablePredicate variablePredicate - ) { - return localCompileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); - } - - private static ExecutableNormalizedOperationToAstCompiler.CompilerResult localCompileToDocument( - GraphQLSchema schema, - OperationDefinition.Operation operationKind, - String operationName, - List topLevelFields, - Map normalizedFieldToQueryDirectives, - VariablePredicate variablePredicate - ) { - if (deferSupport) { - return compileToDocumentWithDeferSupport(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) - } - return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate) - } - - private static Document sortDoc(Document doc) { - return new AstSorter().sort(doc) - } - - private static printDoc(Document doc) { - return AstPrinter.printAst(sortDoc(doc)) - } - } class ExecutableNormalizedOperationToAstCompilerTestWithDeferSupport extends ExecutableNormalizedOperationToAstCompilerTest { From c87b8426807f1fb32e5416aece5a40227cc9680d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 21:56:46 +0000 Subject: [PATCH 089/345] Add performance results for commit 08cf1702ce0c96ee0ed414ee8085a75696bc6cae --- ...e0c96ee0ed414ee8085a75696bc6cae-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json diff --git a/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json b/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json new file mode 100644 index 0000000000..2eb4cb00ca --- /dev/null +++ b/performance-results/2024-12-05T21:56:29Z-08cf1702ce0c96ee0ed414ee8085a75696bc6cae-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.39947127955597, + "scoreError" : 0.04375139947714444, + "scoreConfidence" : [ + 3.3557198800788255, + 3.4432226790331146 + ], + "scorePercentiles" : { + "0.0" : 3.3932042357857095, + "50.0" : 3.398319202804707, + "90.0" : 3.4080424768287556, + "95.0" : 3.4080424768287556, + "99.0" : 3.4080424768287556, + "99.9" : 3.4080424768287556, + "99.99" : 3.4080424768287556, + "99.999" : 3.4080424768287556, + "99.9999" : 3.4080424768287556, + "100.0" : 3.4080424768287556 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3932042357857095, + 3.3949930686358667 + ], + [ + 3.4016453369735475, + 3.4080424768287556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7202643292853323, + "scoreError" : 0.010698822469557535, + "scoreConfidence" : [ + 1.709565506815775, + 1.7309631517548898 + ], + "scorePercentiles" : { + "0.0" : 1.7185075642902061, + "50.0" : 1.7200781357517012, + "90.0" : 1.722393481347721, + "95.0" : 1.722393481347721, + "99.0" : 1.722393481347721, + "99.9" : 1.722393481347721, + "99.99" : 1.722393481347721, + "99.999" : 1.722393481347721, + "99.9999" : 1.722393481347721, + "100.0" : 1.722393481347721 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7185075642902061, + 1.722393481347721 + ], + [ + 1.719561062814024, + 1.7205952086893783 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8654605738416737, + "scoreError" : 0.002206407164656894, + "scoreConfidence" : [ + 0.8632541666770168, + 0.8676669810063307 + ], + "scorePercentiles" : { + "0.0" : 0.8649842104508775, + "50.0" : 0.8655377996365867, + "90.0" : 0.8657824856426442, + "95.0" : 0.8657824856426442, + "99.0" : 0.8657824856426442, + "99.9" : 0.8657824856426442, + "99.99" : 0.8657824856426442, + "99.999" : 0.8657824856426442, + "99.9999" : 0.8657824856426442, + "100.0" : 0.8657824856426442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8649842104508775, + 0.8654774880262567 + ], + [ + 0.8655981112469168, + 0.8657824856426442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.38406101685299, + "scoreError" : 0.6843156074743918, + "scoreConfidence" : [ + 40.6997454093786, + 42.06837662432738 + ], + "scorePercentiles" : { + "0.0" : 40.78923580225026, + "50.0" : 41.44125463453928, + "90.0" : 41.95496958011177, + "95.0" : 41.95496958011177, + "99.0" : 41.95496958011177, + "99.9" : 41.95496958011177, + "99.99" : 41.95496958011177, + "99.999" : 41.95496958011177, + "99.9999" : 41.95496958011177, + "100.0" : 41.95496958011177 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.90606757700961, + 41.44125463453928, + 41.95496958011177 + ], + [ + 41.86591295369653, + 41.48402929587195, + 41.624082377265175 + ], + [ + 41.04673717098326, + 41.34425975994901, + 40.78923580225026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024747128652428545, + "scoreError" : 8.316013168757033E-4, + "scoreConfidence" : [ + 0.02391552733555284, + 0.02557872996930425 + ], + "scorePercentiles" : { + "0.0" : 0.02395063935167464, + "50.0" : 0.024757809653465346, + "90.0" : 0.025461867081424935, + "95.0" : 0.025461867081424935, + "99.0" : 0.025461867081424935, + "99.9" : 0.025461867081424935, + "99.99" : 0.025461867081424935, + "99.999" : 0.025461867081424935, + "99.9999" : 0.025461867081424935, + "100.0" : 0.025461867081424935 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024250484956416466, + 0.02482653333995037, + 0.024802851465346536 + ], + [ + 0.025461867081424935, + 0.02452199099754902, + 0.02545728996183206 + ], + [ + 0.02469469106419753, + 0.024757809653465346, + 0.02395063935167464 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From fe13e10396c34167e3722ae75ddd8c647d763ffc Mon Sep 17 00:00:00 2001 From: bbaker Date: Fri, 6 Dec 2024 13:51:08 +1100 Subject: [PATCH 090/345] made a supplier of normalised variables --- .../java/graphql/execution/Execution.java | 18 ++++++++--- .../graphql/execution/ExecutionContext.java | 7 +++-- .../execution/ExecutionContextBuilder.java | 5 +-- .../graphql/execution/ExecutionStrategy.java | 4 +-- .../directives/DirectivesResolver.java | 6 ++-- .../execution/directives/QueryDirectives.java | 3 +- .../directives/QueryDirectivesBuilder.java | 7 +++-- .../directives/QueryDirectivesImpl.java | 31 +++++++++++-------- .../ExecutableNormalizedOperationFactory.java | 5 ++- .../directives/QueryDirectivesImplTest.groovy | 7 +++-- 10 files changed, 57 insertions(+), 36 deletions(-) diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index 260d235fd1..11a33b90ba 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -28,6 +28,7 @@ import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.impl.SchemaUtil; +import graphql.util.FpKit; import org.reactivestreams.Publisher; import java.util.Collections; @@ -35,6 +36,7 @@ import java.util.Map; import java.util.Optional; import java.util.concurrent.CompletableFuture; +import java.util.function.Supplier; import static graphql.execution.ExecutionContextBuilder.newExecutionContextBuilder; import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; @@ -77,14 +79,20 @@ public CompletableFuture execute(Document document, GraphQLSche List variableDefinitions = operationDefinition.getVariableDefinitions(); CoercedVariables coercedVariables; - NormalizedVariables normalizedVariableValues; + Supplier normalizedVariableValues; try { - coercedVariables = ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); - - normalizedVariableValues = ValuesResolver.getNormalizedVariableValues(graphQLSchema, + coercedVariables = ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, - executionInput.getGraphQLContext(), executionInput.getLocale()); + executionInput.getGraphQLContext(), + executionInput.getLocale()); + + normalizedVariableValues = FpKit.intraThreadMemoize(() -> + ValuesResolver.getNormalizedVariableValues(graphQLSchema, + variableDefinitions, + inputVariables, + executionInput.getGraphQLContext(), executionInput.getLocale()) + ); } catch (RuntimeException rte) { if (rte instanceof GraphQLError) { return completedFuture(new ExecutionResultImpl((GraphQLError) rte)); diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index 864446607e..a9c6a376e3 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -45,7 +45,7 @@ public class ExecutionContext { private final OperationDefinition operationDefinition; private final Document document; private final CoercedVariables coercedVariables; - private final NormalizedVariables normalizedVariables; + private final Supplier normalizedVariables; private final Object root; private final Object context; private final GraphQLContext graphQLContext; @@ -129,7 +129,10 @@ public CoercedVariables getCoercedVariables() { return coercedVariables; } - public NormalizedVariables getNormalizedVariables() { + /** + * @return a supplier that will give out the operations variables in normalized form + */ + public Supplier getNormalizedVariables() { return normalizedVariables; } diff --git a/src/main/java/graphql/execution/ExecutionContextBuilder.java b/src/main/java/graphql/execution/ExecutionContextBuilder.java index 5e1cdd7071..f45f4408b3 100644 --- a/src/main/java/graphql/execution/ExecutionContextBuilder.java +++ b/src/main/java/graphql/execution/ExecutionContextBuilder.java @@ -18,6 +18,7 @@ import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; import static graphql.Assert.assertNotNull; import static graphql.collect.ImmutableKit.emptyList; @@ -38,7 +39,7 @@ public class ExecutionContextBuilder { Document document; OperationDefinition operationDefinition; CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); - NormalizedVariables normalizedVariables = NormalizedVariables.emptyVariables(); + Supplier normalizedVariables = NormalizedVariables::emptyVariables; ImmutableMap fragmentsByName = ImmutableKit.emptyMap(); DataLoaderRegistry dataLoaderRegistry; Locale locale; @@ -171,7 +172,7 @@ public ExecutionContextBuilder coercedVariables(CoercedVariables coercedVariable return this; } - public ExecutionContextBuilder normalizedVariableValues(NormalizedVariables normalizedVariables) { + public ExecutionContextBuilder normalizedVariableValues(Supplier normalizedVariables) { this.normalizedVariables = normalizedVariables; return this; } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index f751f3ddbb..0e1629a6a2 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -463,8 +463,8 @@ Async.CombinedBuilder getAsyncFieldValueInfo( DataFetchingFieldSelectionSet fieldCollector = DataFetchingFieldSelectionSetImpl.newCollector(executionContext.getGraphQLSchema(), fieldDef.getType(), normalizedFieldSupplier); QueryDirectives queryDirectives = new QueryDirectivesImpl(field, executionContext.getGraphQLSchema(), - executionContext.getCoercedVariables().toMap(), - executionContext.getNormalizedVariables().toMap(), + executionContext.getCoercedVariables(), + executionContext.getNormalizedVariables(), executionContext.getGraphQLContext(), executionContext.getLocale()); diff --git a/src/main/java/graphql/execution/directives/DirectivesResolver.java b/src/main/java/graphql/execution/directives/DirectivesResolver.java index 187f7ef5e6..4f177052e4 100644 --- a/src/main/java/graphql/execution/directives/DirectivesResolver.java +++ b/src/main/java/graphql/execution/directives/DirectivesResolver.java @@ -26,7 +26,7 @@ public class DirectivesResolver { public DirectivesResolver() { } - public BiMap resolveDirectives(List directives, GraphQLSchema schema, Map variables, GraphQLContext graphQLContext, Locale locale) { + public BiMap resolveDirectives(List directives, GraphQLSchema schema, CoercedVariables variables, GraphQLContext graphQLContext, Locale locale) { GraphQLCodeRegistry codeRegistry = schema.getCodeRegistry(); BiMap directiveMap = HashBiMap.create(); directives.forEach(directive -> { @@ -43,10 +43,10 @@ private void buildArguments(GraphQLDirective.Builder directiveBuilder, GraphQLCodeRegistry codeRegistry, GraphQLDirective protoType, Directive fieldDirective, - Map variables, + CoercedVariables variables, GraphQLContext graphQLContext, Locale locale) { - Map argumentValues = ValuesResolver.getArgumentValues(codeRegistry, protoType.getArguments(), fieldDirective.getArguments(), CoercedVariables.of(variables), graphQLContext, locale); + Map argumentValues = ValuesResolver.getArgumentValues(codeRegistry, protoType.getArguments(), fieldDirective.getArguments(), variables, graphQLContext, locale); directiveBuilder.clearArguments(); protoType.getArguments().forEach(protoArg -> { if (argumentValues.containsKey(protoArg.getName())) { diff --git a/src/main/java/graphql/execution/directives/QueryDirectives.java b/src/main/java/graphql/execution/directives/QueryDirectives.java index 7063f566c3..6eee9f9323 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectives.java +++ b/src/main/java/graphql/execution/directives/QueryDirectives.java @@ -13,6 +13,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; /** * This gives you access to the immediate directives on a {@link graphql.execution.MergedField}. This does not include directives on parent @@ -120,7 +121,7 @@ interface Builder { Builder coercedVariables(CoercedVariables coercedVariables); - Builder normalizedVariables(NormalizedVariables normalizedVariables); + Builder normalizedVariables(Supplier normalizedVariables); Builder graphQLContext(GraphQLContext graphQLContext); diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java b/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java index 27c98c93dd..78b6998588 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesBuilder.java @@ -9,6 +9,7 @@ import graphql.schema.GraphQLSchema; import java.util.Locale; +import java.util.function.Supplier; @Internal public class QueryDirectivesBuilder implements QueryDirectives.Builder { @@ -16,7 +17,7 @@ public class QueryDirectivesBuilder implements QueryDirectives.Builder { private MergedField mergedField; private GraphQLSchema schema; private CoercedVariables coercedVariables = CoercedVariables.emptyVariables(); - private NormalizedVariables normalizedVariables = NormalizedVariables.emptyVariables(); + private Supplier normalizedVariables = NormalizedVariables::emptyVariables; private GraphQLContext graphQLContext = GraphQLContext.getDefault(); private Locale locale = Locale.getDefault(); @@ -45,7 +46,7 @@ public QueryDirectives.Builder coercedVariables(CoercedVariables coercedVariable } @Override - public QueryDirectives.Builder normalizedVariables(NormalizedVariables normalizedVariables) { + public QueryDirectives.Builder normalizedVariables(Supplier normalizedVariables) { this.normalizedVariables = normalizedVariables; return this; } @@ -65,6 +66,6 @@ public QueryDirectives.Builder locale(Locale locale) { @Override public QueryDirectives build() { - return new QueryDirectivesImpl(mergedField, schema, coercedVariables.toMap(), normalizedVariables.toMap(), graphQLContext, locale); + return new QueryDirectivesImpl(mergedField, schema, coercedVariables, normalizedVariables, graphQLContext, locale); } } diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java index fe216a1341..5bb7bf6964 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java @@ -4,9 +4,12 @@ import com.google.common.collect.HashBiMap; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import graphql.Assert; import graphql.GraphQLContext; import graphql.Internal; +import graphql.execution.CoercedVariables; import graphql.execution.MergedField; +import graphql.execution.NormalizedVariables; import graphql.execution.ValuesResolver; import graphql.language.Directive; import graphql.language.Field; @@ -14,7 +17,6 @@ import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; -import graphql.util.FpKit; import graphql.util.LockKit; import org.jetbrains.annotations.Nullable; @@ -23,7 +25,9 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.function.Supplier; +import static graphql.Assert.assertNotNull; import static graphql.collect.ImmutableKit.emptyList; /** @@ -37,9 +41,8 @@ public class QueryDirectivesImpl implements QueryDirectives { private final DirectivesResolver directivesResolver = new DirectivesResolver(); private final MergedField mergedField; private final GraphQLSchema schema; - private final Map coercedVariables; - @Nullable - private final Map normalizedVariableValues; + private final CoercedVariables coercedVariables; + private final Supplier normalizedVariableValues; private final GraphQLContext graphQLContext; private final Locale locale; @@ -50,13 +53,13 @@ public class QueryDirectivesImpl implements QueryDirectives { private volatile ImmutableMap> fieldAppliedDirectivesByName; private volatile ImmutableMap> normalizedValuesByAppliedDirective; - public QueryDirectivesImpl(MergedField mergedField, GraphQLSchema schema, Map coercedVariables, Map normalizedVariableValues, GraphQLContext graphQLContext, Locale locale) { - this.mergedField = mergedField; - this.schema = schema; - this.coercedVariables = coercedVariables; - this.normalizedVariableValues = normalizedVariableValues; - this.graphQLContext = graphQLContext; - this.locale = locale; + public QueryDirectivesImpl(MergedField mergedField, GraphQLSchema schema, CoercedVariables coercedVariables, Supplier normalizedVariableValues, GraphQLContext graphQLContext, Locale locale) { + this.mergedField = assertNotNull(mergedField); + this.schema = assertNotNull(schema); + this.coercedVariables = assertNotNull(coercedVariables); + this.normalizedVariableValues = assertNotNull(normalizedVariableValues); + this.graphQLContext = assertNotNull(graphQLContext); + this.locale = assertNotNull(locale); } private void computeValuesLazily() { @@ -100,14 +103,16 @@ private void computeValuesLazily() { // create NormalizedInputValue values for directive arguments Map> normalizedValuesByAppliedDirective = new LinkedHashMap<>(); - if (this.normalizedVariableValues != null) { + NormalizedVariables normalizedVariableValues = this.normalizedVariableValues.get(); + if (normalizedVariableValues != null) { byNameApplied.values().forEach(directiveList -> { for (QueryAppliedDirective queryAppliedDirective : directiveList) { GraphQLDirective graphQLDirective = gqlDirectiveCounterPartsInverse.get(queryAppliedDirective); // we need this counterpart because the ValuesResolver needs the runtime and AST element Directive directive = directiveCounterParts.get(graphQLDirective); if (directive != null) { - Map normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(graphQLDirective.getArguments(), directive.getArguments(), this.normalizedVariableValues); + Map normalizedVariables = normalizedVariableValues.toMap(); + Map normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(graphQLDirective.getArguments(), directive.getArguments(), normalizedVariables); normalizedValuesByAppliedDirective.put(queryAppliedDirective, normalizedArgumentValues); } } diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index 6292b46688..27d43122ed 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -518,11 +518,10 @@ private ExecutableNormalizedOperation createNormalizedQueryImpl() { private void captureMergedField(ExecutableNormalizedField enf, MergedField mergedFld) { // QueryDirectivesImpl is a lazy object and only computes itself when asked for - Map normalizedVariableValues = Optional.ofNullable(this.normalizedVariableValues).map(NormalizedVariables::toMap).orElse(null); QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, - coercedVariableValues.toMap(), - normalizedVariableValues, + coercedVariableValues, + () -> normalizedVariableValues, options.getGraphQLContext(), options.getLocale()); normalizedFieldToQueryDirectives.put(enf, queryDirectives); diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy index 1ddf0f62d3..80b1bbbd5c 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesImplTest.groovy @@ -35,7 +35,10 @@ class QueryDirectivesImplTest extends Specification { def mergedField = MergedField.newMergedField([f1, f2]).build() - def impl = new QueryDirectivesImpl(mergedField, schema, [var: 10], [var : new NormalizedInputValue("type", IntValue.of(10))], GraphQLContext.getDefault(), Locale.getDefault()) + def impl = new QueryDirectivesImpl(mergedField, schema, + CoercedVariables.of([var: 10]), + { -> NormalizedVariables.of([var: new NormalizedInputValue("type", IntValue.of(10))]) }, + GraphQLContext.getDefault(), Locale.getDefault()) when: def directives = impl.getImmediateDirectivesByName() @@ -80,7 +83,7 @@ class QueryDirectivesImplTest extends Specification { .mergedField(mergedField) .schema(schema) .coercedVariables(CoercedVariables.of([var: 10])) - .normalizedVariables(NormalizedVariables.of([var: new NormalizedInputValue("type", IntValue.of(10))])) + .normalizedVariables({ NormalizedVariables.of([var: new NormalizedInputValue("type", IntValue.of(10))]) }) .graphQLContext(GraphQLContext.getDefault()) .locale(Locale.getDefault()) .build() From 5b2abf836f4cd4b04ceb35b89be79c7a197f06cd Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 7 Dec 2024 14:39:52 +1100 Subject: [PATCH 091/345] Add CNA information --- SECURITY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SECURITY.md b/SECURITY.md index 2b7a57f5d6..455934a134 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,5 +1,7 @@ # Security Policy +[GraphQL Java is the CVE Numbering Authority (CNA)](https://www.cve.org/PartnerInformation/ListofPartners/partner/graphql-java) for GraphQL Java, Java DataLoader, GraphQL Java Extended Scalars, and GraphQL Java Extended Validation. + ## Supported Versions As stated in our [Release Policy](https://www.graphql-java.com/blog/release-policy/), we will backport critical bugfixes and security fixes for versions dating back 18 months. These fixes will be backported depending on severity and demand. From e7d11c9bab9dead2c34347eafbba229354d59700 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 7 Dec 2024 14:44:36 +1100 Subject: [PATCH 092/345] Add sample cve payload --- security/cve-sample.json | 76 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 security/cve-sample.json diff --git a/security/cve-sample.json b/security/cve-sample.json new file mode 100644 index 0000000000..1f37c35cbd --- /dev/null +++ b/security/cve-sample.json @@ -0,0 +1,76 @@ +// Use https://vulnogram.github.io/ as a UI to write, validate, and submit CVE records +{ + "dataType": "CVE_RECORD", + "dataVersion": "5.1", + "cveMetadata": { + "cveId": "", + "assignerOrgId": "00000000-0000-4000-9000-000000000000", + "requesterUserId": "00000000-0000-4000-9000-000000000000", + "serial": 1, + "state": "PUBLISHED" + }, + "containers": { + "cna": { + "providerMetadata": { + "orgId": "00000000-0000-4000-9000-000000000000" + }, + "problemTypes": [ + { + "descriptions": [ + { + "lang": "en", + "description": "" + } + ] + } + ], + "impacts": [ + { + "descriptions": [ + { + "lang": "en", + "value": "" + } + ] + } + ], + "affected": [ + { + "vendor": "GraphQL Java", + "product": "GraphQL Java [or other library]", + "versions": [ + { + "status": "affected", + "version": "" + } + ], + "defaultStatus": "unaffected" + } + ], + "descriptions": [ + { + "lang": "en", + "value": "[PROBLEMTYPE] in [COMPONENT] in [VENDOR] [PRODUCT] [VERSION] on [PLATFORMS] allows [ATTACKER] to [IMPACT] via [VECTOR]", + "supportingMedia": [ + { + "type": "text/html", + "base64": false, + "value": "[PROBLEMTYPE] in [COMPONENT] in [VENDOR] [PRODUCT] [VERSION] on [PLATFORMS] allows [ATTACKER] to [IMPACT] via [VECTOR]" + } + ] + } + ], + "references": [ + { + "url": "https://add-github-links-here" + } + ], + "source": { + "discovery": "UNKNOWN" + }, + "x_generator": { + "engine": "Vulnogram 0.2.0" + } + } + } +} \ No newline at end of file From d06550f91711aa9ea055a670e1739ec5ef6389db Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 7 Dec 2024 14:51:18 +1100 Subject: [PATCH 093/345] Add CVE submission information --- security/SECURITY_README.md | 9 +++++++++ security/cve-sample.json | 1 - 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 security/SECURITY_README.md diff --git a/security/SECURITY_README.md b/security/SECURITY_README.md new file mode 100644 index 0000000000..ecb543ef05 --- /dev/null +++ b/security/SECURITY_README.md @@ -0,0 +1,9 @@ +## Submitting CVE records + +Use https://vulnogram.github.io/ as a UI to write, validate, and submit CVE records. + +In this Vulnogram UI, you'll be able to view a JSON preview of the CVE payload. You'll find a sample payload in this directory. + +It's better to use the Vulnogram UI as it'll provide extra validation of input. + +Also note, as a CNA we do not need to provide a CVSS score for CVEs. This will be done by security vendors instead. diff --git a/security/cve-sample.json b/security/cve-sample.json index 1f37c35cbd..715d583209 100644 --- a/security/cve-sample.json +++ b/security/cve-sample.json @@ -1,4 +1,3 @@ -// Use https://vulnogram.github.io/ as a UI to write, validate, and submit CVE records { "dataType": "CVE_RECORD", "dataVersion": "5.1", From 837f60c99d6ecf05aaf25173e7bec8b55faa6433 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 7 Dec 2024 15:08:31 +1100 Subject: [PATCH 094/345] Removing some methods deprecated for more than 1 year --- .../java/graphql/execution/DataFetcherResult.java | 14 -------------- .../java/graphql/execution/ExecutionStepInfo.java | 11 ----------- .../java/graphql/execution/FieldValueInfo.java | 11 ----------- 3 files changed, 36 deletions(-) diff --git a/src/main/java/graphql/execution/DataFetcherResult.java b/src/main/java/graphql/execution/DataFetcherResult.java index 3baa4f4fec..cbf0a03639 100644 --- a/src/main/java/graphql/execution/DataFetcherResult.java +++ b/src/main/java/graphql/execution/DataFetcherResult.java @@ -39,20 +39,6 @@ public class DataFetcherResult { private final Object localContext; private final Map extensions; - /** - * Creates a data fetcher result - * - * @param data the data - * @param errors the errors - * - * @deprecated use the {@link #newResult()} builder instead - */ - @Internal - @Deprecated(since = "2019-01-11") - public DataFetcherResult(T data, List errors) { - this(data, errors, null, null); - } - private DataFetcherResult(T data, List errors, Object localContext, Map extensions) { this.data = data; this.errors = ImmutableList.copyOf(assertNotNull(errors)); diff --git a/src/main/java/graphql/execution/ExecutionStepInfo.java b/src/main/java/graphql/execution/ExecutionStepInfo.java index 27313bb965..6ecf42c5f7 100644 --- a/src/main/java/graphql/execution/ExecutionStepInfo.java +++ b/src/main/java/graphql/execution/ExecutionStepInfo.java @@ -77,17 +77,6 @@ private ExecutionStepInfo(Builder builder) { this.fieldContainer = builder.fieldContainer; } - /** - * @return the GraphQLObjectType defining the {@link #getFieldDefinition()} - * - * @see ExecutionStepInfo#getObjectType() - * @deprecated use {@link #getObjectType()} instead as it is named better - */ - @Deprecated(since = "2022-02-03") - public GraphQLObjectType getFieldContainer() { - return fieldContainer; - } - /** * The GraphQLObjectType where fieldDefinition is defined. * Note: diff --git a/src/main/java/graphql/execution/FieldValueInfo.java b/src/main/java/graphql/execution/FieldValueInfo.java index 283cad42c6..6dfc2faab0 100644 --- a/src/main/java/graphql/execution/FieldValueInfo.java +++ b/src/main/java/graphql/execution/FieldValueInfo.java @@ -74,17 +74,6 @@ public CompletableFuture getFieldValueFuture() { return Async.toCompletableFuture(fieldValueObject); } - /** - * Kept for legacy reasons - this method is no longer sensible and is no longer used by the graphql-java engine - * and is kept only for backwards compatible API reasons. - * - * @return a promise to the {@link ExecutionResult} that wraps the field value. - */ - @Deprecated(since = "2023-09-11") - public CompletableFuture getFieldValue() { - return getFieldValueFuture().thenApply(fv -> ExecutionResultImpl.newExecutionResult().data(fv).build()); - } - /** * @return true if the value is a {@link CompletableFuture} promise to a value */ From c6b3b9076f10dc06bd5d89bdcf7546b1fbf33ec2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 8 Dec 2024 08:19:09 +0000 Subject: [PATCH 095/345] Add performance results for commit 3d46b3737bf4f0c617425af4c63036a1336a7423 --- ...bf4f0c617425af4c63036a1336a7423-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json diff --git a/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json b/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json new file mode 100644 index 0000000000..d7d4143001 --- /dev/null +++ b/performance-results/2024-12-08T08:18:55Z-3d46b3737bf4f0c617425af4c63036a1336a7423-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4077902649261356, + "scoreError" : 0.011234878517476501, + "scoreConfidence" : [ + 3.396555386408659, + 3.419025143443612 + ], + "scorePercentiles" : { + "0.0" : 3.4053492910657934, + "50.0" : 3.408347201679087, + "90.0" : 3.4091173652805766, + "95.0" : 3.4091173652805766, + "99.0" : 3.4091173652805766, + "99.9" : 3.4091173652805766, + "99.99" : 3.4091173652805766, + "99.999" : 3.4091173652805766, + "99.9999" : 3.4091173652805766, + "100.0" : 3.4091173652805766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4053492910657934, + 3.407743717137213 + ], + [ + 3.40895068622096, + 3.4091173652805766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7203127954265476, + "scoreError" : 0.013318600773962557, + "scoreConfidence" : [ + 1.706994194652585, + 1.73363139620051 + ], + "scorePercentiles" : { + "0.0" : 1.7175975018719172, + "50.0" : 1.7205913784095175, + "90.0" : 1.722470923015238, + "95.0" : 1.722470923015238, + "99.0" : 1.722470923015238, + "99.9" : 1.722470923015238, + "99.99" : 1.722470923015238, + "99.999" : 1.722470923015238, + "99.9999" : 1.722470923015238, + "100.0" : 1.722470923015238 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211197986006654, + 1.722470923015238 + ], + [ + 1.7175975018719172, + 1.7200629582183695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8650705897922965, + "scoreError" : 0.009557110836336062, + "scoreConfidence" : [ + 0.8555134789559604, + 0.8746277006286325 + ], + "scorePercentiles" : { + "0.0" : 0.8631902016341529, + "50.0" : 0.8653947483238336, + "90.0" : 0.8663026608873658, + "95.0" : 0.8663026608873658, + "99.0" : 0.8663026608873658, + "99.9" : 0.8663026608873658, + "99.99" : 0.8663026608873658, + "99.999" : 0.8663026608873658, + "99.9999" : 0.8663026608873658, + "100.0" : 0.8663026608873658 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8662003758298101, + 0.8663026608873658 + ], + [ + 0.8631902016341529, + 0.864589120817857 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.829882344445565, + "scoreError" : 2.1834707260014885, + "scoreConfidence" : [ + 39.64641161844408, + 44.01335307044705 + ], + "scorePercentiles" : { + "0.0" : 40.522546266756436, + "50.0" : 41.16019698230881, + "90.0" : 43.998564098060946, + "95.0" : 43.998564098060946, + "99.0" : 43.998564098060946, + "99.9" : 43.998564098060946, + "99.99" : 43.998564098060946, + "99.999" : 43.998564098060946, + "99.9999" : 43.998564098060946, + "100.0" : 43.998564098060946 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.99599155133248, + 41.10904513591438, + 41.16019698230881 + ], + [ + 40.92612743551148, + 41.19737129049191, + 40.522546266756436 + ], + [ + 43.20615819460214, + 43.998564098060946, + 43.3529401450314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023323010576891567, + "scoreError" : 6.943879125023075E-4, + "scoreConfidence" : [ + 0.02262862266438926, + 0.024017398489393875 + ], + "scorePercentiles" : { + "0.0" : 0.02265938378280543, + "50.0" : 0.023499072201877934, + "90.0" : 0.02383227217142857, + "95.0" : 0.02383227217142857, + "99.0" : 0.02383227217142857, + "99.9" : 0.02383227217142857, + "99.99" : 0.02383227217142857, + "99.999" : 0.02383227217142857, + "99.9999" : 0.02383227217142857, + "100.0" : 0.02383227217142857 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023499072201877934, + 0.023596047476415093, + 0.023534972790588235 + ], + [ + 0.022848023748858446, + 0.022876015378995435, + 0.02265938378280543 + ], + [ + 0.023485217551643192, + 0.023576090089411764, + 0.02383227217142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 46c03234896e2ffad02a5dbf704a721ea0717c67 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Mon, 9 Dec 2024 09:38:54 +1100 Subject: [PATCH 096/345] Adding hashcode and equals for defer & stream payloads (#3769) * Add defer payload equals method * Add hashcode method to defer payload * Add stream payload hashcode and equals * Tidy up --- .../graphql/incremental/DeferPayload.java | 15 +++++ .../incremental/IncrementalPayload.java | 14 ++++ .../graphql/incremental/StreamPayload.java | 15 +++++ .../incremental/DeferPayloadTest.groovy | 46 +++++++++++++ .../incremental/StreamPayloadTest.groovy | 64 +++++++++++++++++-- 5 files changed, 149 insertions(+), 5 deletions(-) diff --git a/src/main/java/graphql/incremental/DeferPayload.java b/src/main/java/graphql/incremental/DeferPayload.java index fcfb06c0c4..6f7460dd0a 100644 --- a/src/main/java/graphql/incremental/DeferPayload.java +++ b/src/main/java/graphql/incremental/DeferPayload.java @@ -8,6 +8,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Represents a defer payload @@ -41,6 +42,20 @@ public Map toSpecification() { return map; } + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), data); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + if (!super.equals(obj)) return false; + DeferPayload that = (DeferPayload) obj; + return Objects.equals(data, that.data); + } + /** * @return a {@link DeferPayload.Builder} that can be used to create an instance of {@link DeferPayload} */ diff --git a/src/main/java/graphql/incremental/IncrementalPayload.java b/src/main/java/graphql/incremental/IncrementalPayload.java index 3ca39e1839..fd2b6883f8 100644 --- a/src/main/java/graphql/incremental/IncrementalPayload.java +++ b/src/main/java/graphql/incremental/IncrementalPayload.java @@ -9,6 +9,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import static java.util.stream.Collectors.toList; @@ -82,6 +83,19 @@ protected Object errorsToSpec(List errors) { return errors.stream().map(GraphQLError::toSpecification).collect(toList()); } + public int hashCode() { + return Objects.hash(path, label, errors, extensions); + } + + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + IncrementalPayload that = (IncrementalPayload) obj; + return Objects.equals(path, that.path) && + Objects.equals(label, that.label) && + Objects.equals(errors, that.errors) && + Objects.equals(extensions, that.extensions); + } protected static abstract class Builder> { protected List path; diff --git a/src/main/java/graphql/incremental/StreamPayload.java b/src/main/java/graphql/incremental/StreamPayload.java index 299f5ac468..663d833b0c 100644 --- a/src/main/java/graphql/incremental/StreamPayload.java +++ b/src/main/java/graphql/incremental/StreamPayload.java @@ -7,6 +7,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * Represents a stream payload @@ -40,6 +41,20 @@ public Map toSpecification() { return map; } + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), items); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) return true; + if (obj == null || getClass() != obj.getClass()) return false; + if (!super.equals(obj)) return false; + StreamPayload that = (StreamPayload) obj; + return Objects.equals(items, that.items); + } + /** * @return a {@link Builder} that can be used to create an instance of {@link StreamPayload} */ diff --git a/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy b/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy index a37fa3ca71..693d3911db 100644 --- a/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy +++ b/src/test/groovy/graphql/incremental/DeferPayloadTest.groovy @@ -4,6 +4,8 @@ import graphql.GraphqlErrorBuilder import graphql.execution.ResultPath import spock.lang.Specification +import static graphql.GraphQLError.newError + class DeferPayloadTest extends Specification { def "null data is included"() { def payload = DeferPayload.newDeferredItem() @@ -96,4 +98,48 @@ class DeferPayloadTest extends Specification { path : ["test", "echo"], ] } + + def "equals and hashcode methods work correctly"() { + when: + def payload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value1"]) + .build() + + def equivalentPayload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value1"]) + .build() + + def totallyDifferentPayload = DeferPayload.newDeferredItem() + .data("data2") + .path(["path2"]) + .label("label2") + .errors([newError().message("message2").build()]) + .extensions([key: "value2"]) + .build() + + def slightlyDifferentPayload = DeferPayload.newDeferredItem() + .data("data1") + .path(["path1"]) + .label("label1") + .errors([newError().message("message1").build()]) + .extensions([key: "value2"]) + .build() + + then: + payload == equivalentPayload + payload != totallyDifferentPayload + payload != slightlyDifferentPayload + + payload.hashCode() == equivalentPayload.hashCode() + payload.hashCode() != totallyDifferentPayload.hashCode() + payload.hashCode() != slightlyDifferentPayload.hashCode() + } } diff --git a/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy b/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy index 7386cb8efd..157dcc1f0d 100644 --- a/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy +++ b/src/test/groovy/graphql/incremental/StreamPayloadTest.groovy @@ -1,9 +1,10 @@ package graphql.incremental -import graphql.GraphqlErrorBuilder import graphql.execution.ResultPath import spock.lang.Specification +import static graphql.GraphqlErrorBuilder.newError + class StreamPayloadTest extends Specification { def "null data is included"() { def payload = StreamPayload.newStreamedItem() @@ -25,11 +26,11 @@ class StreamPayloadTest extends Specification { .items(["twow is that a bee"]) .path(["hello"]) .errors([]) - .addError(GraphqlErrorBuilder.newError() + .addError(newError() .message("wow") .build()) .addErrors([ - GraphqlErrorBuilder.newError() + newError() .message("yep") .build(), ]) @@ -65,12 +66,12 @@ class StreamPayloadTest extends Specification { def payload = StreamPayload.newStreamedItem() .items(["twow is that a bee"]) .path(ResultPath.fromList(["test", "echo"])) - .addError(GraphqlErrorBuilder.newError() + .addError(newError() .message("wow") .build()) .addErrors([]) .errors([ - GraphqlErrorBuilder.newError() + newError() .message("yep") .build(), ]) @@ -96,4 +97,57 @@ class StreamPayloadTest extends Specification { path : ["test", "echo"], ] } + + def "test equals and hashCode methods work"() { + given: + def items1 = ["test1"] + def items2 = ["test2", "test3"] + def path1 = ["test", "echo"] + def path2 = ["test", "echo", "foo"] + def errors1 = [newError().message("error1").build()] + def errors2 = [newError().message("error2").build()] + def extensions1 = [echo: "1"] + def extensions2 = [echo: "2"] + + def payload = new StreamPayload.Builder() + .items(items1) + .path(path1) + .label("label1") + .errors(errors1) + .extensions(extensions1) + .build() + + def equivalentPayload = new StreamPayload.Builder() + .items(items1) + .path(path1) + .label("label1") + .errors(errors1) + .extensions(extensions1) + .build() + + def totallyDifferentPayload = new StreamPayload.Builder() + .items(items2) + .path(path2) + .label("label2") + .errors(errors2) + .extensions(extensions2) + .build() + + def slightlyDifferentPayload = new StreamPayload.Builder() + .items(items2) + .path(path2) + .label("label1") + .errors(errors1) + .extensions(extensions2) + .build() + + expect: + payload == equivalentPayload + payload != totallyDifferentPayload + payload != slightlyDifferentPayload + + payload.hashCode() == equivalentPayload.hashCode() + payload.hashCode() != totallyDifferentPayload.hashCode() + payload.hashCode() != slightlyDifferentPayload.hashCode() + } } From 24907803972f1bc2dc85babb22421e300741c360 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 8 Dec 2024 22:54:38 +0000 Subject: [PATCH 097/345] Add performance results for commit 46c03234896e2ffad02a5dbf704a721ea0717c67 --- ...96e2ffad02a5dbf704a721ea0717c67-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json diff --git a/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json b/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json new file mode 100644 index 0000000000..a13f68e381 --- /dev/null +++ b/performance-results/2024-12-08T22:54:25Z-46c03234896e2ffad02a5dbf704a721ea0717c67-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424378627035124, + "scoreError" : 0.0240399263203179, + "scoreConfidence" : [ + 3.4003387007148063, + 3.448418553355442 + ], + "scorePercentiles" : { + "0.0" : 3.4207630701321463, + "50.0" : 3.4236022814383293, + "90.0" : 3.429546875131693, + "95.0" : 3.429546875131693, + "99.0" : 3.429546875131693, + "99.9" : 3.429546875131693, + "99.99" : 3.429546875131693, + "99.999" : 3.429546875131693, + "99.9999" : 3.429546875131693, + "100.0" : 3.429546875131693 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4230868615582297, + 3.429546875131693 + ], + [ + 3.4207630701321463, + 3.4241177013184285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7298687803269965, + "scoreError" : 0.010463124288060224, + "scoreConfidence" : [ + 1.7194056560389364, + 1.7403319046150567 + ], + "scorePercentiles" : { + "0.0" : 1.7280934234954237, + "50.0" : 1.7296979626163922, + "90.0" : 1.731985772579778, + "95.0" : 1.731985772579778, + "99.0" : 1.731985772579778, + "99.9" : 1.731985772579778, + "99.99" : 1.731985772579778, + "99.999" : 1.731985772579778, + "99.9999" : 1.731985772579778, + "100.0" : 1.731985772579778 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7294035761393258, + 1.731985772579778 + ], + [ + 1.7280934234954237, + 1.7299923490934583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8701164779654085, + "scoreError" : 0.00395761298041778, + "scoreConfidence" : [ + 0.8661588649849907, + 0.8740740909458262 + ], + "scorePercentiles" : { + "0.0" : 0.869458088898, + "50.0" : 0.8701123859892204, + "90.0" : 0.8707830509851929, + "95.0" : 0.8707830509851929, + "99.0" : 0.8707830509851929, + "99.9" : 0.8707830509851929, + "99.99" : 0.8707830509851929, + "99.999" : 0.8707830509851929, + "99.9999" : 0.8707830509851929, + "100.0" : 0.8707830509851929 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8704641226465905, + 0.8707830509851929 + ], + [ + 0.869458088898, + 0.8697606493318503 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.78882381498855, + "scoreError" : 1.6789885454880027, + "scoreConfidence" : [ + 43.10983526950054, + 46.46781236047655 + ], + "scorePercentiles" : { + "0.0" : 43.649949104503946, + "50.0" : 44.40706804090582, + "90.0" : 46.08789493604563, + "95.0" : 46.08789493604563, + "99.0" : 46.08789493604563, + "99.9" : 46.08789493604563, + "99.99" : 46.08789493604563, + "99.999" : 46.08789493604563, + "99.9999" : 46.08789493604563, + "100.0" : 46.08789493604563 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.06557024270227, + 46.08789493604563, + 46.08198077042825 + ], + [ + 44.39265750328088, + 44.40706804090582, + 44.42821713852795 + ], + [ + 43.649949104503946, + 43.99180129638337, + 43.99427530211887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02236314997162596, + "scoreError" : 7.931364759453877E-4, + "scoreConfidence" : [ + 0.021570013495680572, + 0.023156286447571346 + ], + "scorePercentiles" : { + "0.0" : 0.022002074795604395, + "50.0" : 0.022066712607929515, + "90.0" : 0.02300942944597701, + "95.0" : 0.02300942944597701, + "99.0" : 0.02300942944597701, + "99.9" : 0.02300942944597701, + "99.99" : 0.02300942944597701, + "99.999" : 0.02300942944597701, + "99.9999" : 0.02300942944597701, + "100.0" : 0.02300942944597701 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02299016895632184, + 0.02297587995642202, + 0.02300942944597701 + ], + [ + 0.02206858371585903, + 0.022066712607929515, + 0.022060007019823788 + ], + [ + 0.022002074795604395, + 0.022048064753303964, + 0.02204742849339207 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 4760249617788740710a4851791e22178191fa9c Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 9 Dec 2024 10:44:08 +1100 Subject: [PATCH 098/345] Added more tests --- .../QueryDirectivesIntegrationTest.groovy | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy index 2b99d6e3be..8c907862a7 100644 --- a/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/directives/QueryDirectivesIntegrationTest.groovy @@ -94,7 +94,7 @@ class QueryDirectivesIntegrationTest extends Specification { capturedDirectives = [:] } - def "can collector directives as expected"() { + def "can collect directives as expected"() { when: def er = execute(pathologicalQuery) then: @@ -112,6 +112,36 @@ class QueryDirectivesIntegrationTest extends Specification { joinArgs(immediate) == "cached(forMillis:5),cached(forMillis:10)" } + def "can collect merged field directives as expected"() { + when: + def query = """ + query Books { + books(searchString: "monkey") { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + review @timeout(afterMillis: 100) @cached(forMillis : 100) + } + } + + """ + def er = execute(query) + then: + er.errors.isEmpty() + + def immediateMap = capturedDirectives["review"].getImmediateAppliedDirectivesByName() + def entries = immediateMap.entrySet().collectEntries({ + [(it.getKey()): joinArgs(it.getValue())] + }) + entries == [cached : "cached(forMillis:10),cached(forMillis:100)", + timeout: "timeout(afterMillis:10),timeout(afterMillis:100)" + ] + + def immediate = capturedDirectives["review"].getImmediateAppliedDirective("cached") + joinArgs(immediate) == "cached(forMillis:10),cached(forMillis:100)" + + def immediate2 = capturedDirectives["review"].getImmediateAppliedDirective("timeout") + joinArgs(immediate2) == "timeout(afterMillis:10),timeout(afterMillis:100)" + } + def "wont create directives for peer fields accidentally"() { def query = '''query Books { books(searchString: "monkey") { From 883ba63969ce5995a4b85799d1b9d6635a7c8637 Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 9 Dec 2024 13:20:28 +1100 Subject: [PATCH 099/345] Added compiler tst for merged fields --- ...erationToAstCompilerDirectivesTest.groovy} | 71 +++++++++++++------ 1 file changed, 48 insertions(+), 23 deletions(-) rename src/test/groovy/graphql/normalized/{ENOToAstCompilerDirectivesTest.groovy => ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy} (82%) diff --git a/src/test/groovy/graphql/normalized/ENOToAstCompilerDirectivesTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy similarity index 82% rename from src/test/groovy/graphql/normalized/ENOToAstCompilerDirectivesTest.groovy rename to src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy index 9d55d3dccc..b7928b4aed 100644 --- a/src/test/groovy/graphql/normalized/ENOToAstCompilerDirectivesTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationToAstCompilerDirectivesTest.groovy @@ -7,7 +7,24 @@ import static graphql.language.OperationDefinition.Operation.QUERY /** * Test related to ENO and directives */ -class ENOToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { +class ExecutableNormalizedOperationToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { + def bookSDL = ''' + directive @timeout(afterMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + directive @cached(forMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + directive @importance(place : String) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY + + type Query { + books(searchString : String) : [Book] + } + + type Book { + id : ID + title : String + review : String + } + ''' def "can extract variables or inline values for directives on the query"() { def sdl = ''' @@ -77,23 +94,6 @@ class ENOToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { } def "can handle quite a pathological fragment query as expected"() { - def sdl = ''' - directive @timeout(afterMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY - - directive @cached(forMillis : Int) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY - - directive @importance(place : String) on FIELD | FRAGMENT_DEFINITION | FRAGMENT_SPREAD | INLINE_FRAGMENT | QUERY - - type Query { - books(searchString : String) : [Book] - } - - type Book { - id : ID - title : String - review : String - } - ''' def pathologicalQuery = ''' fragment Details on Book @timeout(afterMillis: 25) @cached(forMillis : 25) @importance(place:"FragDef") { @@ -117,7 +117,7 @@ class ENOToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { } ''' - GraphQLSchema schema = mkSchema(sdl) + GraphQLSchema schema = mkSchema(bookSDL) def eno = createNormalizedTree(schema, pathologicalQuery, [:]) when: @@ -130,10 +130,6 @@ class ENOToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { then: vars == [v0:5, v1:5, v2:28, v3:10, v4:10, v5:"monkey"] - // - // the below is what ir currently produces but its WRONG - // fix up when the other tests starts to work - // ast == '''query Books($v0: Int, $v1: Int, $v2: Int, $v3: Int, $v4: Int, $v5: String) { books(searchString: $v5) { id @@ -166,4 +162,33 @@ class ENOToAstCompilerDirectivesTest extends ENOToAstCompilerTestBase { ''' } + + def "merged fields with the same field will capture all directives"() { + def query = ''' + query Books { + books(searchString: "monkey") { + review @timeout(afterMillis: 10) @cached(forMillis : 10) + review @timeout(afterMillis: 100) @cached(forMillis : 100) + } + } + ''' + + GraphQLSchema schema = mkSchema(bookSDL) + def eno = createNormalizedTree(schema, query, [:]) + + when: + def result = localCompileToDocument(schema, QUERY, "Books", + eno.getTopLevelFields(), eno.getNormalizedFieldToQueryDirectives(), + noVariables) + def document = result.document + def ast = printDoc(document) + + then: + ast == '''query Books { + books(searchString: "monkey") { + review @cached(forMillis: 10) @cached(forMillis: 100) @timeout(afterMillis: 10) @timeout(afterMillis: 100) + } +} +''' + } } From 35760dc9e50dc3ce35a046a5b272eda696c870d5 Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Mon, 9 Dec 2024 13:29:32 +1100 Subject: [PATCH 100/345] Now there are zero javadoc errors during compile (#3770) --- src/main/java/graphql/GraphqlErrorHelper.java | 3 +++ src/main/java/graphql/parser/ParserOptions.java | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/main/java/graphql/GraphqlErrorHelper.java b/src/main/java/graphql/GraphqlErrorHelper.java index c422a18436..f613547565 100644 --- a/src/main/java/graphql/GraphqlErrorHelper.java +++ b/src/main/java/graphql/GraphqlErrorHelper.java @@ -57,6 +57,9 @@ public static Object locations(List locations) { /** * Positive integers starting from 1 required for error locations, * from the spec ... + * + * @param location the source location in play + * @return a value for source location of the error */ public static Object location(SourceLocation location) { int line = location.getLine(); diff --git a/src/main/java/graphql/parser/ParserOptions.java b/src/main/java/graphql/parser/ParserOptions.java index c3366d6bb6..0adfb73f6d 100644 --- a/src/main/java/graphql/parser/ParserOptions.java +++ b/src/main/java/graphql/parser/ParserOptions.java @@ -302,6 +302,8 @@ public int getMaxRuleDepth() { /** * Option to redact offending tokens in parser error messages. * By default, the parser will include the offending token in the error message, if possible. + * + * @return true if the token parser messages should be redacted */ public boolean isRedactTokenParserErrorMessages() { return redactTokenParserErrorMessages; From b714aa4f72ccafce2f4b575297eae42d69ac5928 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 02:45:27 +0000 Subject: [PATCH 101/345] Add performance results for commit 35760dc9e50dc3ce35a046a5b272eda696c870d5 --- ...50dc3ce35a046a5b272eda696c870d5-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json diff --git a/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json b/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json new file mode 100644 index 0000000000..68ea673507 --- /dev/null +++ b/performance-results/2024-12-09T02:45:13Z-35760dc9e50dc3ce35a046a5b272eda696c870d5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3995645247595654, + "scoreError" : 0.02987629044326602, + "scoreConfidence" : [ + 3.3696882343162993, + 3.4294408152028315 + ], + "scorePercentiles" : { + "0.0" : 3.393628753189234, + "50.0" : 3.400273375153123, + "90.0" : 3.404082595542781, + "95.0" : 3.404082595542781, + "99.0" : 3.404082595542781, + "99.9" : 3.404082595542781, + "99.99" : 3.404082595542781, + "99.999" : 3.404082595542781, + "99.9999" : 3.404082595542781, + "100.0" : 3.404082595542781 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.398339998248194, + 3.4022067520580523 + ], + [ + 3.393628753189234, + 3.404082595542781 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7205088090910943, + "scoreError" : 0.012083738709990733, + "scoreConfidence" : [ + 1.7084250703811035, + 1.732592547801085 + ], + "scorePercentiles" : { + "0.0" : 1.7181281468730438, + "50.0" : 1.7209360921738943, + "90.0" : 1.722034905143545, + "95.0" : 1.722034905143545, + "99.0" : 1.722034905143545, + "99.9" : 1.722034905143545, + "99.99" : 1.722034905143545, + "99.999" : 1.722034905143545, + "99.9999" : 1.722034905143545, + "100.0" : 1.722034905143545 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7181281468730438, + 1.722034905143545 + ], + [ + 1.7199044135030424, + 1.721967770844746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864565745832372, + "scoreError" : 0.0026425774790852547, + "scoreConfidence" : [ + 0.8619231683532868, + 0.8672083233114573 + ], + "scorePercentiles" : { + "0.0" : 0.8642812220365862, + "50.0" : 0.8644122330769803, + "90.0" : 0.8651572951389412, + "95.0" : 0.8651572951389412, + "99.0" : 0.8651572951389412, + "99.9" : 0.8651572951389412, + "99.99" : 0.8651572951389412, + "99.999" : 0.8651572951389412, + "99.9999" : 0.8651572951389412, + "100.0" : 0.8651572951389412 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8642812220365862, + 0.8643034133675414 + ], + [ + 0.8645210527864192, + 0.8651572951389412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 38.949218227332636, + "scoreError" : 1.5418956244161082, + "scoreConfidence" : [ + 37.40732260291653, + 40.49111385174874 + ], + "scorePercentiles" : { + "0.0" : 37.33301129092536, + "50.0" : 38.9146032107846, + "90.0" : 40.30890725487399, + "95.0" : 40.30890725487399, + "99.0" : 40.30890725487399, + "99.9" : 40.30890725487399, + "99.99" : 40.30890725487399, + "99.999" : 40.30890725487399, + "99.9999" : 40.30890725487399, + "100.0" : 40.30890725487399 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 39.64330498367299, + 39.921199062124764, + 40.30890725487399 + ], + [ + 37.33301129092536, + 38.286993705317236, + 38.383005751480006 + ], + [ + 39.07198320782333, + 38.9146032107846, + 38.6799555789915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.026043005372482237, + "scoreError" : 0.0013237341236282344, + "scoreConfidence" : [ + 0.024719271248854, + 0.027366739496110473 + ], + "scorePercentiles" : { + "0.0" : 0.024870349985111662, + "50.0" : 0.026153539485639688, + "90.0" : 0.026994492881401617, + "95.0" : 0.026994492881401617, + "99.0" : 0.026994492881401617, + "99.9" : 0.026994492881401617, + "99.99" : 0.026994492881401617, + "99.999" : 0.026994492881401617, + "99.9999" : 0.026994492881401617, + "100.0" : 0.026994492881401617 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025874787736434108, + 0.026153539485639688, + 0.026638927933510637 + ], + [ + 0.02556267860714286, + 0.024960604900249376, + 0.024870349985111662 + ], + [ + 0.02643135141424802, + 0.026994492881401617, + 0.02690031540860215 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From e09e6b698fd2980027fa4fe50f4de991bff84146 Mon Sep 17 00:00:00 2001 From: bbaker Date: Mon, 9 Dec 2024 21:37:00 +1100 Subject: [PATCH 102/345] Extra comment --- src/main/java/graphql/normalized/VariableAccumulator.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/graphql/normalized/VariableAccumulator.java b/src/main/java/graphql/normalized/VariableAccumulator.java index d2a7fe2a37..c555016476 100644 --- a/src/main/java/graphql/normalized/VariableAccumulator.java +++ b/src/main/java/graphql/normalized/VariableAccumulator.java @@ -30,6 +30,8 @@ public VariableAccumulator(@Nullable VariablePredicate variablePredicate) { } public boolean shouldMakeVariable(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, NormalizedInputValue normalizedInputValue) { + // when a variable is used on the argument to a query directive then the queryAppliedDirective will be nonnull. + // otherwise it must be a field argument if (queryAppliedDirective != null) { return variablePredicate != null && variablePredicate.shouldMakeVariable(executableNormalizedField, queryAppliedDirective, argName, normalizedInputValue); } else { From 4274344b30c731b950399bdb66be9d91d8599da3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:50:47 +0000 Subject: [PATCH 103/345] Bump net.bytebuddy:byte-buddy-agent from 1.15.10 to 1.15.11 Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.15.10 to 1.15.11. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.10...byte-buddy-1.15.11) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 9c36612d9c..fba5e9232a 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.15.10") + implementation("net.bytebuddy:byte-buddy-agent:1.15.11") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 1d1a1d9d57171269895169b89088ab25a5121305 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:50:50 +0000 Subject: [PATCH 104/345] Bump net.bytebuddy:byte-buddy from 1.15.10 to 1.15.11 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.15.10 to 1.15.11. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.10...byte-buddy-1.15.11) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index b1ad9c55b0..b20b6e7c7c 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.15.10") + implementation("net.bytebuddy:byte-buddy:1.15.11") // graphql-java itself implementation(rootProject) } From fb378fe1fa680ebf2bb48418b9ef7494ee386647 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:50:53 +0000 Subject: [PATCH 105/345] Bump org.junit.jupiter:junit-jupiter from 5.11.3 to 5.11.4 Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.11.3 to 5.11.4. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.3...r5.11.4) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 9c36612d9c..29e23115fe 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -6,7 +6,7 @@ dependencies { implementation(rootProject) implementation("net.bytebuddy:byte-buddy-agent:1.15.10") - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.3' + testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation("org.assertj:assertj-core:3.26.3") From ac8409abab1c93af70db93a5939297f946590427 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:50:57 +0000 Subject: [PATCH 106/345] Bump io.projectreactor:reactor-core from 3.7.0 to 3.7.1 Bumps [io.projectreactor:reactor-core](https://github.com/reactor/reactor-core) from 3.7.0 to 3.7.1. - [Release notes](https://github.com/reactor/reactor-core/releases) - [Commits](https://github.com/reactor/reactor-core/compare/v3.7.0...v3.7.1) --- updated-dependencies: - dependency-name: io.projectreactor:reactor-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 97312894f6..bd93697f57 100644 --- a/build.gradle +++ b/build.gradle @@ -117,7 +117,7 @@ dependencies { testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" - testImplementation "io.projectreactor:reactor-core:3.7.0" + testImplementation "io.projectreactor:reactor-core:3.7.1" testImplementation 'org.testng:testng:7.10.2' // use for reactive streams test inheritance From a736bc9f3dedde72704eebdd452ad3015e27f76d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 03:03:00 +0000 Subject: [PATCH 107/345] Add performance results for commit 9de9f06a7200cf98c69129730626f9a5f35f6e8d --- ...200cf98c69129730626f9a5f35f6e8d-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json diff --git a/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json b/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json new file mode 100644 index 0000000000..ccf4a784ae --- /dev/null +++ b/performance-results/2024-12-17T03:02:43Z-9de9f06a7200cf98c69129730626f9a5f35f6e8d-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4254834308373514, + "scoreError" : 0.015025400543458568, + "scoreConfidence" : [ + 3.410458030293893, + 3.44050883138081 + ], + "scorePercentiles" : { + "0.0" : 3.423328219387952, + "50.0" : 3.425552177730207, + "90.0" : 3.42750114850104, + "95.0" : 3.42750114850104, + "99.0" : 3.42750114850104, + "99.9" : 3.42750114850104, + "99.99" : 3.42750114850104, + "99.999" : 3.42750114850104, + "99.9999" : 3.42750114850104, + "100.0" : 3.42750114850104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.423328219387952, + 3.42750114850104 + ], + [ + 3.4236164536870035, + 3.4274879017734112 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7302247645519597, + "scoreError" : 0.010033955510826632, + "scoreConfidence" : [ + 1.720190809041133, + 1.7402587200627864 + ], + "scorePercentiles" : { + "0.0" : 1.7288955727752675, + "50.0" : 1.7298209211776594, + "90.0" : 1.7323616430772524, + "95.0" : 1.7323616430772524, + "99.0" : 1.7323616430772524, + "99.9" : 1.7323616430772524, + "99.99" : 1.7323616430772524, + "99.999" : 1.7323616430772524, + "99.9999" : 1.7323616430772524, + "100.0" : 1.7323616430772524 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7292851672177052, + 1.7323616430772524 + ], + [ + 1.7288955727752675, + 1.7303566751376136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700678921409488, + "scoreError" : 0.00713353924393665, + "scoreConfidence" : [ + 0.8629343528970121, + 0.8772014313848855 + ], + "scorePercentiles" : { + "0.0" : 0.8686670360707984, + "50.0" : 0.8701250932717297, + "90.0" : 0.8713543459495379, + "95.0" : 0.8713543459495379, + "99.0" : 0.8713543459495379, + "99.9" : 0.8713543459495379, + "99.99" : 0.8713543459495379, + "99.999" : 0.8713543459495379, + "99.9999" : 0.8713543459495379, + "100.0" : 0.8713543459495379 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686670360707984, + 0.8702516506204957 + ], + [ + 0.8699985359229638, + 0.8713543459495379 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.32130915520371, + "scoreError" : 3.560055957159324, + "scoreConfidence" : [ + 41.761253198044386, + 48.88136511236303 + ], + "scorePercentiles" : { + "0.0" : 42.7537076662837, + "50.0" : 45.5422455784985, + "90.0" : 47.642633062453015, + "95.0" : 47.642633062453015, + "99.0" : 47.642633062453015, + "99.9" : 47.642633062453015, + "99.99" : 47.642633062453015, + "99.999" : 47.642633062453015, + "99.9999" : 47.642633062453015, + "100.0" : 47.642633062453015 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.7537076662837, + 42.76955088117818, + 42.768304606190554 + ], + [ + 47.63155598328764, + 47.64036553406184, + 47.642633062453015 + ], + [ + 45.624284346660495, + 45.519134738219414, + 45.5422455784985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022670557238933457, + "scoreError" : 9.94605572521605E-4, + "scoreConfidence" : [ + 0.02167595166641185, + 0.023665162811455063 + ], + "scorePercentiles" : { + "0.0" : 0.022023165004395603, + "50.0" : 0.022586484038374717, + "90.0" : 0.02347066886416862, + "95.0" : 0.02347066886416862, + "99.0" : 0.02347066886416862, + "99.9" : 0.02347066886416862, + "99.99" : 0.02347066886416862, + "99.999" : 0.02347066886416862, + "99.9999" : 0.02347066886416862, + "100.0" : 0.02347066886416862 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02347066886416862, + 0.023345283524475523, + 0.02333887996270396 + ], + [ + 0.02202807403964758, + 0.02202869620044053, + 0.022023165004395603 + ], + [ + 0.022632988674208144, + 0.022580774841986458, + 0.022586484038374717 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 776ec29a83044eae00111af036c7f4cf32b559f1 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Thu, 19 Dec 2024 08:18:03 +1100 Subject: [PATCH 108/345] Fix SDL example --- src/test/groovy/readme/DirectivesExamples.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/test/groovy/readme/DirectivesExamples.java b/src/test/groovy/readme/DirectivesExamples.java index 77dd5d6c76..ce833d9607 100644 --- a/src/test/groovy/readme/DirectivesExamples.java +++ b/src/test/groovy/readme/DirectivesExamples.java @@ -48,8 +48,7 @@ public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment contextMap = dataFetchingEnvironment.getContext(); - AuthorisationCtx authContext = (AuthorisationCtx) contextMap.get("authContext"); + AuthorisationCtx authContext = dataFetchingEnvironment.getGraphQlContext().get("authContext"); if (authContext.hasRole(targetAuthRole)) { return originalDataFetcher.get(dataFetchingEnvironment); @@ -83,7 +82,7 @@ void contextWiring() { ExecutionInput executionInput = ExecutionInput.newExecutionInput() .query(query) - .graphQLContext(builder -> builder.put("authCtx", authCtx)) + .graphQLContext(builder -> builder.put("authContext", authCtx)) .build(); } From b25ee983f4c744d1cb745330174ca9729a715460 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Thu, 19 Dec 2024 08:24:11 +1100 Subject: [PATCH 109/345] Use GraphQLContext in datafetching examples --- src/test/groovy/readme/DataFetchingExamples.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/readme/DataFetchingExamples.java b/src/test/groovy/readme/DataFetchingExamples.java index dbe637dad1..c44dfce56a 100644 --- a/src/test/groovy/readme/DataFetchingExamples.java +++ b/src/test/groovy/readme/DataFetchingExamples.java @@ -47,7 +47,7 @@ void getProductsDataFetcher() { DataFetcher productsDataFetcher = new DataFetcher>() { @Override public List get(DataFetchingEnvironment environment) { - DatabaseSecurityCtx ctx = environment.getContext(); + DatabaseSecurityCtx ctx = environment.getGraphQlContext().get("databaseSecurityCtx"); List products; String match = environment.getArgument("match"); From 7797be0fbd8fee321780d87af50b6e573404252a Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Thu, 19 Dec 2024 08:30:36 +1100 Subject: [PATCH 110/345] Fix deprecated directive method --- src/test/groovy/readme/DirectivesExamples.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/readme/DirectivesExamples.java b/src/test/groovy/readme/DirectivesExamples.java index ce833d9607..2dadcdd461 100644 --- a/src/test/groovy/readme/DirectivesExamples.java +++ b/src/test/groovy/readme/DirectivesExamples.java @@ -39,7 +39,7 @@ class AuthorisationDirective implements SchemaDirectiveWiring { @Override public GraphQLFieldDefinition onField(SchemaDirectiveWiringEnvironment environment) { - String targetAuthRole = (String) environment.getDirective().getArgument("role").getArgumentValue().getValue(); + String targetAuthRole = (String) environment.getAppliedDirective().getArgument("role").getArgumentValue().getValue(); // // build a data fetcher that first checks authorisation roles before then calling the original data fetcher From eb1062cf473174f9739500b83ed2e63065d2ec89 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 21 Dec 2024 19:06:57 +1100 Subject: [PATCH 111/345] Tidy up supported by --- README.md | 2 -- README.zh_cn.md | 6 ------ 2 files changed, 8 deletions(-) diff --git a/README.md b/README.md index ffb1d72984..41d1b3ab5e 100644 --- a/README.md +++ b/README.md @@ -32,5 +32,3 @@ take the time to read it. ### License Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) - -### Supported by diff --git a/README.zh_cn.md b/README.zh_cn.md index 8c519b188b..15efa0dbf3 100644 --- a/README.zh_cn.md +++ b/README.zh_cn.md @@ -24,9 +24,3 @@ ### License Copyright (c) 2015, Andreas Marek and [贡献者们](https://github.com/graphql-java/graphql-java/graphs/contributors) - -### 帮助支持 - -![YourKit](https://www.yourkit.com/images/yklogo.png) - -[YourKit](https://www.yourkit.com/) 通过 YourKit Java Profiler 能力对该项目提供了支持。 From 9a69970ca86e03e380c80cc1edd9aa4d5aa00a0e Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 22 Dec 2024 17:14:08 +1100 Subject: [PATCH 112/345] Add validation at document parse time --- .../validation/ValidationErrorType.java | 3 +- .../java/graphql/validation/Validator.java | 8 +++- .../validation/rules/KnownOperationTypes.java | 43 +++++++++++++++++++ src/main/resources/i18n/Validation.properties | 2 + .../graphql/ParseAndValidateTest.groovy | 38 ++++++++++++---- 5 files changed, 82 insertions(+), 12 deletions(-) create mode 100644 src/main/java/graphql/validation/rules/KnownOperationTypes.java diff --git a/src/main/java/graphql/validation/ValidationErrorType.java b/src/main/java/graphql/validation/ValidationErrorType.java index 5710a1b0b9..e701a5d778 100644 --- a/src/main/java/graphql/validation/ValidationErrorType.java +++ b/src/main/java/graphql/validation/ValidationErrorType.java @@ -43,5 +43,6 @@ public enum ValidationErrorType implements ValidationErrorClassification { NullValueForNonNullArgument, SubscriptionMultipleRootFields, SubscriptionIntrospectionRootField, - UniqueObjectFieldName + UniqueObjectFieldName, + UnknownOperation } diff --git a/src/main/java/graphql/validation/Validator.java b/src/main/java/graphql/validation/Validator.java index d7c3db2fdc..52709109d6 100644 --- a/src/main/java/graphql/validation/Validator.java +++ b/src/main/java/graphql/validation/Validator.java @@ -1,7 +1,6 @@ package graphql.validation; -import graphql.ExperimentalApi; import graphql.Internal; import graphql.i18n.I18n; import graphql.language.Document; @@ -10,6 +9,7 @@ import graphql.validation.rules.DeferDirectiveLabel; import graphql.validation.rules.DeferDirectiveOnRootLevel; import graphql.validation.rules.DeferDirectiveOnValidOperation; +import graphql.validation.rules.KnownOperationTypes; import graphql.validation.rules.UniqueObjectFieldName; import graphql.validation.rules.ExecutableDefinitions; import graphql.validation.rules.FieldsOnCorrectType; @@ -52,7 +52,7 @@ public class Validator { * `graphql-java` will stop validation after a maximum number of validation messages has been reached. Attackers * can send pathologically invalid queries to induce a Denial of Service attack and fill memory with 10000s of errors * and burn CPU in process. - * + *

* By default, this is set to 100 errors. You can set a new JVM wide value as the maximum allowed validation errors. * * @param maxValidationErrors the maximum validation errors allow JVM wide @@ -169,6 +169,10 @@ public List createRules(ValidationContext validationContext, Valid DeferDirectiveLabel deferDirectiveLabel = new DeferDirectiveLabel(validationContext, validationErrorCollector); rules.add(deferDirectiveLabel); + + KnownOperationTypes knownOperationTypes = new KnownOperationTypes(validationContext, validationErrorCollector); + rules.add(knownOperationTypes); + return rules; } } diff --git a/src/main/java/graphql/validation/rules/KnownOperationTypes.java b/src/main/java/graphql/validation/rules/KnownOperationTypes.java new file mode 100644 index 0000000000..2e705276ac --- /dev/null +++ b/src/main/java/graphql/validation/rules/KnownOperationTypes.java @@ -0,0 +1,43 @@ +package graphql.validation.rules; + +import graphql.Internal; +import graphql.language.OperationDefinition; +import graphql.schema.GraphQLSchema; +import graphql.validation.AbstractRule; +import graphql.validation.ValidationContext; +import graphql.validation.ValidationErrorCollector; + +import static graphql.validation.ValidationErrorType.UnknownOperation; + +/** + * Unique variable names + *

+ * A GraphQL operation is only valid if all its variables are uniquely named. + */ +@Internal +public class KnownOperationTypes extends AbstractRule { + + public KnownOperationTypes(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + super(validationContext, validationErrorCollector); + } + + @Override + public void checkOperationDefinition(OperationDefinition operationDefinition) { + OperationDefinition.Operation documentOperation = operationDefinition.getOperation(); + GraphQLSchema graphQLSchema = getValidationContext().getSchema(); + if (documentOperation == OperationDefinition.Operation.MUTATION + && graphQLSchema.getMutationType() == null) { + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", documentOperation.name()); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } else if (documentOperation == OperationDefinition.Operation.SUBSCRIPTION + && graphQLSchema.getSubscriptionType() == null) { + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", documentOperation.name()); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } else if (documentOperation == OperationDefinition.Operation.QUERY + && graphQLSchema.getQueryType() == null) { + // This is unlikely to happen, as a validated GraphQLSchema must have a Query type by definition + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", documentOperation.name()); + addError(UnknownOperation, operationDefinition.getSourceLocation(), message); + } + } +} diff --git a/src/main/resources/i18n/Validation.properties b/src/main/resources/i18n/Validation.properties index 4f5c42ab25..a9403bea5b 100644 --- a/src/main/resources/i18n/Validation.properties +++ b/src/main/resources/i18n/Validation.properties @@ -38,6 +38,8 @@ KnownFragmentNames.undefinedFragment=Validation error ({0}) : Undefined fragment # KnownTypeNames.unknownType=Validation error ({0}) : Unknown type ''{1}'' # +KnownOperationTypes.noOperation=Validation error ({0}): The ''{1}'' operation is not supported by the schema +# LoneAnonymousOperation.withOthers=Validation error ({0}) : Anonymous operation with other operations LoneAnonymousOperation.namedOperation=Validation error ({0}) : Operation ''{1}'' is following anonymous operation # diff --git a/src/test/groovy/graphql/ParseAndValidateTest.groovy b/src/test/groovy/graphql/ParseAndValidateTest.groovy index a5ffd60717..b9a190e64c 100644 --- a/src/test/groovy/graphql/ParseAndValidateTest.groovy +++ b/src/test/groovy/graphql/ParseAndValidateTest.groovy @@ -1,11 +1,10 @@ package graphql import graphql.language.Document +import graphql.language.SourceLocation import graphql.parser.InvalidSyntaxException import graphql.parser.Parser -import graphql.schema.GraphQLSchema import graphql.schema.idl.SchemaParser -import graphql.schema.idl.TypeDefinitionRegistry import graphql.schema.idl.UnExecutableSchemaGenerator import graphql.validation.ValidationError import graphql.validation.ValidationErrorType @@ -162,23 +161,40 @@ class ParseAndValidateTest extends Specification { !rs.errors.isEmpty() // all rules apply - we have errors } - def "issue 2740 - evidence of not working"() { + def "validation error raised if mutation operation does not exist in schema"() { def sdl = ''' type Query { - myquery : String! + myQuery : String! } ''' def registry = new SchemaParser().parse(sdl) def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) - def graphQL = GraphQL.newGraphQL(schema).build() - - String request = "mutation MyMutation { mymutation }" + String request = "mutation MyMutation { myMutation }" when: - def er = graphQL.execute(request) + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + then: - er.errors.size() == 1 + errors.size() == 1 + def error = errors.first() + error.validationErrorType == ValidationErrorType.UnknownOperation + error.message == "Validation error (UnknownOperation): The 'MUTATION' operation is not supported by the schema" + error.locations == [new SourceLocation(1, 1)] + } + + def "validation error raised if subscription operation does not exist in schema"() { + def sdl = ''' + type Query { + myQuery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + + String request = "subscription MySubscription { mySubscription }" when: Document inputDocument = new Parser().parseDocument(request) @@ -186,5 +202,9 @@ class ParseAndValidateTest extends Specification { then: errors.size() == 1 + def error = errors.first() + error.validationErrorType == ValidationErrorType.UnknownOperation + error.message == "Validation error (UnknownOperation): The 'SUBSCRIPTION' operation is not supported by the schema" + error.locations == [new SourceLocation(1, 1)] } } From d6be93af13f9d3d0dbc3070c9a34b8cd4fe58963 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 22 Dec 2024 17:31:21 +1100 Subject: [PATCH 113/345] Make operation capitalised rather than all caps --- .../graphql/validation/rules/KnownOperationTypes.java | 11 ++++++++--- src/main/resources/i18n/Validation_de.properties | 2 ++ src/test/groovy/graphql/ParseAndValidateTest.groovy | 4 ++-- .../validation/rules/KnownDirectivesTest.groovy | 4 ++++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/graphql/validation/rules/KnownOperationTypes.java b/src/main/java/graphql/validation/rules/KnownOperationTypes.java index 2e705276ac..2ef9af48fe 100644 --- a/src/main/java/graphql/validation/rules/KnownOperationTypes.java +++ b/src/main/java/graphql/validation/rules/KnownOperationTypes.java @@ -3,6 +3,7 @@ import graphql.Internal; import graphql.language.OperationDefinition; import graphql.schema.GraphQLSchema; +import graphql.util.StringKit; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; import graphql.validation.ValidationErrorCollector; @@ -27,17 +28,21 @@ public void checkOperationDefinition(OperationDefinition operationDefinition) { GraphQLSchema graphQLSchema = getValidationContext().getSchema(); if (documentOperation == OperationDefinition.Operation.MUTATION && graphQLSchema.getMutationType() == null) { - String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", documentOperation.name()); + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); addError(UnknownOperation, operationDefinition.getSourceLocation(), message); } else if (documentOperation == OperationDefinition.Operation.SUBSCRIPTION && graphQLSchema.getSubscriptionType() == null) { - String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", documentOperation.name()); + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); addError(UnknownOperation, operationDefinition.getSourceLocation(), message); } else if (documentOperation == OperationDefinition.Operation.QUERY && graphQLSchema.getQueryType() == null) { // This is unlikely to happen, as a validated GraphQLSchema must have a Query type by definition - String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", documentOperation.name()); + String message = i18n(UnknownOperation, "KnownOperationTypes.noOperation", formatOperation(documentOperation)); addError(UnknownOperation, operationDefinition.getSourceLocation(), message); } } + + private String formatOperation(OperationDefinition.Operation operation) { + return StringKit.capitalize(operation.name().toLowerCase()); + } } diff --git a/src/main/resources/i18n/Validation_de.properties b/src/main/resources/i18n/Validation_de.properties index fec637643c..7823c9d511 100644 --- a/src/main/resources/i18n/Validation_de.properties +++ b/src/main/resources/i18n/Validation_de.properties @@ -30,6 +30,8 @@ KnownFragmentNames.undefinedFragment=Validierungsfehler ({0}) : Undefiniertes Fr # KnownTypeNames.unknownType=Validierungsfehler ({0}) : Unbekannter Typ ''{1}'' # +KnownOperationTypes.noOperation=Validierungsfehler ({0}): ''{1}'' Operation wird vom Schema nicht unterstützt +# LoneAnonymousOperation.withOthers=Validierungsfehler ({0}) : Anonyme Operation mit anderen Operationen LoneAnonymousOperation.namedOperation=Validierungsfehler ({0}) : Operation ''{1}'' folgt der anonymen Operation # diff --git a/src/test/groovy/graphql/ParseAndValidateTest.groovy b/src/test/groovy/graphql/ParseAndValidateTest.groovy index b9a190e64c..c5c20a71fa 100644 --- a/src/test/groovy/graphql/ParseAndValidateTest.groovy +++ b/src/test/groovy/graphql/ParseAndValidateTest.groovy @@ -180,7 +180,7 @@ class ParseAndValidateTest extends Specification { errors.size() == 1 def error = errors.first() error.validationErrorType == ValidationErrorType.UnknownOperation - error.message == "Validation error (UnknownOperation): The 'MUTATION' operation is not supported by the schema" + error.message == "Validation error (UnknownOperation): The 'Mutation' operation is not supported by the schema" error.locations == [new SourceLocation(1, 1)] } @@ -204,7 +204,7 @@ class ParseAndValidateTest extends Specification { errors.size() == 1 def error = errors.first() error.validationErrorType == ValidationErrorType.UnknownOperation - error.message == "Validation error (UnknownOperation): The 'SUBSCRIPTION' operation is not supported by the schema" + error.message == "Validation error (UnknownOperation): The 'Subscription' operation is not supported by the schema" error.locations == [new SourceLocation(1, 1)] } } diff --git a/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy b/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy index 2149a0a171..8ac2b0d037 100644 --- a/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy +++ b/src/test/groovy/graphql/validation/rules/KnownDirectivesTest.groovy @@ -246,6 +246,10 @@ class KnownDirectivesTest extends Specification { field: String } + type Subscription { + field: String + } + ''' def schema = TestUtil.schema(sdl) From 36e56e0981c8ce5088ad4db7c454a0e737c85baa Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 22 Dec 2024 17:35:48 +1100 Subject: [PATCH 114/345] Adjust tests now that validation runs earlier --- src/test/groovy/graphql/GraphQLTest.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/groovy/graphql/GraphQLTest.groovy b/src/test/groovy/graphql/GraphQLTest.groovy index 8235ac5235..51b0fe9ce3 100644 --- a/src/test/groovy/graphql/GraphQLTest.groovy +++ b/src/test/groovy/graphql/GraphQLTest.groovy @@ -350,7 +350,7 @@ class GraphQLTest extends Specification { thrown(GraphQLException) } - def "null mutation type does not throw an npe re: #345 but returns and error"() { + def "null mutation type does not throw an npe but returns and error"() { given: GraphQLSchema schema = newSchema().query( @@ -370,7 +370,7 @@ class GraphQLTest extends Specification { then: result.errors.size() == 1 - result.errors[0].class == MissingRootTypeException + ((ValidationError) result.errors[0]).validationErrorType == ValidationErrorType.UnknownOperation } def "#875 a subscription query against a schema that doesn't support subscriptions should result in a GraphQL error"() { @@ -393,7 +393,7 @@ class GraphQLTest extends Specification { then: result.errors.size() == 1 - result.errors[0].class == MissingRootTypeException + ((ValidationError) result.errors[0]).validationErrorType == ValidationErrorType.UnknownOperation } def "query with int literal too large"() { From e74818e80050c83a23b9fc50b0e5c5a35f597889 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 16:03:52 +0000 Subject: [PATCH 115/345] Bump com.graphql-java:java-dataloader from 3.3.0 to 3.4.0 Bumps [com.graphql-java:java-dataloader](https://github.com/graphql-java/java-dataloader) from 3.3.0 to 3.4.0. - [Release notes](https://github.com/graphql-java/java-dataloader/releases) - [Commits](https://github.com/graphql-java/java-dataloader/compare/v3.3.0...v3.4.0) --- updated-dependencies: - dependency-name: com.graphql-java:java-dataloader dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index bd93697f57..ab8566caaa 100644 --- a/build.gradle +++ b/build.gradle @@ -101,7 +101,7 @@ jar { dependencies { compileOnly 'org.jetbrains:annotations:26.0.1' implementation 'org.antlr:antlr4-runtime:' + antlrVersion - api 'com.graphql-java:java-dataloader:3.3.0' + api 'com.graphql-java:java-dataloader:3.4.0' api 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion antlr 'org.antlr:antlr4:' + antlrVersion implementation 'com.google.guava:guava:' + guavaVersion From 38f2b821d3bee9c19b9d765e90095fd6086e1ce9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 16:03:55 +0000 Subject: [PATCH 116/345] Bump org.assertj:assertj-core from 3.26.3 to 3.27.0 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.26.3 to 3.27.0. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.26.3...assertj-build-3.27.0) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index f2a0288a6f..62840d8f41 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -9,7 +9,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - testImplementation("org.assertj:assertj-core:3.26.3") + testImplementation("org.assertj:assertj-core:3.27.0") } From a6e57bdb47321cbaba16677e6b764c404add2831 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 26 Dec 2024 02:48:57 +0000 Subject: [PATCH 117/345] Add performance results for commit d4b3b07df4d1edecfdcaaec4fb5adc54728f9574 --- ...4d1edecfdcaaec4fb5adc54728f9574-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json diff --git a/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json b/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json new file mode 100644 index 0000000000..b1e6221354 --- /dev/null +++ b/performance-results/2024-12-26T02:48:37Z-d4b3b07df4d1edecfdcaaec4fb5adc54728f9574-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4183186208130487, + "scoreError" : 0.022246121905918532, + "scoreConfidence" : [ + 3.39607249890713, + 3.4405647427189674 + ], + "scorePercentiles" : { + "0.0" : 3.413848941434486, + "50.0" : 3.4190590718704748, + "90.0" : 3.42130739807676, + "95.0" : 3.42130739807676, + "99.0" : 3.42130739807676, + "99.9" : 3.42130739807676, + "99.99" : 3.42130739807676, + "99.999" : 3.42130739807676, + "99.9999" : 3.42130739807676, + "100.0" : 3.42130739807676 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4173936330209784, + 3.42130739807676 + ], + [ + 3.413848941434486, + 3.4207245107199706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291357989986291, + "scoreError" : 0.015790087869288705, + "scoreConfidence" : [ + 1.7133457111293404, + 1.7449258868679178 + ], + "scorePercentiles" : { + "0.0" : 1.726553979052951, + "50.0" : 1.7288314425743558, + "90.0" : 1.7323263317928532, + "95.0" : 1.7323263317928532, + "99.0" : 1.7323263317928532, + "99.9" : 1.7323263317928532, + "99.99" : 1.7323263317928532, + "99.999" : 1.7323263317928532, + "99.9999" : 1.7323263317928532, + "100.0" : 1.7323263317928532 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.726553979052951, + 1.729495524499686 + ], + [ + 1.728167360649026, + 1.7323263317928532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8694925783721111, + "scoreError" : 0.0043954381149764795, + "scoreConfidence" : [ + 0.8650971402571347, + 0.8738880164870876 + ], + "scorePercentiles" : { + "0.0" : 0.868936526115034, + "50.0" : 0.8692746681495762, + "90.0" : 0.8704844510742582, + "95.0" : 0.8704844510742582, + "99.0" : 0.8704844510742582, + "99.9" : 0.8704844510742582, + "99.99" : 0.8704844510742582, + "99.999" : 0.8704844510742582, + "99.9999" : 0.8704844510742582, + "100.0" : 0.8704844510742582 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.869270402780433, + 0.8692789335187193 + ], + [ + 0.868936526115034, + 0.8704844510742582 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.48605468306695, + "scoreError" : 2.5689013669187672, + "scoreConfidence" : [ + 41.91715331614819, + 47.05495604998572 + ], + "scorePercentiles" : { + "0.0" : 42.465270555590564, + "50.0" : 45.23859981991722, + "90.0" : 45.75807170958764, + "95.0" : 45.75807170958764, + "99.0" : 45.75807170958764, + "99.9" : 45.75807170958764, + "99.99" : 45.75807170958764, + "99.999" : 45.75807170958764, + "99.9999" : 45.75807170958764, + "100.0" : 45.75807170958764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.465270555590564, + 42.465537157018524, + 42.47251210446258 + ], + [ + 45.75807170958764, + 45.73163472741838, + 45.73404569787986 + ], + [ + 45.23859981991722, + 45.22964511515073, + 45.279175260577084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02247107156704055, + "scoreError" : 5.19834581792683E-4, + "scoreConfidence" : [ + 0.021951236985247865, + 0.022990906148833232 + ], + "scorePercentiles" : { + "0.0" : 0.02216260132522124, + "50.0" : 0.0223607604375, + "90.0" : 0.022881822034246574, + "95.0" : 0.022881822034246574, + "99.0" : 0.022881822034246574, + "99.9" : 0.022881822034246574, + "99.99" : 0.022881822034246574, + "99.999" : 0.022881822034246574, + "99.9999" : 0.022881822034246574, + "100.0" : 0.022881822034246574 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022213481620842572, + 0.022176993237250555, + 0.02216260132522124 + ], + [ + 0.022881822034246574, + 0.022866326511415524, + 0.02286390547260274 + ], + [ + 0.02236220743526786, + 0.0223607604375, + 0.022351546029017857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 39dfb712f7c076b42f20ff2156240f6c2ee3658d Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:25:28 +1100 Subject: [PATCH 118/345] Add query directive documentation example --- .../groovy/readme/DirectivesExamples.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/test/groovy/readme/DirectivesExamples.java b/src/test/groovy/readme/DirectivesExamples.java index 77dd5d6c76..2a3d2fca6e 100644 --- a/src/test/groovy/readme/DirectivesExamples.java +++ b/src/test/groovy/readme/DirectivesExamples.java @@ -4,6 +4,9 @@ import graphql.ExecutionResult; import graphql.GraphQL; import graphql.Scalars; +import graphql.execution.directives.QueryAppliedDirective; +import graphql.execution.directives.QueryAppliedDirectiveArgument; +import graphql.execution.directives.QueryDirectives; import graphql.schema.DataFetcher; import graphql.schema.DataFetcherFactories; import graphql.schema.DataFetchingEnvironment; @@ -20,6 +23,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.HashMap; +import java.util.List; import java.util.Map; @SuppressWarnings({"Convert2Lambda", "unused", "ClassCanBeStatic"}) @@ -171,4 +175,26 @@ public static void main(String[] args) { // data['default'] == '08-10-1969' // data['usa'] == '10-08-1969' } + + DataFetcher cacheDataFetcher = new DataFetcher() { + @Override + public String get(DataFetchingEnvironment env) { + QueryDirectives queryDirectives = env.getQueryDirectives(); + List cacheDirectives = queryDirectives + .getImmediateAppliedDirective("cache"); + // We get a List, because we could have + // repeatable directives + if (cacheDirectives.size() > 0) { + QueryAppliedDirective cache = cacheDirectives.get(0); + QueryAppliedDirectiveArgument maxAgeArgument + = cache.getArgument("maxAge"); + int maxAge = maxAgeArgument.getValue(); + + // Now we know the max allowed cache time and + // can make use of it + // Your logic goes here + } + return "your logic here"; + } + }; } From 9880308d68c6e33da075917b55dfb2b33bc97fcb Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:39:47 +1100 Subject: [PATCH 119/345] Tidy up --- src/test/groovy/readme/DirectivesExamples.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/readme/DirectivesExamples.java b/src/test/groovy/readme/DirectivesExamples.java index 2a3d2fca6e..13d6024951 100644 --- a/src/test/groovy/readme/DirectivesExamples.java +++ b/src/test/groovy/readme/DirectivesExamples.java @@ -178,7 +178,7 @@ public static void main(String[] args) { DataFetcher cacheDataFetcher = new DataFetcher() { @Override - public String get(DataFetchingEnvironment env) { + public Object get(DataFetchingEnvironment env) { QueryDirectives queryDirectives = env.getQueryDirectives(); List cacheDirectives = queryDirectives .getImmediateAppliedDirective("cache"); From 9a19794caf3dc086381b79ae90948275a2c0fff7 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 29 Dec 2024 11:59:49 +1100 Subject: [PATCH 120/345] Add input interceptor examples --- src/test/groovy/readme/ExecutionExamples.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/test/groovy/readme/ExecutionExamples.java b/src/test/groovy/readme/ExecutionExamples.java index a18197a63c..f085ca27eb 100644 --- a/src/test/groovy/readme/ExecutionExamples.java +++ b/src/test/groovy/readme/ExecutionExamples.java @@ -12,12 +12,15 @@ import graphql.execution.DataFetcherExceptionHandlerParameters; import graphql.execution.DataFetcherExceptionHandlerResult; import graphql.execution.ExecutionStrategy; +import graphql.execution.values.InputInterceptor; +import graphql.execution.values.legacycoercing.LegacyCoercingInputInterceptor; import graphql.language.SourceLocation; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; +import graphql.schema.GraphQLInputType; import graphql.schema.GraphQLSchema; import graphql.schema.visibility.BlockedFields; import graphql.schema.visibility.GraphqlFieldVisibility; @@ -290,4 +293,26 @@ private GraphQL buildSchema() { .build(); } + private void emitAMetric(Object inputValue, GraphQLInputType graphQLInputType) { + return; + } + + private void inputInterceptorObservesExample() { + InputInterceptor legacyInputInterceptor = LegacyCoercingInputInterceptor.observesValues((inputValue, graphQLInputType) -> { + emitAMetric(inputValue, graphQLInputType); + }); + + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query { exampleField }") + .graphQLContext(Map.of(InputInterceptor.class, legacyInputInterceptor)) + .build(); + } + + private void inputInterceptorMigratesExample() { + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query { exampleField }") + .graphQLContext(Map.of(InputInterceptor.class, LegacyCoercingInputInterceptor.migratesValues())) + .build(); + } + } From c89ae659712235adf82f8641d5310e5fdbc89db1 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 29 Dec 2024 12:01:05 +1100 Subject: [PATCH 121/345] Tidy up --- src/test/groovy/readme/ExecutionExamples.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/readme/ExecutionExamples.java b/src/test/groovy/readme/ExecutionExamples.java index f085ca27eb..b2b56e798f 100644 --- a/src/test/groovy/readme/ExecutionExamples.java +++ b/src/test/groovy/readme/ExecutionExamples.java @@ -298,7 +298,7 @@ private void emitAMetric(Object inputValue, GraphQLInputType graphQLInputType) { } private void inputInterceptorObservesExample() { - InputInterceptor legacyInputInterceptor = LegacyCoercingInputInterceptor.observesValues((inputValue, graphQLInputType) -> { + InputInterceptor legacyInputInterceptor = LegacyCoercingInputInterceptor.observesValues((inputValue, graphQLInputType) -> { emitAMetric(inputValue, graphQLInputType); }); From af7e8d594edd4050cee5bf0e4e7c623ce964f681 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 23:06:00 +0000 Subject: [PATCH 122/345] Add performance results for commit 74c62b6464504f3231805d928499e3faaeaddd2b --- ...4504f3231805d928499e3faaeaddd2b-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json diff --git a/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json b/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json new file mode 100644 index 0000000000..3e67765b46 --- /dev/null +++ b/performance-results/2025-01-03T23:05:41Z-74c62b6464504f3231805d928499e3faaeaddd2b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4086383192028586, + "scoreError" : 0.05662927719471223, + "scoreConfidence" : [ + 3.3520090420081465, + 3.4652675963975708 + ], + "scorePercentiles" : { + "0.0" : 3.3989687508416133, + "50.0" : 3.4089573516309404, + "90.0" : 3.4176698227079405, + "95.0" : 3.4176698227079405, + "99.0" : 3.4176698227079405, + "99.9" : 3.4176698227079405, + "99.99" : 3.4176698227079405, + "99.999" : 3.4176698227079405, + "99.9999" : 3.4176698227079405, + "100.0" : 3.4176698227079405 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3989687508416133, + 3.4037075113574597 + ], + [ + 3.4176698227079405, + 3.414207191904421 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7247042514212518, + "scoreError" : 0.025577661073979848, + "scoreConfidence" : [ + 1.699126590347272, + 1.7502819124952316 + ], + "scorePercentiles" : { + "0.0" : 1.7199822553826223, + "50.0" : 1.7247603094085062, + "90.0" : 1.729314131485372, + "95.0" : 1.729314131485372, + "99.0" : 1.729314131485372, + "99.9" : 1.729314131485372, + "99.99" : 1.729314131485372, + "99.999" : 1.729314131485372, + "99.9999" : 1.729314131485372, + "100.0" : 1.729314131485372 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7199822553826223, + 1.7234475192789092 + ], + [ + 1.7260730995381033, + 1.729314131485372 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.866926795435834, + "scoreError" : 0.0024224565675789894, + "scoreConfidence" : [ + 0.864504338868255, + 0.869349252003413 + ], + "scorePercentiles" : { + "0.0" : 0.86643401727251, + "50.0" : 0.8670019062531722, + "90.0" : 0.8672693519644817, + "95.0" : 0.8672693519644817, + "99.0" : 0.8672693519644817, + "99.9" : 0.8672693519644817, + "99.99" : 0.8672693519644817, + "99.999" : 0.8672693519644817, + "99.9999" : 0.8672693519644817, + "100.0" : 0.8672693519644817 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8671602438844096, + 0.8672693519644817 + ], + [ + 0.86643401727251, + 0.8668435686219347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.19235624466463, + "scoreError" : 0.8357968532166162, + "scoreConfidence" : [ + 42.356559391448016, + 44.028153097881244 + ], + "scorePercentiles" : { + "0.0" : 42.558882497479054, + "50.0" : 43.37071116457182, + "90.0" : 43.74757796416252, + "95.0" : 43.74757796416252, + "99.0" : 43.74757796416252, + "99.9" : 43.74757796416252, + "99.99" : 43.74757796416252, + "99.999" : 43.74757796416252, + "99.9999" : 43.74757796416252, + "100.0" : 43.74757796416252 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.74757796416252, + 43.62853498940572, + 43.704103996118626 + ], + [ + 43.1493793660059, + 43.40285809714331, + 43.37071116457182 + ], + [ + 42.60127105164282, + 42.567887075451914, + 42.558882497479054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02386800728298746, + "scoreError" : 0.0012277527492095812, + "scoreConfidence" : [ + 0.022640254533777878, + 0.025095760032197042 + ], + "scorePercentiles" : { + "0.0" : 0.023171930243055555, + "50.0" : 0.023588256443396228, + "90.0" : 0.024856540679900743, + "95.0" : 0.024856540679900743, + "99.0" : 0.024856540679900743, + "99.9" : 0.024856540679900743, + "99.99" : 0.024856540679900743, + "99.999" : 0.024856540679900743, + "99.9999" : 0.024856540679900743, + "100.0" : 0.024856540679900743 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02369723180851064, + 0.023588256443396228, + 0.023394148107476635 + ], + [ + 0.024750938538271604, + 0.024856540679900743, + 0.024840508146401985 + ], + [ + 0.023294356925581395, + 0.023171930243055555, + 0.023218154654292344 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From a5614b3e8bc324a34e4883a70a4678c355b4c715 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 5 Jan 2025 17:14:18 +1100 Subject: [PATCH 123/345] Update deprecated reason if updated by schema transformer --- .../graphql/schema/idl/SchemaPrinter.java | 51 +++++++++++---- .../schema/SchemaTransformerTest.groovy | 63 +++++++++++++++++++ 2 files changed, 101 insertions(+), 13 deletions(-) diff --git a/src/main/java/graphql/schema/idl/SchemaPrinter.java b/src/main/java/graphql/schema/idl/SchemaPrinter.java index c51e4a78e4..cafa142e0c 100644 --- a/src/main/java/graphql/schema/idl/SchemaPrinter.java +++ b/src/main/java/graphql/schema/idl/SchemaPrinter.java @@ -945,7 +945,7 @@ public String directivesString(Class parentType, String directivesString(Class parentType, boolean isDeprecated, GraphQLDirectiveContainer directiveContainer) { List directives; if (isDeprecated) { - directives = addDeprecatedDirectiveIfNeeded(directiveContainer); + directives = addOrUpdateDeprecatedDirectiveIfNeeded(directiveContainer); } else { directives = DirectivesUtil.toAppliedDirectives(directiveContainer); } @@ -1041,25 +1041,50 @@ private boolean hasDeprecatedDirective(List directives) .count() == 1; } - private List addDeprecatedDirectiveIfNeeded(GraphQLDirectiveContainer directiveContainer) { + private List addOrUpdateDeprecatedDirectiveIfNeeded(GraphQLDirectiveContainer directiveContainer) { List directives = DirectivesUtil.toAppliedDirectives(directiveContainer); + String reason = getDeprecationReason(directiveContainer); + if (!hasDeprecatedDirective(directives) && isDeprecatedDirectiveAllowed()) { directives = new ArrayList<>(directives); - String reason = getDeprecationReason(directiveContainer); - GraphQLAppliedDirectiveArgument arg = GraphQLAppliedDirectiveArgument.newArgument() - .name("reason") - .valueProgrammatic(reason) - .type(GraphQLString) - .build(); - GraphQLAppliedDirective directive = GraphQLAppliedDirective.newDirective() - .name("deprecated") - .argument(arg) - .build(); - directives.add(directive); + directives.add(createDeprecatedDirective(reason)); + } else if (hasDeprecatedDirective(directives) && isDeprecatedDirectiveAllowed()) { + // Update deprecated reason in case modified by schema transform + directives = updateDeprecatedDirective(directives, reason); } return directives; } + private GraphQLAppliedDirective createDeprecatedDirective(String reason) { + GraphQLAppliedDirectiveArgument arg = GraphQLAppliedDirectiveArgument.newArgument() + .name("reason") + .valueProgrammatic(reason) + .type(GraphQLString) + .build(); + return GraphQLAppliedDirective.newDirective() + .name("deprecated") + .argument(arg) + .build(); + } + + private List updateDeprecatedDirective(List directives, String reason) { + GraphQLAppliedDirectiveArgument newArg = GraphQLAppliedDirectiveArgument.newArgument() + .name("reason") + .valueProgrammatic(reason) + .type(GraphQLString) + .build(); + + return directives.stream().map(d -> { + if (isDeprecatedDirective(d)) { + // Don't include reason is deliberately replaced with NOT_SET, for example in Anonymizer + if (d.getArgument("reason").getArgumentValue() != InputValueWithState.NOT_SET) { + return d.transform(builder -> builder.argument(newArg)); + } + } + return d; + }).collect(toList()); + } + private String getDeprecationReason(GraphQLDirectiveContainer directiveContainer) { if (directiveContainer instanceof GraphQLFieldDefinition) { GraphQLFieldDefinition type = (GraphQLFieldDefinition) directiveContainer; diff --git a/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy b/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy index 339378f7a8..8a7bca9a9b 100644 --- a/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy @@ -959,4 +959,67 @@ type Query { visitedSchema == schema visitedCodeRegistry instanceof GraphQLCodeRegistry.Builder } + + def "deprecation transformation overrides existing deprecated directive reason for object type"() { + def schema = TestUtil.schema(""" + schema { + query: QueryType + } + + type QueryType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + + interface InterfaceType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + + input InputType { + a: String + b: String @deprecated(reason: "Replace this doc") + } + """) + + when: + def typeVisitor = new GraphQLTypeVisitorStub() { + @Override + TraversalControl visitGraphQLFieldDefinition(GraphQLFieldDefinition node, TraverserContext context) { + def n = node.transform(b -> b.deprecate("NEW REASON")); + return changeNode(context, n); + } + + @Override + TraversalControl visitGraphQLInputObjectField(GraphQLInputObjectField node, TraverserContext context) { + def n = node.transform(b -> b.deprecate("NEW REASON")); + return changeNode(context, n); + } + } + def newSchema = SchemaTransformer.transformSchema(schema, typeVisitor) + + then: + def newQueryType = newSchema.getObjectType("QueryType") + def newQueryTypePrinted = new SchemaPrinter().print(newQueryType) + + newQueryTypePrinted == """type QueryType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + def newInterfaceType = newSchema.getType("InterfaceType") + def newInterfaceTypePrinted = new SchemaPrinter().print(newInterfaceType) + newInterfaceTypePrinted == """interface InterfaceType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + def newInputType = newSchema.getType("InputType") + def newInputTypePrinted = new SchemaPrinter().print(newInputType) + newInputTypePrinted == """input InputType { + a: String @deprecated(reason : "NEW REASON") + b: String @deprecated(reason : "NEW REASON") +} +""" + } } From a54f7b91b791f6b6fb94e875265e7252b0181455 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 5 Jan 2025 17:23:16 +1100 Subject: [PATCH 124/345] Tidy up --- src/test/groovy/graphql/schema/SchemaTransformerTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy b/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy index 8a7bca9a9b..861520b007 100644 --- a/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaTransformerTest.groovy @@ -960,7 +960,7 @@ type Query { visitedCodeRegistry instanceof GraphQLCodeRegistry.Builder } - def "deprecation transformation overrides existing deprecated directive reason for object type"() { + def "deprecation transformation correctly overrides existing deprecated directive reasons"() { def schema = TestUtil.schema(""" schema { query: QueryType From dbf5bdbe2b2fd441fdcdbc69d362edf6ba9a632f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 22:51:25 +0000 Subject: [PATCH 125/345] Add performance results for commit 9b4739e8f4dfc1f84a50807d8f4f511a9c84766b --- ...4dfc1f84a50807d8f4f511a9c84766b-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json diff --git a/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json b/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json new file mode 100644 index 0000000000..d5e2c28bc1 --- /dev/null +++ b/performance-results/2025-01-06T22:51:09Z-9b4739e8f4dfc1f84a50807d8f4f511a9c84766b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3976951594270473, + "scoreError" : 0.021181351836786013, + "scoreConfidence" : [ + 3.3765138075902614, + 3.418876511263833 + ], + "scorePercentiles" : { + "0.0" : 3.394397211357331, + "50.0" : 3.3970764950011465, + "90.0" : 3.4022304363485647, + "95.0" : 3.4022304363485647, + "99.0" : 3.4022304363485647, + "99.9" : 3.4022304363485647, + "99.99" : 3.4022304363485647, + "99.999" : 3.4022304363485647, + "99.9999" : 3.4022304363485647, + "100.0" : 3.4022304363485647 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.396971687382568, + 3.4022304363485647 + ], + [ + 3.394397211357331, + 3.397181302619725 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7206873716995075, + "scoreError" : 0.012165584639558507, + "scoreConfidence" : [ + 1.708521787059949, + 1.732852956339066 + ], + "scorePercentiles" : { + "0.0" : 1.7186421998985886, + "50.0" : 1.7205165660847093, + "90.0" : 1.723074154730023, + "95.0" : 1.723074154730023, + "99.0" : 1.723074154730023, + "99.9" : 1.723074154730023, + "99.99" : 1.723074154730023, + "99.999" : 1.723074154730023, + "99.9999" : 1.723074154730023, + "100.0" : 1.723074154730023 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7186421998985886, + 1.723074154730023 + ], + [ + 1.7199270052468307, + 1.7211061269225876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8652782291117496, + "scoreError" : 0.005814391511710975, + "scoreConfidence" : [ + 0.8594638376000386, + 0.8710926206234605 + ], + "scorePercentiles" : { + "0.0" : 0.8644150098784186, + "50.0" : 0.86521255834284, + "90.0" : 0.8662727898828995, + "95.0" : 0.8662727898828995, + "99.0" : 0.8662727898828995, + "99.9" : 0.8662727898828995, + "99.99" : 0.8662727898828995, + "99.999" : 0.8662727898828995, + "99.9999" : 0.8662727898828995, + "100.0" : 0.8662727898828995 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8644150098784186, + 0.8657981807853821 + ], + [ + 0.8646269359002979, + 0.8662727898828995 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.61285782239622, + "scoreError" : 0.6777927611228544, + "scoreConfidence" : [ + 39.93506506127337, + 41.290650583519074 + ], + "scorePercentiles" : { + "0.0" : 40.135983126980456, + "50.0" : 40.446192613931636, + "90.0" : 41.26053647129548, + "95.0" : 41.26053647129548, + "99.0" : 41.26053647129548, + "99.9" : 41.26053647129548, + "99.99" : 41.26053647129548, + "99.999" : 41.26053647129548, + "99.9999" : 41.26053647129548, + "100.0" : 41.26053647129548 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.42388748729046, + 40.135983126980456, + 40.446192613931636 + ], + [ + 41.26053647129548, + 40.93219516379605, + 41.0876293447744 + ], + [ + 40.692707622637776, + 40.36803370459829, + 40.168554866261466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024507084673500084, + "scoreError" : 7.918917887814012E-4, + "scoreConfidence" : [ + 0.023715192884718683, + 0.025298976462281485 + ], + "scorePercentiles" : { + "0.0" : 0.023988348623501198, + "50.0" : 0.02444568706097561, + "90.0" : 0.025114872824561405, + "95.0" : 0.025114872824561405, + "99.0" : 0.025114872824561405, + "99.9" : 0.025114872824561405, + "99.99" : 0.025114872824561405, + "99.999" : 0.025114872824561405, + "99.9999" : 0.025114872824561405, + "100.0" : 0.025114872824561405 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025114872824561405, + 0.024194508417874395, + 0.02402947871942446 + ], + [ + 0.024717387565432097, + 0.02510975446115288, + 0.024928946002487563 + ], + [ + 0.024034778386091128, + 0.023988348623501198, + 0.02444568706097561 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From e0f6b66266fac13aeecaef1c2ef1b458828b6cc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jan 2025 10:05:39 +1100 Subject: [PATCH 126/345] Bump org.assertj:assertj-core from 3.27.0 to 3.27.2 (#3788) Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.0 to 3.27.2. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.0...assertj-build-3.27.2) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 62840d8f41..db4dd84a4d 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -9,7 +9,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - testImplementation("org.assertj:assertj-core:3.27.0") + testImplementation("org.assertj:assertj-core:3.27.2") } From 5ce0eadb434848910cb417c646cfd30b8e75a72b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 6 Jan 2025 23:22:16 +0000 Subject: [PATCH 127/345] Add performance results for commit e0f6b66266fac13aeecaef1c2ef1b458828b6cc2 --- ...6fac13aeecaef1c2ef1b458828b6cc2-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json diff --git a/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json b/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json new file mode 100644 index 0000000000..13895b223c --- /dev/null +++ b/performance-results/2025-01-06T23:22:01Z-e0f6b66266fac13aeecaef1c2ef1b458828b6cc2-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4245773136105413, + "scoreError" : 0.01868185502277945, + "scoreConfidence" : [ + 3.4058954585877617, + 3.443259168633321 + ], + "scorePercentiles" : { + "0.0" : 3.4210483921283243, + "50.0" : 3.4245663949120306, + "90.0" : 3.428128072489781, + "95.0" : 3.428128072489781, + "99.0" : 3.428128072489781, + "99.9" : 3.428128072489781, + "99.99" : 3.428128072489781, + "99.999" : 3.428128072489781, + "99.9999" : 3.428128072489781, + "100.0" : 3.428128072489781 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4210483921283243, + 3.42448613335437 + ], + [ + 3.4246466564696907, + 3.428128072489781 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7286707595661703, + "scoreError" : 0.014432774965261578, + "scoreConfidence" : [ + 1.7142379846009088, + 1.7431035345314319 + ], + "scorePercentiles" : { + "0.0" : 1.726194463728229, + "50.0" : 1.7285915896476376, + "90.0" : 1.7313053952411779, + "95.0" : 1.7313053952411779, + "99.0" : 1.7313053952411779, + "99.9" : 1.7313053952411779, + "99.99" : 1.7313053952411779, + "99.999" : 1.7313053952411779, + "99.9999" : 1.7313053952411779, + "100.0" : 1.7313053952411779 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7276221767696878, + 1.7313053952411779 + ], + [ + 1.726194463728229, + 1.7295610025255874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700555481313456, + "scoreError" : 0.005840168981869053, + "scoreConfidence" : [ + 0.8642153791494765, + 0.8758957171132146 + ], + "scorePercentiles" : { + "0.0" : 0.8693974925550426, + "50.0" : 0.869748144757817, + "90.0" : 0.8713284104547055, + "95.0" : 0.8713284104547055, + "99.0" : 0.8713284104547055, + "99.9" : 0.8713284104547055, + "99.99" : 0.8713284104547055, + "99.999" : 0.8713284104547055, + "99.9999" : 0.8713284104547055, + "100.0" : 0.8713284104547055 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.869425495170068, + 0.8700707943455662 + ], + [ + 0.8693974925550426, + 0.8713284104547055 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.80751344197212, + "scoreError" : 2.3026391744093355, + "scoreConfidence" : [ + 42.50487426756278, + 47.110152616381455 + ], + "scorePercentiles" : { + "0.0" : 43.41381117714613, + "50.0" : 44.272183388727214, + "90.0" : 46.594979535399496, + "95.0" : 46.594979535399496, + "99.0" : 46.594979535399496, + "99.9" : 46.594979535399496, + "99.99" : 46.594979535399496, + "99.999" : 46.594979535399496, + "99.9999" : 46.594979535399496, + "100.0" : 46.594979535399496 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.56945500132572, + 46.59220457904513, + 46.594979535399496 + ], + [ + 44.28270501315412, + 44.269073877323024, + 44.272183388727214 + ], + [ + 43.41381117714613, + 43.63753652329247, + 43.63567188233574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022354977816848462, + "scoreError" : 0.0014391345634307308, + "scoreConfidence" : [ + 0.02091584325341773, + 0.023794112380279193 + ], + "scorePercentiles" : { + "0.0" : 0.02147898639699571, + "50.0" : 0.02210505130905077, + "90.0" : 0.023454101953161593, + "95.0" : 0.023454101953161593, + "99.0" : 0.023454101953161593, + "99.9" : 0.023454101953161593, + "99.99" : 0.023454101953161593, + "99.999" : 0.023454101953161593, + "99.9999" : 0.023454101953161593, + "100.0" : 0.023454101953161593 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210505130905077, + 0.022098411260485652, + 0.02210520964679912 + ], + [ + 0.023454101953161593, + 0.023442564526932084, + 0.023437853107728338 + ], + [ + 0.0215884915625, + 0.021484130587982833, + 0.02147898639699571 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 5704b593a6d662298682b3db687eb585d3c3cd53 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Mon, 20 Jan 2025 07:17:26 +1100 Subject: [PATCH 128/345] Update Gradle after namespace change --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index bd93697f57..6f4b9983dc 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { id 'maven-publish' id 'antlr' id 'signing' - id "com.github.johnrengelman.shadow" version "8.1.1" + id "com.gradleup.shadow" version "8.3.0" id "biz.aQute.bnd.builder" version "6.4.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" From 2143c7dc0abeb9caf6d439e75337667771e5ac19 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 17:01:51 +0000 Subject: [PATCH 129/345] Bump io.projectreactor:reactor-core from 3.7.1 to 3.7.2 Bumps [io.projectreactor:reactor-core](https://github.com/reactor/reactor-core) from 3.7.1 to 3.7.2. - [Release notes](https://github.com/reactor/reactor-core/releases) - [Commits](https://github.com/reactor/reactor-core/compare/v3.7.1...v3.7.2) --- updated-dependencies: - dependency-name: io.projectreactor:reactor-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index bd93697f57..f79fa902d8 100644 --- a/build.gradle +++ b/build.gradle @@ -117,7 +117,7 @@ dependencies { testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" - testImplementation "io.projectreactor:reactor-core:3.7.1" + testImplementation "io.projectreactor:reactor-core:3.7.2" testImplementation 'org.testng:testng:7.10.2' // use for reactive streams test inheritance From 268985458b2366fa4ddce4cdf911b75011d010d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 17:01:55 +0000 Subject: [PATCH 130/345] Bump net.bytebuddy:byte-buddy-agent from 1.15.11 to 1.16.1 Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.15.11 to 1.16.1. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.11...byte-buddy-1.16.1) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index db4dd84a4d..4b968a7886 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.15.11") + implementation("net.bytebuddy:byte-buddy-agent:1.16.1") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From a27b603eb2feea17024763de828e08976077131b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 17:01:56 +0000 Subject: [PATCH 131/345] Bump net.bytebuddy:byte-buddy from 1.15.11 to 1.16.1 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.15.11 to 1.16.1. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.15.11...byte-buddy-1.16.1) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index b20b6e7c7c..07c3d5a15e 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.15.11") + implementation("net.bytebuddy:byte-buddy:1.16.1") // graphql-java itself implementation(rootProject) } From 04531872c811e560d9097d63a91fa9a8fa7feb88 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jan 2025 17:02:01 +0000 Subject: [PATCH 132/345] Bump org.assertj:assertj-core from 3.27.2 to 3.27.3 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.2 to 3.27.3. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.2...assertj-build-3.27.3) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index db4dd84a4d..8d3431908e 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -9,7 +9,7 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' - testImplementation("org.assertj:assertj-core:3.27.2") + testImplementation("org.assertj:assertj-core:3.27.3") } From e4d3a7176e2072ff6894cde18b4cf6229364bb47 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 21:47:15 +0000 Subject: [PATCH 133/345] Add performance results for commit 1c9edf8ee7db8c7ba6142637799b0bb3b9d97540 --- ...7db8c7ba6142637799b0bb3b9d97540-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json diff --git a/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json b/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json new file mode 100644 index 0000000000..2eb0a8679e --- /dev/null +++ b/performance-results/2025-01-21T21:47:01Z-1c9edf8ee7db8c7ba6142637799b0bb3b9d97540-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424149683933229, + "scoreError" : 0.006012078052582705, + "scoreConfidence" : [ + 3.4181376058806463, + 3.430161761985812 + ], + "scorePercentiles" : { + "0.0" : 3.422989050483065, + "50.0" : 3.4242682261724955, + "90.0" : 3.4250732329048588, + "95.0" : 3.4250732329048588, + "99.0" : 3.4250732329048588, + "99.9" : 3.4250732329048588, + "99.99" : 3.4250732329048588, + "99.999" : 3.4250732329048588, + "99.9999" : 3.4250732329048588, + "100.0" : 3.4250732329048588 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4238388779551903, + 3.4250732329048588 + ], + [ + 3.424697574389801, + 3.422989050483065 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72855038217974, + "scoreError" : 0.01730574953804975, + "scoreConfidence" : [ + 1.7112446326416904, + 1.7458561317177899 + ], + "scorePercentiles" : { + "0.0" : 1.7255286788866957, + "50.0" : 1.7285983884604545, + "90.0" : 1.7314760729113563, + "95.0" : 1.7314760729113563, + "99.0" : 1.7314760729113563, + "99.9" : 1.7314760729113563, + "99.99" : 1.7314760729113563, + "99.999" : 1.7314760729113563, + "99.9999" : 1.7314760729113563, + "100.0" : 1.7314760729113563 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7255286788866957, + 1.729980675302766 + ], + [ + 1.727216101618143, + 1.7314760729113563 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8693640578908688, + "scoreError" : 0.0038641087706285395, + "scoreConfidence" : [ + 0.8654999491202402, + 0.8732281666614974 + ], + "scorePercentiles" : { + "0.0" : 0.868835145795416, + "50.0" : 0.8692360046799832, + "90.0" : 0.8701490764080931, + "95.0" : 0.8701490764080931, + "99.0" : 0.8701490764080931, + "99.9" : 0.8701490764080931, + "99.99" : 0.8701490764080931, + "99.999" : 0.8701490764080931, + "99.9999" : 0.8701490764080931, + "100.0" : 0.8701490764080931 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.868835145795416, + 0.8701490764080931 + ], + [ + 0.8695042632942258, + 0.8689677460657406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.223752010392595, + "scoreError" : 3.8144464636708864, + "scoreConfidence" : [ + 37.40930554672171, + 45.03819847406348 + ], + "scorePercentiles" : { + "0.0" : 38.2336896832272, + "50.0" : 40.18837813592528, + "90.0" : 44.30468594681641, + "95.0" : 44.30468594681641, + "99.0" : 44.30468594681641, + "99.9" : 44.30468594681641, + "99.99" : 44.30468594681641, + "99.999" : 44.30468594681641, + "99.9999" : 44.30468594681641, + "100.0" : 44.30468594681641 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 38.2336896832272, + 39.53191823714816, + 40.70619870358236 + ], + [ + 44.30468594681641, + 44.16707605948855, + 43.861664961843516 + ], + [ + 39.91624959318406, + 40.18837813592528, + 40.10390677231785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023235785904743733, + "scoreError" : 7.768693990131797E-4, + "scoreConfidence" : [ + 0.022458916505730554, + 0.024012655303756913 + ], + "scorePercentiles" : { + "0.0" : 0.022705058088435374, + "50.0" : 0.023171598224537036, + "90.0" : 0.024077781197115386, + "95.0" : 0.024077781197115386, + "99.0" : 0.024077781197115386, + "99.9" : 0.024077781197115386, + "99.99" : 0.024077781197115386, + "99.999" : 0.024077781197115386, + "99.9999" : 0.024077781197115386, + "100.0" : 0.024077781197115386 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024077781197115386, + 0.023737192085308056, + 0.023171598224537036 + ], + [ + 0.02332228789044289, + 0.023445212770491802, + 0.02302199960229885 + ], + [ + 0.022924428318077804, + 0.022705058088435374, + 0.022716514965986395 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 13eb2de8c879e3586d1386198040c051df889858 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 03:36:53 +0000 Subject: [PATCH 134/345] Add performance results for commit e4d3a7176e2072ff6894cde18b4cf6229364bb47 --- ...e2072ff6894cde18b4cf6229364bb47-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json diff --git a/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json b/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json new file mode 100644 index 0000000000..926032db22 --- /dev/null +++ b/performance-results/2025-01-22T03:36:34Z-e4d3a7176e2072ff6894cde18b4cf6229364bb47-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4237503712681403, + "scoreError" : 0.029687066333119228, + "scoreConfidence" : [ + 3.3940633049350213, + 3.4534374376012593 + ], + "scorePercentiles" : { + "0.0" : 3.419633132532349, + "50.0" : 3.4229857951413147, + "90.0" : 3.4293967622575843, + "95.0" : 3.4293967622575843, + "99.0" : 3.4293967622575843, + "99.9" : 3.4293967622575843, + "99.99" : 3.4293967622575843, + "99.999" : 3.4293967622575843, + "99.9999" : 3.4293967622575843, + "100.0" : 3.4293967622575843 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.419633132532349, + 3.425565998706806 + ], + [ + 3.4204055915758236, + 3.4293967622575843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7296696232543467, + "scoreError" : 0.01459335969739169, + "scoreConfidence" : [ + 1.715076263556955, + 1.7442629829517384 + ], + "scorePercentiles" : { + "0.0" : 1.7270073570666922, + "50.0" : 1.729745390562144, + "90.0" : 1.732180354826406, + "95.0" : 1.732180354826406, + "99.0" : 1.732180354826406, + "99.9" : 1.732180354826406, + "99.99" : 1.732180354826406, + "99.999" : 1.732180354826406, + "99.9999" : 1.732180354826406, + "100.0" : 1.732180354826406 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7287713875849016, + 1.732180354826406 + ], + [ + 1.7270073570666922, + 1.7307193935393865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696333686305204, + "scoreError" : 0.005541304741506886, + "scoreConfidence" : [ + 0.8640920638890135, + 0.8751746733720274 + ], + "scorePercentiles" : { + "0.0" : 0.8688071395118665, + "50.0" : 0.8696504293139969, + "90.0" : 0.8704254763822215, + "95.0" : 0.8704254763822215, + "99.0" : 0.8704254763822215, + "99.9" : 0.8704254763822215, + "99.99" : 0.8704254763822215, + "99.999" : 0.8704254763822215, + "99.9999" : 0.8704254763822215, + "100.0" : 0.8704254763822215 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8704254763822215, + 0.870319520460667 + ], + [ + 0.8688071395118665, + 0.8689813381673269 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.36501878810898, + "scoreError" : 1.0694255389554572, + "scoreConfidence" : [ + 43.29559324915353, + 45.43444432706444 + ], + "scorePercentiles" : { + "0.0" : 43.87862862432957, + "50.0" : 43.94274487526744, + "90.0" : 45.26941974191114, + "95.0" : 45.26941974191114, + "99.0" : 45.26941974191114, + "99.9" : 45.26941974191114, + "99.99" : 45.26941974191114, + "99.999" : 45.26941974191114, + "99.9999" : 45.26941974191114, + "100.0" : 45.26941974191114 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.89429547541287, + 43.94274487526744, + 43.92535377650392 + ], + [ + 45.175535730731454, + 45.175776703355886, + 45.26941974191114 + ], + [ + 44.1308230548884, + 43.87862862432957, + 43.892591110580156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022229747564292305, + "scoreError" : 8.487147291876869E-4, + "scoreConfidence" : [ + 0.02138103283510462, + 0.02307846229347999 + ], + "scorePercentiles" : { + "0.0" : 0.021779635182608694, + "50.0" : 0.02198335262857143, + "90.0" : 0.022899222466819222, + "95.0" : 0.022899222466819222, + "99.0" : 0.022899222466819222, + "99.9" : 0.022899222466819222, + "99.99" : 0.022899222466819222, + "99.999" : 0.022899222466819222, + "99.9999" : 0.022899222466819222, + "100.0" : 0.022899222466819222 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022899222466819222, + 0.022884819782608697, + 0.022899069610983983 + ], + [ + 0.021779635182608694, + 0.02181247005882353, + 0.021822282640522876 + ], + [ + 0.022003539923076923, + 0.021983335784615386, + 0.02198335262857143 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From a04e677204bbb821d83e6d9933765885c3250bfb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Jan 2025 23:13:06 +0000 Subject: [PATCH 135/345] Add performance results for commit b3fa90f639e0563a19b7e3fbda0da85b68aad6e9 --- ...9e0563a19b7e3fbda0da85b68aad6e9-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json diff --git a/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json b/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json new file mode 100644 index 0000000000..757c5e3692 --- /dev/null +++ b/performance-results/2025-01-22T23:12:51Z-b3fa90f639e0563a19b7e3fbda0da85b68aad6e9-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4105040447860073, + "scoreError" : 0.015189749299248573, + "scoreConfidence" : [ + 3.3953142954867586, + 3.425693794085256 + ], + "scorePercentiles" : { + "0.0" : 3.4073899492105153, + "50.0" : 3.4107651539923443, + "90.0" : 3.4130959219488255, + "95.0" : 3.4130959219488255, + "99.0" : 3.4130959219488255, + "99.9" : 3.4130959219488255, + "99.99" : 3.4130959219488255, + "99.999" : 3.4130959219488255, + "99.9999" : 3.4130959219488255, + "100.0" : 3.4130959219488255 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.410876097631111, + 3.4106542103535773 + ], + [ + 3.4073899492105153, + 3.4130959219488255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.721583114673582, + "scoreError" : 0.006425157612156726, + "scoreConfidence" : [ + 1.7151579570614253, + 1.7280082722857388 + ], + "scorePercentiles" : { + "0.0" : 1.7207681098037457, + "50.0" : 1.7212982503350518, + "90.0" : 1.7229678482204793, + "95.0" : 1.7229678482204793, + "99.0" : 1.7229678482204793, + "99.9" : 1.7229678482204793, + "99.99" : 1.7229678482204793, + "99.999" : 1.7229678482204793, + "99.9999" : 1.7229678482204793, + "100.0" : 1.7229678482204793 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7216313296507169, + 1.7229678482204793 + ], + [ + 1.7207681098037457, + 1.7209651710193865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8657441060642906, + "scoreError" : 0.002785758573795765, + "scoreConfidence" : [ + 0.8629583474904948, + 0.8685298646380865 + ], + "scorePercentiles" : { + "0.0" : 0.8653771382765126, + "50.0" : 0.8656275904190045, + "90.0" : 0.8663441051426409, + "95.0" : 0.8663441051426409, + "99.0" : 0.8663441051426409, + "99.9" : 0.8663441051426409, + "99.99" : 0.8663441051426409, + "99.999" : 0.8663441051426409, + "99.9999" : 0.8663441051426409, + "100.0" : 0.8663441051426409 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8653771382765126, + 0.8654939424156864 + ], + [ + 0.8663441051426409, + 0.8657612384223224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.17225098673794, + "scoreError" : 3.22722044059398, + "scoreConfidence" : [ + 37.94503054614396, + 44.399471427331925 + ], + "scorePercentiles" : { + "0.0" : 39.366693887369976, + "50.0" : 40.2648390876238, + "90.0" : 43.70997475241803, + "95.0" : 43.70997475241803, + "99.0" : 43.70997475241803, + "99.9" : 43.70997475241803, + "99.99" : 43.70997475241803, + "99.999" : 43.70997475241803, + "99.9999" : 43.70997475241803, + "100.0" : 43.70997475241803 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 43.69435426122478, + 43.70997475241803, + 43.68716268451894 + ], + [ + 40.14696818355368, + 40.364255215826645, + 40.2648390876238 + ], + [ + 39.366693887369976, + 39.60165914823881, + 39.714351659866864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02469539257718066, + "scoreError" : 8.108306476004372E-4, + "scoreConfidence" : [ + 0.023884561929580224, + 0.025506223224781098 + ], + "scorePercentiles" : { + "0.0" : 0.023942090337320573, + "50.0" : 0.024977390805486284, + "90.0" : 0.02509696658897243, + "95.0" : 0.02509696658897243, + "99.0" : 0.02509696658897243, + "99.9" : 0.02509696658897243, + "99.99" : 0.02509696658897243, + "99.999" : 0.02509696658897243, + "99.9999" : 0.02509696658897243, + "100.0" : 0.02509696658897243 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023942090337320573, + 0.024220828239709443, + 0.024023169163069544 + ], + [ + 0.024977390805486284, + 0.024933186425373136, + 0.02502382824 + ], + [ + 0.024994583122194512, + 0.0250464902725, + 0.02509696658897243 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From d1fb82707522be3261444a7c248654ebdd2d5ea0 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Fri, 24 Jan 2025 08:43:09 +1100 Subject: [PATCH 136/345] Update agent's shadow plugin to new namespace --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index 07c3d5a15e..71f23f70a0 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java' id 'java-library' id 'maven-publish' - id "com.github.johnrengelman.shadow" version "8.1.1" + id "com.gradleup.shadow" version "8.3.0" } dependencies { From ede21e99c39e246f3548a2c736b0eec4d06c3a70 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Fri, 24 Jan 2025 10:23:39 +1100 Subject: [PATCH 137/345] Revert "Update shadow plugin after ownership change" --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 549ea2f620..f79fa902d8 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { id 'maven-publish' id 'antlr' id 'signing' - id "com.gradleup.shadow" version "8.3.0" + id "com.github.johnrengelman.shadow" version "8.1.1" id "biz.aQute.bnd.builder" version "6.4.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" From 5582097cc03ca0b0f300beb46667064eb0071840 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2025 23:55:48 +0000 Subject: [PATCH 138/345] Add performance results for commit 2551254d88f6abb0cd6b9b66b53102915ec41ec2 --- ...8f6abb0cd6b9b66b53102915ec41ec2-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json diff --git a/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json b/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json new file mode 100644 index 0000000000..0bda0220f3 --- /dev/null +++ b/performance-results/2025-01-23T23:55:34Z-2551254d88f6abb0cd6b9b66b53102915ec41ec2-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4099306926639925, + "scoreError" : 0.02395335305028509, + "scoreConfidence" : [ + 3.3859773396137074, + 3.4338840457142776 + ], + "scorePercentiles" : { + "0.0" : 3.40582898025533, + "50.0" : 3.4096702375154466, + "90.0" : 3.414553315369746, + "95.0" : 3.414553315369746, + "99.0" : 3.414553315369746, + "99.9" : 3.414553315369746, + "99.99" : 3.414553315369746, + "99.999" : 3.414553315369746, + "99.9999" : 3.414553315369746, + "100.0" : 3.414553315369746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.408467549843088, + 3.414553315369746 + ], + [ + 3.40582898025533, + 3.410872925187805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7232751528014894, + "scoreError" : 0.009671040518753964, + "scoreConfidence" : [ + 1.7136041122827355, + 1.7329461933202432 + ], + "scorePercentiles" : { + "0.0" : 1.7211199198884921, + "50.0" : 1.723842197697369, + "90.0" : 1.724296295922727, + "95.0" : 1.724296295922727, + "99.0" : 1.724296295922727, + "99.9" : 1.724296295922727, + "99.99" : 1.724296295922727, + "99.999" : 1.724296295922727, + "99.9999" : 1.724296295922727, + "100.0" : 1.724296295922727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211199198884921, + 1.723401385599165 + ], + [ + 1.7242830097955733, + 1.724296295922727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8670588236163693, + "scoreError" : 0.005759442186378244, + "scoreConfidence" : [ + 0.8612993814299911, + 0.8728182658027476 + ], + "scorePercentiles" : { + "0.0" : 0.8661195610548678, + "50.0" : 0.8670034186931103, + "90.0" : 0.868108896024389, + "95.0" : 0.868108896024389, + "99.0" : 0.868108896024389, + "99.9" : 0.868108896024389, + "99.99" : 0.868108896024389, + "99.999" : 0.868108896024389, + "99.9999" : 0.868108896024389, + "100.0" : 0.868108896024389 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8674462136623503, + 0.868108896024389 + ], + [ + 0.8661195610548678, + 0.8665606237238702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.83462677585385, + "scoreError" : 1.920978041265327, + "scoreConfidence" : [ + 39.91364873458852, + 43.75560481711918 + ], + "scorePercentiles" : { + "0.0" : 40.19477434571843, + "50.0" : 42.437967904570684, + "90.0" : 42.93846254059917, + "95.0" : 42.93846254059917, + "99.0" : 42.93846254059917, + "99.9" : 42.93846254059917, + "99.99" : 42.93846254059917, + "99.999" : 42.93846254059917, + "99.9999" : 42.93846254059917, + "100.0" : 42.93846254059917 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.241582636916014, + 42.45421817350641, + 42.437967904570684 + ], + [ + 42.712603840570935, + 42.70835342137284, + 42.93846254059917 + ], + [ + 40.19477434571843, + 40.25337275926056, + 40.570305360169606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024205050051165463, + "scoreError" : 0.0013802366621486247, + "scoreConfidence" : [ + 0.02282481338901684, + 0.025585286713314087 + ], + "scorePercentiles" : { + "0.0" : 0.02336303003962704, + "50.0" : 0.023876212723150356, + "90.0" : 0.02530103744191919, + "95.0" : 0.02530103744191919, + "99.0" : 0.02530103744191919, + "99.9" : 0.02530103744191919, + "99.99" : 0.02530103744191919, + "99.999" : 0.02530103744191919, + "99.9999" : 0.02530103744191919, + "100.0" : 0.02530103744191919 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024042493644230768, + 0.02386281233095238, + 0.023876212723150356 + ], + [ + 0.02336303003962704, + 0.02347626125117371, + 0.023449581548009368 + ], + [ + 0.02530103744191919, + 0.025278192126262627, + 0.025195829355163728 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 3d533da982a3751a2180444f2cc34bbe6b3675d7 Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Fri, 24 Jan 2025 10:54:43 -0800 Subject: [PATCH 139/345] Use a singleton for empty raw / coerced variables Make CoercedVariables.emptyVariables() and RawVariables.emptyVariables() return an immutable singleton instance. --- src/main/java/graphql/execution/CoercedVariables.java | 3 ++- src/main/java/graphql/execution/RawVariables.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/graphql/execution/CoercedVariables.java b/src/main/java/graphql/execution/CoercedVariables.java index feeed4fb56..6123aeec82 100644 --- a/src/main/java/graphql/execution/CoercedVariables.java +++ b/src/main/java/graphql/execution/CoercedVariables.java @@ -11,6 +11,7 @@ */ @PublicApi public class CoercedVariables { + private static final CoercedVariables EMPTY = CoercedVariables.of(ImmutableKit.emptyMap()); private final ImmutableMapWithNullValues coercedVariables; public CoercedVariables(Map coercedVariables) { @@ -30,7 +31,7 @@ public Object get(String key) { } public static CoercedVariables emptyVariables() { - return new CoercedVariables(ImmutableKit.emptyMap()); + return EMPTY; } public static CoercedVariables of(Map coercedVariables) { diff --git a/src/main/java/graphql/execution/RawVariables.java b/src/main/java/graphql/execution/RawVariables.java index 02e1acabe2..d7c1fba61b 100644 --- a/src/main/java/graphql/execution/RawVariables.java +++ b/src/main/java/graphql/execution/RawVariables.java @@ -11,6 +11,7 @@ */ @PublicApi public class RawVariables { + private static final RawVariables EMPTY = RawVariables.of(ImmutableKit.emptyMap()); private final ImmutableMapWithNullValues rawVariables; public RawVariables(Map rawVariables) { @@ -30,7 +31,7 @@ public Object get(String key) { } public static RawVariables emptyVariables() { - return RawVariables.of(ImmutableKit.emptyMap()); + return EMPTY; } public static RawVariables of(Map rawVariables) { From f20c81987d8d8666730f3cfec800c7c4dc00388b Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:33:55 +1100 Subject: [PATCH 140/345] Downgrade offending ByteBuddy version --- agent/build.gradle | 4 ++-- build.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/agent/build.gradle b/agent/build.gradle index 71f23f70a0..fff7b1ce8f 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -2,11 +2,11 @@ plugins { id 'java' id 'java-library' id 'maven-publish' - id "com.gradleup.shadow" version "8.3.0" + id "com.gradleup.shadow" version "8.3.5" } dependencies { - implementation("net.bytebuddy:byte-buddy:1.16.1") + implementation("net.bytebuddy:byte-buddy:1.15.11") // graphql-java itself implementation(rootProject) } diff --git a/build.gradle b/build.gradle index f79fa902d8..539a26b82e 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { id 'maven-publish' id 'antlr' id 'signing' - id "com.github.johnrengelman.shadow" version "8.1.1" + id "com.gradleup.shadow" version "8.3.5" id "biz.aQute.bnd.builder" version "6.4.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" From a67882ed9172c1fb4ebf8bcd28a20cd0b6637123 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Mon, 27 Jan 2025 13:37:32 +1100 Subject: [PATCH 141/345] Downgrade ByteBuddy in tests as well --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 33171353b1..8d3431908e 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.16.1") + implementation("net.bytebuddy:byte-buddy-agent:1.15.11") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From df656a7a17f74223d6342af7c4296f3718b1b30c Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:15:28 +1100 Subject: [PATCH 142/345] Include Java 11 files --- agent-test/build.gradle | 2 +- agent/build.gradle | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 8d3431908e..33171353b1 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.15.11") + implementation("net.bytebuddy:byte-buddy-agent:1.16.1") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/agent/build.gradle b/agent/build.gradle index fff7b1ce8f..1186c7db91 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.15.11") + implementation("net.bytebuddy:byte-buddy:1.16.1") // graphql-java itself implementation(rootProject) } @@ -24,6 +24,7 @@ java { } shadowJar { + include 'META-INF/versions/11/**' minimize() archiveClassifier.set('') configurations = [project.configurations.compileClasspath] From 542c6417978374547773f085f671bb7553ceb77a Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Mon, 27 Jan 2025 14:32:38 +1100 Subject: [PATCH 143/345] Downgrade again for tests to work --- agent-test/build.gradle | 2 +- agent/build.gradle | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 33171353b1..8d3431908e 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.16.1") + implementation("net.bytebuddy:byte-buddy-agent:1.15.11") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/agent/build.gradle b/agent/build.gradle index 1186c7db91..fff7b1ce8f 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.16.1") + implementation("net.bytebuddy:byte-buddy:1.15.11") // graphql-java itself implementation(rootProject) } @@ -24,7 +24,6 @@ java { } shadowJar { - include 'META-INF/versions/11/**' minimize() archiveClassifier.set('') configurations = [project.configurations.compileClasspath] From f93b062d6b35b3411f75cdcbe0cb97435ac4764a Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Mon, 27 Jan 2025 14:07:04 -0800 Subject: [PATCH 144/345] Optimize GraphQLUnionType.isPossibleType (#3798) Remove the allocation overhead of the stream / lambda in isPossibleType. --- src/main/java/graphql/schema/GraphQLUnionType.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/schema/GraphQLUnionType.java b/src/main/java/graphql/schema/GraphQLUnionType.java index 9af647c6c4..6910084afd 100644 --- a/src/main/java/graphql/schema/GraphQLUnionType.java +++ b/src/main/java/graphql/schema/GraphQLUnionType.java @@ -96,7 +96,12 @@ public List getTypes() { * @return true if the object type is a member of this union type. */ public boolean isPossibleType(GraphQLObjectType graphQLObjectType) { - return getTypes().stream().anyMatch(nt -> nt.getName().equals(graphQLObjectType.getName())); + for (GraphQLNamedOutputType type : getTypes()) { + if (type.getName().equals(graphQLObjectType.getName())) { + return true; + } + } + return false; } // to be removed in a future version when all code is in the code registry From 97381d691f3a22e070dbfde15c2447164eb0530a Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Mon, 27 Jan 2025 14:08:09 -0800 Subject: [PATCH 145/345] Avoid allocating in GraphQLInputObjectType.getFieldDefinitions (#3797) Avoid copying / allocating a new List in GraphQLInputObjectType's getFieldDefinitions method. the field definitions are already stored as values in an ImmutableMap, and the default Guava implementation of the values method returns an ImmutableList; the issue arises due to the returned collection being a "partial view", which ImmutableList.copyOf uses as a signal that it should create a defensive copy of the passed in collection. In this particular case we just don't care if it's a partial view, since the owning ImmutableMap will be retained regardless. --- src/main/java/graphql/schema/GraphQLInputObjectType.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/schema/GraphQLInputObjectType.java b/src/main/java/graphql/schema/GraphQLInputObjectType.java index 9929f93493..e10eddadb7 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectType.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectType.java @@ -1,5 +1,6 @@ package graphql.schema; +import com.google.common.collect.ImmutableCollection; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import graphql.Directives; @@ -152,7 +153,8 @@ public GraphQLInputObjectField getFieldDefinition(String name) { @Override public List getFieldDefinitions() { - return ImmutableList.copyOf(fieldMap.values()); + ImmutableCollection values = fieldMap.values(); + return values instanceof ImmutableList ? (ImmutableList) values : ImmutableList.copyOf(values); } public InputObjectTypeDefinition getDefinition() { From a66c24b4e98169967f6753bd6abebb1b15820fd5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 09:09:37 +1100 Subject: [PATCH 146/345] Bump org.jetbrains:annotations from 26.0.1 to 26.0.2 (#3802) Bumps [org.jetbrains:annotations](https://github.com/JetBrains/java-annotations) from 26.0.1 to 26.0.2. - [Release notes](https://github.com/JetBrains/java-annotations/releases) - [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md) - [Commits](https://github.com/JetBrains/java-annotations/compare/26.0.1...26.0.2) --- updated-dependencies: - dependency-name: org.jetbrains:annotations dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index f79fa902d8..970d5d7cde 100644 --- a/build.gradle +++ b/build.gradle @@ -99,7 +99,7 @@ jar { } dependencies { - compileOnly 'org.jetbrains:annotations:26.0.1' + compileOnly 'org.jetbrains:annotations:26.0.2' implementation 'org.antlr:antlr4-runtime:' + antlrVersion api 'com.graphql-java:java-dataloader:3.3.0' api 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion From 0f501d28cef26de13645920e4ac43c994e92544e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 22:23:15 +0000 Subject: [PATCH 147/345] Add performance results for commit a66c24b4e98169967f6753bd6abebb1b15820fd5 --- ...98169967f6753bd6abebb1b15820fd5-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json diff --git a/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json b/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json new file mode 100644 index 0000000000..4a8eef6b68 --- /dev/null +++ b/performance-results/2025-01-27T22:22:57Z-a66c24b4e98169967f6753bd6abebb1b15820fd5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4060502209625665, + "scoreError" : 0.021580257949835764, + "scoreConfidence" : [ + 3.3844699630127306, + 3.4276304789124024 + ], + "scorePercentiles" : { + "0.0" : 3.401427352349789, + "50.0" : 3.4070054913200853, + "90.0" : 3.408762548860305, + "95.0" : 3.408762548860305, + "99.0" : 3.408762548860305, + "99.9" : 3.408762548860305, + "99.99" : 3.408762548860305, + "99.999" : 3.408762548860305, + "99.9999" : 3.408762548860305, + "100.0" : 3.408762548860305 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.401427352349789, + 3.408762548860305 + ], + [ + 3.4058002030403016, + 3.408210779599869 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7215522864016763, + "scoreError" : 0.005696764733470336, + "scoreConfidence" : [ + 1.715855521668206, + 1.7272490511351466 + ], + "scorePercentiles" : { + "0.0" : 1.7203910519779488, + "50.0" : 1.7217467656558114, + "90.0" : 1.722324562317134, + "95.0" : 1.722324562317134, + "99.0" : 1.722324562317134, + "99.9" : 1.722324562317134, + "99.99" : 1.722324562317134, + "99.999" : 1.722324562317134, + "99.9999" : 1.722324562317134, + "100.0" : 1.722324562317134 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7203910519779488, + 1.7221411217652358 + ], + [ + 1.721352409546387, + 1.722324562317134 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8646527287713972, + "scoreError" : 0.00856950365882502, + "scoreConfidence" : [ + 0.8560832251125722, + 0.8732222324302222 + ], + "scorePercentiles" : { + "0.0" : 0.8630999525475413, + "50.0" : 0.8646080545802135, + "90.0" : 0.8662948533776209, + "95.0" : 0.8662948533776209, + "99.0" : 0.8662948533776209, + "99.9" : 0.8662948533776209, + "99.99" : 0.8662948533776209, + "99.999" : 0.8662948533776209, + "99.9999" : 0.8662948533776209, + "100.0" : 0.8662948533776209 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8662948533776209, + 0.8648946418419918 + ], + [ + 0.8630999525475413, + 0.8643214673184352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 41.571094678999174, + "scoreError" : 0.9886983334392854, + "scoreConfidence" : [ + 40.582396345559886, + 42.55979301243846 + ], + "scorePercentiles" : { + "0.0" : 40.64766694582536, + "50.0" : 41.79030375939435, + "90.0" : 42.290871079881434, + "95.0" : 42.290871079881434, + "99.0" : 42.290871079881434, + "99.9" : 42.290871079881434, + "99.99" : 42.290871079881434, + "99.999" : 42.290871079881434, + "99.9999" : 42.290871079881434, + "100.0" : 42.290871079881434 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.290871079881434, + 42.118215951762124, + 42.099304911006406 + ], + [ + 41.79030375939435, + 41.81089696054987, + 40.87654670117831 + ], + [ + 40.64766694582536, + 41.13077840122415, + 41.3752674001706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.024796778092981732, + "scoreError" : 0.0013904138007945043, + "scoreConfidence" : [ + 0.023406364292187228, + 0.026187191893776236 + ], + "scorePercentiles" : { + "0.0" : 0.023756459386255924, + "50.0" : 0.024653574322660098, + "90.0" : 0.02602229912987013, + "95.0" : 0.02602229912987013, + "99.0" : 0.02602229912987013, + "99.9" : 0.02602229912987013, + "99.99" : 0.02602229912987013, + "99.999" : 0.02602229912987013, + "99.9999" : 0.02602229912987013, + "100.0" : 0.02602229912987013 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025637418092071613, + 0.02602229912987013, + 0.025694226674358975 + ], + [ + 0.02384663041190476, + 0.023756459386255924, + 0.02430528267961165 + ], + [ + 0.02434602874209246, + 0.024653574322660098, + 0.02490908339800995 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 998c98ca4fbd8eb659dd25ffe9cf1bbd4d62c1d1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 27 Jan 2025 22:43:36 +0000 Subject: [PATCH 148/345] Add performance results for commit b65ac4194c6302651a21ff3a1a78b0a99f4ba78e --- ...c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json diff --git a/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json b/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json new file mode 100644 index 0000000000..a3742d4745 --- /dev/null +++ b/performance-results/2025-01-27T22:43:23Z-b65ac4194c6302651a21ff3a1a78b0a99f4ba78e-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.408427127074759, + "scoreError" : 0.01925153848185639, + "scoreConfidence" : [ + 3.3891755885929022, + 3.4276786655566154 + ], + "scorePercentiles" : { + "0.0" : 3.4053449162452507, + "50.0" : 3.408406543484691, + "90.0" : 3.4115505050844046, + "95.0" : 3.4115505050844046, + "99.0" : 3.4115505050844046, + "99.9" : 3.4115505050844046, + "99.99" : 3.4115505050844046, + "99.999" : 3.4115505050844046, + "99.9999" : 3.4115505050844046, + "100.0" : 3.4115505050844046 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406486845438764, + 3.4115505050844046 + ], + [ + 3.4053449162452507, + 3.4103262415306177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7257387687026013, + "scoreError" : 0.008473331075327967, + "scoreConfidence" : [ + 1.7172654376272734, + 1.7342120997779293 + ], + "scorePercentiles" : { + "0.0" : 1.72423397317898, + "50.0" : 1.7256529242770822, + "90.0" : 1.7274152530772604, + "95.0" : 1.7274152530772604, + "99.0" : 1.7274152530772604, + "99.9" : 1.7274152530772604, + "99.99" : 1.7274152530772604, + "99.999" : 1.7274152530772604, + "99.9999" : 1.7274152530772604, + "100.0" : 1.7274152530772604 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.72423397317898, + 1.7254679382487557 + ], + [ + 1.7274152530772604, + 1.725837910305409 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8665575040773247, + "scoreError" : 0.0029564407943501268, + "scoreConfidence" : [ + 0.8636010632829746, + 0.8695139448716748 + ], + "scorePercentiles" : { + "0.0" : 0.8661858451203391, + "50.0" : 0.8664480513236263, + "90.0" : 0.8671480685417073, + "95.0" : 0.8671480685417073, + "99.0" : 0.8671480685417073, + "99.9" : 0.8671480685417073, + "99.99" : 0.8671480685417073, + "99.999" : 0.8671480685417073, + "99.9999" : 0.8671480685417073, + "100.0" : 0.8671480685417073 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8666900187240116, + 0.8661858451203391 + ], + [ + 0.866206083923241, + 0.8671480685417073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.677382462593584, + "scoreError" : 1.2020700735328222, + "scoreConfidence" : [ + 41.47531238906076, + 43.87945253612641 + ], + "scorePercentiles" : { + "0.0" : 41.743276822691925, + "50.0" : 42.730073405675626, + "90.0" : 43.7290083381939, + "95.0" : 43.7290083381939, + "99.0" : 43.7290083381939, + "99.9" : 43.7290083381939, + "99.99" : 43.7290083381939, + "99.999" : 43.7290083381939, + "99.9999" : 43.7290083381939, + "100.0" : 43.7290083381939 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.865228348309664, + 43.30915071935464, + 42.23165861844071 + ], + [ + 42.730073405675626, + 43.7290083381939, + 43.44903173965612 + ], + [ + 41.924035090602636, + 42.11497908041706, + 41.743276822691925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023553876284725203, + "scoreError" : 5.593054909302037E-4, + "scoreConfidence" : [ + 0.022994570793795, + 0.024113181775655405 + ], + "scorePercentiles" : { + "0.0" : 0.022851900970319635, + "50.0" : 0.02365095373995272, + "90.0" : 0.02389461776849642, + "95.0" : 0.02389461776849642, + "99.0" : 0.02389461776849642, + "99.9" : 0.02389461776849642, + "99.99" : 0.02389461776849642, + "99.999" : 0.02389461776849642, + "99.9999" : 0.02389461776849642, + "100.0" : 0.02389461776849642 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02344361818032787, + 0.023304230553488372, + 0.022851900970319635 + ], + [ + 0.023773622921615202, + 0.02389461776849642, + 0.02389178353699284 + ], + [ + 0.023707024319905214, + 0.02365095373995272, + 0.02346713457142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From bb863b9e58ee667d169b1dc41d661bfede0e1bc1 Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Tue, 28 Jan 2025 14:47:07 -0800 Subject: [PATCH 149/345] Avoid allocation / stream overhead in ValuesResolverConversion (#3803) Avoid the overhead of streams and extra copying incurred in externalValueToLiteralForList. --- .../execution/ValuesResolverConversion.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/graphql/execution/ValuesResolverConversion.java b/src/main/java/graphql/execution/ValuesResolverConversion.java index 66b84bb198..f068e7f23f 100644 --- a/src/main/java/graphql/execution/ValuesResolverConversion.java +++ b/src/main/java/graphql/execution/ValuesResolverConversion.java @@ -253,20 +253,23 @@ private static Object externalValueToLiteralForList( Locale locale ) { GraphQLInputType wrappedType = (GraphQLInputType) listType.getWrappedType(); - List result = FpKit.toListOrSingletonList(value) - .stream() - .map(val -> externalValueToLiteral( - fieldVisibility, - val, - wrappedType, - valueMode, - graphqlContext, - locale)) - .collect(toList()); + List valueList = FpKit.toListOrSingletonList(value); + ImmutableList.Builder resultBuilder = ImmutableList.builderWithExpectedSize(valueList.size()); + for (Object item : valueList) { + resultBuilder.add(externalValueToLiteral( + fieldVisibility, + item, + wrappedType, + valueMode, + graphqlContext, + locale)); + } + ImmutableList result = resultBuilder.build(); + if (valueMode == NORMALIZED) { return result; } else { - return ArrayValue.newArrayValue().values((List) result).build(); + return ArrayValue.newArrayValue().values((ImmutableList) result).build(); } } @@ -282,7 +285,7 @@ private static Object externalValueToLiteralForObject( GraphQLContext graphqlContext, Locale locale ) { - assertTrue(inputValue instanceof Map, () -> "Expect Map as input"); + assertTrue(inputValue instanceof Map, "Expect Map as input"); Map inputMap = (Map) inputValue; List fieldDefinitions = fieldVisibility.getFieldDefinitions(inputObjectType); From ece8f57e9b04eb1d14a3555192bb626d8315bc71 Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Tue, 28 Jan 2025 14:48:36 -0800 Subject: [PATCH 150/345] Avoid overhead of Stream / Iterator in RulesVisitor (#3804) Avoid overhead of creating a Stream in filterRulesVisitingFragmentSpreads, and instead just do the filtering inline in a for loop. --- src/main/java/graphql/validation/RulesVisitor.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/graphql/validation/RulesVisitor.java b/src/main/java/graphql/validation/RulesVisitor.java index 83864aaee7..b8d5aa2b8f 100644 --- a/src/main/java/graphql/validation/RulesVisitor.java +++ b/src/main/java/graphql/validation/RulesVisitor.java @@ -44,11 +44,13 @@ public RulesVisitor(ValidationContext validationContext, List rule } private List filterRulesVisitingFragmentSpreads(List rules, boolean isVisitFragmentSpreads) { - Iterator itr = rules - .stream() - .filter(r -> r.isVisitFragmentSpreads() == isVisitFragmentSpreads) - .iterator(); - return ImmutableList.copyOf(itr); + ImmutableList.Builder builder = ImmutableList.builder(); + for (AbstractRule rule : rules) { + if (rule.isVisitFragmentSpreads() == isVisitFragmentSpreads) { + builder.add(rule); + } + } + return builder.build(); } @Override From 3d193c348d05bf6c03ab12d212bbd52841f21be2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 23:03:14 +0000 Subject: [PATCH 151/345] Add performance results for commit ece8f57e9b04eb1d14a3555192bb626d8315bc71 --- ...b04eb1d14a3555192bb626d8315bc71-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json diff --git a/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json b/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json new file mode 100644 index 0000000000..5ef4290df1 --- /dev/null +++ b/performance-results/2025-01-28T23:02:55Z-ece8f57e9b04eb1d14a3555192bb626d8315bc71-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421774272094884, + "scoreError" : 0.02565110456140225, + "scoreConfidence" : [ + 3.396123167533482, + 3.447425376656286 + ], + "scorePercentiles" : { + "0.0" : 3.417929940473629, + "50.0" : 3.4209231454561904, + "90.0" : 3.427320856993527, + "95.0" : 3.427320856993527, + "99.0" : 3.427320856993527, + "99.9" : 3.427320856993527, + "99.99" : 3.427320856993527, + "99.999" : 3.427320856993527, + "99.9999" : 3.427320856993527, + "100.0" : 3.427320856993527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.417929940473629, + 3.420549417579972 + ], + [ + 3.421296873332408, + 3.427320856993527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72756042853176, + "scoreError" : 0.012153093372248453, + "scoreConfidence" : [ + 1.7154073351595116, + 1.7397135219040085 + ], + "scorePercentiles" : { + "0.0" : 1.7249582673227821, + "50.0" : 1.7279662835519356, + "90.0" : 1.7293508797003863, + "95.0" : 1.7293508797003863, + "99.0" : 1.7293508797003863, + "99.9" : 1.7293508797003863, + "99.99" : 1.7293508797003863, + "99.999" : 1.7293508797003863, + "99.9999" : 1.7293508797003863, + "100.0" : 1.7293508797003863 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7249582673227821, + 1.7283566391748764 + ], + [ + 1.727575927928995, + 1.7293508797003863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700223920340285, + "scoreError" : 0.010218700290680633, + "scoreConfidence" : [ + 0.8598036917433479, + 0.8802410923247092 + ], + "scorePercentiles" : { + "0.0" : 0.8685012135337304, + "50.0" : 0.8698338176924882, + "90.0" : 0.8719207192174072, + "95.0" : 0.8719207192174072, + "99.0" : 0.8719207192174072, + "99.9" : 0.8719207192174072, + "99.99" : 0.8719207192174072, + "99.999" : 0.8719207192174072, + "99.9999" : 0.8719207192174072, + "100.0" : 0.8719207192174072 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8707036745599296, + 0.8719207192174072 + ], + [ + 0.8685012135337304, + 0.8689639608250469 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.339925200263075, + "scoreError" : 2.0723545765171996, + "scoreConfidence" : [ + 43.267570623745875, + 47.412279776780274 + ], + "scorePercentiles" : { + "0.0" : 43.81296578444052, + "50.0" : 45.38453023809995, + "90.0" : 46.800269388776904, + "95.0" : 46.800269388776904, + "99.0" : 46.800269388776904, + "99.9" : 46.800269388776904, + "99.99" : 46.800269388776904, + "99.999" : 46.800269388776904, + "99.9999" : 46.800269388776904, + "100.0" : 46.800269388776904 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 46.800269388776904, + 46.71346073074192, + 46.75431722626851 + ], + [ + 45.38453023809995, + 45.42450404274816, + 45.24527092665326 + ], + [ + 43.81296578444052, + 43.96259264756082, + 43.96141581707756 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022398155993954644, + "scoreError" : 6.89912700021175E-4, + "scoreConfidence" : [ + 0.02170824329393347, + 0.023088068693975818 + ], + "scorePercentiles" : { + "0.0" : 0.021928783170678336, + "50.0" : 0.02232751393080357, + "90.0" : 0.022923588995423343, + "95.0" : 0.022923588995423343, + "99.0" : 0.022923588995423343, + "99.9" : 0.022923588995423343, + "99.99" : 0.022923588995423343, + "99.999" : 0.022923588995423343, + "99.9999" : 0.022923588995423343, + "100.0" : 0.022923588995423343 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02240651148769575, + 0.02232751393080357, + 0.022318053033407573 + ], + [ + 0.022923588995423343, + 0.02292196304347826, + 0.022829846011389522 + ], + [ + 0.021928783170678336, + 0.02199617635824176, + 0.021930967914473683 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 5c992656f1a4f2ebcddd5c861473490efb41b3bc Mon Sep 17 00:00:00 2001 From: Goooler Date: Mon, 3 Feb 2025 02:29:30 +0800 Subject: [PATCH 152/345] Revert "Downgrade again for tests to work" This reverts commit 542c6417978374547773f085f671bb7553ceb77a. --- agent-test/build.gradle | 2 +- agent/build.gradle | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 8d3431908e..33171353b1 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.15.11") + implementation("net.bytebuddy:byte-buddy-agent:1.16.1") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' diff --git a/agent/build.gradle b/agent/build.gradle index fff7b1ce8f..1186c7db91 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.15.11") + implementation("net.bytebuddy:byte-buddy:1.16.1") // graphql-java itself implementation(rootProject) } @@ -24,6 +24,7 @@ java { } shadowJar { + include 'META-INF/versions/11/**' minimize() archiveClassifier.set('') configurations = [project.configurations.compileClasspath] From 1f7a8bf77dcc82cbef8e10587dc4760ed5bbb4b3 Mon Sep 17 00:00:00 2001 From: Goooler Date: Mon, 3 Feb 2025 02:31:04 +0800 Subject: [PATCH 153/345] Bump Shadow to 8.3.6 --- agent/build.gradle | 3 +-- build.gradle | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/agent/build.gradle b/agent/build.gradle index 1186c7db91..ce8429e4c2 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java' id 'java-library' id 'maven-publish' - id "com.gradleup.shadow" version "8.3.5" + id "com.gradleup.shadow" version "8.3.6" } dependencies { @@ -24,7 +24,6 @@ java { } shadowJar { - include 'META-INF/versions/11/**' minimize() archiveClassifier.set('') configurations = [project.configurations.compileClasspath] diff --git a/build.gradle b/build.gradle index c63a0297d2..8cbf1f615d 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { id 'maven-publish' id 'antlr' id 'signing' - id "com.gradleup.shadow" version "8.3.5" + id "com.gradleup.shadow" version "8.3.6" id "biz.aQute.bnd.builder" version "6.4.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" From 36c746038dac492a27828303fcd453efb1879cf4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 2 Feb 2025 22:33:07 +0000 Subject: [PATCH 154/345] Add performance results for commit 559cbaccc777fd7e229f8071a8701412191d3867 --- ...777fd7e229f8071a8701412191d3867-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json diff --git a/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json b/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json new file mode 100644 index 0000000000..f13fb309be --- /dev/null +++ b/performance-results/2025-02-02T22:32:54Z-559cbaccc777fd7e229f8071a8701412191d3867-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422004543886982, + "scoreError" : 0.037274354718148585, + "scoreConfidence" : [ + 3.3847301891688333, + 3.4592788986051306 + ], + "scorePercentiles" : { + "0.0" : 3.4150603098850625, + "50.0" : 3.4222557397499918, + "90.0" : 3.428446386162883, + "95.0" : 3.428446386162883, + "99.0" : 3.428446386162883, + "99.9" : 3.428446386162883, + "99.99" : 3.428446386162883, + "99.999" : 3.428446386162883, + "99.9999" : 3.428446386162883, + "100.0" : 3.428446386162883 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.424488689195108, + 3.428446386162883 + ], + [ + 3.4150603098850625, + 3.4200227903048757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7266312356699343, + "scoreError" : 0.01275265278475576, + "scoreConfidence" : [ + 1.7138785828851786, + 1.73938388845469 + ], + "scorePercentiles" : { + "0.0" : 1.7253973345774025, + "50.0" : 1.7257740764391891, + "90.0" : 1.7295794552239565, + "95.0" : 1.7295794552239565, + "99.0" : 1.7295794552239565, + "99.9" : 1.7295794552239565, + "99.99" : 1.7295794552239565, + "99.999" : 1.7295794552239565, + "99.9999" : 1.7295794552239565, + "100.0" : 1.7295794552239565 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725774269697518, + 1.7295794552239565 + ], + [ + 1.7253973345774025, + 1.7257738831808604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685221843173088, + "scoreError" : 0.0028393507308871763, + "scoreConfidence" : [ + 0.8656828335864216, + 0.8713615350481959 + ], + "scorePercentiles" : { + "0.0" : 0.8679815361027219, + "50.0" : 0.8685252892748702, + "90.0" : 0.8690566226167731, + "95.0" : 0.8690566226167731, + "99.0" : 0.8690566226167731, + "99.9" : 0.8690566226167731, + "99.99" : 0.8690566226167731, + "99.999" : 0.8690566226167731, + "99.9999" : 0.8690566226167731, + "100.0" : 0.8690566226167731 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685503260697689, + 0.8690566226167731 + ], + [ + 0.8679815361027219, + 0.8685002524799714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.15939026975822, + "scoreError" : 3.2726275519079855, + "scoreConfidence" : [ + 41.88676271785023, + 48.43201782166621 + ], + "scorePercentiles" : { + "0.0" : 43.32162148701893, + "50.0" : 44.476019988835475, + "90.0" : 47.73912870583933, + "95.0" : 47.73912870583933, + "99.0" : 47.73912870583933, + "99.9" : 47.73912870583933, + "99.99" : 47.73912870583933, + "99.999" : 47.73912870583933, + "99.9999" : 47.73912870583933, + "100.0" : 47.73912870583933 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 47.73912870583933, + 47.64792793812885, + 47.641556164042235 + ], + [ + 44.3975721232082, + 44.48295546595411, + 44.476019988835475 + ], + [ + 43.328343957387034, + 43.32162148701893, + 43.39938659740977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02224196911386321, + "scoreError" : 5.718797688838376E-4, + "scoreConfidence" : [ + 0.021670089344979375, + 0.022813848882747047 + ], + "scorePercentiles" : { + "0.0" : 0.022001641415384614, + "50.0" : 0.022020313514285714, + "90.0" : 0.022701417299319727, + "95.0" : 0.022701417299319727, + "99.0" : 0.022701417299319727, + "99.9" : 0.022701417299319727, + "99.99" : 0.022701417299319727, + "99.999" : 0.022701417299319727, + "99.9999" : 0.022701417299319727, + "100.0" : 0.022701417299319727 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.022018342547252746, + 0.022017725931868133, + 0.02202387962197802 + ], + [ + 0.022001641415384614, + 0.022008949474725276, + 0.022020313514285714 + ], + [ + 0.022696075142857142, + 0.022689377077097506, + 0.022701417299319727 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 570e2820b569589e22565f6c8666941e6c3a0015 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:21:02 +0000 Subject: [PATCH 155/345] Bump me.champeau.jmh from 0.7.2 to 0.7.3 Bumps me.champeau.jmh from 0.7.2 to 0.7.3. --- updated-dependencies: - dependency-name: me.champeau.jmh dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8cbf1f615d..34265a8d4c 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ plugins { id "biz.aQute.bnd.builder" version "6.4.0" id "io.github.gradle-nexus.publish-plugin" version "2.0.0" id "groovy" - id "me.champeau.jmh" version "0.7.2" + id "me.champeau.jmh" version "0.7.3" } java { From cf8413a602e1b4529d8f8a278189d9758107aec8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:21:05 +0000 Subject: [PATCH 156/345] Bump net.bytebuddy:byte-buddy from 1.16.1 to 1.17.0 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.16.1 to 1.17.0. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.16.1...byte-buddy-1.17.0) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index ce8429e4c2..e1f7abff64 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.16.1") + implementation("net.bytebuddy:byte-buddy:1.17.0") // graphql-java itself implementation(rootProject) } From 2b7eb17eba3bf7c02949a824413436e955c25027 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:21:08 +0000 Subject: [PATCH 157/345] Bump net.bytebuddy:byte-buddy-agent from 1.16.1 to 1.17.0 Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.16.1 to 1.17.0. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.16.1...byte-buddy-1.17.0) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 33171353b1..1197cf632e 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.16.1") + implementation("net.bytebuddy:byte-buddy-agent:1.17.0") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From af27814ec890e03adf4922c9ee8bba5e7c6a1a78 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:21:12 +0000 Subject: [PATCH 158/345] Bump com.google.code.gson:gson from 2.11.0 to 2.12.1 Bumps [com.google.code.gson:gson](https://github.com/google/gson) from 2.11.0 to 2.12.1. - [Release notes](https://github.com/google/gson/releases) - [Changelog](https://github.com/google/gson/blob/main/CHANGELOG.md) - [Commits](https://github.com/google/gson/compare/gson-parent-2.11.0...gson-parent-2.12.1) --- updated-dependencies: - dependency-name: com.google.code.gson:gson dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8cbf1f615d..55f2c0f4be 100644 --- a/build.gradle +++ b/build.gradle @@ -109,7 +109,7 @@ dependencies { testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0' testImplementation 'org.codehaus.groovy:groovy:3.0.23' testImplementation 'org.codehaus.groovy:groovy-json:3.0.23' - testImplementation 'com.google.code.gson:gson:2.11.0' + testImplementation 'com.google.code.gson:gson:2.12.1' testImplementation 'org.eclipse.jetty:jetty-server:11.0.24' testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.2' testImplementation 'org.awaitility:awaitility-groovy:4.2.0' From 8ec6e14d172b093fe8570963004c7dbf49f917e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:46:49 +0000 Subject: [PATCH 159/345] Bump google-github-actions/auth from 2.1.7 to 2.1.8 Bumps [google-github-actions/auth](https://github.com/google-github-actions/auth) from 2.1.7 to 2.1.8. - [Release notes](https://github.com/google-github-actions/auth/releases) - [Changelog](https://github.com/google-github-actions/auth/blob/main/CHANGELOG.md) - [Commits](https://github.com/google-github-actions/auth/compare/v2.1.7...v2.1.8) --- updated-dependencies: - dependency-name: google-github-actions/auth dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/invoke_test_runner.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/invoke_test_runner.yml b/.github/workflows/invoke_test_runner.yml index 0e157e3636..4eb0307eaa 100644 --- a/.github/workflows/invoke_test_runner.yml +++ b/.github/workflows/invoke_test_runner.yml @@ -50,7 +50,7 @@ jobs: - id: 'auth' name: 'Authenticate to Google Cloud' - uses: google-github-actions/auth@v2.1.7 + uses: google-github-actions/auth@v2.1.8 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} From 6744965de48bcbefb5aa5716e89adc6fe9593c34 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 23:20:00 +0000 Subject: [PATCH 160/345] Add performance results for commit ee7382895dde50d5e203c473aaedbf2a8b1796a5 --- ...dde50d5e203c473aaedbf2a8b1796a5-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json diff --git a/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json b/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json new file mode 100644 index 0000000000..1d6ace2390 --- /dev/null +++ b/performance-results/2025-02-03T23:19:46Z-ee7382895dde50d5e203c473aaedbf2a8b1796a5-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4002502019051217, + "scoreError" : 0.03940721118245434, + "scoreConfidence" : [ + 3.3608429907226673, + 3.439657413087576 + ], + "scorePercentiles" : { + "0.0" : 3.393090154110096, + "50.0" : 3.4002891548424987, + "90.0" : 3.4073323438253937, + "95.0" : 3.4073323438253937, + "99.0" : 3.4073323438253937, + "99.9" : 3.4073323438253937, + "99.99" : 3.4073323438253937, + "99.999" : 3.4073323438253937, + "99.9999" : 3.4073323438253937, + "100.0" : 3.4073323438253937 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.398037257321173, + 3.4073323438253937 + ], + [ + 3.393090154110096, + 3.402541052363824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7210546490132013, + "scoreError" : 0.012387317274444386, + "scoreConfidence" : [ + 1.7086673317387568, + 1.7334419662876457 + ], + "scorePercentiles" : { + "0.0" : 1.718746930977431, + "50.0" : 1.7210793200388954, + "90.0" : 1.7233130249975834, + "95.0" : 1.7233130249975834, + "99.0" : 1.7233130249975834, + "99.9" : 1.7233130249975834, + "99.99" : 1.7233130249975834, + "99.999" : 1.7233130249975834, + "99.9999" : 1.7233130249975834, + "100.0" : 1.7233130249975834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7205329400600824, + 1.7233130249975834 + ], + [ + 1.718746930977431, + 1.7216257000177082 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864706321488554, + "scoreError" : 0.0030292477814532876, + "scoreConfidence" : [ + 0.8616770737071007, + 0.8677355692700073 + ], + "scorePercentiles" : { + "0.0" : 0.8640312899876621, + "50.0" : 0.8648396757094557, + "90.0" : 0.865114644547642, + "95.0" : 0.865114644547642, + "99.0" : 0.865114644547642, + "99.9" : 0.865114644547642, + "99.99" : 0.865114644547642, + "99.999" : 0.865114644547642, + "99.9999" : 0.865114644547642, + "100.0" : 0.865114644547642 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8648141750571403, + 0.8648651763617712 + ], + [ + 0.8640312899876621, + 0.865114644547642 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.49237253367603, + "scoreError" : 1.4784498919336293, + "scoreConfidence" : [ + 39.013922641742404, + 41.97082242560966 + ], + "scorePercentiles" : { + "0.0" : 39.21798489494184, + "50.0" : 40.632274190391094, + "90.0" : 41.860872454143184, + "95.0" : 41.860872454143184, + "99.0" : 41.860872454143184, + "99.9" : 41.860872454143184, + "99.99" : 41.860872454143184, + "99.999" : 41.860872454143184, + "99.9999" : 41.860872454143184, + "100.0" : 41.860872454143184 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.632274190391094, + 39.21798489494184, + 40.52013138493316 + ], + [ + 41.860872454143184, + 41.10434763868566, + 41.21868290029448 + ], + [ + 40.698457638341345, + 39.81248540885506, + 39.36611629249843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02505365998153623, + "scoreError" : 7.321224107054102E-4, + "scoreConfidence" : [ + 0.02432153757083082, + 0.02578578239224164 + ], + "scorePercentiles" : { + "0.0" : 0.024503543127139364, + "50.0" : 0.025069455263157896, + "90.0" : 0.025665329338461537, + "95.0" : 0.025665329338461537, + "99.0" : 0.025665329338461537, + "99.9" : 0.025665329338461537, + "99.99" : 0.025665329338461537, + "99.999" : 0.025665329338461537, + "99.9999" : 0.025665329338461537, + "100.0" : 0.025665329338461537 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.025069455263157896, + 0.02473229191111111, + 0.02461288542997543 + ], + [ + 0.025665329338461537, + 0.025577278539641944, + 0.025356023572151897 + ], + [ + 0.024503543127139364, + 0.024692934773399015, + 0.02527319787878788 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 8467887ab06611428a7766c93fd0fbda184508ff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Feb 2025 22:18:39 +0000 Subject: [PATCH 161/345] Add performance results for commit 83fb2f9750acdea86a5d42a99eacfe75343bdb6e --- ...0acdea86a5d42a99eacfe75343bdb6e-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json diff --git a/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json b/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json new file mode 100644 index 0000000000..7a1d3a9afe --- /dev/null +++ b/performance-results/2025-02-04T22:18:16Z-83fb2f9750acdea86a5d42a99eacfe75343bdb6e-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.427046433766062, + "scoreError" : 0.04365548760091392, + "scoreConfidence" : [ + 3.383390946165148, + 3.470701921366976 + ], + "scorePercentiles" : { + "0.0" : 3.4187459374535316, + "50.0" : 3.4274414136872613, + "90.0" : 3.4345569702361933, + "95.0" : 3.4345569702361933, + "99.0" : 3.4345569702361933, + "99.9" : 3.4345569702361933, + "99.99" : 3.4345569702361933, + "99.999" : 3.4345569702361933, + "99.9999" : 3.4345569702361933, + "100.0" : 3.4345569702361933 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4187459374535316, + 3.425064288111735 + ], + [ + 3.429818539262788, + 3.4345569702361933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7279093977892266, + "scoreError" : 0.01145621864072765, + "scoreConfidence" : [ + 1.716453179148499, + 1.7393656164299542 + ], + "scorePercentiles" : { + "0.0" : 1.7260944011710606, + "50.0" : 1.7276465395017473, + "90.0" : 1.7302501109823514, + "95.0" : 1.7302501109823514, + "99.0" : 1.7302501109823514, + "99.9" : 1.7302501109823514, + "99.99" : 1.7302501109823514, + "99.999" : 1.7302501109823514, + "99.9999" : 1.7302501109823514, + "100.0" : 1.7302501109823514 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271377249156863, + 1.7302501109823514 + ], + [ + 1.7260944011710606, + 1.728155354087808 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8699132212785552, + "scoreError" : 0.003846909616339744, + "scoreConfidence" : [ + 0.8660663116622155, + 0.8737601308948949 + ], + "scorePercentiles" : { + "0.0" : 0.8695145403196621, + "50.0" : 0.8696695386461242, + "90.0" : 0.8707992675023106, + "95.0" : 0.8707992675023106, + "99.0" : 0.8707992675023106, + "99.9" : 0.8707992675023106, + "99.99" : 0.8707992675023106, + "99.999" : 0.8707992675023106, + "99.9999" : 0.8707992675023106, + "100.0" : 0.8707992675023106 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8696838162153353, + 0.8707992675023106 + ], + [ + 0.8696552610769129, + 0.8695145403196621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.49448131762865, + "scoreError" : 1.1498204083528643, + "scoreConfidence" : [ + 43.34466090927578, + 45.644301725981514 + ], + "scorePercentiles" : { + "0.0" : 43.9067707953283, + "50.0" : 44.18457675048271, + "90.0" : 45.430707798776275, + "95.0" : 45.430707798776275, + "99.0" : 45.430707798776275, + "99.9" : 45.430707798776275, + "99.99" : 45.430707798776275, + "99.999" : 45.430707798776275, + "99.9999" : 45.430707798776275, + "100.0" : 45.430707798776275 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.054179446201815, + 44.19728125286074, + 44.18457675048271 + ], + [ + 43.9067707953283, + 43.946569962393944, + 43.96958858794671 + ], + [ + 45.37186589053077, + 45.38879137413653, + 45.430707798776275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0223351247933896, + "scoreError" : 7.66788561808646E-4, + "scoreConfidence" : [ + 0.021568336231580953, + 0.023101913355198244 + ], + "scorePercentiles" : { + "0.0" : 0.021752088417391305, + "50.0" : 0.02243793969955157, + "90.0" : 0.022811016271070614, + "95.0" : 0.022811016271070614, + "99.0" : 0.022811016271070614, + "99.9" : 0.022811016271070614, + "99.99" : 0.022811016271070614, + "99.999" : 0.022811016271070614, + "99.9999" : 0.022811016271070614, + "100.0" : 0.022811016271070614 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.021754917986956522, + 0.021752088417391305, + 0.02177836983478261 + ], + [ + 0.02246497825560538, + 0.02243793969955157, + 0.02243549151569507 + ], + [ + 0.02279936298861048, + 0.022811016271070614, + 0.022781958170842824 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 5f69646128ba15320c0bb7a2c52a96bff1e52f19 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 03:30:57 +0000 Subject: [PATCH 162/345] Add performance results for commit 43f8ace3d9fbada18046c602b0b205dc562e8aa7 --- ...9fbada18046c602b0b205dc562e8aa7-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json diff --git a/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json b/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json new file mode 100644 index 0000000000..2a129ecd0c --- /dev/null +++ b/performance-results/2025-02-05T03:30:40Z-43f8ace3d9fbada18046c602b0b205dc562e8aa7-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422693724848574, + "scoreError" : 0.034923902189520864, + "scoreConfidence" : [ + 3.387769822659053, + 3.4576176270380947 + ], + "scorePercentiles" : { + "0.0" : 3.4170249463534113, + "50.0" : 3.4220117595222, + "90.0" : 3.4297264339964837, + "95.0" : 3.4297264339964837, + "99.0" : 3.4297264339964837, + "99.9" : 3.4297264339964837, + "99.99" : 3.4297264339964837, + "99.999" : 3.4297264339964837, + "99.9999" : 3.4297264339964837, + "100.0" : 3.4297264339964837 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4236089548467903, + 3.4297264339964837 + ], + [ + 3.4170249463534113, + 3.42041456419761 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7300534439742297, + "scoreError" : 0.019032673370126152, + "scoreConfidence" : [ + 1.7110207706041036, + 1.7490861173443557 + ], + "scorePercentiles" : { + "0.0" : 1.7260690976473414, + "50.0" : 1.7304886524743175, + "90.0" : 1.733167373300942, + "95.0" : 1.733167373300942, + "99.0" : 1.733167373300942, + "99.9" : 1.733167373300942, + "99.99" : 1.733167373300942, + "99.999" : 1.733167373300942, + "99.9999" : 1.733167373300942, + "100.0" : 1.733167373300942 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7302956837792431, + 1.733167373300942 + ], + [ + 1.7260690976473414, + 1.7306816211693918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8698987120372736, + "scoreError" : 0.00377581375645047, + "scoreConfidence" : [ + 0.8661228982808232, + 0.8736745257937241 + ], + "scorePercentiles" : { + "0.0" : 0.8690967971416474, + "50.0" : 0.8700294827105304, + "90.0" : 0.8704390855863859, + "95.0" : 0.8704390855863859, + "99.0" : 0.8704390855863859, + "99.9" : 0.8704390855863859, + "99.99" : 0.8704390855863859, + "99.999" : 0.8704390855863859, + "99.9999" : 0.8704390855863859, + "100.0" : 0.8704390855863859 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8701952932654208, + 0.8704390855863859 + ], + [ + 0.8690967971416474, + 0.8698636721556401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.43585541369755, + "scoreError" : 2.21713038130226, + "scoreConfidence" : [ + 42.21872503239529, + 46.652985794999815 + ], + "scorePercentiles" : { + "0.0" : 42.70591352572246, + "50.0" : 44.91351616811866, + "90.0" : 45.698943042856044, + "95.0" : 45.698943042856044, + "99.0" : 45.698943042856044, + "99.9" : 45.698943042856044, + "99.99" : 45.698943042856044, + "99.999" : 45.698943042856044, + "99.9999" : 45.698943042856044, + "100.0" : 45.698943042856044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.70591352572246, + 42.7354668083411, + 42.75134494654927 + ], + [ + 45.62264437022108, + 45.66645088612438, + 45.698943042856044 + ], + [ + 44.89908833299122, + 44.91351616811866, + 44.92933064235384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022318768566288623, + "scoreError" : 4.839872571792104E-4, + "scoreConfidence" : [ + 0.021834781309109413, + 0.022802755823467833 + ], + "scorePercentiles" : { + "0.0" : 0.022101342944812363, + "50.0" : 0.022146305756637168, + "90.0" : 0.02271604529478458, + "95.0" : 0.02271604529478458, + "99.0" : 0.02271604529478458, + "99.9" : 0.02271604529478458, + "99.99" : 0.02271604529478458, + "99.999" : 0.02271604529478458, + "99.9999" : 0.02271604529478458, + "100.0" : 0.02271604529478458 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210229688741722, + 0.022101342944812363, + 0.02212873989159292 + ], + [ + 0.022697511213151927, + 0.02269267171882086, + 0.02271604529478458 + ], + [ + 0.022146305756637168, + 0.02214712675884956, + 0.022136876630530974 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From c467a0220d979ef7200e57acd409fc14577b0080 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Wed, 5 Feb 2025 16:02:30 +1100 Subject: [PATCH 163/345] Add extra test to demonstrate all operations are checked in a document --- .../graphql/ParseAndValidateTest.groovy | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/test/groovy/graphql/ParseAndValidateTest.groovy b/src/test/groovy/graphql/ParseAndValidateTest.groovy index c5c20a71fa..fa66c3cbed 100644 --- a/src/test/groovy/graphql/ParseAndValidateTest.groovy +++ b/src/test/groovy/graphql/ParseAndValidateTest.groovy @@ -207,4 +207,32 @@ class ParseAndValidateTest extends Specification { error.message == "Validation error (UnknownOperation): The 'Subscription' operation is not supported by the schema" error.locations == [new SourceLocation(1, 1)] } + + def "known operation validation rule checks all operations in document"() { + def sdl = ''' + type Query { + myQuery : String! + } + ''' + + def registry = new SchemaParser().parse(sdl) + def schema = UnExecutableSchemaGenerator.makeUnExecutableSchema(registry) + String request = "mutation MyMutation { myMutation } subscription MySubscription { mySubscription }" + + when: + Document inputDocument = new Parser().parseDocument(request) + List errors = ParseAndValidate.validate(schema, inputDocument) + + then: + errors.size() == 2 + def error1 = errors.get(0) + error1.validationErrorType == ValidationErrorType.UnknownOperation + error1.message == "Validation error (UnknownOperation): The 'Mutation' operation is not supported by the schema" + error1.locations == [new SourceLocation(1, 1)] + + def error2 = errors.get(1) + error2.validationErrorType == ValidationErrorType.UnknownOperation + error2.message == "Validation error (UnknownOperation): The 'Subscription' operation is not supported by the schema" + error2.locations == [new SourceLocation(1, 36)] + } } From e815d34f3befcb1228c38212d71a0c2b0ed7f9c7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 5 Feb 2025 05:03:02 +0000 Subject: [PATCH 164/345] Add performance results for commit d370d0b15b9a50bb15b4b1a494ca29164b68edb4 --- ...b9a50bb15b4b1a494ca29164b68edb4-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json diff --git a/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json b/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json new file mode 100644 index 0000000000..0ab2bd6f98 --- /dev/null +++ b/performance-results/2025-02-05T05:02:49Z-d370d0b15b9a50bb15b4b1a494ca29164b68edb4-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4042371393335316, + "scoreError" : 0.0446872583155137, + "scoreConfidence" : [ + 3.359549881018018, + 3.448924397649045 + ], + "scorePercentiles" : { + "0.0" : 3.394914893117686, + "50.0" : 3.4052290542625556, + "90.0" : 3.4115755556913285, + "95.0" : 3.4115755556913285, + "99.0" : 3.4115755556913285, + "99.9" : 3.4115755556913285, + "99.99" : 3.4115755556913285, + "99.999" : 3.4115755556913285, + "99.9999" : 3.4115755556913285, + "100.0" : 3.4115755556913285 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394914893117686, + 3.40583895732733 + ], + [ + 3.404619151197781, + 3.4115755556913285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7184579763646566, + "scoreError" : 0.017984029000478307, + "scoreConfidence" : [ + 1.7004739473641783, + 1.7364420053651348 + ], + "scorePercentiles" : { + "0.0" : 1.7150109700481377, + "50.0" : 1.7185017101631561, + "90.0" : 1.721817515084177, + "95.0" : 1.721817515084177, + "99.0" : 1.721817515084177, + "99.9" : 1.721817515084177, + "99.99" : 1.721817515084177, + "99.999" : 1.721817515084177, + "99.9999" : 1.721817515084177, + "100.0" : 1.721817515084177 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7183229689238861, + 1.721817515084177 + ], + [ + 1.7150109700481377, + 1.718680451402426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8644166678618949, + "scoreError" : 0.014273824793039343, + "scoreConfidence" : [ + 0.8501428430688556, + 0.8786904926549342 + ], + "scorePercentiles" : { + "0.0" : 0.8625013881061403, + "50.0" : 0.8640499230080323, + "90.0" : 0.8670654373253741, + "95.0" : 0.8670654373253741, + "99.0" : 0.8670654373253741, + "99.9" : 0.8670654373253741, + "99.99" : 0.8670654373253741, + "99.999" : 0.8670654373253741, + "99.9999" : 0.8670654373253741, + "100.0" : 0.8670654373253741 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8654071827075736, + 0.8670654373253741 + ], + [ + 0.8625013881061403, + 0.8626926633084911 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 40.107849203374485, + "scoreError" : 1.8613429979991036, + "scoreConfidence" : [ + 38.24650620537538, + 41.96919220137359 + ], + "scorePercentiles" : { + "0.0" : 38.957375193089185, + "50.0" : 39.87978038106594, + "90.0" : 42.106739336781644, + "95.0" : 42.106739336781644, + "99.0" : 42.106739336781644, + "99.9" : 42.106739336781644, + "99.99" : 42.106739336781644, + "99.999" : 42.106739336781644, + "99.9999" : 42.106739336781644, + "100.0" : 42.106739336781644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.32311514586201, + 39.22873722502622, + 39.40093047378082 + ], + [ + 40.22868330630514, + 42.106739336781644, + 40.820245253788244 + ], + [ + 39.02503651467119, + 38.957375193089185, + 39.87978038106594 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02515763671701217, + "scoreError" : 4.5515478538928604E-4, + "scoreConfidence" : [ + 0.02470248193162288, + 0.025612791502401457 + ], + "scorePercentiles" : { + "0.0" : 0.024772995148514852, + "50.0" : 0.025168438949748743, + "90.0" : 0.02553268769132653, + "95.0" : 0.02553268769132653, + "99.0" : 0.02553268769132653, + "99.9" : 0.02553268769132653, + "99.99" : 0.02553268769132653, + "99.999" : 0.02553268769132653, + "99.9999" : 0.02553268769132653, + "100.0" : 0.02553268769132653 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024772995148514852, + 0.024887766286069653, + 0.024896308708955223 + ], + [ + 0.02533403954177215, + 0.025328802524050634, + 0.025448840152671754 + ], + [ + 0.02504885145, + 0.025168438949748743, + 0.02553268769132653 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From a9bed59b505d24c462c2a1fb932fde9d1e62a26e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 03:25:36 +0000 Subject: [PATCH 165/345] Add performance results for commit b0546d74a3a1974caed0d87930b8867bdd487762 --- ...3a1974caed0d87930b8867bdd487762-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json diff --git a/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json b/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json new file mode 100644 index 0000000000..8d80b209f6 --- /dev/null +++ b/performance-results/2025-02-06T03:25:19Z-b0546d74a3a1974caed0d87930b8867bdd487762-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.402866252226364, + "scoreError" : 0.0421848378937494, + "scoreConfidence" : [ + 3.360681414332615, + 3.4450510901201135 + ], + "scorePercentiles" : { + "0.0" : 3.397928831896492, + "50.0" : 3.400671059467336, + "90.0" : 3.412194058074291, + "95.0" : 3.412194058074291, + "99.0" : 3.412194058074291, + "99.9" : 3.412194058074291, + "99.99" : 3.412194058074291, + "99.999" : 3.412194058074291, + "99.9999" : 3.412194058074291, + "100.0" : 3.412194058074291 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.397928831896492, + 3.402518546600235 + ], + [ + 3.3988235723344373, + 3.412194058074291 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.718488887939728, + "scoreError" : 0.01413215419536935, + "scoreConfidence" : [ + 1.7043567337443586, + 1.7326210421350974 + ], + "scorePercentiles" : { + "0.0" : 1.7167794743050087, + "50.0" : 1.717892436788207, + "90.0" : 1.7213912038774897, + "95.0" : 1.7213912038774897, + "99.0" : 1.7213912038774897, + "99.9" : 1.7213912038774897, + "99.99" : 1.7213912038774897, + "99.999" : 1.7213912038774897, + "99.9999" : 1.7213912038774897, + "100.0" : 1.7213912038774897 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7168220567730959, + 1.718962816803318 + ], + [ + 1.7167794743050087, + 1.7213912038774897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8647181507551523, + "scoreError" : 0.007284417772818592, + "scoreConfidence" : [ + 0.8574337329823337, + 0.872002568527971 + ], + "scorePercentiles" : { + "0.0" : 0.8635274440152577, + "50.0" : 0.8646774530881736, + "90.0" : 0.8659902528290045, + "95.0" : 0.8659902528290045, + "99.0" : 0.8659902528290045, + "99.9" : 0.8659902528290045, + "99.99" : 0.8659902528290045, + "99.999" : 0.8659902528290045, + "99.9999" : 0.8659902528290045, + "100.0" : 0.8659902528290045 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8635274440152577, + 0.8640558078024131 + ], + [ + 0.8652990983739342, + 0.8659902528290045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 39.40515730294485, + "scoreError" : 1.4215726826153885, + "scoreConfidence" : [ + 37.98358462032946, + 40.82672998556024 + ], + "scorePercentiles" : { + "0.0" : 37.93581376773447, + "50.0" : 39.27752387686973, + "90.0" : 40.343217369362335, + "95.0" : 40.343217369362335, + "99.0" : 40.343217369362335, + "99.9" : 40.343217369362335, + "99.99" : 40.343217369362335, + "99.999" : 40.343217369362335, + "99.9999" : 40.343217369362335, + "100.0" : 40.343217369362335 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.06384938710178, + 40.17442301384987, + 40.259929376837086 + ], + [ + 39.27752387686973, + 38.714228572397936, + 37.93581376773447 + ], + [ + 40.343217369362335, + 38.96220507920764, + 38.91522528314284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02554874198958805, + "scoreError" : 0.0017688172917319394, + "scoreConfidence" : [ + 0.02377992469785611, + 0.02731755928131999 + ], + "scorePercentiles" : { + "0.0" : 0.024039496365384615, + "50.0" : 0.02525976276010101, + "90.0" : 0.027049900545945946, + "95.0" : 0.027049900545945946, + "99.0" : 0.027049900545945946, + "99.9" : 0.027049900545945946, + "99.99" : 0.027049900545945946, + "99.999" : 0.027049900545945946, + "99.9999" : 0.027049900545945946, + "100.0" : 0.027049900545945946 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.026940275467741935, + 0.02652689669230769, + 0.027049900545945946 + ], + [ + 0.025087918175438595, + 0.02502862981, + 0.024039496365384615 + ], + [ + 0.024630795724815725, + 0.02525976276010101, + 0.02537500236455696 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 386807463fe663a9b33778b8e2b60627490489bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Feb 2025 03:54:28 +0000 Subject: [PATCH 166/345] Add performance results for commit 3710e685f7643d3ed541078fb3be9ca7c4b3ffaa --- ...7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json diff --git a/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json b/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json new file mode 100644 index 0000000000..fab923472c --- /dev/null +++ b/performance-results/2025-02-06T03:54:13Z-3710e685f7643d3ed541078fb3be9ca7c4b3ffaa-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.40840468928762, + "scoreError" : 0.03172758838290947, + "scoreConfidence" : [ + 3.3766771009047103, + 3.4401322776705294 + ], + "scorePercentiles" : { + "0.0" : 3.401889288067258, + "50.0" : 3.4089583002614106, + "90.0" : 3.4138128685604006, + "95.0" : 3.4138128685604006, + "99.0" : 3.4138128685604006, + "99.9" : 3.4138128685604006, + "99.99" : 3.4138128685604006, + "99.999" : 3.4138128685604006, + "99.9999" : 3.4138128685604006, + "100.0" : 3.4138128685604006 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.408891511405186, + 3.4138128685604006 + ], + [ + 3.401889288067258, + 3.4090250891176357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7210007707040362, + "scoreError" : 0.017508545331382953, + "scoreConfidence" : [ + 1.7034922253726532, + 1.7385093160354192 + ], + "scorePercentiles" : { + "0.0" : 1.7180058125704887, + "50.0" : 1.721345212697952, + "90.0" : 1.7233068448497522, + "95.0" : 1.7233068448497522, + "99.0" : 1.7233068448497522, + "99.9" : 1.7233068448497522, + "99.99" : 1.7233068448497522, + "99.999" : 1.7233068448497522, + "99.9999" : 1.7233068448497522, + "100.0" : 1.7233068448497522 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7180058125704887, + 1.7194089020585175 + ], + [ + 1.7232815233373864, + 1.7233068448497522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8643609823632786, + "scoreError" : 0.0161080169738309, + "scoreConfidence" : [ + 0.8482529653894477, + 0.8804689993371095 + ], + "scorePercentiles" : { + "0.0" : 0.8621131943188688, + "50.0" : 0.8639380343612875, + "90.0" : 0.8674546664116706, + "95.0" : 0.8674546664116706, + "99.0" : 0.8674546664116706, + "99.9" : 0.8674546664116706, + "99.99" : 0.8674546664116706, + "99.999" : 0.8674546664116706, + "99.9999" : 0.8674546664116706, + "100.0" : 0.8674546664116706 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8652908015543234, + 0.8674546664116706 + ], + [ + 0.8625852671682516, + 0.8621131943188688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 42.13143739568395, + "scoreError" : 1.28997090052118, + "scoreConfidence" : [ + 40.84146649516277, + 43.421408296205136 + ], + "scorePercentiles" : { + "0.0" : 40.7091955299111, + "50.0" : 42.34700827507123, + "90.0" : 43.09494311870861, + "95.0" : 43.09494311870861, + "99.0" : 43.09494311870861, + "99.9" : 43.09494311870861, + "99.99" : 43.09494311870861, + "99.999" : 43.09494311870861, + "99.9999" : 43.09494311870861, + "100.0" : 43.09494311870861 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 40.7091955299111, + 41.54843086871625, + 42.4898195879411 + ], + [ + 42.34700827507123, + 43.09494311870861, + 41.772721481340994 + ], + [ + 41.69707756441562, + 43.0226619809692, + 42.5010781540815 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.023930444714706154, + "scoreError" : 8.884213123377579E-4, + "scoreConfidence" : [ + 0.023042023402368397, + 0.02481886602704391 + ], + "scorePercentiles" : { + "0.0" : 0.023008338947126436, + "50.0" : 0.024051551677884614, + "90.0" : 0.024526884235294116, + "95.0" : 0.024526884235294116, + "99.0" : 0.024526884235294116, + "99.9" : 0.024526884235294116, + "99.99" : 0.024526884235294116, + "99.999" : 0.024526884235294116, + "99.9999" : 0.024526884235294116, + "100.0" : 0.024526884235294116 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.024526884235294116, + 0.024363735328467154, + 0.023997522652278176 + ], + [ + 0.024367394362530412, + 0.024051551677884614, + 0.024217514585956418 + ], + [ + 0.023008338947126436, + 0.023298507360465116, + 0.02354255328235294 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From c145ced043308b49a2d43f4b6e104e9a0455d8c1 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 8 Feb 2025 16:14:03 +1100 Subject: [PATCH 167/345] Add correct client locale and update tests --- .../java/graphql/validation/rules/ArgumentsOfCorrectType.java | 2 +- .../validation/rules/VariableDefaultValuesOfCorrectType.java | 2 +- .../validation/rules/ArgumentsOfCorrectTypeTest.groovy | 4 ++++ .../rules/VariableDefaultValuesOfCorrectTypeTest.groovy | 3 +++ 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java b/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java index 21e85a2129..2b76f685ab 100644 --- a/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java +++ b/src/main/java/graphql/validation/rules/ArgumentsOfCorrectType.java @@ -28,7 +28,7 @@ public void checkArgument(Argument argument) { return; } ArgumentValidationUtil validationUtil = new ArgumentValidationUtil(argument); - if (!validationUtil.isValidLiteralValue(argument.getValue(), fieldArgument.getType(), getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), Locale.getDefault())) { + if (!validationUtil.isValidLiteralValue(argument.getValue(), fieldArgument.getType(), getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), getValidationContext().getI18n().getLocale())) { String message = i18n(WrongType, validationUtil.getMsgAndArgs()); addError(ValidationError.newValidationError() .validationErrorType(WrongType) diff --git a/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java b/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java index c67026e8b6..f57a24f940 100644 --- a/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java +++ b/src/main/java/graphql/validation/rules/VariableDefaultValuesOfCorrectType.java @@ -27,7 +27,7 @@ public void checkVariableDefinition(VariableDefinition variableDefinition) { return; } if (variableDefinition.getDefaultValue() != null - && !getValidationUtil().isValidLiteralValue(variableDefinition.getDefaultValue(), inputType, getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), Locale.getDefault())) { + && !getValidationUtil().isValidLiteralValue(variableDefinition.getDefaultValue(), inputType, getValidationContext().getSchema(), getValidationContext().getGraphQLContext(), getValidationContext().getI18n().getLocale())) { String message = i18n(BadValueForDefaultArg, "VariableDefaultValuesOfCorrectType.badDefault", variableDefinition.getDefaultValue(), simplePrint(inputType)); addError(BadValueForDefaultArg, variableDefinition.getSourceLocation(), message); } diff --git a/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy index a3209a9fe3..7445420949 100644 --- a/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy @@ -1,6 +1,7 @@ package graphql.validation.rules import graphql.GraphQLContext +import graphql.i18n.I18n import graphql.language.Argument import graphql.language.ArrayValue import graphql.language.BooleanValue @@ -33,11 +34,14 @@ class ArgumentsOfCorrectTypeTest extends Specification { ArgumentsOfCorrectType argumentsOfCorrectType ValidationContext validationContext = Mock(ValidationContext) ValidationErrorCollector errorCollector = new ValidationErrorCollector() + I18n i18n = Mock(I18n) def setup() { argumentsOfCorrectType = new ArgumentsOfCorrectType(validationContext, errorCollector) def context = GraphQLContext.getDefault() validationContext.getGraphQLContext() >> context + validationContext.getI18n() >> i18n + i18n.getLocale() >> Locale.ENGLISH } def "valid type results in no error"() { diff --git a/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy index e69baff7b2..ab1c2950f0 100644 --- a/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy @@ -19,10 +19,13 @@ class VariableDefaultValuesOfCorrectTypeTest extends Specification { ValidationContext validationContext = Mock(ValidationContext) ValidationErrorCollector errorCollector = new ValidationErrorCollector() VariableDefaultValuesOfCorrectType defaultValuesOfCorrectType = new VariableDefaultValuesOfCorrectType(validationContext, errorCollector) + I18n i18n = Mock(I18n) void setup() { def context = GraphQLContext.getDefault() validationContext.getGraphQLContext() >> context + validationContext.getI18n() >> i18n + i18n.getLocale() >> Locale.ENGLISH } def "default value has wrong type"() { From a8e00c32c112ccef5695b0427cdda006da887a37 Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Fri, 14 Feb 2025 16:23:04 +1100 Subject: [PATCH 168/345] Correct PropertyDataFetcher javadoc (#3821) --- src/main/java/graphql/schema/PropertyDataFetcher.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/schema/PropertyDataFetcher.java b/src/main/java/graphql/schema/PropertyDataFetcher.java index 77cfdcf062..38382f4da9 100644 --- a/src/main/java/graphql/schema/PropertyDataFetcher.java +++ b/src/main/java/graphql/schema/PropertyDataFetcher.java @@ -4,6 +4,9 @@ import graphql.Assert; import graphql.PublicApi; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; import java.util.function.Function; import java.util.function.Supplier; @@ -17,11 +20,12 @@ *
  • If the source is null, return null
  • *
  • If the source is a Map, return map.get(propertyName)
  • *
  • If a function is provided, it is used
  • + *
  • Find a public JavaBean getter method named `getPropertyName()` or `isPropertyName()` using {@link java.lang.invoke.LambdaMetafactory#metafactory(MethodHandles.Lookup, String, MethodType, MethodType, MethodHandle, MethodType)}
  • + *
  • Find a public Record like method named `propertyName()`
  • *
  • Find a public JavaBean getter method named `getPropertyName()` or `isPropertyName()`
  • *
  • Find any getter method named `getPropertyName()` or `isPropertyName()` and call method.setAccessible(true)
  • *
  • Find a public field named `propertyName`
  • *
  • Find any field named `propertyName` and call field.setAccessible(true)
  • - *
  • Find a public Record like method named `propertyName()`
  • *
  • If this cant find anything, then null is returned
  • * *

    From d2879bbe650cd19b2ac72f8d8c9159f17cbf9065 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 14 Feb 2025 05:39:25 +0000 Subject: [PATCH 169/345] Add performance results for commit a8e00c32c112ccef5695b0427cdda006da887a37 --- ...112ccef5695b0427cdda006da887a37-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json diff --git a/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json b/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json new file mode 100644 index 0000000000..5b3e1c6e47 --- /dev/null +++ b/performance-results/2025-02-14T05:39:11Z-a8e00c32c112ccef5695b0427cdda006da887a37-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.404357283980617, + "scoreError" : 0.03521914452873535, + "scoreConfidence" : [ + 3.3691381394518816, + 3.439576428509352 + ], + "scorePercentiles" : { + "0.0" : 3.3966817360964723, + "50.0" : 3.40558944367229, + "90.0" : 3.4095685124814152, + "95.0" : 3.4095685124814152, + "99.0" : 3.4095685124814152, + "99.9" : 3.4095685124814152, + "99.99" : 3.4095685124814152, + "99.999" : 3.4095685124814152, + "99.9999" : 3.4095685124814152, + "100.0" : 3.4095685124814152 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3966817360964723, + 3.4055314796534444 + ], + [ + 3.4056474076911356, + 3.4095685124814152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7178122106916855, + "scoreError" : 0.01023832001786633, + "scoreConfidence" : [ + 1.7075738906738192, + 1.728050530709552 + ], + "scorePercentiles" : { + "0.0" : 1.7160908939955062, + "50.0" : 1.7177309775482787, + "90.0" : 1.7196959936746783, + "95.0" : 1.7196959936746783, + "99.0" : 1.7196959936746783, + "99.9" : 1.7196959936746783, + "99.99" : 1.7196959936746783, + "99.999" : 1.7196959936746783, + "99.9999" : 1.7196959936746783, + "100.0" : 1.7196959936746783 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7170217100517866, + 1.7196959936746783 + ], + [ + 1.7160908939955062, + 1.718440245044771 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.864719378037384, + "scoreError" : 0.008385695422045172, + "scoreConfidence" : [ + 0.8563336826153388, + 0.8731050734594291 + ], + "scorePercentiles" : { + "0.0" : 0.8635028724987689, + "50.0" : 0.8645279250288825, + "90.0" : 0.8663187895930019, + "95.0" : 0.8663187895930019, + "99.0" : 0.8663187895930019, + "99.9" : 0.8663187895930019, + "99.99" : 0.8663187895930019, + "99.999" : 0.8663187895930019, + "99.9999" : 0.8663187895930019, + "100.0" : 0.8663187895930019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8638420932589354, + 0.8663187895930019 + ], + [ + 0.8635028724987689, + 0.8652137567988297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 38.68765878419774, + "scoreError" : 1.3595024579632389, + "scoreConfidence" : [ + 37.3281563262345, + 40.047161242160975 + ], + "scorePercentiles" : { + "0.0" : 37.6176212727424, + "50.0" : 38.91625003504807, + "90.0" : 39.96719044176991, + "95.0" : 39.96719044176991, + "99.0" : 39.96719044176991, + "99.9" : 39.96719044176991, + "99.99" : 39.96719044176991, + "99.999" : 39.96719044176991, + "99.9999" : 39.96719044176991, + "100.0" : 39.96719044176991 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 38.07023523961371, + 37.6176212727424, + 37.7109409706809 + ], + [ + 38.23620460941478, + 39.22998086295451, + 38.91625003504807 + ], + [ + 39.96719044176991, + 39.195550172304046, + 39.244955453251286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02482110118000495, + "scoreError" : 0.0012491594771989168, + "scoreConfidence" : [ + 0.023571941702806035, + 0.026070260657203866 + ], + "scorePercentiles" : { + "0.0" : 0.02395586482057416, + "50.0" : 0.0250229317475, + "90.0" : 0.025947926660621762, + "95.0" : 0.025947926660621762, + "99.0" : 0.025947926660621762, + "99.9" : 0.025947926660621762, + "99.99" : 0.025947926660621762, + "99.999" : 0.025947926660621762, + "99.9999" : 0.025947926660621762, + "100.0" : 0.025947926660621762 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02557740179539642, + 0.02512524028822055, + 0.025947926660621762 + ], + [ + 0.0250229317475, + 0.025267129606060607, + 0.024533764960784313 + ], + [ + 0.02395586482057416, + 0.023976613050239234, + 0.023983037690647482 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From bb41cf36e0c1b2db8b2f203f881a16606ce519a4 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 15 Feb 2025 16:42:55 +1100 Subject: [PATCH 170/345] Quiet flaky test for now --- .../threadpools/ExecutorInstrumentationTest.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy index 4a4a453ce6..94453271f0 100644 --- a/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy @@ -125,6 +125,7 @@ class ExecutorInstrumentationTest extends Specification { observer.actions == ["FETCHING on FetchThread", "PROCESSING on ProcessingThread"] } + @Ignore("This test is flaky on GitHub pipelines") def "will execute on another thread and stay there without a processing executor"() { when: From 7f84526ef01fcd8d687b3219c7afbb6ed277e972 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 15 Feb 2025 16:56:00 +1100 Subject: [PATCH 171/345] Add import --- .../threadpools/ExecutorInstrumentationTest.groovy | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy index 94453271f0..eb70c9be98 100644 --- a/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy @@ -6,6 +6,7 @@ import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.DataFetchingEnvironmentImpl import graphql.schema.PropertyDataFetcher +import spock.lang.Ignore import spock.lang.Specification import java.util.concurrent.CompletableFuture From 2f8208fc860042ddd34399a1ebc12416c6fdedc5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Feb 2025 06:21:00 +0000 Subject: [PATCH 172/345] Add performance results for commit 2d740aad4b4e7264bdddbdfad1d38923544700db --- ...b4e7264bdddbdfad1d38923544700db-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json diff --git a/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json b/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json new file mode 100644 index 0000000000..6ac543c4fb --- /dev/null +++ b/performance-results/2025-02-15T06:20:41Z-2d740aad4b4e7264bdddbdfad1d38923544700db-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4170644521395346, + "scoreError" : 0.06948104475705158, + "scoreConfidence" : [ + 3.347583407382483, + 3.486545496896586 + ], + "scorePercentiles" : { + "0.0" : 3.4066504834553046, + "50.0" : 3.4162868626402703, + "90.0" : 3.4290335998222927, + "95.0" : 3.4290335998222927, + "99.0" : 3.4290335998222927, + "99.9" : 3.4290335998222927, + "99.99" : 3.4290335998222927, + "99.999" : 3.4290335998222927, + "99.9999" : 3.4290335998222927, + "100.0" : 3.4290335998222927 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.423139355195289, + 3.4290335998222927 + ], + [ + 3.4066504834553046, + 3.4094343700852514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7299781307919717, + "scoreError" : 0.007857454898446732, + "scoreConfidence" : [ + 1.722120675893525, + 1.7378355856904184 + ], + "scorePercentiles" : { + "0.0" : 1.7289438396262016, + "50.0" : 1.7297098953749621, + "90.0" : 1.7315488927917617, + "95.0" : 1.7315488927917617, + "99.0" : 1.7315488927917617, + "99.9" : 1.7315488927917617, + "99.99" : 1.7315488927917617, + "99.999" : 1.7315488927917617, + "99.9999" : 1.7315488927917617, + "100.0" : 1.7315488927917617 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7290956274732558, + 1.7303241632766684 + ], + [ + 1.7289438396262016, + 1.7315488927917617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8697467791753941, + "scoreError" : 0.0028323725711086665, + "scoreConfidence" : [ + 0.8669144066042854, + 0.8725791517465028 + ], + "scorePercentiles" : { + "0.0" : 0.8692196616762735, + "50.0" : 0.869817331270005, + "90.0" : 0.8701327924852931, + "95.0" : 0.8701327924852931, + "99.0" : 0.8701327924852931, + "99.9" : 0.8701327924852931, + "99.99" : 0.8701327924852931, + "99.999" : 0.8701327924852931, + "99.9999" : 0.8701327924852931, + "100.0" : 0.8701327924852931 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695531911766186, + 0.8700814713633914 + ], + [ + 0.8692196616762735, + 0.8701327924852931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 45.0549346381212, + "scoreError" : 0.848757856193997, + "scoreConfidence" : [ + 44.206176781927205, + 45.9036924943152 + ], + "scorePercentiles" : { + "0.0" : 44.68208621438223, + "50.0" : 44.738282881112745, + "90.0" : 45.76180661959652, + "95.0" : 45.76180661959652, + "99.0" : 45.76180661959652, + "99.9" : 45.76180661959652, + "99.99" : 45.76180661959652, + "99.999" : 45.76180661959652, + "99.9999" : 45.76180661959652, + "100.0" : 45.76180661959652 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.756697510251236, + 44.738282881112745, + 44.68208621438223 + ], + [ + 44.73782098292451, + 44.695078879626514, + 44.70247575123757 + ], + [ + 45.698962720374276, + 45.72120018358523, + 45.76180661959652 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022437348164506113, + "scoreError" : 9.210176860938199E-4, + "scoreConfidence" : [ + 0.021516330478412293, + 0.023358365850599933 + ], + "scorePercentiles" : { + "0.0" : 0.021832881671023964, + "50.0" : 0.022377403029082775, + "90.0" : 0.02315576094675926, + "95.0" : 0.02315576094675926, + "99.0" : 0.02315576094675926, + "99.9" : 0.02315576094675926, + "99.99" : 0.02315576094675926, + "99.999" : 0.02315576094675926, + "99.9999" : 0.02315576094675926, + "100.0" : 0.02315576094675926 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.021843250683406115, + 0.021832881671023964, + 0.02184149683187773 + ], + [ + 0.022377403029082775, + 0.022397466700223714, + 0.02235870547767857 + ], + [ + 0.022976684075688075, + 0.02315576094675926, + 0.023152484064814814 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 09f6a88c36affb1de56b3fe74b2a792b50ed941c Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 15 Feb 2025 20:31:54 +1100 Subject: [PATCH 173/345] Change default strict mode to true and give option to turn it off --- .../graphql/schema/idl/RuntimeWiring.java | 15 +++++++++++- .../graphql/schema/idl/TypeRuntimeWiring.java | 23 +++++++++++++++---- .../idl/errors/StrictModeWiringException.java | 2 +- 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/main/java/graphql/schema/idl/RuntimeWiring.java b/src/main/java/graphql/schema/idl/RuntimeWiring.java index 941ee9534c..ae66cb1edd 100644 --- a/src/main/java/graphql/schema/idl/RuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/RuntimeWiring.java @@ -183,7 +183,7 @@ public static class Builder { private final Map registeredDirectiveWiring = new LinkedHashMap<>(); private final List directiveWiring = new ArrayList<>(); private WiringFactory wiringFactory = new NoopWiringFactory(); - private boolean strictMode = false; + private boolean strictMode = true; private GraphqlFieldVisibility fieldVisibility = DEFAULT_FIELD_VISIBILITY; private GraphQLCodeRegistry codeRegistry = GraphQLCodeRegistry.newCodeRegistry().build(); private GraphqlTypeComparatorRegistry comparatorRegistry = GraphqlTypeComparatorRegistry.AS_IS_REGISTRY; @@ -192,11 +192,24 @@ private Builder() { ScalarInfo.GRAPHQL_SPECIFICATION_SCALARS.forEach(this::scalar); } + /** + * This sets strict mode as true or false. If strictMode is true, if things get defined twice, for example, it will throw a {@link StrictModeWiringException}. + * + * @return this builder + */ + public Builder strictMode(boolean strictMode) { + this.strictMode = strictMode; + return this; + } + /** * This puts the builder into strict mode, so if things get defined twice, for example, it will throw a {@link StrictModeWiringException}. * * @return this builder + * + * @deprecated strictMode default value changed to true, use {@link #strictMode(boolean)} instead */ + @Deprecated(since = "2025-02-15", forRemoval = true) public Builder strictMode() { this.strictMode = true; return this; diff --git a/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java b/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java index 5e2e333cef..bd6b3df609 100644 --- a/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java @@ -16,21 +16,20 @@ /** * A type runtime wiring is a specification of the data fetchers and possible type resolver for a given type name. - * + *
    * This is used by {@link RuntimeWiring} to wire together a functional {@link GraphQLSchema} */ @PublicApi public class TypeRuntimeWiring { - private final static AtomicBoolean DEFAULT_STRICT_MODE = new AtomicBoolean(false); + private final static AtomicBoolean DEFAULT_STRICT_MODE = new AtomicBoolean(true); /** - * By default {@link TypeRuntimeWiring} builders are not in strict mode, but you can set a JVM wide value - * so that any created will be. + * By default {@link TypeRuntimeWiring} builders are in strict mode, but you can set a JVM wide value too * * @param strictMode the desired strict mode state * - * @see Builder#strictMode() + * @see Builder#strictMode(boolean) */ public static void setStrictModeJvmWide(boolean strictMode) { DEFAULT_STRICT_MODE.set(strictMode); @@ -127,6 +126,20 @@ public Builder typeName(String typeName) { * * @return this builder */ + public Builder strictMode(boolean strictMode) { + this.strictMode = strictMode; + return this; + } + + /** + * This puts the builder into strict mode, so if things get defined twice, for example, it + * will throw a {@link StrictModeWiringException}. + * + * @return this builder + * + * @deprecated use {@link #strictMode(boolean)} instead + */ + @Deprecated(since = "2025-02-15", forRemoval = true) public Builder strictMode() { this.strictMode = true; return this; diff --git a/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java b/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java index 6da6b637fc..4c92bffd6d 100644 --- a/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java +++ b/src/main/java/graphql/schema/idl/errors/StrictModeWiringException.java @@ -6,7 +6,7 @@ import graphql.schema.idl.TypeRuntimeWiring; /** - * An exception that is throw when {@link RuntimeWiring.Builder#strictMode()} or {@link TypeRuntimeWiring.Builder#strictMode()} is true and + * An exception that is throw when {@link RuntimeWiring.Builder#strictMode(boolean)} or {@link TypeRuntimeWiring.Builder#strictMode(boolean)} is true and * something gets redefined. */ @PublicApi From d28e95a6e8c6fbd29125b668fc334e723b586ec9 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 15 Feb 2025 20:32:34 +1100 Subject: [PATCH 174/345] Add tests for new default behaviour --- .../schema/idl/RuntimeWiringTest.groovy | 77 ++++++++++++++----- .../schema/idl/TypeRuntimeWiringTest.groovy | 45 +++++------ 2 files changed, 80 insertions(+), 42 deletions(-) diff --git a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy index 907d89a1bf..8a7e109608 100644 --- a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy +++ b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy @@ -193,7 +193,7 @@ class RuntimeWiringTest extends Specification { newWiring.fieldVisibility == fieldVisibility } - def "strict mode can stop certain redefinitions"() { + def "strict mode, on by default, can stop certain redefinitions"() { DataFetcher DF1 = env -> "x" DataFetcher DF2 = env -> "x" TypeResolver TR1 = env -> null @@ -201,7 +201,6 @@ class RuntimeWiringTest extends Specification { when: RuntimeWiring.newRuntimeWiring() - .strictMode() .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF1)) @@ -212,7 +211,6 @@ class RuntimeWiringTest extends Specification { when: RuntimeWiring.newRuntimeWiring() - .strictMode() .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) @@ -222,7 +220,6 @@ class RuntimeWiringTest extends Specification { when: RuntimeWiring.newRuntimeWiring() - .strictMode() .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) then: @@ -231,7 +228,6 @@ class RuntimeWiringTest extends Specification { when: RuntimeWiring.newRuntimeWiring() - .strictMode() .scalar(Scalars.GraphQLString) then: def e4 = thrown(StrictModeWiringException) @@ -239,7 +235,6 @@ class RuntimeWiringTest extends Specification { when: TypeRuntimeWiring.newTypeWiring("Foo") - .strictMode() .defaultDataFetcher(DF1) .defaultDataFetcher(DF2) @@ -248,34 +243,80 @@ class RuntimeWiringTest extends Specification { e5.message == "The type Foo has already has a default data fetcher defined" } - def "overwrite default data fetchers if they are null"() { - + def "strict mode, if set to off, won't stop certain redefinitions"() { DataFetcher DF1 = env -> "x" DataFetcher DF2 = env -> "x" - DataFetcher DEFAULT_DF = env -> null - DataFetcher DEFAULT_DF2 = env -> null + TypeResolver TR1 = env -> null + EnumValuesProvider EVP1 = name -> null when: - def runtimeWiring = RuntimeWiring.newRuntimeWiring() - .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF)) + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) - .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF2)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF1)) + .build() + + then: + noExceptionThrown() + runtimeWiring1.getDataFetchers().get("Foo").get("bar") == DF1 + + when: + def runtimeWiring2 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .build() + + then: + noExceptionThrown() + runtimeWiring2.typeResolvers.get("Foo") == TR1 + + when: + def runtimeWiring3 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .build() + + then: + noExceptionThrown() + runtimeWiring3.getEnumValuesProviders().get("Foo") == EVP1 + + when: + def runtimeWiring4 = RuntimeWiring.newRuntimeWiring() + .strictMode(false) + .scalar(Scalars.GraphQLString) .build() then: - runtimeWiring.getDefaultDataFetcherForType("Foo") == DEFAULT_DF + noExceptionThrown() + runtimeWiring4.scalars.get("String") == Scalars.GraphQLString when: - runtimeWiring = RuntimeWiring.newRuntimeWiring() + def typeRuntimeWiring = TypeRuntimeWiring.newTypeWiring("Foo") + .strictMode(false) + .defaultDataFetcher(DF1) + .defaultDataFetcher(DF2) + .build() + + then: + noExceptionThrown() + typeRuntimeWiring.defaultDataFetcher == DF2 + } + + def "if new type runtime wiring has default data fetcher only, the last one will be used"() { + DataFetcher DEFAULT_DF = env -> "x" + DataFetcher DEFAULT_DF2 = env -> "y" + + when: + def runtimeWiring = RuntimeWiring.newRuntimeWiring() .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF)) - .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) - .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF2)) // we can specifically overwrite it later .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF2)) .build() then: + noExceptionThrown() runtimeWiring.getDefaultDataFetcherForType("Foo") == DEFAULT_DF2 - } } diff --git a/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy index 2a833ace22..006258cdb3 100644 --- a/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy +++ b/src/test/groovy/graphql/schema/idl/TypeRuntimeWiringTest.groovy @@ -7,42 +7,41 @@ import spock.lang.Specification class TypeRuntimeWiringTest extends Specification { void setup() { - TypeRuntimeWiring.setStrictModeJvmWide(false) + TypeRuntimeWiring.setStrictModeJvmWide(true) } void cleanup() { - TypeRuntimeWiring.setStrictModeJvmWide(false) + TypeRuntimeWiring.setStrictModeJvmWide(true) } DataFetcher DF1 = env -> "x" DataFetcher DF2 = env -> "y" - def "strict mode is off by default"() { + def "strict mode is on by default"() { when: - def typeRuntimeWiring = TypeRuntimeWiring.newTypeWiring("Foo") + TypeRuntimeWiring.newTypeWiring("Foo") .dataFetcher("foo", DF1) .dataFetcher("foo", DF2) .build() then: - typeRuntimeWiring.getFieldDataFetchers().get("foo") == DF2 + def e = thrown(StrictModeWiringException) + e.message == "The field foo already has a data fetcher defined" } - def "strict mode can be turned on"() { + def "strict mode can be turned off"() { when: - TypeRuntimeWiring.newTypeWiring("Foo") - .strictMode() + def typeRuntimeWiring = TypeRuntimeWiring.newTypeWiring("Foo") + .strictMode(false) .dataFetcher("foo", DF1) .dataFetcher("foo", DF2) .build() then: - def e = thrown(StrictModeWiringException) - e.message == "The field foo already has a data fetcher defined" + typeRuntimeWiring.getFieldDataFetchers().get("foo") == DF2 } - def "strict mode can be turned on for maps of fields"() { + def "strict mode, on by default, works for maps of fields"() { when: TypeRuntimeWiring.newTypeWiring("Foo") - .strictMode() .dataFetcher("foo", DF1) .dataFetchers(["foo": DF2]) .build() @@ -51,17 +50,14 @@ class TypeRuntimeWiringTest extends Specification { e.message == "The field foo already has a data fetcher defined" } - def "strict mode can be turned on JVM wide"() { - - + def "strict mode can be turned off and on JVM wide"() { when: def inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() then: - !inStrictMode - + inStrictMode when: - TypeRuntimeWiring.setStrictModeJvmWide(true) + TypeRuntimeWiring.setStrictModeJvmWide(false) inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() TypeRuntimeWiring.newTypeWiring("Foo") @@ -69,20 +65,21 @@ class TypeRuntimeWiringTest extends Specification { .dataFetcher("foo", DF2) .build() then: - inStrictMode - def e = thrown(StrictModeWiringException) - e.message == "The field foo already has a data fetcher defined" + !inStrictMode + noExceptionThrown() when: - TypeRuntimeWiring.setStrictModeJvmWide(false) + TypeRuntimeWiring.setStrictModeJvmWide(true) inStrictMode = TypeRuntimeWiring.getStrictModeJvmWide() TypeRuntimeWiring.newTypeWiring("Foo") .dataFetcher("foo", DF1) .dataFetcher("foo", DF2) .build() + then: - !inStrictMode - noExceptionThrown() + inStrictMode + def e = thrown(StrictModeWiringException) + e.message == "The field foo already has a data fetcher defined" } } From bc45e3d0bd552cecda151013ff5531411660108c Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 15 Feb 2025 20:32:52 +1100 Subject: [PATCH 175/345] Update tests to not redefine types --- .../execution/ExecutionStepInfoTest.groovy | 6 ++-- ...eferExecutionSupportIntegrationTest.groovy | 32 +++++++++++-------- ...eCompaniesAndProductsDataLoaderTest.groovy | 5 +-- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy b/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy index 9fc34114a5..8dc7da1828 100644 --- a/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy @@ -160,8 +160,10 @@ class ExecutionStepInfoTest extends Specification { def runtimeWiring = newRuntimeWiring() .type(newTypeWiring("Query").dataFetcher("hero", samwiseDF)) - .type(newTypeWiring("User").dataFetcher("friends", friendsDF)) - .type(newTypeWiring("User").dataFetcher("mates", friendsDF)) + .type(newTypeWiring("User") + .dataFetcher("friends", friendsDF) + .dataFetcher("mates", friendsDF) + ) .build() def graphQL = TestUtil.graphQL(spec, runtimeWiring).build() diff --git a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy index 3f149a8ad5..c7a0893923 100644 --- a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy @@ -162,19 +162,25 @@ class DeferExecutionSupportIntegrationTest extends Specification { .dataFetcher("hello", resolve("world")) .dataFetcher("item", resolveItem()) ) - .type(newTypeWiring("Post").dataFetcher("summary", resolve("A summary", 10))) - .type(newTypeWiring("Post").dataFetcher("text", resolve("The full text", 100))) - .type(newTypeWiring("Post").dataFetcher("wordCount", resolve(45999, 10, true))) - .type(newTypeWiring("Post").dataFetcher("latestComment", resolve([title: "Comment title"], 10))) - .type(newTypeWiring("Post").dataFetcher("dataFetcherError", resolveWithException())) - .type(newTypeWiring("Post").dataFetcher("dataAndError", resolveWithDataAndError("data"))) - .type(newTypeWiring("Post").dataFetcher("coercionError", resolve("Not a number", 10))) - .type(newTypeWiring("Post").dataFetcher("typeMismatchError", resolve([a: "A Map instead of a List"], 10))) - .type(newTypeWiring("Post").dataFetcher("nonNullableError", resolve(null))) - .type(newTypeWiring("Page").dataFetcher("summary", resolve("A page summary", 10))) - .type(newTypeWiring("Page").dataFetcher("text", resolve("The page full text", 100))) - .type(newTypeWiring("Comment").dataFetcher("content", resolve("Full content", 100))) - .type(newTypeWiring("Comment").dataFetcher("author", resolve([name: "Author name"], 10))) + .type(newTypeWiring("Post") + .dataFetcher("summary", resolve("A summary", 10)) + .dataFetcher("text", resolve("The full text", 100)) + .dataFetcher("wordCount", resolve(45999, 10, true)) + .dataFetcher("latestComment", resolve([title: "Comment title"], 10)) + .dataFetcher("dataFetcherError", resolveWithException()) + .dataFetcher("dataAndError", resolveWithDataAndError("data")) + .dataFetcher("coercionError", resolve("Not a number", 10)) + .dataFetcher("typeMismatchError", resolve([a: "A Map instead of a List"], 10)) + .dataFetcher("nonNullableError", resolve(null)) + ) + .type(newTypeWiring("Page") + .dataFetcher("summary", resolve("A page summary", 10)) + .dataFetcher("text", resolve("The page full text", 100)) + ) + .type(newTypeWiring("Comment") + .dataFetcher("content", resolve("Full content", 100)) + .dataFetcher("author", resolve([name: "Author name"], 10)) + ) .type(newTypeWiring("Person").dataFetcher("avatar", resolve("Avatar image", 100))) .type(newTypeWiring("Mutation") .dataFetcher("addPost", resolve([id: "1001"])) diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy index 70bad946b0..aa52cb6d14 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy @@ -133,8 +133,9 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { RuntimeWiring runtimeWiring = newRuntimeWiring() .type("QueryType", { builder -> builder.dataFetcher("products", productsDF) }) - .type("Product", { builder -> builder.dataFetcher("suppliedBy", suppliedByDF) }) - .type("Product", { builder -> builder.dataFetcher("madeBy", madeByDF) }) + .type("Product", { builder -> builder + .dataFetcher("suppliedBy", suppliedByDF) + .dataFetcher("madeBy", madeByDF) }) .type("Person", { builder -> builder.dataFetcher("company", companyDF) }) .build() From e0b2c27cbeb700054ff621c3f135ac3b18cdf9fc Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 15 Feb 2025 21:07:48 +1100 Subject: [PATCH 176/345] Cover case where default datafetcher is redefined --- .../graphql/schema/idl/RuntimeWiring.java | 3 +++ .../schema/idl/RuntimeWiringTest.groovy | 21 ++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/graphql/schema/idl/RuntimeWiring.java b/src/main/java/graphql/schema/idl/RuntimeWiring.java index ae66cb1edd..3e8ee84cfa 100644 --- a/src/main/java/graphql/schema/idl/RuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/RuntimeWiring.java @@ -320,6 +320,9 @@ public Builder type(TypeRuntimeWiring typeRuntimeWiring) { DataFetcher defaultDataFetcher = typeRuntimeWiring.getDefaultDataFetcher(); if (defaultDataFetcher != null) { + if (strictMode && defaultDataFetchers.containsKey(typeName)) { + throw new StrictModeWiringException(format("The type %s already has a default data fetcher defined", typeName)); + } defaultDataFetchers.put(typeName, defaultDataFetcher); } diff --git a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy index 8a7e109608..9a609194b7 100644 --- a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy +++ b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy @@ -304,19 +304,30 @@ class RuntimeWiringTest extends Specification { typeRuntimeWiring.defaultDataFetcher == DF2 } - def "if new type runtime wiring has default data fetcher only, the last one will be used"() { + def "when strict mode on, do not allow default data fetcher redefinition"() { + DataFetcher DF1 = env -> "w" DataFetcher DEFAULT_DF = env -> "x" DataFetcher DEFAULT_DF2 = env -> "y" + // Having a datafetcher and a default for the type is ok when: - def runtimeWiring = RuntimeWiring.newRuntimeWiring() + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .build() + + then: + runtimeWiring1.getDefaultDataFetcherForType("Foo") == DEFAULT_DF + + // Do not permit redefinition of the default datafetcher + when: + RuntimeWiring.newRuntimeWiring() .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF)) - // we can specifically overwrite it later .type(TypeRuntimeWiring.newTypeWiring("Foo").defaultDataFetcher(DEFAULT_DF2)) .build() then: - noExceptionThrown() - runtimeWiring.getDefaultDataFetcherForType("Foo") == DEFAULT_DF2 + def error = thrown(StrictModeWiringException) + error.message == "The type Foo already has a default data fetcher defined" } } From 9f7eb5345dadde927fcf88603861361b4a3eda17 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Feb 2025 11:40:02 +1100 Subject: [PATCH 177/345] Add new add directives method which doesn't clear the existing directives --- ...GraphqlDirectivesContainerTypeBuilder.java | 44 ++++++++++++++++++- ...SchemaGeneratorAppliedDirectiveHelper.java | 2 +- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java index b9db03ebb0..69eae23d3b 100644 --- a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java +++ b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java @@ -22,6 +22,33 @@ public B replaceAppliedDirectives(List directives) { return (B) this; } + public B addAppliedDirectives(GraphQLAppliedDirective... directives) { + assertNotNull(directives, () -> "directives can't be null"); + for (GraphQLAppliedDirective directive : directives) { + withAppliedDirective(directive); + } + return (B) this; + } + + public B addAppliedDirective(GraphQLAppliedDirective directive) { + assertNotNull(directive, () -> "directive can't be null"); + this.appliedDirectives.add(directive); + return (B) this; + } + + public B addAppliedDirective(GraphQLAppliedDirective.Builder builder) { + return addAppliedDirective(builder.build()); + } + + /** + * @param directives the variable args of directives + * + * @return this builder + * + * @deprecated - use {@link #replaceAppliedDirectives(List)} to clear and replace directives, + * or {@link #addAppliedDirectives(GraphQLAppliedDirective...)} to add directives without clearing the existing ones + */ + @Deprecated(since = "2025-02-16", forRemoval = true) public B withAppliedDirectives(GraphQLAppliedDirective... directives) { assertNotNull(directives, () -> "directives can't be null"); this.appliedDirectives.clear(); @@ -31,17 +58,32 @@ public B withAppliedDirectives(GraphQLAppliedDirective... directives) { return (B) this; } + /** + * @param directive the directive to add + * + * @return this builder + * + * @deprecated - use {@link #addAppliedDirective(GraphQLAppliedDirective)} instead + */ + @Deprecated(since = "2025-02-16", forRemoval = true) public B withAppliedDirective(GraphQLAppliedDirective directive) { assertNotNull(directive, () -> "directive can't be null"); this.appliedDirectives.add(directive); return (B) this; } + /** + * @param builder the directive builder + * + * @return this builder + * + * @deprecated - use {@link #addAppliedDirective(GraphQLAppliedDirective.Builder)} instead + */ + @Deprecated(since = "2025-02-16", forRemoval = true) public B withAppliedDirective(GraphQLAppliedDirective.Builder builder) { return withAppliedDirectives(builder.build()); } - /** * @param directives the list of directives * diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java index 7a98b46078..d5cae678b8 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java @@ -50,7 +50,7 @@ static void buildAppliedDirectives(SchemaGeneratorHelper.BuildContext buildCtx, } } for (GraphQLAppliedDirective appliedDirective : appliedDirectives.second) { - builder.withAppliedDirective(appliedDirective); + builder.addAppliedDirective(appliedDirective); } } From b02e379c4e15d3c3268c98e42f4923aae8813437 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Feb 2025 11:52:40 +1100 Subject: [PATCH 178/345] Update tests to use new methods whilst retaining some legacy tests for coverage --- ...GraphqlDirectivesContainerTypeBuilder.java | 3 +- .../execution/ValuesResolverTest.groovy | 24 ++-- .../graphql/schema/GraphQLArgumentTest.groovy | 2 +- .../schema/GraphQLInputObjectTypeTest.groovy | 2 +- .../SchemaPrinterComparatorsTest.groovy | 135 ++++++++++-------- .../graphql/schema/SchemaTraverserTest.groovy | 25 +++- .../schema/idl/SchemaPrinterTest.groovy | 4 +- ...dVisibilitySchemaTransformationTest.groovy | 6 +- .../validation/SpecValidationSchema.java | 2 +- .../validation/ValidationUtilTest.groovy | 4 +- 10 files changed, 120 insertions(+), 87 deletions(-) diff --git a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java index 69eae23d3b..fb740fadc9 100644 --- a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java +++ b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java @@ -7,7 +7,6 @@ import static graphql.Assert.assertNotNull; -@SuppressWarnings("unchecked") @Internal public abstract class GraphqlDirectivesContainerTypeBuilder, BASE extends GraphqlTypeBuilder> extends GraphqlTypeBuilder { @@ -25,7 +24,7 @@ public B replaceAppliedDirectives(List directives) { public B addAppliedDirectives(GraphQLAppliedDirective... directives) { assertNotNull(directives, () -> "directives can't be null"); for (GraphQLAppliedDirective directive : directives) { - withAppliedDirective(directive); + addAppliedDirective(directive); } return (B) this; } diff --git a/src/test/groovy/graphql/execution/ValuesResolverTest.groovy b/src/test/groovy/graphql/execution/ValuesResolverTest.groovy index 97af997047..24a784b665 100644 --- a/src/test/groovy/graphql/execution/ValuesResolverTest.groovy +++ b/src/test/groovy/graphql/execution/ValuesResolverTest.groovy @@ -100,7 +100,7 @@ class ValuesResolverTest extends Specification { .type(GraphQLString) def inputType = newInputObject() .name("Person") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(aField) .field(bField) .build() @@ -418,7 +418,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -498,7 +498,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def oneOfObjectType = newInputObject() .name("OneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -588,7 +588,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def oneOfObjectType = newInputObject() .name("OneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -636,7 +636,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -677,7 +677,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -738,7 +738,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -792,7 +792,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -853,7 +853,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -914,7 +914,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -962,7 +962,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -1010,7 +1010,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) diff --git a/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy b/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy index a957b25425..5e2d446c61 100644 --- a/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy @@ -231,7 +231,7 @@ class GraphQLArgumentTest extends Specification { def field = newFieldDefinition() .name("hello") .type(GraphQLString) - .withAppliedDirective(directive.toAppliedDirective()) + .addAppliedDirective(directive.toAppliedDirective()) .build() when: newSchema() diff --git a/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy index 9ad43412bf..009ae99bd9 100644 --- a/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy @@ -103,7 +103,7 @@ class GraphQLInputObjectTypeTest extends Specification { when: inputObjectType = newInputObject().name("TestInputObjectType") .field(newInputObjectField().name("NAME").type(GraphQLInt)) - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .build() then: inputObjectType.isOneOf() diff --git a/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy b/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy index 35ef8ab026..6898f71faa 100644 --- a/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy @@ -25,8 +25,9 @@ import static graphql.schema.idl.SchemaPrinter.Options.defaultOptions class SchemaPrinterComparatorsTest extends Specification { - def "scalarPrinter default comparator"() { + def "scalarPrinter default comparator legacy test"() { given: + // Remove this test when the legacy withAppliedDirectives is removed GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() @@ -41,12 +42,28 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) ''' } + def "scalarPrinter default comparator"() { + given: + GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .build() + + when: + def options = defaultOptions().includeScalarTypes(true) + def result = new SchemaPrinter(options).print(scalarType) + + then: + result == '''"TestScalar" +scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) +''' + } + def "enumPrinter default comparator"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: @@ -64,7 +81,7 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) def "unionPrinter default comparator"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() @@ -82,15 +99,15 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -111,15 +128,15 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a").build(), newInterface().name("bb").build()) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -139,13 +156,13 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -189,7 +206,7 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) def "scalarPrinter uses most specific registered comparators"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -210,7 +227,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "scalarPrinter uses least specific registered comparators"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -231,9 +248,9 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "enumPrinter uses most specific registered comparators"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: @@ -258,9 +275,9 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "enumPrinter uses least specific registered comparators"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: @@ -284,7 +301,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "unionPrinter uses most specific registered comparators"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() @@ -307,7 +324,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "unionPrinter uses least specific registered comparators"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() @@ -331,15 +348,15 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -367,15 +384,15 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -403,14 +420,14 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) - .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .type(GraphQLString).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -439,14 +456,14 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) - .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .type(GraphQLString).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -473,13 +490,13 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -505,13 +522,13 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -568,7 +585,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: def field = newFieldDefinition().name("field") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -587,7 +604,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: def field = newFieldDefinition().name("field") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -607,53 +624,53 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() GraphQLUnionType unionType = newUnionType().name("TestUnion") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() GraphQLEnumType enumType = newEnum().name("TestEnum") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLObjectType objectType = newObject().name("TestObjectType") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) - .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .type(GraphQLString).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLInterfaceType interfaceType = newInterface().name("TestInterfaceType") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLInputObjectType inputObjectType = newInputObject().name("TestInputObjectType") - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -738,7 +755,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "directive string when argument has no value"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withAppliedDirectives(mockDirectivesWithNoValueArguments("a", "bb")) + .addAppliedDirectives(mockDirectivesWithNoValueArguments("a", "bb")) .build() when: diff --git a/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy b/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy index f7a6fc8a9c..342684101c 100644 --- a/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy @@ -203,7 +203,7 @@ class SchemaTraverserTest extends Specification { .name("foo") .coercing(coercing) .withDirective(mkDirective("bar", DirectiveLocation.SCALAR)) - .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .addAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, scalarType) @@ -214,6 +214,23 @@ class SchemaTraverserTest extends Specification { } def "reachable object directive"() { + when: + def visitor = new GraphQLTestingVisitor() + def objectType = GraphQLObjectType.newObject() + .name("foo") + .withDirective(mkDirective("bar", DirectiveLocation.OBJECT)) + .addAppliedDirective(GraphQLAppliedDirective.newDirective() + .name("barApplied")) + .build() + new SchemaTraverser().depthFirst(visitor, objectType) + then: + visitor.getStack() == [ + "object: foo", "fallback: foo", "directive: bar", "fallback: bar", "appliedDirective: barApplied", "fallback: barApplied" + ] + } + + def "reachable object directive legacy test"() { + // Delete this test when we remove the legacy withAppliedDirective method when: def visitor = new GraphQLTestingVisitor() def objectType = GraphQLObjectType.newObject() @@ -236,7 +253,7 @@ class SchemaTraverserTest extends Specification { .name("foo") .type(Scalars.GraphQLString) .withDirective(mkDirective("bar", DirectiveLocation.FIELD_DEFINITION)) - .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .addAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, fieldDefinition) @@ -253,7 +270,7 @@ class SchemaTraverserTest extends Specification { .name("foo") .type(Scalars.GraphQLString) .withDirective(mkDirective("bar", DirectiveLocation.ARGUMENT_DEFINITION)) - .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .addAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, argument) @@ -269,7 +286,7 @@ class SchemaTraverserTest extends Specification { def interfaceType = GraphQLInterfaceType.newInterface() .name("foo") .withDirective(mkDirective("bar", DirectiveLocation.INTERFACE)) - .withAppliedDirective(GraphQLAppliedDirective.newDirective() + .addAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, interfaceType) diff --git a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy index 0d82101be4..34d9481f6b 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy @@ -2305,7 +2305,7 @@ type Query { .build() objType = newObject().name("obj").field({ - it.name("f").type(GraphQLString).withAppliedDirective(newAppliedDirective) + it.name("f").type(GraphQLString).addAppliedDirective(newAppliedDirective) }).build() result = new SchemaPrinter().print(objType) @@ -2326,7 +2326,7 @@ type Query { .build() GraphQLInputObjectType type = GraphQLInputObjectType.newInputObject().name("Person") - .field({ it.name("thisMustBeAPercentageSign").type(GraphQLString).withAppliedDirective(constraintAppliedDirective) }) + .field({ it.name("thisMustBeAPercentageSign").type(GraphQLString).addAppliedDirective(constraintAppliedDirective) }) .build() when: diff --git a/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy b/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy index 00b7edd505..f12e6326b8 100644 --- a/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy +++ b/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy @@ -945,7 +945,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("SuperSecretCustomerData")).withAppliedDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("SuperSecretCustomerData")).addAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() @@ -994,7 +994,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).withAppliedDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).addAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() @@ -1042,7 +1042,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).withAppliedDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).addAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() diff --git a/src/test/groovy/graphql/validation/SpecValidationSchema.java b/src/test/groovy/graphql/validation/SpecValidationSchema.java index 060a2399cd..0ad7d0a2df 100644 --- a/src/test/groovy/graphql/validation/SpecValidationSchema.java +++ b/src/test/groovy/graphql/validation/SpecValidationSchema.java @@ -190,7 +190,7 @@ public class SpecValidationSchema { public static final GraphQLInputObjectType oneOfInputType = GraphQLInputObjectType.newInputObject() .name("oneOfInputType") - .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(GraphQLInputObjectField.newInputObjectField() .name("a") .type(GraphQLString)) diff --git a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy index 251362b09a..96d8646c52 100644 --- a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy +++ b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy @@ -211,7 +211,7 @@ class ValidationUtilTest extends Specification { given: def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") - .withAppliedDirective(newDirective().name(OneOfDirective.getName())) + .addAppliedDirective(newDirective().name(OneOfDirective.getName())) .field(GraphQLInputObjectField.newInputObjectField() .name("f1") .type(GraphQLString)) @@ -231,7 +231,7 @@ class ValidationUtilTest extends Specification { given: def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") - .withAppliedDirective(newDirective().name(OneOfDirective.getName())) + .addAppliedDirective(newDirective().name(OneOfDirective.getName())) .field(GraphQLInputObjectField.newInputObjectField() .name("f1") .type(GraphQLString)) From fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6 Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Sun, 16 Feb 2025 14:22:17 +1100 Subject: [PATCH 179/345] Added the ability to parse our ExecutionResult from a map that came from toSpecification (#3820) * Added the ability to parse our ExecutionResult from a map that came from toSpecification * Added the ability to parse our ExecutionResult from a map that came from toSpecification - test fix up --- src/main/java/graphql/ExecutionResult.java | 10 +++ .../java/graphql/ExecutionResultImpl.java | 18 +++++ src/main/java/graphql/GraphQLError.java | 11 +++ src/main/java/graphql/GraphqlErrorHelper.java | 68 +++++++++++++++++-- .../graphql/ExecutionResultImplTest.groovy | 41 +++++++++-- .../graphql/GraphqlErrorHelperTest.groovy | 48 +++++++++++++ 6 files changed, 185 insertions(+), 11 deletions(-) diff --git a/src/main/java/graphql/ExecutionResult.java b/src/main/java/graphql/ExecutionResult.java index 4870144fe5..f2e94765bb 100644 --- a/src/main/java/graphql/ExecutionResult.java +++ b/src/main/java/graphql/ExecutionResult.java @@ -56,6 +56,16 @@ public interface ExecutionResult { */ Map toSpecification(); + /** + * This allows you to turn a map of results from {@link #toSpecification()} and turn it back into a {@link ExecutionResult} + * + * @param specificationMap the specification result map + * + * @return a new {@link ExecutionResult} from that map + */ + static ExecutionResult fromSpecification(Map specificationMap) { + return ExecutionResultImpl.fromSpecification(specificationMap); + } /** * This helps you transform the current {@link ExecutionResult} object into another one by starting a builder with all diff --git a/src/main/java/graphql/ExecutionResultImpl.java b/src/main/java/graphql/ExecutionResultImpl.java index 62419a63a7..d39dbda157 100644 --- a/src/main/java/graphql/ExecutionResultImpl.java +++ b/src/main/java/graphql/ExecutionResultImpl.java @@ -97,6 +97,24 @@ private Object errorsToSpec(List errors) { return map(errors, GraphQLError::toSpecification); } + @SuppressWarnings("unchecked") + static ExecutionResult fromSpecification(Map specificationMap) { + ExecutionResult.Builder builder = ExecutionResult.newExecutionResult(); + Object data = specificationMap.get("data"); + if (data != null) { + builder.data(data); + } + List> errors = (List>) specificationMap.get("errors"); + if (errors != null) { + builder.errors(GraphqlErrorHelper.fromSpecification(errors)); + } + Map extensions = (Map) specificationMap.get("extensions"); + if (extensions != null) { + builder.extensions(extensions); + } + return builder.build(); + } + @Override public String toString() { return "ExecutionResultImpl{" + diff --git a/src/main/java/graphql/GraphQLError.java b/src/main/java/graphql/GraphQLError.java index c18752b14a..7079d7579a 100644 --- a/src/main/java/graphql/GraphQLError.java +++ b/src/main/java/graphql/GraphQLError.java @@ -70,6 +70,17 @@ default Map getExtensions() { return null; } + /** + * This can be called to turn a specification error map into {@link GraphQLError} + * + * @param specificationMap the map of values that should have come via {@link GraphQLError#toSpecification()} + * + * @return a {@link GraphQLError} + */ + static GraphQLError fromSpecification(Map specificationMap) { + return GraphqlErrorHelper.fromSpecification(specificationMap); + } + /** * @return a new builder of {@link GraphQLError}s */ diff --git a/src/main/java/graphql/GraphqlErrorHelper.java b/src/main/java/graphql/GraphqlErrorHelper.java index f613547565..8dd8773d47 100644 --- a/src/main/java/graphql/GraphqlErrorHelper.java +++ b/src/main/java/graphql/GraphqlErrorHelper.java @@ -2,10 +2,12 @@ import graphql.language.SourceLocation; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; import static graphql.collect.ImmutableKit.mapAndDropNulls; @@ -13,7 +15,7 @@ * This little helper allows GraphQlErrors to implement * common things (hashcode/ equals ) and to specification more easily */ -@SuppressWarnings("SimplifiableIfStatement") +@SuppressWarnings({"SimplifiableIfStatement", "unchecked"}) @Internal public class GraphqlErrorHelper { @@ -55,11 +57,12 @@ public static Object locations(List locations) { } /** - * Positive integers starting from 1 required for error locations, - * from the spec ... + * Positive integers starting from 1 required for error locations, + * from the spec ... * * @param location the source location in play - * @return a value for source location of the error + * + * @return a value for source location of the error */ public static Object location(SourceLocation location) { int line = location.getLine(); @@ -70,6 +73,59 @@ public static Object location(SourceLocation location) { return Map.of("line", line, "column", column); } + static List fromSpecification(List> specificationMaps) { + return specificationMaps.stream() + .map(GraphqlErrorHelper::fromSpecification).collect(Collectors.toList()); + } + + static GraphQLError fromSpecification(Map specificationMap) { + GraphQLError.Builder errorBuilder = GraphQLError.newError(); + // builder will enforce not null message + errorBuilder.message((String) specificationMap.get("message")); + extractLocations(errorBuilder, specificationMap); + extractPath(errorBuilder, specificationMap); + extractExtensions(errorBuilder, specificationMap); + return errorBuilder.build(); + } + + private static void extractPath(GraphQLError.Builder errorBuilder, Map rawError) { + List path = (List) rawError.get("path"); + if (path != null) { + errorBuilder.path(path); + } + } + + private static void extractExtensions(GraphQLError.Builder errorBuilder, Map rawError) { + Map extensions = (Map) rawError.get("extensions"); + if (extensions != null) { + errorBuilder.extensions(extensions); + Object classification = extensions.get("classification"); + if (classification != null) { + ErrorClassification errorClassification = ErrorClassification.errorClassification((String) classification); + errorBuilder.errorType(errorClassification); + } + } + + } + + private static void extractLocations(GraphQLError.Builder errorBuilder, Map rawError) { + List locations = (List) rawError.get("locations"); + if (locations != null) { + List sourceLocations = new ArrayList<>(); + for (Object locationObj : locations) { + Map location = (Map) locationObj; + if (location != null) { + Integer line = (Integer) location.get("line"); + Integer column = (Integer) location.get("column"); + if (line != null && column != null) { + sourceLocations.add(new SourceLocation(line, column)); + } + } + } + errorBuilder.locations(sourceLocations); + } + } + public static int hashCode(GraphQLError dis) { int result = 1; result = 31 * result + Objects.hashCode(dis.getMessage()); @@ -83,7 +139,9 @@ public static boolean equals(GraphQLError dis, Object o) { if (dis == o) { return true; } - if (o == null || dis.getClass() != o.getClass()) return false; + if (o == null || dis.getClass() != o.getClass()) { + return false; + } GraphQLError dat = (GraphQLError) o; diff --git a/src/test/groovy/graphql/ExecutionResultImplTest.groovy b/src/test/groovy/graphql/ExecutionResultImplTest.groovy index a1bb59e2a5..8b8894cca3 100644 --- a/src/test/groovy/graphql/ExecutionResultImplTest.groovy +++ b/src/test/groovy/graphql/ExecutionResultImplTest.groovy @@ -176,29 +176,58 @@ class ExecutionResultImplTest extends Specification { def "test setting extensions"() { given: - def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS,null) + def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS, null) - def er = ExecutionResultImpl.newExecutionResult().from(startEr).extensions([ext1:"here"]).build() + def er = ExecutionResultImpl.newExecutionResult().from(startEr).extensions([ext1: "here"]).build() when: def extensions = er.getExtensions() then: - extensions == [ext1:"here"] + extensions == [ext1: "here"] } def "test adding extension"() { given: - def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS,[ext1:"here"]) + def startEr = new ExecutionResultImpl("Some Data", KNOWN_ERRORS, [ext1: "here"]) - def er = ExecutionResultImpl.newExecutionResult().from(startEr).addExtension("ext2","aswell").build() + def er = ExecutionResultImpl.newExecutionResult().from(startEr).addExtension("ext2", "aswell").build() when: def extensions = er.getExtensions() then: - extensions == [ext1:"here", ext2 : "aswell"] + extensions == [ext1: "here", ext2: "aswell"] } + def "can parse out a map of to an ER"() { + when: + def map = [data: [f: "v"]] + def er = ExecutionResult.fromSpecification(map) + then: + er.data == [f: "v"] + er.extensions == null + er.errors.isEmpty() + + when: + // GraphqlErrorHelperTest is more extensive tests for error parsing which we will not repeat here + map = [errors: [[message: "m0"], [message: "m1"]]] + er = ExecutionResult.fromSpecification(map) + then: + er.data == null + er.extensions == null + !er.errors.isEmpty() + er.errors[0].message == "m0" + er.errors[1].message == "m1" + + when: + map = [data: [f: "v"], extensions: [ext1: "here", ext2: "and here"]] + er = ExecutionResult.fromSpecification(map) + then: + er.data == [f: "v"] + er.extensions == [ext1: "here", ext2: "and here"] + er.errors.isEmpty() + + } } diff --git a/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy b/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy index 88bfecb444..018c9f1577 100644 --- a/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy +++ b/src/test/groovy/graphql/GraphqlErrorHelperTest.groovy @@ -106,4 +106,52 @@ class GraphqlErrorHelperTest extends Specification { message : "has extensions" ] } + + def "can parse out a map and make an error"() { + when: + def rawError = [message: "m"] + def graphQLError = GraphqlErrorHelper.fromSpecification(rawError) + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType() == ErrorType.DataFetchingException // default from error builder + graphQLError.getLocations() == [] + graphQLError.getPath() == null + graphQLError.getExtensions() == null + + when: + rawError = [message: "m"] + graphQLError = GraphQLError.fromSpecification(rawError) // just so we reference the public method + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType() == ErrorType.DataFetchingException // default from error builder + graphQLError.getLocations() == [] + graphQLError.getPath() == null + graphQLError.getExtensions() == null + + when: + def extensionsMap = [attr1: "a1", attr2: "a2", classification: "CLASSIFICATION-X"] + rawError = [message: "m", path: ["a", "b"], locations: [[line: 2, column: 3]], extensions: extensionsMap] + graphQLError = GraphqlErrorHelper.fromSpecification(rawError) + + then: + graphQLError.getMessage() == "m" + graphQLError.getErrorType().toString() == "CLASSIFICATION-X" + graphQLError.getLocations() == [new SourceLocation(2, 3)] + graphQLError.getPath() == ["a", "b"] + graphQLError.getExtensions() == extensionsMap + + + when: "can do a list of errors" + def rawErrors = [[message: "m0"], [message: "m1"]] + def errors = GraphqlErrorHelper.fromSpecification(rawErrors) + then: + errors.size() == 2 + errors.eachWithIndex { GraphQLError gErr, int i -> + assert gErr.getMessage() == "m" + i + assert gErr.getErrorType() == ErrorType.DataFetchingException // default from error builder + assert gErr.getLocations() == [] + assert gErr.getPath() == null + assert gErr.getExtensions() == null + } + } } From 2e3c1b0e0c0dcfa682c6f49519abc662d4f52d99 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 16 Feb 2025 03:40:27 +0000 Subject: [PATCH 180/345] Add performance results for commit fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6 --- ...e7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json diff --git a/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json b/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json new file mode 100644 index 0000000000..40711a4f92 --- /dev/null +++ b/performance-results/2025-02-16T03:40:11Z-fc9c1336de7ab351d6cd6a68a43e8ee6b7876fb6-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4197378188044096, + "scoreError" : 0.04262561676864909, + "scoreConfidence" : [ + 3.3771122020357605, + 3.462363435573059 + ], + "scorePercentiles" : { + "0.0" : 3.4117117828701837, + "50.0" : 3.4198156241090585, + "90.0" : 3.4276082441293374, + "95.0" : 3.4276082441293374, + "99.0" : 3.4276082441293374, + "99.9" : 3.4276082441293374, + "99.99" : 3.4276082441293374, + "99.999" : 3.4276082441293374, + "99.9999" : 3.4276082441293374, + "100.0" : 3.4276082441293374 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418372884463662, + 3.4276082441293374 + ], + [ + 3.4117117828701837, + 3.421258363754455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.726255760607202, + "scoreError" : 0.0069887452082228844, + "scoreConfidence" : [ + 1.719267015398979, + 1.7332445058154249 + ], + "scorePercentiles" : { + "0.0" : 1.724942047136417, + "50.0" : 1.7262524899916596, + "90.0" : 1.7275760153090716, + "95.0" : 1.7275760153090716, + "99.0" : 1.7275760153090716, + "99.9" : 1.7275760153090716, + "99.99" : 1.7275760153090716, + "99.999" : 1.7275760153090716, + "99.9999" : 1.7275760153090716, + "100.0" : 1.7275760153090716 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7261109025806118, + 1.7263940774027073 + ], + [ + 1.724942047136417, + 1.7275760153090716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8695008952141935, + "scoreError" : 0.002839649770146112, + "scoreConfidence" : [ + 0.8666612454440474, + 0.8723405449843395 + ], + "scorePercentiles" : { + "0.0" : 0.8688932944831845, + "50.0" : 0.8695867203095606, + "90.0" : 0.8699368457544682, + "95.0" : 0.8699368457544682, + "99.0" : 0.8699368457544682, + "99.9" : 0.8699368457544682, + "99.99" : 0.8699368457544682, + "99.999" : 0.8699368457544682, + "99.9999" : 0.8699368457544682, + "100.0" : 0.8699368457544682 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688932944831845, + 0.869534969252187 + ], + [ + 0.8699368457544682, + 0.8696384713669342 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.79340737680421, + "scoreError" : 1.1283373708302868, + "scoreConfidence" : [ + 43.665070005973924, + 45.9217447476345 + ], + "scorePercentiles" : { + "0.0" : 44.22709764883389, + "50.0" : 44.37852960081133, + "90.0" : 45.72777210141981, + "95.0" : 45.72777210141981, + "99.0" : 45.72777210141981, + "99.9" : 45.72777210141981, + "99.99" : 45.72777210141981, + "99.999" : 45.72777210141981, + "99.9999" : 45.72777210141981, + "100.0" : 45.72777210141981 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.37103141816148, + 44.37808732974959, + 44.43775470829123 + ], + [ + 45.68653293043291, + 45.63986315460877, + 45.72777210141981 + ], + [ + 44.37852960081133, + 44.29399749892893, + 44.22709764883389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02254336100574041, + "scoreError" : 0.0014251861750202459, + "scoreConfidence" : [ + 0.021118174830720163, + 0.023968547180760656 + ], + "scorePercentiles" : { + "0.0" : 0.02140835029059829, + "50.0" : 0.022582479492099322, + "90.0" : 0.023531701548235293, + "95.0" : 0.023531701548235293, + "99.0" : 0.023531701548235293, + "99.9" : 0.023531701548235293, + "99.99" : 0.023531701548235293, + "99.999" : 0.023531701548235293, + "99.9999" : 0.023531701548235293, + "100.0" : 0.023531701548235293 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023531701548235293, + 0.02344455574941452, + 0.023488433495305164 + ], + [ + 0.021671676398268398, + 0.02140835029059829, + 0.021538914713978494 + ], + [ + 0.022566439108108106, + 0.022657698255656108, + 0.022582479492099322 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 0c0aecac771e3d540e64a32a5f3c9495f8833726 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Feb 2025 16:44:58 +1100 Subject: [PATCH 181/345] Add tests to demonstrate the change in behaviour --- .../AppliedDirectivesAreValidTest.groovy | 80 +++++++++++++++++-- 1 file changed, 75 insertions(+), 5 deletions(-) diff --git a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy index e5fd25747f..0e524dc2ae 100644 --- a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy +++ b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy @@ -1,8 +1,16 @@ package graphql.schema.validation import graphql.TestUtil +import graphql.schema.FieldCoordinates import spock.lang.Specification +import static graphql.Scalars.GraphQLString +import static graphql.TestUtil.mkDirective +import static graphql.introspection.Introspection.DirectiveLocation.FIELD_DEFINITION +import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition +import static graphql.schema.GraphQLObjectType.newObject +import static graphql.schema.GraphQLSchema.newSchema + class AppliedDirectivesAreValidTest extends Specification { def "non repeatable directives cannot be repeated"() { @@ -44,11 +52,73 @@ class AppliedDirectivesAreValidTest extends Specification { then: def schemaProblem = thrown(InvalidSchemaException) schemaProblem.getErrors().size() == 5 - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldC' is a non repeatable directive but has been applied 2 times"); - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldD' is a non repeatable directive but has been applied 2 times"); - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldA' is a non repeatable directive but has been applied 2 times"); - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLEnumValueDefinition' called 'enumA' is a non repeatable directive but has been applied 2 times"); - hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLInputObjectField' called 'inputFieldA' is a non repeatable directive but has been applied 2 times"); + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldC' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldD' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLFieldDefinition' called 'fieldA' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLEnumValueDefinition' called 'enumA' is a non repeatable directive but has been applied 2 times") + hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLInputObjectField' called 'inputFieldA' is a non repeatable directive but has been applied 2 times") + } + + def "add applied directive builders do not clear any existing applied directives"(){ + given: + def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) + def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .addAppliedDirectives(directive1.toAppliedDirective()) + .addAppliedDirectives(directive2.toAppliedDirective()) + .build() + + when: + def schema = newSchema() + .query( + newObject() + .name("Query") + .field(field) + .build() + ) + .additionalDirective(directive1) + .additionalDirective(directive2) + .build() + + then: + def fieldAppliedDirectives = schema.getFieldDefinition(FieldCoordinates.coordinates("Query", "hello")).getAppliedDirectives() + fieldAppliedDirectives.size() == 2 + fieldAppliedDirectives.any { it.name == "myDirectiveName1" } + fieldAppliedDirectives.any { it.name == "myDirectiveName2" } + } + + def "with applied directive builders do clear and replace existing applied directives"(){ + // Retain for test coverage. Delete after deprecated methods are removed + given: + def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) + def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) + def field = newFieldDefinition() + .name("hello") + .type(GraphQLString) + .withAppliedDirectives(directive1.toAppliedDirective()) + .withAppliedDirectives(directive2.toAppliedDirective()) + .build() + + when: + def schema = newSchema() + .query( + newObject() + .name("Query") + .field(field) + .build() + ) + .additionalDirective(directive1) + .additionalDirective(directive2) + .build() + + then: + // As prior applied directives are cleared, there is only 1 applied directive left on the field (directive container) + def fieldAppliedDirectives = schema.getFieldDefinition(FieldCoordinates.coordinates("Query", "hello")).getAppliedDirectives() + fieldAppliedDirectives.size() == 1 + fieldAppliedDirectives.find { it.name == "myDirectiveName1" } == null + fieldAppliedDirectives.any { it.name == "myDirectiveName2" } } static boolean hasError(InvalidSchemaException schemaException, String msg) { From d89e7376586264d1a7b759dfbeea28743da6718d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 17:05:10 +0000 Subject: [PATCH 182/345] Bump net.bytebuddy:byte-buddy-agent from 1.17.0 to 1.17.1 Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.17.0 to 1.17.1. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.0...byte-buddy-1.17.1) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 1197cf632e..73ee065367 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.17.0") + implementation("net.bytebuddy:byte-buddy-agent:1.17.1") testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 801fcf218fb7f573907a3b6874093a6999d264aa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 17:05:16 +0000 Subject: [PATCH 183/345] Bump net.bytebuddy:byte-buddy from 1.17.0 to 1.17.1 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.17.0 to 1.17.1. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.0...byte-buddy-1.17.1) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index e1f7abff64..e837eae06c 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.17.0") + implementation("net.bytebuddy:byte-buddy:1.17.1") // graphql-java itself implementation(rootProject) } From bd088a90eb4d987bddda5cb544f71d6de2febffc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 20:34:21 +0000 Subject: [PATCH 184/345] Add performance results for commit 1c40027a308e3a8034e8f2e168d2697e979e5c1b --- ...08e3a8034e8f2e168d2697e979e5c1b-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json diff --git a/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json b/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json new file mode 100644 index 0000000000..808a4a5fce --- /dev/null +++ b/performance-results/2025-02-17T20:34:06Z-1c40027a308e3a8034e8f2e168d2697e979e5c1b-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4206088887895985, + "scoreError" : 0.013042699082723508, + "scoreConfidence" : [ + 3.4075661897068747, + 3.433651587872322 + ], + "scorePercentiles" : { + "0.0" : 3.417984980421843, + "50.0" : 3.4207956154691894, + "90.0" : 3.4228593437981725, + "95.0" : 3.4228593437981725, + "99.0" : 3.4228593437981725, + "99.9" : 3.4228593437981725, + "99.99" : 3.4228593437981725, + "99.999" : 3.4228593437981725, + "99.9999" : 3.4228593437981725, + "100.0" : 3.4228593437981725 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4211136575072607, + 3.4228593437981725 + ], + [ + 3.417984980421843, + 3.420477573431118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7290954275461694, + "scoreError" : 0.014971146867698142, + "scoreConfidence" : [ + 1.7141242806784713, + 1.7440665744138675 + ], + "scorePercentiles" : { + "0.0" : 1.7268335612289947, + "50.0" : 1.728618007948021, + "90.0" : 1.732312133059641, + "95.0" : 1.732312133059641, + "99.0" : 1.732312133059641, + "99.9" : 1.732312133059641, + "99.99" : 1.732312133059641, + "99.999" : 1.732312133059641, + "99.9999" : 1.732312133059641, + "100.0" : 1.732312133059641 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7289210060678664, + 1.732312133059641 + ], + [ + 1.7268335612289947, + 1.7283150098281757 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691296924737124, + "scoreError" : 0.003217906230387458, + "scoreConfidence" : [ + 0.865911786243325, + 0.8723475987040998 + ], + "scorePercentiles" : { + "0.0" : 0.8685411985907953, + "50.0" : 0.8691692958613317, + "90.0" : 0.8696389795813908, + "95.0" : 0.8696389795813908, + "99.0" : 0.8696389795813908, + "99.9" : 0.8696389795813908, + "99.99" : 0.8696389795813908, + "99.999" : 0.8696389795813908, + "99.9999" : 0.8696389795813908, + "100.0" : 0.8696389795813908 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685411985907953, + 0.8694292003590817 + ], + [ + 0.8689093913635819, + 0.8696389795813908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.00002592220759, + "scoreError" : 1.0169729471967608, + "scoreConfidence" : [ + 42.98305297501083, + 45.016998869404354 + ], + "scorePercentiles" : { + "0.0" : 43.190621895015134, + "50.0" : 44.339727784246385, + "90.0" : 44.49859689249208, + "95.0" : 44.49859689249208, + "99.0" : 44.49859689249208, + "99.9" : 44.49859689249208, + "99.99" : 44.49859689249208, + "99.999" : 44.49859689249208, + "99.9999" : 44.49859689249208, + "100.0" : 44.49859689249208 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.296203523003136, + 44.3675733423135, + 44.339727784246385 + ], + [ + 44.433477192763355, + 44.47220710306538, + 44.49859689249208 + ], + [ + 43.190621895015134, + 43.195083051862106, + 43.2067425151073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022014991133773334, + "scoreError" : 7.270139507733344E-4, + "scoreConfidence" : [ + 0.021287977183, + 0.022742005084546667 + ], + "scorePercentiles" : { + "0.0" : 0.02151436482795699, + "50.0" : 0.021798280185185186, + "90.0" : 0.02263859209276018, + "95.0" : 0.02263859209276018, + "99.0" : 0.02263859209276018, + "99.9" : 0.02263859209276018, + "99.99" : 0.02263859209276018, + "99.999" : 0.02263859209276018, + "99.9999" : 0.02263859209276018, + "100.0" : 0.02263859209276018 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02176385843695652, + 0.021756122958695653, + 0.021755845339130435 + ], + [ + 0.021798280185185186, + 0.021809013647058822, + 0.02151436482795699 + ], + [ + 0.02263859209276018, + 0.022552278957207208, + 0.02254656375900901 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 6669c2035a983b1641544c06517726c31fba6de8 Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Tue, 18 Feb 2025 09:09:20 +1100 Subject: [PATCH 185/345] Fixed graphql.execution.UnknownOperationExceptionso that it does not escape (#3826) * Fixed bad operation exception so that it does not escape * Fixed bad operation exception so that it does not escape - extra test fix up --- .../java/graphql/execution/Execution.java | 23 +++++----- src/test/groovy/graphql/GraphQLTest.groovy | 44 +++++++++++++++++-- 2 files changed, 52 insertions(+), 15 deletions(-) diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index 2403e5294d..6a9f0a5c8e 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -21,13 +21,13 @@ import graphql.incremental.DelayedIncrementalPartialResult; import graphql.incremental.IncrementalExecutionResultImpl; import graphql.language.Document; -import graphql.language.FragmentDefinition; import graphql.language.NodeUtil; import graphql.language.OperationDefinition; import graphql.language.VariableDefinition; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.impl.SchemaUtil; +import org.jetbrains.annotations.NotNull; import org.reactivestreams.Publisher; import java.util.Collections; @@ -69,16 +69,11 @@ public Execution(ExecutionStrategy queryStrategy, public CompletableFuture execute(Document document, GraphQLSchema graphQLSchema, ExecutionId executionId, ExecutionInput executionInput, InstrumentationState instrumentationState) { - NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, executionInput.getOperationName()); - Map fragmentsByName = getOperationResult.fragmentsByName; - OperationDefinition operationDefinition = getOperationResult.operationDefinition; - - RawVariables inputVariables = executionInput.getRawVariables(); - List variableDefinitions = operationDefinition.getVariableDefinitions(); - + NodeUtil.GetOperationResult getOperationResult; CoercedVariables coercedVariables; try { - coercedVariables = ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); + getOperationResult = NodeUtil.getOperation(document, executionInput.getOperationName()); + coercedVariables = coerceVariableValues(graphQLSchema, executionInput, getOperationResult.operationDefinition); } catch (RuntimeException rte) { if (rte instanceof GraphQLError) { return completedFuture(new ExecutionResultImpl((GraphQLError) rte)); @@ -98,10 +93,10 @@ public CompletableFuture execute(Document document, GraphQLSche .graphQLContext(executionInput.getGraphQLContext()) .localContext(executionInput.getLocalContext()) .root(executionInput.getRoot()) - .fragmentsByName(fragmentsByName) + .fragmentsByName(getOperationResult.fragmentsByName) .coercedVariables(coercedVariables) .document(document) - .operationDefinition(operationDefinition) + .operationDefinition(getOperationResult.operationDefinition) .dataLoaderRegistry(executionInput.getDataLoaderRegistry()) .locale(executionInput.getLocale()) .valueUnboxer(valueUnboxer) @@ -117,6 +112,12 @@ public CompletableFuture execute(Document document, GraphQLSche return executeOperation(executionContext, executionInput.getRoot(), executionContext.getOperationDefinition()); } + private static @NotNull CoercedVariables coerceVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, OperationDefinition operationDefinition) { + RawVariables inputVariables = executionInput.getRawVariables(); + List variableDefinitions = operationDefinition.getVariableDefinitions(); + return ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); + } + private CompletableFuture executeOperation(ExecutionContext executionContext, Object root, OperationDefinition operationDefinition) { diff --git a/src/test/groovy/graphql/GraphQLTest.groovy b/src/test/groovy/graphql/GraphQLTest.groovy index 51b0fe9ce3..7b9c48ad7d 100644 --- a/src/test/groovy/graphql/GraphQLTest.groovy +++ b/src/test/groovy/graphql/GraphQLTest.groovy @@ -12,7 +12,6 @@ import graphql.execution.ExecutionContext import graphql.execution.ExecutionId import graphql.execution.ExecutionIdProvider import graphql.execution.ExecutionStrategyParameters -import graphql.execution.MissingRootTypeException import graphql.execution.ResultNodesInfo import graphql.execution.SubscriptionExecutionStrategy import graphql.execution.ValueUnboxer @@ -328,7 +327,7 @@ class GraphQLTest extends Specification { result.errors.size() == 0 } - def "document with two operations but no specified operation throws"() { + def "document with two operations but no specified operation does not throw"() { given: GraphQLSchema schema = newSchema().query( @@ -344,10 +343,12 @@ class GraphQLTest extends Specification { """ when: - GraphQL.newGraphQL(schema).build().execute(query) + def er = GraphQL.newGraphQL(schema).build().execute(query) then: - thrown(GraphQLException) + noExceptionThrown() + !er.errors.isEmpty() + er.errors[0].message.contains("Must provide operation name if query contains multiple operations") } def "null mutation type does not throw an npe but returns and error"() { @@ -1569,4 +1570,39 @@ many lines'''] er.data == [hello: [[name: "w1"], [name: "w2"], [name: "w3"]]] } + def "exceptions thrown are turned into graphql errors"() { + def sdl = """ + type Query { + f(arg : Boolean) : String + } + """ + + def graphQL = TestUtil.graphQL(sdl).build() + + when: + def ei = newExecutionInput("query badSyntax {").build() + def er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Invalid syntax with offending token") + + + when: + + ei = newExecutionInput('query badInput($varX : Boolean) { f(arg : $varX) }') + .variables([varX: "bad"]).build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Variable 'varX' has an invalid value") + + when: + + ei = newExecutionInput("query ok1 { f } query ok2 { f } ") + .operationName("X").build() + er = graphQL.execute(ei) + then: + !er.errors.isEmpty() + er.errors[0].message.contains("Unknown operation named 'X'") + } } From b0b35708a62c04f9f971d61262b8751366cb53c2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 22:25:07 +0000 Subject: [PATCH 186/345] Add performance results for commit 6669c2035a983b1641544c06517726c31fba6de8 --- ...a983b1641544c06517726c31fba6de8-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json diff --git a/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json b/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json new file mode 100644 index 0000000000..be9f5a784b --- /dev/null +++ b/performance-results/2025-02-17T22:24:53Z-6669c2035a983b1641544c06517726c31fba6de8-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4242633766606025, + "scoreError" : 0.018975601014235673, + "scoreConfidence" : [ + 3.405287775646367, + 3.443238977674838 + ], + "scorePercentiles" : { + "0.0" : 3.4212131355295408, + "50.0" : 3.423987593935866, + "90.0" : 3.427865183241137, + "95.0" : 3.427865183241137, + "99.0" : 3.427865183241137, + "99.9" : 3.427865183241137, + "99.99" : 3.427865183241137, + "99.999" : 3.427865183241137, + "99.9999" : 3.427865183241137, + "100.0" : 3.427865183241137 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4212131355295408, + 3.427865183241137 + ], + [ + 3.4226761215874024, + 3.42529906628433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7297100885344647, + "scoreError" : 0.012575602193575109, + "scoreConfidence" : [ + 1.7171344863408897, + 1.7422856907280397 + ], + "scorePercentiles" : { + "0.0" : 1.7269537146749794, + "50.0" : 1.7301797508085786, + "90.0" : 1.7315271378457233, + "95.0" : 1.7315271378457233, + "99.0" : 1.7315271378457233, + "99.9" : 1.7315271378457233, + "99.99" : 1.7315271378457233, + "99.999" : 1.7315271378457233, + "99.9999" : 1.7315271378457233, + "100.0" : 1.7315271378457233 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7269537146749794, + 1.730283069142333 + ], + [ + 1.730076432474824, + 1.7315271378457233 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8694133387568189, + "scoreError" : 8.350509859162894E-4, + "scoreConfidence" : [ + 0.8685782877709026, + 0.8702483897427352 + ], + "scorePercentiles" : { + "0.0" : 0.8692902387995611, + "50.0" : 0.8693866443860734, + "90.0" : 0.8695898274555681, + "95.0" : 0.8695898274555681, + "99.0" : 0.8695898274555681, + "99.9" : 0.8695898274555681, + "99.99" : 0.8695898274555681, + "99.999" : 0.8695898274555681, + "99.9999" : 0.8695898274555681, + "100.0" : 0.8695898274555681 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8693522182862535, + 0.8692902387995611 + ], + [ + 0.8695898274555681, + 0.8694210704858931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 44.351621241143484, + "scoreError" : 0.5953242229423784, + "scoreConfidence" : [ + 43.7562970182011, + 44.946945464085864 + ], + "scorePercentiles" : { + "0.0" : 43.77066626511391, + "50.0" : 44.366053527100796, + "90.0" : 44.87096788250905, + "95.0" : 44.87096788250905, + "99.0" : 44.87096788250905, + "99.9" : 44.87096788250905, + "99.99" : 44.87096788250905, + "99.999" : 44.87096788250905, + "99.9999" : 44.87096788250905, + "100.0" : 44.87096788250905 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.297296748606456, + 44.397303245644636, + 44.366053527100796 + ], + [ + 44.0500241243553, + 44.05602909596345, + 43.77066626511391 + ], + [ + 44.87096788250905, + 44.68165375318243, + 44.674596527815304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.022335216267832168, + "scoreError" : 5.743756954042363E-4, + "scoreConfidence" : [ + 0.02176084057242793, + 0.022909591963236404 + ], + "scorePercentiles" : { + "0.0" : 0.022069386140969163, + "50.0" : 0.02213912410619469, + "90.0" : 0.022815809872437358, + "95.0" : 0.022815809872437358, + "99.0" : 0.022815809872437358, + "99.9" : 0.022815809872437358, + "99.99" : 0.022815809872437358, + "99.999" : 0.022815809872437358, + "99.9999" : 0.022815809872437358, + "100.0" : 0.022815809872437358 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.02210124018763797, + 0.022075338872246695, + 0.022069386140969163 + ], + [ + 0.02275205906818182, + 0.022799795460136673, + 0.022815809872437358 + ], + [ + 0.022123397386313467, + 0.02213912410619469, + 0.02214079531637168 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 0f5a21f4284e658dbb8b0f59777b5df8d5e6840d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 21:00:56 +0000 Subject: [PATCH 187/345] Add performance results for commit a38c75c4e4a155ab2d88dfb1304971e61ee32aed --- ...4a155ab2d88dfb1304971e61ee32aed-jdk17.json | 287 ++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json diff --git a/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json b/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json new file mode 100644 index 0000000000..260e44a4d4 --- /dev/null +++ b/performance-results/2025-02-18T21:00:41Z-a38c75c4e4a155ab2d88dfb1304971e61ee32aed-jdk17.json @@ -0,0 +1,287 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4115822946692296, + "scoreError" : 0.02374031077593178, + "scoreConfidence" : [ + 3.387841983893298, + 3.4353226054451613 + ], + "scorePercentiles" : { + "0.0" : 3.4079551742814718, + "50.0" : 3.4109733124928603, + "90.0" : 3.4164273794097273, + "95.0" : 3.4164273794097273, + "99.0" : 3.4164273794097273, + "99.9" : 3.4164273794097273, + "99.99" : 3.4164273794097273, + "99.999" : 3.4164273794097273, + "99.9999" : 3.4164273794097273, + "100.0" : 3.4164273794097273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4097245690943745, + 3.4164273794097273 + ], + [ + 3.4079551742814718, + 3.4122220558913456 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.722694825573204, + "scoreError" : 0.009524342266229335, + "scoreConfidence" : [ + 1.7131704833069747, + 1.7322191678394332 + ], + "scorePercentiles" : { + "0.0" : 1.7205165151963069, + "50.0" : 1.7232566846012491, + "90.0" : 1.7237494178940111, + "95.0" : 1.7237494178940111, + "99.0" : 1.7237494178940111, + "99.9" : 1.7237494178940111, + "99.99" : 1.7237494178940111, + "99.999" : 1.7237494178940111, + "99.9999" : 1.7237494178940111, + "100.0" : 1.7237494178940111 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7233762538651085, + 1.7237494178940111 + ], + [ + 1.7205165151963069, + 1.7231371153373898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.866572515884187, + "scoreError" : 0.004874669836230257, + "scoreConfidence" : [ + 0.8616978460479567, + 0.8714471857204173 + ], + "scorePercentiles" : { + "0.0" : 0.8659772491632904, + "50.0" : 0.866317387084177, + "90.0" : 0.867678040205104, + "95.0" : 0.867678040205104, + "99.0" : 0.867678040205104, + "99.9" : 0.867678040205104, + "99.99" : 0.867678040205104, + "99.999" : 0.867678040205104, + "99.9999" : 0.867678040205104, + "100.0" : 0.867678040205104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8663020308179187, + 0.867678040205104 + ], + [ + 0.8659772491632904, + 0.8663327433504354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 43.16581893791316, + "scoreError" : 2.066948947766819, + "scoreConfidence" : [ + 41.09886999014634, + 45.232767885679976 + ], + "scorePercentiles" : { + "0.0" : 41.47630378715374, + "50.0" : 43.19324157508737, + "90.0" : 45.10306662709041, + "95.0" : 45.10306662709041, + "99.0" : 45.10306662709041, + "99.9" : 45.10306662709041, + "99.99" : 45.10306662709041, + "99.999" : 45.10306662709041, + "99.9999" : 45.10306662709041, + "100.0" : 45.10306662709041 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.9283125770102, + 41.47630378715374, + 42.49340373619001 + ], + [ + 43.19324157508737, + 44.967595343521324, + 45.10306662709041 + ], + [ + 42.69787652122177, + 43.33871227400222, + 43.29385799994142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.02357816374013612, + "scoreError" : 6.853628187300454E-4, + "scoreConfidence" : [ + 0.022892800921406078, + 0.024263526558866166 + ], + "scorePercentiles" : { + "0.0" : 0.02294608312614679, + "50.0" : 0.023463286145199064, + "90.0" : 0.024420310319512195, + "95.0" : 0.024420310319512195, + "99.0" : 0.024420310319512195, + "99.9" : 0.024420310319512195, + "99.99" : 0.024420310319512195, + "99.999" : 0.024420310319512195, + "99.9999" : 0.024420310319512195, + "100.0" : 0.024420310319512195 + }, + "scoreUnit" : "s/op", + "rawData" : [ + [ + 0.023463286145199064, + 0.02341394538551402, + 0.023628221283018867 + ], + [ + 0.023451077770491803, + 0.02331047241395349, + 0.02294608312614679 + ], + [ + 0.024420310319512195, + 0.02383940636904762, + 0.023730670848341233 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 9cab2c93b1be0979a6154992bc311c5ef7fa2c79 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 19 Feb 2025 13:35:51 +1000 Subject: [PATCH 188/345] added possible mappings directly to Mapping --- .../normalized/nf/NormalizedDirective.java | 5 + .../normalized/nf/NormalizedDocument.java | 4 + .../nf/NormalizedDocumentFactory.java | 604 ++++++++++++++++ .../normalized/nf/NormalizedField.java | 649 ++++++++++++++++++ 4 files changed, 1262 insertions(+) create mode 100644 src/main/java/graphql/normalized/nf/NormalizedDirective.java create mode 100644 src/main/java/graphql/normalized/nf/NormalizedDocument.java create mode 100644 src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java create mode 100644 src/main/java/graphql/normalized/nf/NormalizedField.java diff --git a/src/main/java/graphql/normalized/nf/NormalizedDirective.java b/src/main/java/graphql/normalized/nf/NormalizedDirective.java new file mode 100644 index 0000000000..061cb1b28c --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedDirective.java @@ -0,0 +1,5 @@ +package graphql.normalized.nf; + +public class NormalizedDirective { + +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocument.java b/src/main/java/graphql/normalized/nf/NormalizedDocument.java new file mode 100644 index 0000000000..f90ffe6b4f --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedDocument.java @@ -0,0 +1,4 @@ +package graphql.normalized.nf; + +public class NormalizedDocument { +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java new file mode 100644 index 0000000000..f72348baf4 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -0,0 +1,604 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.execution.AbortExecutionException; +import graphql.execution.CoercedVariables; +import graphql.execution.MergedField; +import graphql.execution.ValuesResolver; +import graphql.execution.conditional.ConditionalNodes; +import graphql.execution.directives.QueryDirectives; +import graphql.execution.directives.QueryDirectivesImpl; +import graphql.execution.incremental.IncrementalUtils; +import graphql.introspection.Introspection; +import graphql.language.*; +import graphql.normalized.ENFMerger; +import graphql.normalized.ExecutableNormalizedField; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.NormalizedInputValue; +import graphql.normalized.incremental.NormalizedDeferredExecution; +import graphql.schema.*; +import graphql.schema.impl.SchemaUtil; + +import java.util.*; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import static graphql.Assert.*; +import static graphql.collect.ImmutableKit.map; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; +import static graphql.util.FpKit.*; +import static java.util.Collections.singleton; +import static java.util.Collections.singletonList; +import static java.util.stream.Collectors.toCollection; +import static java.util.stream.Collectors.toSet; + +@PublicApi +public class NormalizedDocumentFactory { + + private static final ConditionalNodes conditionalNodes = new ConditionalNodes(); + + private NormalizedDocumentFactory() { + + } + + /** + * This will create a runtime representation of the graphql operation that would be executed + * in a runtime sense. + * + * @param graphQLSchema the schema to be used + * @param document the {@link Document} holding the operation text + * @param operationName the operation name to use + * @param coercedVariableValues the coerced variables to use + * @return a runtime representation of the graphql operation. + */ + public static ExecutableNormalizedOperation createExecutableNormalizedOperation( + GraphQLSchema graphQLSchema, + Document document, + String operationName, + CoercedVariables coercedVariableValues + ) { + return createExecutableNormalizedOperation( + graphQLSchema, + document, + operationName, + coercedVariableValues, + Options.defaultOptions()); + } + + public static NormalizedDocument createNormalizedDocument( + GraphQLSchema graphQLSchema, + Document document + ) { + return new NormalizedDocumentFactoryImpl( + graphQLSchema, + document + ).createNormalizedDocument(); + } + + + private static class NormalizedDocumentFactoryImpl { + private final GraphQLSchema graphQLSchema; + private final Document document; + + private final List possibleMergerList = new ArrayList<>(); + + private final ImmutableListMultimap.Builder fieldToNormalizedField = ImmutableListMultimap.builder(); + private final ImmutableMap.Builder normalizedFieldToMergedField = ImmutableMap.builder(); + private final ImmutableMap.Builder normalizedFieldToQueryDirectives = ImmutableMap.builder(); + private final ImmutableListMultimap.Builder coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + private int fieldCount = 0; + private int maxDepthSeen = 0; + + private NormalizedDocumentFactoryImpl( + GraphQLSchema graphQLSchema, + Document document + ) { + this.graphQLSchema = graphQLSchema; + this.document = document; + } + + /** + * Creates a new ExecutableNormalizedOperation for the provided query + */ + private NormalizedDocument createNormalizedDocument() { + + List operationDefinitions = document.getDefinitions(); + for (Definition definition : operationDefinitions) { + assertTrue(definition instanceof OperationDefinition, "Only operation definitions expected"); + OperationDefinition operationDefinition = (OperationDefinition) definition; + GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); + + operationDefinition.getVariableDefinitions(); + CollectNFResult collectFromOperationResult = collectFromOperation(rootType, operationDefinition); + + for (ExecutableNormalizedField topLevel : collectFromOperationResult.children) { + ImmutableList fieldAndAstParents = collectFromOperationResult.normalizedFieldToAstFields.get(topLevel); + MergedField mergedField = newMergedField(fieldAndAstParents); + + captureMergedField(topLevel, mergedField); + + updateFieldToNFMap(topLevel, fieldAndAstParents); + updateCoordinatedToNFMap(topLevel); + + int depthSeen = buildFieldWithChildren( + topLevel, + fieldAndAstParents, + 1); + maxDepthSeen = Math.max(maxDepthSeen, depthSeen); + } + // getPossibleMergerList + for (PossibleMerger possibleMerger : possibleMergerList) { + List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); + ENFMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema, options.deferSupport); + } + } + return new ExecutableNormalizedOperation( + operationDefinition.getOperation(), + operationDefinition.getName(), + new ArrayList<>(collectFromOperationResult.children), + fieldToNormalizedField.build(), + normalizedFieldToMergedField.build(), + normalizedFieldToQueryDirectives.build(), + coordinatesToNormalizedFields.build(), + fieldCount, + maxDepthSeen + ); + } + + private void captureMergedField(ExecutableNormalizedField enf, MergedField mergedFld) { + // QueryDirectivesImpl is a lazy object and only computes itself when asked for + QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, coercedVariableValues.toMap(), options.getGraphQLContext(), options.getLocale()); + normalizedFieldToQueryDirectives.put(enf, queryDirectives); + normalizedFieldToMergedField.put(enf, mergedFld); + } + + private int buildFieldWithChildren(ExecutableNormalizedField executableNormalizedField, + ImmutableList fieldAndAstParents, + int curLevel) { + checkMaxDepthExceeded(curLevel); + + CollectNFResult nextLevel = collectFromMergedField(executableNormalizedField, fieldAndAstParents, curLevel + 1); + + int maxDepthSeen = curLevel; + for (ExecutableNormalizedField childENF : nextLevel.children) { + executableNormalizedField.addChild(childENF); + ImmutableList childFieldAndAstParents = nextLevel.normalizedFieldToAstFields.get(childENF); + + MergedField mergedField = newMergedField(childFieldAndAstParents); + captureMergedField(childENF, mergedField); + + updateFieldToNFMap(childENF, childFieldAndAstParents); + updateCoordinatedToNFMap(childENF); + + int depthSeen = buildFieldWithChildren(childENF, + childFieldAndAstParents, + curLevel + 1); + maxDepthSeen = Math.max(maxDepthSeen, depthSeen); + + checkMaxDepthExceeded(maxDepthSeen); + } + return maxDepthSeen; + } + + private void checkMaxDepthExceeded(int depthSeen) { + if (depthSeen > this.options.getMaxChildrenDepth()) { + throw new AbortExecutionException("Maximum query depth exceeded. " + depthSeen + " > " + this.options.getMaxChildrenDepth()); + } + } + + private static MergedField newMergedField(ImmutableList fieldAndAstParents) { + return MergedField.newMergedField(map(fieldAndAstParents, fieldAndAstParent -> fieldAndAstParent.field)).build(); + } + + private void updateFieldToNFMap(ExecutableNormalizedField executableNormalizedField, + ImmutableList mergedField) { + for (FieldAndAstParent astField : mergedField) { + fieldToNormalizedField.put(astField.field, executableNormalizedField); + } + } + + private void updateCoordinatedToNFMap(ExecutableNormalizedField topLevel) { + for (String objectType : topLevel.getObjectTypeNames()) { + FieldCoordinates coordinates = FieldCoordinates.coordinates(objectType, topLevel.getFieldName()); + coordinatesToNormalizedFields.put(coordinates, topLevel); + } + } + + public CollectNFResult collectFromMergedField(ExecutableNormalizedField executableNormalizedField, + ImmutableList mergedField, + int level) { + List fieldDefs = executableNormalizedField.getFieldDefinitions(graphQLSchema); + Set possibleObjects = resolvePossibleObjects(fieldDefs); + if (possibleObjects.isEmpty()) { + return new CollectNFResult(ImmutableKit.emptyList(), ImmutableListMultimap.of()); + } + + List collectedFields = new ArrayList<>(); + for (FieldAndAstParent fieldAndAstParent : mergedField) { + if (fieldAndAstParent.field.getSelectionSet() == null) { + continue; + } + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astParentType, fieldAndAstParent.field.getName()); + GraphQLUnmodifiedType astParentType = unwrapAll(fieldDefinition.getType()); + this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), + collectedFields, + (GraphQLCompositeType) astParentType, + possibleObjects, + null + ); + } + Map> fieldsByName = fieldsByResultKey(collectedFields); + ImmutableList.Builder resultNFs = ImmutableList.builder(); + ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); + + createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, level, executableNormalizedField); + + return new CollectNFResult(resultNFs.build(), normalizedFieldToAstFields.build()); + } + + private Map> fieldsByResultKey(List collectedFields) { + Map> fieldsByName = new LinkedHashMap<>(); + for (CollectedField collectedField : collectedFields) { + fieldsByName.computeIfAbsent(collectedField.field.getResultKey(), ignored -> new ArrayList<>()).add(collectedField); + } + return fieldsByName; + } + + public CollectNFResult collectFromOperation(GraphQLObjectType rootType, OperationDefinition operationDefinition) { + + Set possibleObjects = ImmutableSet.of(rootType); + List collectedFields = new ArrayList<>(); + collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects, null); + // group by result key + Map> fieldsByName = fieldsByResultKey(collectedFields); + ImmutableList.Builder resultNFs = ImmutableList.builder(); + + createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, 1, null); + + return new CollectNFResult(resultNFs.build())); + } + + // + private void createNFs(ImmutableList.Builder nfListBuilder, + Map> fieldsByName, + int level, + ExecutableNormalizedField parent) { + for (String resultKey : fieldsByName.keySet()) { + List fieldsWithSameResultKey = fieldsByName.get(resultKey); + List commonParentsGroups = groupByCommonParents(fieldsWithSameResultKey); + for (CollectedFieldGroup fieldGroup : commonParentsGroups) { + ExecutableNormalizedField nf = createNF(fieldGroup, level, parent); + if (nf == null) { + continue; + } + for (CollectedField collectedField : fieldGroup.fields) { + normalizedFieldToAstFields.put(nf, new FieldAndAstParent(collectedField.field, collectedField.astTypeCondition)); + } + nfListBuilder.add(nf); + + if (this.options.deferSupport) { + nf.addDeferredExecutions(fieldGroup.deferredExecutions); + } + } + if (commonParentsGroups.size() > 1) { + possibleMergerList.add(new PossibleMerger(parent, resultKey)); + } + } + } + + private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGroup, + int level, + ExecutableNormalizedField parent) { + + this.fieldCount++; + if (this.fieldCount > this.options.getMaxFieldsCount()) { + throw new AbortExecutionException("Maximum field count exceeded. " + this.fieldCount + " > " + this.options.getMaxFieldsCount()); + } + Field field; + Set objectTypes = collectedFieldGroup.objectTypes; + field = collectedFieldGroup.fields.iterator().next().field; + String fieldName = field.getName(); + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDefinition(graphQLSchema, objectTypes.iterator().next(), fieldName); + + Map argumentValues = ValuesResolver.getArgumentValues(fieldDefinition.getArguments(), field.getArguments(), CoercedVariables.of(this.coercedVariableValues.toMap()), this.options.graphQLContext, this.options.locale); + Map normalizedArgumentValues = null; + if (this.normalizedVariableValues != null) { + normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(fieldDefinition.getArguments(), field.getArguments(), this.normalizedVariableValues); + } + ImmutableList objectTypeNames = map(objectTypes, GraphQLObjectType::getName); + return ExecutableNormalizedField.newNormalizedField() + .alias(field.getAlias()) + .resolvedArguments(argumentValues) + .normalizedArguments(normalizedArgumentValues) + .astArguments(field.getArguments()) + .objectTypeNames(objectTypeNames) + .fieldName(fieldName) + .level(level) + .parent(parent) + .build(); + } + + private List groupByCommonParents(Collection fields) { + if (this.options.deferSupport) { + return groupByCommonParentsWithDeferSupport(fields); + } else { + return groupByCommonParentsNoDeferSupport(fields); + } + } + + private List groupByCommonParentsNoDeferSupport(Collection fields) { + ImmutableSet.Builder objectTypes = ImmutableSet.builder(); + for (CollectedField collectedField : fields) { + objectTypes.addAll(collectedField.objectTypes); + } + Set allRelevantObjects = objectTypes.build(); + Map> groupByAstParent = groupingBy(fields, fieldAndType -> fieldAndType.astTypeCondition); + if (groupByAstParent.size() == 1) { + return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects, null)); + } + ImmutableList.Builder result = ImmutableList.builder(); + for (GraphQLObjectType objectType : allRelevantObjects) { + Set relevantFields = filterSet(fields, field -> field.objectTypes.contains(objectType)); + result.add(new CollectedFieldGroup(relevantFields, singleton(objectType), null)); + } + return result.build(); + } + + private List groupByCommonParentsWithDeferSupport(Collection fields) { + ImmutableSet.Builder objectTypes = ImmutableSet.builder(); + ImmutableSet.Builder deferredExecutionsBuilder = ImmutableSet.builder(); + + for (CollectedField collectedField : fields) { + objectTypes.addAll(collectedField.objectTypes); + + NormalizedDeferredExecution collectedDeferredExecution = collectedField.deferredExecution; + + if (collectedDeferredExecution != null) { + deferredExecutionsBuilder.add(collectedDeferredExecution); + } + } + + Set allRelevantObjects = objectTypes.build(); + Set deferredExecutions = deferredExecutionsBuilder.build(); + + Set duplicatedLabels = listDuplicatedLabels(deferredExecutions); + + if (!duplicatedLabels.isEmpty()) { + // Query validation should pick this up + assertShouldNeverHappen("Duplicated @defer labels are not allowed: [%s]", String.join(",", duplicatedLabels)); + } + + Map> groupByAstParent = groupingBy(fields, fieldAndType -> fieldAndType.astTypeCondition); + if (groupByAstParent.size() == 1) { + return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects, deferredExecutions)); + } + + ImmutableList.Builder result = ImmutableList.builder(); + for (GraphQLObjectType objectType : allRelevantObjects) { + Set relevantFields = filterSet(fields, field -> field.objectTypes.contains(objectType)); + + Set filteredDeferredExecutions = deferredExecutions.stream() + .filter(filterExecutionsFromType(objectType)) + .collect(toCollection(LinkedHashSet::new)); + + result.add(new CollectedFieldGroup(relevantFields, singleton(objectType), filteredDeferredExecutions)); + } + return result.build(); + } + + private static Predicate filterExecutionsFromType(GraphQLObjectType objectType) { + String objectTypeName = objectType.getName(); + return deferredExecution -> deferredExecution.getPossibleTypes() + .stream() + .map(GraphQLObjectType::getName) + .anyMatch(objectTypeName::equals); + } + + private Set listDuplicatedLabels(Collection deferredExecutions) { + return deferredExecutions.stream() + .map(NormalizedDeferredExecution::getLabel) + .filter(Objects::nonNull) + .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) + .entrySet() + .stream() + .filter(entry -> entry.getValue() > 1) + .map(Map.Entry::getKey) + .collect(toSet()); + } + + private void collectFromSelectionSet(SelectionSet selectionSet, + List result, + GraphQLCompositeType astTypeCondition, + Set possibleObjects, + NormalizedDeferredExecution deferredExecution + ) { + for (Selection selection : selectionSet.getSelections()) { + if (selection instanceof Field) { + collectField(result, (Field) selection, possibleObjects, astTypeCondition, deferredExecution); + } else if (selection instanceof InlineFragment) { + collectInlineFragment(result, (InlineFragment) selection, possibleObjects, astTypeCondition); + } else if (selection instanceof FragmentSpread) { + collectFragmentSpread(result, (FragmentSpread) selection, possibleObjects); + } + } + } + + private void collectFragmentSpread(List result, + FragmentSpread fragmentSpread, + Set possibleObjects + ) { + if (!conditionalNodes.shouldInclude(fragmentSpread, + this.coercedVariableValues.toMap(), + this.graphQLSchema, + this.options.graphQLContext)) { + return; + } + FragmentDefinition fragmentDefinition = assertNotNull(this.fragments.get(fragmentSpread.getName())); + + if (!conditionalNodes.shouldInclude(fragmentDefinition, + this.coercedVariableValues.toMap(), + this.graphQLSchema, + this.options.graphQLContext)) { + return; + } + GraphQLCompositeType newAstTypeCondition = (GraphQLCompositeType) assertNotNull(this.graphQLSchema.getType(fragmentDefinition.getTypeCondition().getName())); + Set newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); + + NormalizedDeferredExecution newDeferredExecution = buildDeferredExecution( + fragmentSpread.getDirectives(), + newPossibleObjects); + + collectFromSelectionSet(fragmentDefinition.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects, newDeferredExecution); + } + + private void collectInlineFragment(List result, + InlineFragment inlineFragment, + Set possibleObjects, + GraphQLCompositeType astTypeCondition + ) { + if (!conditionalNodes.shouldInclude(inlineFragment, this.coercedVariableValues.toMap(), this.graphQLSchema, this.options.graphQLContext)) { + return; + } + Set newPossibleObjects = possibleObjects; + GraphQLCompositeType newAstTypeCondition = astTypeCondition; + + if (inlineFragment.getTypeCondition() != null) { + newAstTypeCondition = (GraphQLCompositeType) this.graphQLSchema.getType(inlineFragment.getTypeCondition().getName()); + newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); + + } + + NormalizedDeferredExecution newDeferredExecution = buildDeferredExecution( + inlineFragment.getDirectives(), + newPossibleObjects + ); + + collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects, newDeferredExecution); + } + + private NormalizedDeferredExecution buildDeferredExecution( + List directives, + Set newPossibleObjects) { + if (!options.deferSupport) { + return null; + } + + return IncrementalUtils.createDeferredExecution( + this.coercedVariableValues.toMap(), + directives, + (label) -> new NormalizedDeferredExecution(label, newPossibleObjects) + ); + } + + private void collectField(List result, + Field field, + Set possibleObjectTypes, + GraphQLCompositeType astTypeCondition + ) { + List directives = field.getDirectives(); + + // this means there is actually no possible type for this field, and we are done + if (possibleObjectTypes.isEmpty()) { + return; + } + result.add(new CollectedField(field, possibleObjectTypes, astTypeCondition)); + } + + private Set narrowDownPossibleObjects(Set currentOnes, + GraphQLCompositeType typeCondition) { + + ImmutableSet resolvedTypeCondition = resolvePossibleObjects(typeCondition); + if (currentOnes.isEmpty()) { + return resolvedTypeCondition; + } + + // Faster intersection, as either set often has a size of 1. + return intersection(currentOnes, resolvedTypeCondition); + } + + private ImmutableSet resolvePossibleObjects(List defs) { + ImmutableSet.Builder builder = ImmutableSet.builder(); + + for (GraphQLFieldDefinition def : defs) { + GraphQLUnmodifiedType outputType = unwrapAll(def.getType()); + if (outputType instanceof GraphQLCompositeType) { + builder.addAll(resolvePossibleObjects((GraphQLCompositeType) outputType)); + } + } + + return builder.build(); + } + + private ImmutableSet resolvePossibleObjects(GraphQLCompositeType type) { + if (type instanceof GraphQLObjectType) { + return ImmutableSet.of((GraphQLObjectType) type); + } else if (type instanceof GraphQLInterfaceType) { + return ImmutableSet.copyOf(graphQLSchema.getImplementations((GraphQLInterfaceType) type)); + } else if (type instanceof GraphQLUnionType) { + List unionTypes = ((GraphQLUnionType) type).getTypes(); + return ImmutableSet.copyOf(ImmutableKit.map(unionTypes, GraphQLObjectType.class::cast)); + } else { + return assertShouldNeverHappen(); + } + } + + private static class PossibleMerger { + ExecutableNormalizedField parent; + String resultKey; + + public PossibleMerger(ExecutableNormalizedField parent, String resultKey) { + this.parent = parent; + this.resultKey = resultKey; + } + } + + private static class CollectedField { + Field field; + Set objectTypes; + GraphQLCompositeType astTypeCondition; + + public CollectedField(Field field, Set objectTypes, GraphQLCompositeType astTypeCondition) { + this.field = field; + this.objectTypes = objectTypes; + this.astTypeCondition = astTypeCondition; + } + } + + public static class CollectNFResult { + private final Collection children; + + public CollectNFResult(Collection children) { + this.children = children; + } + } + + private static class FieldAndAstParent { + final Field field; + final GraphQLCompositeType astParentType; + + private FieldAndAstParent(Field field, GraphQLCompositeType astParentType) { + this.field = field; + this.astParentType = astParentType; + } + } + + private static class CollectedFieldGroup { + Set objectTypes; + Set fields; + Set deferredExecutions; + + public CollectedFieldGroup(Set fields, Set objectTypes, Set deferredExecutions) { + this.fields = fields; + this.objectTypes = objectTypes; + this.deferredExecutions = deferredExecutions; + } + } + } + +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedField.java b/src/main/java/graphql/normalized/nf/NormalizedField.java new file mode 100644 index 0000000000..48c9469be9 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedField.java @@ -0,0 +1,649 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import graphql.Internal; +import graphql.Mutable; +import graphql.PublicApi; +import graphql.collect.ImmutableKit; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.NormalizedInputValue; +import graphql.normalized.incremental.NormalizedDeferredExecution; +import graphql.schema.*; +import graphql.util.FpKit; +import graphql.util.MutableRef; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.*; +import java.util.function.Consumer; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertTrue; +import static graphql.schema.GraphQLTypeUtil.simplePrint; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; +import static java.util.stream.Collectors.*; + +/** + * An {@link NormalizedField} represents a field in an executable graphql operation. Its models what + * could be executed during a given operation. + *

    + * This class is intentionally mutable for performance reasons since building immutable parent child + * objects is too expensive. + */ +@PublicApi +@Mutable +public class NormalizedField { + private final String alias; + private final ImmutableMap normalizedArguments; + private final LinkedHashMap resolvedArguments; + private final ImmutableList astArguments; + + // Mutable List on purpose: it is modified after creation + private final LinkedHashSet objectTypeNames; + private final ArrayList children; + private NormalizedField parent; + + private final String fieldName; + private final int level; + + + private NormalizedField(Builder builder) { + this.alias = builder.alias; + this.resolvedArguments = builder.resolvedArguments; + this.normalizedArguments = builder.normalizedArguments; + this.astArguments = builder.astArguments; + this.objectTypeNames = builder.objectTypeNames; + this.fieldName = assertNotNull(builder.fieldName); + this.children = builder.children; + this.level = builder.level; + this.parent = builder.parent; + } + + /** + * Determines whether this {@link NormalizedField} needs a fragment to select the field. However, it considers the parent + * output type when determining whether it needs a fragment. + *

    + * Consider the following schema + * + *

    +     * interface Animal {
    +     *     name: String
    +     *     parent: Animal
    +     * }
    +     * type Cat implements Animal {
    +     *     name: String
    +     *     parent: Cat
    +     * }
    +     * type Dog implements Animal {
    +     *     name: String
    +     *     parent: Dog
    +     *     isGoodBoy: Boolean
    +     * }
    +     * type Query {
    +     *     animal: Animal
    +     * }
    +     * 
    + *

    + * and the following query + * + *

    +     * {
    +     *     animal {
    +     *         parent {
    +     *             name
    +     *         }
    +     *     }
    +     * }
    +     * 
    + *

    + * Then we would get the following {@link ExecutableNormalizedOperation} + * + *

    +     * -Query.animal: Animal
    +     * --[Cat, Dog].parent: Cat, Dog
    +     * ---[Cat, Dog].name: String
    +     * 
    + *

    + * If we simply checked the {@link #parent}'s {@link #getFieldDefinitions(GraphQLSchema)} that would + * point us to {@code Cat.parent} and {@code Dog.parent} whose output types would incorrectly answer + * our question whether this is conditional? + *

    + * We MUST consider that the output type of the {@code parent} field is {@code Animal} and + * NOT {@code Cat} or {@code Dog} as their respective implementations would say. + * + * @param schema - the graphql schema in play + * @return true if the field is conditional + */ + public boolean isConditional(@NotNull GraphQLSchema schema) { + if (parent == null) { + return false; + } + + for (GraphQLInterfaceType commonParentOutputInterface : parent.getInterfacesCommonToAllOutputTypes(schema)) { + List implementations = schema.getImplementations(commonParentOutputInterface); + // __typename + if (fieldName.equals(Introspection.TypeNameMetaFieldDef.getName()) && implementations.size() == objectTypeNames.size()) { + return false; + } + if (commonParentOutputInterface.getField(fieldName) == null) { + continue; + } + if (implementations.size() == objectTypeNames.size()) { + return false; + } + } + + // __typename is the only field in a union type that CAN be NOT conditional + GraphQLFieldDefinition parentFieldDef = parent.getOneFieldDefinition(schema); + if (unwrapAll(parentFieldDef.getType()) instanceof GraphQLUnionType) { + GraphQLUnionType parentOutputTypeAsUnion = (GraphQLUnionType) unwrapAll(parentFieldDef.getType()); + if (fieldName.equals(Introspection.TypeNameMetaFieldDef.getName()) && objectTypeNames.size() == parentOutputTypeAsUnion.getTypes().size()) { + return false; // Not conditional + } + } + + // This means there is no Union or Interface which could serve as unconditional parent + if (objectTypeNames.size() > 1) { + return true; // Conditional + } + if (parent.objectTypeNames.size() > 1) { + return true; + } + + GraphQLObjectType oneObjectType = (GraphQLObjectType) schema.getType(objectTypeNames.iterator().next()); + return unwrapAll(parentFieldDef.getType()) != oneObjectType; + } + + public boolean hasChildren() { + return children.size() > 0; + } + + public GraphQLOutputType getType(GraphQLSchema schema) { + List fieldDefinitions = getFieldDefinitions(schema); + Set fieldTypes = fieldDefinitions.stream().map(fd -> simplePrint(fd.getType())).collect(toSet()); + assertTrue(fieldTypes.size() == 1, () -> "More than one type ... use getTypes"); + return fieldDefinitions.get(0).getType(); + } + + public List getTypes(GraphQLSchema schema) { + return ImmutableKit.map(getFieldDefinitions(schema), fd -> fd.getType()); + } + + public void forEachFieldDefinition(GraphQLSchema schema, Consumer consumer) { + var fieldDefinition = resolveIntrospectionField(schema, objectTypeNames, fieldName); + if (fieldDefinition != null) { + consumer.accept(fieldDefinition); + return; + } + + for (String objectTypeName : objectTypeNames) { + GraphQLObjectType type = (GraphQLObjectType) assertNotNull(schema.getType(objectTypeName)); + consumer.accept(assertNotNull(type.getField(fieldName), "No field %s found for type %s", fieldName, objectTypeName)); + } + } + + public List getFieldDefinitions(GraphQLSchema schema) { + ImmutableList.Builder builder = ImmutableList.builder(); + forEachFieldDefinition(schema, builder::add); + return builder.build(); + } + + /** + * This is NOT public as it is not recommended usage. + *

    + * Internally there are cases where we know it is safe to use this, so this exists. + */ + private GraphQLFieldDefinition getOneFieldDefinition(GraphQLSchema schema) { + var fieldDefinition = resolveIntrospectionField(schema, objectTypeNames, fieldName); + if (fieldDefinition != null) { + return fieldDefinition; + } + + String objectTypeName = objectTypeNames.iterator().next(); + GraphQLObjectType type = (GraphQLObjectType) assertNotNull(schema.getType(objectTypeName)); + return assertNotNull(type.getField(fieldName), "No field %s found for type %s", fieldName, objectTypeName); + } + + private static GraphQLFieldDefinition resolveIntrospectionField(GraphQLSchema schema, Set objectTypeNames, String fieldName) { + if (fieldName.equals(schema.getIntrospectionTypenameFieldDefinition().getName())) { + return schema.getIntrospectionTypenameFieldDefinition(); + } else if (objectTypeNames.size() == 1 && objectTypeNames.iterator().next().equals(schema.getQueryType().getName())) { + if (fieldName.equals(schema.getIntrospectionSchemaFieldDefinition().getName())) { + return schema.getIntrospectionSchemaFieldDefinition(); + } else if (fieldName.equals(schema.getIntrospectionTypeFieldDefinition().getName())) { + return schema.getIntrospectionTypeFieldDefinition(); + } + } + return null; + } + + @Internal + public void addObjectTypeNames(Collection objectTypeNames) { + this.objectTypeNames.addAll(objectTypeNames); + } + + @Internal + public void setObjectTypeNames(Collection objectTypeNames) { + this.objectTypeNames.clear(); + this.objectTypeNames.addAll(objectTypeNames); + } + + @Internal + public void addChild(NormalizedField normalizedField) { + this.children.add(normalizedField); + } + + @Internal + public void clearChildren() { + this.children.clear(); + } + + + /** + * All merged fields have the same name so this is the name of the {@link NormalizedField}. + *

    + * WARNING: This is not always the key in the execution result, because of possible field aliases. + * + * @return the name of this {@link NormalizedField} + * @see #getResultKey() + * @see #getAlias() + */ + public String getName() { + return getFieldName(); + } + + /** + * @return the same value as {@link #getName()} + * @see #getResultKey() + * @see #getAlias() + */ + public String getFieldName() { + return fieldName; + } + + /** + * Returns the result key of this {@link NormalizedField} within the overall result. + * This is either a field alias or the value of {@link #getName()} + * + * @return the result key for this {@link NormalizedField}. + * @see #getName() + */ + public String getResultKey() { + if (alias != null) { + return alias; + } + return getName(); + } + + /** + * @return the field alias used or null if there is none + * @see #getResultKey() + * @see #getName() + */ + public String getAlias() { + return alias; + } + + /** + * @return a list of the {@link Argument}s on the field + */ + public ImmutableList getAstArguments() { + return astArguments; + } + + /** + * Returns an argument value as a {@link NormalizedInputValue} which contains its type name and its current value + * + * @param name the name of the argument + * @return an argument value + */ + public NormalizedInputValue getNormalizedArgument(String name) { + return normalizedArguments.get(name); + } + + /** + * @return a map of all the arguments in {@link NormalizedInputValue} form + */ + public ImmutableMap getNormalizedArguments() { + return normalizedArguments; + } + + /** + * @return a map of the resolved argument values + */ + public LinkedHashMap getResolvedArguments() { + return resolvedArguments; + } + + + /** + * A {@link NormalizedField} can sometimes (for non-concrete types like interfaces and unions) + * have more than one object type it could be when executed. There is no way to know what it will be until + * the field is executed over data and the type is resolved via a {@link graphql.schema.TypeResolver}. + *

    + * This method returns all the possible types a field can be which is one or more {@link GraphQLObjectType} + * names. + *

    + * Warning: This returns a Mutable Set. No defensive copy is made for performance reasons. + * + * @return a set of the possible type names this field could be. + */ + public Set getObjectTypeNames() { + return objectTypeNames; + } + + + /** + * This returns the first entry in {@link #getObjectTypeNames()}. Sometimes you know a field cant be more than one + * type and this method is a shortcut one to help you. + * + * @return the first entry from + */ + public String getSingleObjectTypeName() { + return objectTypeNames.iterator().next(); + } + + /** + * @return a helper method show field details + */ + public String printDetails() { + StringBuilder result = new StringBuilder(); + if (getAlias() != null) { + result.append(getAlias()).append(": "); + } + return result + objectTypeNamesToString() + "." + fieldName; + } + + /** + * @return a helper method to show the object types names as a string + */ + public String objectTypeNamesToString() { + if (objectTypeNames.size() == 1) { + return objectTypeNames.iterator().next(); + } else { + return objectTypeNames.toString(); + } + } + + /** + * This returns the list of the result keys (see {@link #getResultKey()} that lead from this field upwards to + * its parent field + * + * @return a list of the result keys from this {@link NormalizedField} to the top of the operation via parent fields + */ + public List getListOfResultKeys() { + LinkedList list = new LinkedList<>(); + NormalizedField current = this; + while (current != null) { + list.addFirst(current.getResultKey()); + current = current.parent; + } + return list; + } + + /** + * @return the children of the {@link NormalizedField} + */ + public List getChildren() { + return children; + } + + /** + * Returns the list of child fields that would have the same result key + * + * @param resultKey the result key to check + * @return a list of all direct {@link NormalizedField} children with the specified result key + */ + public List getChildrenWithSameResultKey(String resultKey) { + return FpKit.filterList(children, child -> child.getResultKey().equals(resultKey)); + } + + public List getChildren(int includingRelativeLevel) { + List result = new ArrayList<>(); + assertTrue(includingRelativeLevel >= 1, () -> "relative level must be >= 1"); + + this.getChildren().forEach(child -> { + traverseImpl(child, result::add, 1, includingRelativeLevel); + }); + return result; + } + + /** + * This returns the child fields that can be used if the object is of the specified object type + * + * @param objectTypeName the object type + * @return a list of child fields that would apply to that object type + */ + public List getChildren(String objectTypeName) { + return children.stream() + .filter(cld -> cld.objectTypeNames.contains(objectTypeName)) + .collect(toList()); + } + + /** + * the level of the {@link NormalizedField} in the operation hierarchy with top level fields + * starting at 1 + * + * @return the level of the {@link NormalizedField} in the operation hierarchy + */ + public int getLevel() { + return level; + } + + /** + * @return the parent of this {@link NormalizedField} or null if it's a top level field + */ + public NormalizedField getParent() { + return parent; + } + + + @Internal + public void replaceParent(NormalizedField newParent) { + this.parent = newParent; + } + + + @Override + public String toString() { + return "NormalizedField{" + + objectTypeNamesToString() + "." + fieldName + + ", alias=" + alias + + ", level=" + level + + ", children=" + children.stream().map(NormalizedField::toString).collect(joining("\n")) + + '}'; + } + + + /** + * Traverse from this {@link NormalizedField} down into itself and all of its children + * + * @param consumer the callback for each {@link NormalizedField} in the hierarchy. + */ + public void traverseSubTree(Consumer consumer) { + this.getChildren().forEach(child -> { + traverseImpl(child, consumer, 1, Integer.MAX_VALUE); + }); + } + + private void traverseImpl(NormalizedField root, + Consumer consumer, + int curRelativeLevel, + int abortAfter) { + if (curRelativeLevel > abortAfter) { + return; + } + consumer.accept(root); + root.getChildren().forEach(child -> { + traverseImpl(child, consumer, curRelativeLevel + 1, abortAfter); + }); + } + + /** + * This tries to find interfaces common to all the field output types. + *

    + * i.e. goes through {@link #getFieldDefinitions(GraphQLSchema)} and finds interfaces that + * all the field's unwrapped output types are assignable to. + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + private Set getInterfacesCommonToAllOutputTypes(GraphQLSchema schema) { + // Shortcut for performance + if (objectTypeNames.size() == 1) { + var fieldDef = getOneFieldDefinition(schema); + var outputType = unwrapAll(fieldDef.getType()); + + if (outputType instanceof GraphQLObjectType) { + return new LinkedHashSet<>((List) ((GraphQLObjectType) outputType).getInterfaces()); + } else if (outputType instanceof GraphQLInterfaceType) { + var result = new LinkedHashSet<>((List) ((GraphQLInterfaceType) outputType).getInterfaces()); + result.add(outputType); + return result; + } else { + return Collections.emptySet(); + } + } + + MutableRef> commonInterfaces = new MutableRef<>(); + forEachFieldDefinition(schema, (fieldDef) -> { + var outputType = unwrapAll(fieldDef.getType()); + + List outputTypeInterfaces; + if (outputType instanceof GraphQLObjectType) { + outputTypeInterfaces = (List) ((GraphQLObjectType) outputType).getInterfaces(); + } else if (outputType instanceof GraphQLInterfaceType) { + // This interface and superinterfaces + List superInterfaces = ((GraphQLInterfaceType) outputType).getInterfaces(); + + outputTypeInterfaces = new ArrayList<>(superInterfaces.size() + 1); + outputTypeInterfaces.add((GraphQLInterfaceType) outputType); + + if (!superInterfaces.isEmpty()) { + outputTypeInterfaces.addAll((List) superInterfaces); + } + } else { + outputTypeInterfaces = Collections.emptyList(); + } + + if (commonInterfaces.value == null) { + commonInterfaces.value = new LinkedHashSet<>(outputTypeInterfaces); + } else { + commonInterfaces.value.retainAll(outputTypeInterfaces); + } + }); + + return commonInterfaces.value; + } + + /** + * @return a {@link Builder} of {@link NormalizedField}s + */ + public static Builder newNormalizedField() { + return new Builder(); + } + + /** + * Allows this {@link NormalizedField} to be transformed via a {@link Builder} consumer callback + * + * @param builderConsumer the consumer given a builder + * @return a new transformed {@link NormalizedField} + */ + public NormalizedField transform(Consumer builderConsumer) { + Builder builder = new Builder(this); + builderConsumer.accept(builder); + return builder.build(); + } + + public static class Builder { + private LinkedHashSet objectTypeNames = new LinkedHashSet<>(); + private String fieldName; + private ArrayList children = new ArrayList<>(); + private int level; + private NormalizedField parent; + private String alias; + private ImmutableMap normalizedArguments = ImmutableKit.emptyMap(); + private LinkedHashMap resolvedArguments = new LinkedHashMap<>(); + private ImmutableList astArguments = ImmutableKit.emptyList(); + + private LinkedHashSet deferredExecutions = new LinkedHashSet<>(); + + private Builder() { + } + + private Builder(NormalizedField existing) { + this.alias = existing.alias; + this.normalizedArguments = existing.normalizedArguments; + this.astArguments = existing.astArguments; + this.resolvedArguments = existing.resolvedArguments; + this.objectTypeNames = new LinkedHashSet<>(existing.getObjectTypeNames()); + this.fieldName = existing.getFieldName(); + this.children = new ArrayList<>(existing.children); + this.level = existing.getLevel(); + this.parent = existing.getParent(); + } + + public Builder clearObjectTypesNames() { + this.objectTypeNames.clear(); + return this; + } + + public Builder objectTypeNames(List objectTypeNames) { + this.objectTypeNames.addAll(objectTypeNames); + return this; + } + + public Builder alias(String alias) { + this.alias = alias; + return this; + } + + public Builder normalizedArguments(@Nullable Map arguments) { + this.normalizedArguments = arguments == null ? ImmutableKit.emptyMap() : ImmutableMap.copyOf(arguments); + return this; + } + + public Builder resolvedArguments(@Nullable Map arguments) { + this.resolvedArguments = arguments == null ? new LinkedHashMap<>() : new LinkedHashMap<>(arguments); + return this; + } + + public Builder astArguments(@NotNull List astArguments) { + this.astArguments = ImmutableList.copyOf(astArguments); + return this; + } + + + public Builder fieldName(String fieldName) { + this.fieldName = fieldName; + return this; + } + + + public Builder children(List children) { + this.children.clear(); + this.children.addAll(children); + return this; + } + + public Builder level(int level) { + this.level = level; + return this; + } + + public Builder parent(NormalizedField parent) { + this.parent = parent; + return this; + } + + public Builder deferredExecutions(LinkedHashSet deferredExecutions) { + this.deferredExecutions = deferredExecutions; + return this; + } + + public NormalizedField build() { + return new NormalizedField(this); + } + } +} From 2d95042947bde1f350100230449e26636b2d1eeb Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Mon, 24 Feb 2025 05:34:11 +1000 Subject: [PATCH 189/345] wip --- .../conditional/ConditionalNodes.java | 42 ++++-- .../nf/NormalizedDocumentFactory.java | 123 +++--------------- 2 files changed, 47 insertions(+), 118 deletions(-) diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodes.java b/src/main/java/graphql/execution/conditional/ConditionalNodes.java index 7013c53bf3..babcd87690 100644 --- a/src/main/java/graphql/execution/conditional/ConditionalNodes.java +++ b/src/main/java/graphql/execution/conditional/ConditionalNodes.java @@ -4,14 +4,11 @@ import graphql.GraphQLContext; import graphql.Internal; import graphql.execution.CoercedVariables; -import graphql.execution.ValuesResolver; -import graphql.language.Directive; -import graphql.language.DirectivesContainer; -import graphql.language.NodeUtil; +import graphql.language.*; import graphql.schema.GraphQLSchema; +import org.jetbrains.annotations.Nullable; import java.util.List; -import java.util.Locale; import java.util.Map; import static graphql.Directives.IncludeDirective; @@ -20,6 +17,12 @@ @Internal public class ConditionalNodes { + /** + * return null if skip/include argument contains a variable and therefore could not be resolved + */ + public Boolean shouldIncludeWithoutVariables(DirectivesContainer element) { + return shouldInclude(null, element.getDirectives()); + } public boolean shouldInclude(DirectivesContainer element, Map variables, @@ -75,12 +78,15 @@ public GraphQLContext getGraphQLContext() { } - private boolean shouldInclude(Map variables, List directives) { + private @Nullable Boolean shouldInclude(Map variables, List directives) { // shortcut on no directives if (directives.isEmpty()) { return true; } - boolean skip = getDirectiveResult(variables, directives, SkipDirective.getName(), false); + Boolean skip = getDirectiveResult(variables, directives, SkipDirective.getName(), false); + if (skip == null) { + return null; + } if (skip) { return false; } @@ -88,15 +94,27 @@ private boolean shouldInclude(Map variables, List dir return getDirectiveResult(variables, directives, IncludeDirective.getName(), true); } - private boolean getDirectiveResult(Map variables, List directives, String directiveName, boolean defaultValue) { + private @Nullable Boolean getDirectiveResult(Map variables, List directives, String directiveName, boolean defaultValue) { Directive foundDirective = NodeUtil.findNodeByName(directives, directiveName); if (foundDirective != null) { - Map argumentValues = ValuesResolver.getArgumentValues(SkipDirective.getArguments(), foundDirective.getArguments(), CoercedVariables.of(variables), GraphQLContext.getDefault(), Locale.getDefault()); - Object flag = argumentValues.get("if"); - Assert.assertTrue(flag instanceof Boolean, "The '%s' directive MUST have a value for the 'if' argument", directiveName); - return (Boolean) flag; + return getIfValue(foundDirective.getArguments(), variables); } return defaultValue; } + private @Nullable Boolean getIfValue(List arguments, @Nullable Map variables) { + for (Argument argument : arguments) { + if (argument.getName().equals("if")) { + Object value = argument.getValue(); + if (value instanceof BooleanValue) { + return ((BooleanValue) value).isValue(); + } + if (value instanceof VariableReference && variables != null) { + return (boolean) variables.get(((VariableReference) value).getName()); + } + return null; + } + } + return Assert.assertShouldNeverHappen("The 'if' argument must be present"); + } } diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java index f72348baf4..c0f786ccca 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -13,7 +13,6 @@ import graphql.execution.conditional.ConditionalNodes; import graphql.execution.directives.QueryDirectives; import graphql.execution.directives.QueryDirectivesImpl; -import graphql.execution.incremental.IncrementalUtils; import graphql.introspection.Introspection; import graphql.language.*; import graphql.normalized.ENFMerger; @@ -25,9 +24,6 @@ import graphql.schema.impl.SchemaUtil; import java.util.*; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.stream.Collectors; import static graphql.Assert.*; import static graphql.collect.ImmutableKit.map; @@ -35,8 +31,6 @@ import static graphql.util.FpKit.*; import static java.util.Collections.singleton; import static java.util.Collections.singletonList; -import static java.util.stream.Collectors.toCollection; -import static java.util.stream.Collectors.toSet; @PublicApi public class NormalizedDocumentFactory { @@ -254,7 +248,7 @@ public CollectNFResult collectFromOperation(GraphQLObjectType rootType, Operatio Set possibleObjects = ImmutableSet.of(rootType); List collectedFields = new ArrayList<>(); - collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects, null); + collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects); // group by result key Map> fieldsByName = fieldsByResultKey(collectedFields); ImmutableList.Builder resultNFs = ImmutableList.builder(); @@ -296,10 +290,6 @@ private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGro int level, ExecutableNormalizedField parent) { - this.fieldCount++; - if (this.fieldCount > this.options.getMaxFieldsCount()) { - throw new AbortExecutionException("Maximum field count exceeded. " + this.fieldCount + " > " + this.options.getMaxFieldsCount()); - } Field field; Set objectTypes = collectedFieldGroup.objectTypes; field = collectedFieldGroup.fields.iterator().next().field; @@ -324,15 +314,8 @@ private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGro .build(); } - private List groupByCommonParents(Collection fields) { - if (this.options.deferSupport) { - return groupByCommonParentsWithDeferSupport(fields); - } else { - return groupByCommonParentsNoDeferSupport(fields); - } - } - private List groupByCommonParentsNoDeferSupport(Collection fields) { + private List groupByCommonParents(Collection fields) { ImmutableSet.Builder objectTypes = ImmutableSet.builder(); for (CollectedField collectedField : fields) { objectTypes.addAll(collectedField.objectTypes); @@ -350,77 +333,16 @@ private List groupByCommonParentsNoDeferSupport(Collection< return result.build(); } - private List groupByCommonParentsWithDeferSupport(Collection fields) { - ImmutableSet.Builder objectTypes = ImmutableSet.builder(); - ImmutableSet.Builder deferredExecutionsBuilder = ImmutableSet.builder(); - - for (CollectedField collectedField : fields) { - objectTypes.addAll(collectedField.objectTypes); - - NormalizedDeferredExecution collectedDeferredExecution = collectedField.deferredExecution; - - if (collectedDeferredExecution != null) { - deferredExecutionsBuilder.add(collectedDeferredExecution); - } - } - - Set allRelevantObjects = objectTypes.build(); - Set deferredExecutions = deferredExecutionsBuilder.build(); - - Set duplicatedLabels = listDuplicatedLabels(deferredExecutions); - - if (!duplicatedLabels.isEmpty()) { - // Query validation should pick this up - assertShouldNeverHappen("Duplicated @defer labels are not allowed: [%s]", String.join(",", duplicatedLabels)); - } - - Map> groupByAstParent = groupingBy(fields, fieldAndType -> fieldAndType.astTypeCondition); - if (groupByAstParent.size() == 1) { - return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects, deferredExecutions)); - } - - ImmutableList.Builder result = ImmutableList.builder(); - for (GraphQLObjectType objectType : allRelevantObjects) { - Set relevantFields = filterSet(fields, field -> field.objectTypes.contains(objectType)); - - Set filteredDeferredExecutions = deferredExecutions.stream() - .filter(filterExecutionsFromType(objectType)) - .collect(toCollection(LinkedHashSet::new)); - - result.add(new CollectedFieldGroup(relevantFields, singleton(objectType), filteredDeferredExecutions)); - } - return result.build(); - } - - private static Predicate filterExecutionsFromType(GraphQLObjectType objectType) { - String objectTypeName = objectType.getName(); - return deferredExecution -> deferredExecution.getPossibleTypes() - .stream() - .map(GraphQLObjectType::getName) - .anyMatch(objectTypeName::equals); - } - private Set listDuplicatedLabels(Collection deferredExecutions) { - return deferredExecutions.stream() - .map(NormalizedDeferredExecution::getLabel) - .filter(Objects::nonNull) - .collect(Collectors.groupingBy(Function.identity(), Collectors.counting())) - .entrySet() - .stream() - .filter(entry -> entry.getValue() > 1) - .map(Map.Entry::getKey) - .collect(toSet()); - } private void collectFromSelectionSet(SelectionSet selectionSet, List result, GraphQLCompositeType astTypeCondition, - Set possibleObjects, - NormalizedDeferredExecution deferredExecution + Set possibleObjects ) { for (Selection selection : selectionSet.getSelections()) { if (selection instanceof Field) { - collectField(result, (Field) selection, possibleObjects, astTypeCondition, deferredExecution); + collectField(result, (Field) selection, possibleObjects, astTypeCondition); } else if (selection instanceof InlineFragment) { collectInlineFragment(result, (InlineFragment) selection, possibleObjects, astTypeCondition); } else if (selection instanceof FragmentSpread) { @@ -450,11 +372,7 @@ private void collectFragmentSpread(List result, GraphQLCompositeType newAstTypeCondition = (GraphQLCompositeType) assertNotNull(this.graphQLSchema.getType(fragmentDefinition.getTypeCondition().getName())); Set newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); - NormalizedDeferredExecution newDeferredExecution = buildDeferredExecution( - fragmentSpread.getDirectives(), - newPossibleObjects); - - collectFromSelectionSet(fragmentDefinition.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects, newDeferredExecution); + collectFromSelectionSet(fragmentDefinition.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects); } private void collectInlineFragment(List result, @@ -474,27 +392,9 @@ private void collectInlineFragment(List result, } - NormalizedDeferredExecution newDeferredExecution = buildDeferredExecution( - inlineFragment.getDirectives(), - newPossibleObjects - ); - - collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects, newDeferredExecution); + collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects); } - private NormalizedDeferredExecution buildDeferredExecution( - List directives, - Set newPossibleObjects) { - if (!options.deferSupport) { - return null; - } - - return IncrementalUtils.createDeferredExecution( - this.coercedVariableValues.toMap(), - directives, - (label) -> new NormalizedDeferredExecution(label, newPossibleObjects) - ); - } private void collectField(List result, Field field, @@ -507,6 +407,14 @@ private void collectField(List result, if (possibleObjectTypes.isEmpty()) { return; } + Boolean shouldInclude = conditionalNodes.shouldIncludeWithoutVariables(field); + if (shouldInclude != null && !shouldInclude) { + return; + } + if (shouldInclude == null) { + // now we need to copy the whole NF and proceed one without and one with + } + // should include is just true result.add(new CollectedField(field, possibleObjectTypes, astTypeCondition)); } @@ -559,8 +467,11 @@ public PossibleMerger(ExecutableNormalizedField parent, String resultKey) { } private static class CollectedField { + // the AST field Field field; + // the set of type conditions for this field, resolved to object types based on the schema Set objectTypes; + // the last type condition used for this field GraphQLCompositeType astTypeCondition; public CollectedField(Field field, Set objectTypes, GraphQLCompositeType astTypeCondition) { From 6937fbb32a61f2c70060c1a9417aeb0b8750feb9 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Mon, 24 Feb 2025 07:43:51 +1000 Subject: [PATCH 190/345] add more performance tests --- ...OverlappingFieldValidationPerformance.java | 164 +++++++++++++++++- 1 file changed, 161 insertions(+), 3 deletions(-) diff --git a/src/test/java/performance/OverlappingFieldValidationPerformance.java b/src/test/java/performance/OverlappingFieldValidationPerformance.java index 77a2af6aec..e95cc83a09 100644 --- a/src/test/java/performance/OverlappingFieldValidationPerformance.java +++ b/src/test/java/performance/OverlappingFieldValidationPerformance.java @@ -19,6 +19,7 @@ import org.openjdk.jmh.annotations.Measurement; import org.openjdk.jmh.annotations.Mode; import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; import org.openjdk.jmh.annotations.Scope; import org.openjdk.jmh.annotations.Setup; import org.openjdk.jmh.annotations.State; @@ -38,15 +39,42 @@ @Fork(3) public class OverlappingFieldValidationPerformance { + + static String schemaSdl = " type Query { viewer: Viewer } interface Abstract { field: Abstract leaf: Int } interface Abstract1 { field: Abstract leaf: Int } interface Abstract2 { field: Abstract leaf: Int }" + + " type Concrete1 implements Abstract1{ field: Abstract leaf: Int} " + + "type Concrete2 implements Abstract2{ field: Abstract leaf: Int} " + + "type Viewer { xingId: XingId } type XingId { firstName: String! lastName: String! }"; + @State(Scope.Benchmark) public static class MyState { GraphQLSchema schema; + GraphQLSchema schema2; Document document; + @Param({"2", "10", "100"}) + int size; + + Document overlapFrag; + Document overlapNoFrag; + Document noOverlapFrag; + Document noOverlapNoFrag; + Document repeatedFields; + Document deepAbstractConcrete; + @Setup public void setup() { try { + overlapFrag = makeQuery(size, true, true); + overlapNoFrag = makeQuery(size, true, false); + noOverlapFrag = makeQuery(size, false, true); + noOverlapNoFrag = makeQuery(size, false, false); + repeatedFields = makeRepeatedFieldsQuery(size); + deepAbstractConcrete = makeDeepAbstractConcreteQuery(size); + + + schema2 = SchemaGenerator.createdMockedSchema(schemaSdl); + String schemaString = PerformanceTestingUtils.loadResource("large-schema-4.graphqls"); String query = PerformanceTestingUtils.loadResource("large-schema-4-query.graphql"); schema = SchemaGenerator.createdMockedSchema(schemaString); @@ -64,14 +92,58 @@ public void setup() { @Benchmark @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) public void overlappingFieldValidationAbgTime(MyState myState, Blackhole blackhole) { - blackhole.consume(validateQuery(myState.schema, myState.document)); + blackhole.consume(validateQuery(myState.schema2, myState.document)); } @Benchmark - @OutputTimeUnit(TimeUnit.SECONDS) + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) public void overlappingFieldValidationThroughput(MyState myState, Blackhole blackhole) { - blackhole.consume(validateQuery(myState.schema, myState.document)); + blackhole.consume(validateQuery(myState.schema2, myState.document)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void benchmarkRepeatedFields(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.repeatedFields)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void benchmarkOverlapFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.overlapFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void benchmarkOverlapNoFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.overlapNoFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void benchmarkNoOverlapFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.noOverlapFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void benchmarkNoOverlapNoFrag(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.noOverlapNoFrag)); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.NANOSECONDS) + public void benchmarkDeepAbstractConcrete(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema2, myState.deepAbstractConcrete)); } private List validateQuery(GraphQLSchema schema, Document document) { @@ -83,4 +155,90 @@ private List validateQuery(GraphQLSchema schema, Document docum languageTraversal.traverse(document, new RulesVisitor(validationContext, Collections.singletonList(overlappingFieldsCanBeMerged))); return errorCollector.getErrors(); } + + + private static Document makeQuery(int size, boolean overlapping, boolean fragments) { + if (fragments) { + return makeQueryWithFragments(size, overlapping); + } else { + return makeQueryWithoutFragments(size, overlapping); + } + } + + private static Document makeRepeatedFieldsQuery(int size) { + StringBuilder b = new StringBuilder(); + + b.append(" query testQuery { viewer { xingId {"); + + b.append("firstName\n".repeat(Math.max(0, size))); + + b.append("} } }"); + + return Parser.parse(b.toString()); + } + + + private static Document makeQueryWithFragments(int size, boolean overlapping) { + StringBuilder b = new StringBuilder(); + + for (int i = 1; i <= size; i++) { + if (overlapping) { + b.append(" fragment mergeIdenticalFields" + i + " on Query {viewer { xingId { firstName lastName }}}"); + } else { + b.append("fragment mergeIdenticalFields" + i + " on Query {viewer" + i + " { xingId" + i + " { firstName" + i + " lastName" + i + " } }}"); + } + + b.append("\n\n"); + } + + b.append("query testQuery {"); + for (int i = 1; i <= size; i++) { + b.append("...mergeIdenticalFields" + i + "\n"); + } + b.append("}"); + return Parser.parse(b.toString()); + } + + private static Document makeQueryWithoutFragments(int size, boolean overlapping) { + StringBuilder b = new StringBuilder(); + + b.append("query testQuery {"); + + for (int i = 1; i <= size; i++) { + if (overlapping) { + b.append(" viewer { xingId { firstName } } "); + } else { + b.append(" viewer" + i + " { xingId" + i + " { firstName" + i + " } } "); + } + + b.append("\n\n"); + } + + b.append("}"); + + return Parser.parse(b.toString()); + } + + private static Document makeDeepAbstractConcreteQuery(int depth) { + StringBuilder q = new StringBuilder(); + + q.append("fragment multiply on Whatever { field { " + + "... on Abstract1 { field { leaf } } " + + "... on Abstract2 { field { leaf } } " + + "... on Concrete1 { field { leaf } } " + + "... on Concrete2 { field { leaf } } } } " + + "query DeepAbstractConcrete { "); + + for (int i = 1; i <= depth; i++) { + q.append("field { ...multiply "); + } + + for (int i = 1; i <= depth; i++) { + q.append(" }"); + } + + q.append("\n}"); + + return Parser.parse(q.toString()); + } } From 3006f204230fb4528083901a85ca1d70087c4d00 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Mon, 24 Feb 2025 09:21:56 +1000 Subject: [PATCH 191/345] fix per test overlapping fields --- .../OverlappingFieldValidationPerformance.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/java/performance/OverlappingFieldValidationPerformance.java b/src/test/java/performance/OverlappingFieldValidationPerformance.java index e95cc83a09..3eb563908a 100644 --- a/src/test/java/performance/OverlappingFieldValidationPerformance.java +++ b/src/test/java/performance/OverlappingFieldValidationPerformance.java @@ -93,15 +93,15 @@ public void setup() { @Benchmark @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) - public void overlappingFieldValidationAbgTime(MyState myState, Blackhole blackhole) { - blackhole.consume(validateQuery(myState.schema2, myState.document)); + public void overlappingFieldValidationAvgTime(MyState myState, Blackhole blackhole) { + blackhole.consume(validateQuery(myState.schema, myState.document)); } @Benchmark - @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) public void overlappingFieldValidationThroughput(MyState myState, Blackhole blackhole) { - blackhole.consume(validateQuery(myState.schema2, myState.document)); + blackhole.consume(validateQuery(myState.schema, myState.document)); } @Benchmark From 8d5eef4e19439ddcb5efd1bef510a5b60352b42e Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Mon, 24 Feb 2025 09:26:03 +1000 Subject: [PATCH 192/345] tweak overlapping fields performance tests --- .../OverlappingFieldValidationPerformance.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/test/java/performance/OverlappingFieldValidationPerformance.java b/src/test/java/performance/OverlappingFieldValidationPerformance.java index 3eb563908a..15d8216d4a 100644 --- a/src/test/java/performance/OverlappingFieldValidationPerformance.java +++ b/src/test/java/performance/OverlappingFieldValidationPerformance.java @@ -52,7 +52,7 @@ public static class MyState { GraphQLSchema schema2; Document document; - @Param({"2", "10", "100"}) + @Param({"10", "100"}) int size; Document overlapFrag; @@ -106,42 +106,42 @@ public void overlappingFieldValidationThroughput(MyState myState, Blackhole blac @Benchmark @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) + @OutputTimeUnit(TimeUnit.MILLISECONDS) public void benchmarkRepeatedFields(MyState myState, Blackhole blackhole) { blackhole.consume(validateQuery(myState.schema2, myState.repeatedFields)); } @Benchmark @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) + @OutputTimeUnit(TimeUnit.MILLISECONDS) public void benchmarkOverlapFrag(MyState myState, Blackhole blackhole) { blackhole.consume(validateQuery(myState.schema2, myState.overlapFrag)); } @Benchmark @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) + @OutputTimeUnit(TimeUnit.MILLISECONDS) public void benchmarkOverlapNoFrag(MyState myState, Blackhole blackhole) { blackhole.consume(validateQuery(myState.schema2, myState.overlapNoFrag)); } @Benchmark @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) + @OutputTimeUnit(TimeUnit.MILLISECONDS) public void benchmarkNoOverlapFrag(MyState myState, Blackhole blackhole) { blackhole.consume(validateQuery(myState.schema2, myState.noOverlapFrag)); } @Benchmark @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) + @OutputTimeUnit(TimeUnit.MILLISECONDS) public void benchmarkNoOverlapNoFrag(MyState myState, Blackhole blackhole) { blackhole.consume(validateQuery(myState.schema2, myState.noOverlapNoFrag)); } @Benchmark @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.NANOSECONDS) + @OutputTimeUnit(TimeUnit.MILLISECONDS) public void benchmarkDeepAbstractConcrete(MyState myState, Blackhole blackhole) { blackhole.consume(validateQuery(myState.schema2, myState.deepAbstractConcrete)); } From 4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 23:27:29 +0000 Subject: [PATCH 193/345] Add performance results for commit 422035b18d79a8c2da519fa224d57b54328d21af --- ...d79a8c2da519fa224d57b54328d21af-jdk17.json | 1657 +++++++++++++++++ 1 file changed, 1657 insertions(+) create mode 100644 performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json diff --git a/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json b/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json new file mode 100644 index 0000000000..42469cd673 --- /dev/null +++ b/performance-results/2025-02-23T23:27:11Z-422035b18d79a8c2da519fa224d57b54328d21af-jdk17.json @@ -0,0 +1,1657 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.407056046800354, + "scoreError" : 0.029918815472154754, + "scoreConfidence" : [ + 3.3771372313281995, + 3.4369748622725087 + ], + "scorePercentiles" : { + "0.0" : 3.4007909424708345, + "50.0" : 3.4082762103332733, + "90.0" : 3.410880824064036, + "95.0" : 3.410880824064036, + "99.0" : 3.410880824064036, + "99.9" : 3.410880824064036, + "99.99" : 3.410880824064036, + "99.999" : 3.410880824064036, + "99.9999" : 3.410880824064036, + "100.0" : 3.410880824064036 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4063459499983404, + 3.4102064706682067 + ], + [ + 3.4007909424708345, + 3.410880824064036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7237261899951235, + "scoreError" : 0.012279956940872572, + "scoreConfidence" : [ + 1.711446233054251, + 1.736006146935996 + ], + "scorePercentiles" : { + "0.0" : 1.7209620297907924, + "50.0" : 1.7243493101951046, + "90.0" : 1.725244109799492, + "95.0" : 1.725244109799492, + "99.0" : 1.725244109799492, + "99.9" : 1.725244109799492, + "99.99" : 1.725244109799492, + "99.999" : 1.725244109799492, + "99.9999" : 1.725244109799492, + "100.0" : 1.725244109799492 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7209620297907924, + 1.7245866091668745 + ], + [ + 1.7241120112233348, + 1.725244109799492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8655072619557832, + "scoreError" : 0.0076541027379537704, + "scoreConfidence" : [ + 0.8578531592178295, + 0.873161364693737 + ], + "scorePercentiles" : { + "0.0" : 0.864075538285419, + "50.0" : 0.8655494103959934, + "90.0" : 0.866854688745727, + "95.0" : 0.866854688745727, + "99.0" : 0.866854688745727, + "99.9" : 0.866854688745727, + "99.99" : 0.866854688745727, + "99.999" : 0.866854688745727, + "99.9999" : 0.866854688745727, + "100.0" : 0.866854688745727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8659617453318614, + 0.866854688745727 + ], + [ + 0.864075538285419, + 0.8651370754601254 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 26552.524153094724, + "scoreError" : 639.1805987554905, + "scoreConfidence" : [ + 25913.343554339233, + 27191.704751850215 + ], + "scorePercentiles" : { + "0.0" : 26180.44553092005, + "50.0" : 26356.254345436864, + "90.0" : 27200.80700737948, + "95.0" : 27200.80700737948, + "99.0" : 27200.80700737948, + "99.9" : 27200.80700737948, + "99.99" : 27200.80700737948, + "99.999" : 27200.80700737948, + "99.9999" : 27200.80700737948, + "100.0" : 27200.80700737948 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 26356.254345436864, + 26236.647378597983, + 26180.44553092005 + ], + [ + 27200.80700737948, + 26956.168602989936, + 26977.190532199587 + ], + [ + 26347.091494468492, + 26352.678896785805, + 26365.433589074324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 52218.80958985782, + "scoreError" : 2879.5912049286203, + "scoreConfidence" : [ + 49339.2183849292, + 55098.40079478644 + ], + "scorePercentiles" : { + "0.0" : 50017.97044480345, + "50.0" : 52649.465625625206, + "90.0" : 53886.84577830227, + "95.0" : 53886.84577830227, + "99.0" : 53886.84577830227, + "99.9" : 53886.84577830227, + "99.99" : 53886.84577830227, + "99.999" : 53886.84577830227, + "99.9999" : 53886.84577830227, + "100.0" : 53886.84577830227 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 50017.97044480345, + 50035.0168865673, + 50041.48226304438 + ], + [ + 53885.89643819377, + 53886.84577830227, + 53842.27665966726 + ], + [ + 52989.15061916798, + 52621.18159334877, + 52649.465625625206 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 331112.89002765866, + "scoreError" : 9506.721360091407, + "scoreConfidence" : [ + 321606.16866756725, + 340619.6113877501 + ], + "scorePercentiles" : { + "0.0" : 324464.0961357516, + "50.0" : 330664.8458155606, + "90.0" : 337893.6958372753, + "95.0" : 337893.6958372753, + "99.0" : 337893.6958372753, + "99.9" : 337893.6958372753, + "99.99" : 337893.6958372753, + "99.999" : 337893.6958372753, + "99.9999" : 337893.6958372753, + "100.0" : 337893.6958372753 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 324886.30850199796, + 325013.14257856936, + 324464.0961357516 + ], + [ + 337864.1532146356, + 337893.6958372753, + 337731.1074636947 + ], + [ + 330875.09724060347, + 330623.5634608391, + 330664.8458155606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 11427.622258229836, + "scoreError" : 324.31758374745107, + "scoreConfidence" : [ + 11103.304674482384, + 11751.939841977288 + ], + "scorePercentiles" : { + "0.0" : 11172.28876683924, + "50.0" : 11487.803492020093, + "90.0" : 11629.032201570599, + "95.0" : 11629.032201570599, + "99.0" : 11629.032201570599, + "99.9" : 11629.032201570599, + "99.99" : 11629.032201570599, + "99.999" : 11629.032201570599, + "99.9999" : 11629.032201570599, + "100.0" : 11629.032201570599 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11483.757824638526, + 11487.803492020093, + 11492.811145806158 + ], + [ + 11191.473096017226, + 11179.267410675857, + 11172.28876683924 + ], + [ + 11629.032201570599, + 11611.247604627724, + 11600.918781873106 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 52007.73574828912, + "scoreError" : 2747.6709117774185, + "scoreConfidence" : [ + 49260.0648365117, + 54755.40666006653 + ], + "scorePercentiles" : { + "0.0" : 49772.18481171423, + "50.0" : 53028.99369495013, + "90.0" : 53201.20417305073, + "95.0" : 53201.20417305073, + "99.0" : 53201.20417305073, + "99.9" : 53201.20417305073, + "99.99" : 53201.20417305073, + "99.999" : 53201.20417305073, + "99.9999" : 53201.20417305073, + "100.0" : 53201.20417305073 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 53163.70150610576, + 53165.25671602116, + 53201.20417305073 + ], + [ + 49891.42993843483, + 49826.70391334243, + 49772.18481171423 + ], + [ + 53028.99369495013, + 53042.75352463799, + 52977.393456344726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 519817.1073999086, + "scoreError" : 22899.539550691738, + "scoreConfidence" : [ + 496917.56784921687, + 542716.6469506003 + ], + "scorePercentiles" : { + "0.0" : 501659.81840983196, + "50.0" : 522679.67015104793, + "90.0" : 534125.0044864605, + "95.0" : 534125.0044864605, + "99.0" : 534125.0044864605, + "99.9" : 534125.0044864605, + "99.99" : 534125.0044864605, + "99.999" : 534125.0044864605, + "99.9999" : 534125.0044864605, + "100.0" : 534125.0044864605 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 523641.3408210284, + 522679.67015104793, + 522124.72834542894 + ], + [ + 502553.2957435047, + 501659.81840983196, + 504259.8995058491 + ], + [ + 533653.9709696355, + 534125.0044864605, + 533656.2381663909 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 5611.061899727954, + "scoreError" : 199.0334455523655, + "scoreConfidence" : [ + 5412.028454175589, + 5810.09534528032 + ], + "scorePercentiles" : { + "0.0" : 5471.789355523734, + "50.0" : 5604.591856510667, + "90.0" : 5748.895040773562, + "95.0" : 5748.895040773562, + "99.0" : 5748.895040773562, + "99.9" : 5748.895040773562, + "99.99" : 5748.895040773562, + "99.999" : 5748.895040773562, + "99.9999" : 5748.895040773562, + "100.0" : 5748.895040773562 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 5748.895040773562, + 5747.524777559183, + 5743.206077045362 + ], + [ + 5477.598544947824, + 5471.789355523734, + 5472.026265965817 + ], + [ + 5632.66979088397, + 5604.591856510667, + 5601.255388341467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 23867.987814775624, + "scoreError" : 1536.3352111463519, + "scoreConfidence" : [ + 22331.65260362927, + 25404.323025921978 + ], + "scorePercentiles" : { + "0.0" : 22847.395096563116, + "50.0" : 23765.784316195237, + "90.0" : 24989.494894720796, + "95.0" : 24989.494894720796, + "99.0" : 24989.494894720796, + "99.9" : 24989.494894720796, + "99.99" : 24989.494894720796, + "99.999" : 24989.494894720796, + "99.9999" : 24989.494894720796, + "100.0" : 24989.494894720796 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 22877.390001349748, + 22847.395096563116, + 22865.330788454987 + ], + [ + 24989.494894720796, + 24966.94336075499, + 24946.11605536971 + ], + [ + 23819.37460549602, + 23734.06121407601, + 23765.784316195237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 245953.21356996294, + "scoreError" : 4056.5186707154076, + "scoreConfidence" : [ + 241896.69489924752, + 250009.73224067836 + ], + "scorePercentiles" : { + "0.0" : 243425.86234512305, + "50.0" : 245794.41238785794, + "90.0" : 249309.52607698445, + "95.0" : 249309.52607698445, + "99.0" : 249309.52607698445, + "99.9" : 249309.52607698445, + "99.99" : 249309.52607698445, + "99.999" : 249309.52607698445, + "99.9999" : 249309.52607698445, + "100.0" : 249309.52607698445 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 243425.86234512305, + 243637.14963699263, + 243514.4556080456 + ], + [ + 248570.7896895429, + 248742.11399646793, + 249309.52607698445 + ], + [ + 244261.41762536333, + 245794.41238785794, + 246323.19476328883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 23528.336167796446, + "scoreError" : 750.0966191948582, + "scoreConfidence" : [ + 22778.23954860159, + 24278.432786991303 + ], + "scorePercentiles" : { + "0.0" : 23042.671609256584, + "50.0" : 23441.3835416066, + "90.0" : 24124.690474984258, + "95.0" : 24124.690474984258, + "99.0" : 24124.690474984258, + "99.9" : 24124.690474984258, + "99.99" : 24124.690474984258, + "99.999" : 24124.690474984258, + "99.9999" : 24124.690474984258, + "100.0" : 24124.690474984258 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 23042.671609256584, + 23071.787075831264, + 23068.08098868525 + ], + [ + 24124.690474984258, + 24087.042072327695, + 24027.066119336283 + ], + [ + 23435.216268469587, + 23457.08735967048, + 23441.3835416066 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 100895.67719469467, + "scoreError" : 5842.513427615709, + "scoreConfidence" : [ + 95053.16376707896, + 106738.19062231037 + ], + "scorePercentiles" : { + "0.0" : 96850.12681348907, + "50.0" : 100614.00032196075, + "90.0" : 105156.68496708658, + "95.0" : 105156.68496708658, + "99.0" : 105156.68496708658, + "99.9" : 105156.68496708658, + "99.99" : 105156.68496708658, + "99.999" : 105156.68496708658, + "99.9999" : 105156.68496708658, + "100.0" : 105156.68496708658 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 105156.68496708658, + 104941.96199051337, + 104970.59175361619 + ], + [ + 97318.89535506097, + 96869.54980481048, + 96850.12681348907 + ], + [ + 100614.00032196075, + 100570.34877055362, + 100768.93497516097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1043337.3049575173, + "scoreError" : 37779.596320040575, + "scoreConfidence" : [ + 1005557.7086374768, + 1081116.901277558 + ], + "scorePercentiles" : { + "0.0" : 1015703.2474101158, + "50.0" : 1047311.917897162, + "90.0" : 1070712.6724839401, + "95.0" : 1070712.6724839401, + "99.0" : 1070712.6724839401, + "99.9" : 1070712.6724839401, + "99.99" : 1070712.6724839401, + "99.999" : 1070712.6724839401, + "99.9999" : 1070712.6724839401, + "100.0" : 1070712.6724839401 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1015929.1653799269, + 1015703.2474101158, + 1015896.6107273466 + ], + [ + 1070712.6724839401, + 1065183.4569176696, + 1065792.1213897474 + ], + [ + 1048437.9009330119, + 1045068.6514787334, + 1047311.917897162 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 11315.216474771834, + "scoreError" : 172.02494354923866, + "scoreConfidence" : [ + 11143.191531222596, + 11487.241418321073 + ], + "scorePercentiles" : { + "0.0" : 11231.735644345008, + "50.0" : 11259.25251134355, + "90.0" : 11454.819931776112, + "95.0" : 11454.819931776112, + "99.0" : 11454.819931776112, + "99.9" : 11454.819931776112, + "99.99" : 11454.819931776112, + "99.999" : 11454.819931776112, + "99.9999" : 11454.819931776112, + "100.0" : 11454.819931776112 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11454.819931776112, + 11443.821424852233, + 11452.087348576637 + ], + [ + 11232.920604413812, + 11233.837882043948, + 11231.735644345008 + ], + [ + 11250.457024921698, + 11259.25251134355, + 11278.015900673514 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 45224.83568262534, + "scoreError" : 1048.5119689576616, + "scoreConfidence" : [ + 44176.323713667676, + 46273.347651583 + ], + "scorePercentiles" : { + "0.0" : 44360.472011143196, + "50.0" : 45531.788517051406, + "90.0" : 45783.9767695266, + "95.0" : 45783.9767695266, + "99.0" : 45783.9767695266, + "99.9" : 45783.9767695266, + "99.99" : 45783.9767695266, + "99.999" : 45783.9767695266, + "99.9999" : 45783.9767695266, + "100.0" : 45783.9767695266 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 45548.20796990221, + 45531.788517051406, + 45457.03387411303 + ], + [ + 44360.472011143196, + 44439.66910192999, + 44418.26749609125 + ], + [ + 45783.9767695266, + 45742.61839198232, + 45741.48701188804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 443138.7335609501, + "scoreError" : 5074.984883957929, + "scoreConfidence" : [ + 438063.74867699214, + 448213.71844490804 + ], + "scorePercentiles" : { + "0.0" : 438853.1384122526, + "50.0" : 445095.7127915257, + "90.0" : 445728.84810126584, + "95.0" : 445728.84810126584, + "99.0" : 445728.84810126584, + "99.9" : 445728.84810126584, + "99.99" : 445728.84810126584, + "99.999" : 445728.84810126584, + "99.9999" : 445728.84810126584, + "100.0" : 445728.84810126584 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 439968.1464144303, + 438853.1384122526, + 438961.0512685453 + ], + [ + 443190.1281687644, + 445095.7127915257, + 445312.6153092577 + ], + [ + 445728.84810126584, + 445501.1878201987, + 445637.77376231004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6503.243331074969, + "scoreError" : 155.88656306809895, + "scoreConfidence" : [ + 6347.35676800687, + 6659.129894143069 + ], + "scorePercentiles" : { + "0.0" : 6370.511738174869, + "50.0" : 6557.353963186129, + "90.0" : 6577.488689812577, + "95.0" : 6577.488689812577, + "99.0" : 6577.488689812577, + "99.9" : 6577.488689812577, + "99.99" : 6577.488689812577, + "99.999" : 6577.488689812577, + "99.9999" : 6577.488689812577, + "100.0" : 6577.488689812577 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6577.488689812577, + 6566.590325298333, + 6570.458516592181 + ], + [ + 6387.074046326138, + 6370.511738174869, + 6382.5923342190135 + ], + [ + 6565.003626463732, + 6552.1167396017545, + 6557.353963186129 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 11867.329269757813, + "scoreError" : 196.04260834659178, + "scoreConfidence" : [ + 11671.28666141122, + 12063.371878104404 + ], + "scorePercentiles" : { + "0.0" : 11746.292867513015, + "50.0" : 11825.349115238892, + "90.0" : 12015.450360638877, + "95.0" : 12015.450360638877, + "99.0" : 12015.450360638877, + "99.9" : 12015.450360638877, + "99.99" : 12015.450360638877, + "99.999" : 12015.450360638877, + "99.9999" : 12015.450360638877, + "100.0" : 12015.450360638877 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 11825.349115238892, + 11746.292867513015, + 11913.832032557713 + ], + [ + 11777.689927721174, + 11753.985844854053, + 11766.35859539635 + ], + [ + 11993.450327416647, + 12015.450360638877, + 12013.554356483579 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 71438.27038128191, + "scoreError" : 1509.9384867966066, + "scoreConfidence" : [ + 69928.33189448531, + 72948.20886807851 + ], + "scorePercentiles" : { + "0.0" : 70268.86934433256, + "50.0" : 71282.76049270073, + "90.0" : 72538.75318438996, + "95.0" : 72538.75318438996, + "99.0" : 72538.75318438996, + "99.9" : 72538.75318438996, + "99.99" : 72538.75318438996, + "99.999" : 72538.75318438996, + "99.9999" : 72538.75318438996, + "100.0" : 72538.75318438996 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 72530.55498821396, + 72538.75318438996, + 72388.19837707932 + ], + [ + 70782.79696911784, + 70401.48243162378, + 70268.86934433256 + ], + [ + 71727.89320604227, + 71023.12443803666, + 71282.76049270073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6398709.275408815, + "scoreError" : 126183.5867819212, + "scoreConfidence" : [ + 6272525.688626894, + 6524892.8621907355 + ], + "scorePercentiles" : { + "0.0" : 6291085.297484277, + "50.0" : 6387188.439974457, + "90.0" : 6491328.1239454895, + "95.0" : 6491328.1239454895, + "99.0" : 6491328.1239454895, + "99.9" : 6491328.1239454895, + "99.99" : 6491328.1239454895, + "99.999" : 6491328.1239454895, + "99.9999" : 6491328.1239454895, + "100.0" : 6491328.1239454895 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6491328.1239454895, + 6488077.19001297, + 6481109.981205444 + ], + [ + 6354258.74841169, + 6291085.297484277, + 6310670.466246056 + ], + [ + 6387188.439974457, + 6403043.638924456, + 6381621.5924744895 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 6569576.793351535, + "scoreError" : 384954.5853160948, + "scoreConfidence" : [ + 6184622.20803544, + 6954531.378667629 + ], + "scorePercentiles" : { + "0.0" : 6265185.024420789, + "50.0" : 6650287.005984043, + "90.0" : 6793779.208559782, + "95.0" : 6793779.208559782, + "99.0" : 6793779.208559782, + "99.9" : 6793779.208559782, + "99.99" : 6793779.208559782, + "99.999" : 6793779.208559782, + "99.9999" : 6793779.208559782, + "100.0" : 6793779.208559782 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6282970.966080402, + 6269994.820689655, + 6265185.024420789 + ], + [ + 6747180.360755226, + 6789676.959945689, + 6793779.208559782 + ], + [ + 6643032.754316069, + 6684084.039412158, + 6650287.005984043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAbgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 6478658.767822663, + "scoreError" : 49069.54441114768, + "scoreConfidence" : [ + 6429589.223411515, + 6527728.312233811 + ], + "scorePercentiles" : { + "0.0" : 6437623.745817246, + "50.0" : 6485599.195849546, + "90.0" : 6526921.3568167, + "95.0" : 6526921.3568167, + "99.0" : 6526921.3568167, + "99.9" : 6526921.3568167, + "99.99" : 6526921.3568167, + "99.999" : 6526921.3568167, + "99.9999" : 6526921.3568167, + "100.0" : 6526921.3568167 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6526921.3568167, + 6492636.765736534, + 6506922.867924528 + ], + [ + 6437623.745817246, + 6472031.835058215, + 6450381.75177305 + ], + [ + 6449317.71308833, + 6486493.6783398185, + 6485599.195849546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "2" + }, + "primaryMetric" : { + "score" : 6376575.1027172785, + "scoreError" : 194988.26138432373, + "scoreConfidence" : [ + 6181586.841332954, + 6571563.364101603 + ], + "scorePercentiles" : { + "0.0" : 6238185.0137157105, + "50.0" : 6369792.822929936, + "90.0" : 6524331.181343771, + "95.0" : 6524331.181343771, + "99.0" : 6524331.181343771, + "99.9" : 6524331.181343771, + "99.99" : 6524331.181343771, + "99.999" : 6524331.181343771, + "99.9999" : 6524331.181343771, + "100.0" : 6524331.181343771 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6524331.181343771, + 6523662.991519895, + 6487411.79766537 + ], + [ + 6369792.822929936, + 6368797.631444939, + 6379426.840561224 + ], + [ + 6244740.780274657, + 6252826.865, + 6238185.0137157105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 6263376.655796844, + "scoreError" : 223312.4731747562, + "scoreConfidence" : [ + 6040064.182622087, + 6486689.1289716 + ], + "scorePercentiles" : { + "0.0" : 6147048.186846958, + "50.0" : 6200365.234345939, + "90.0" : 6453870.472258065, + "95.0" : 6453870.472258065, + "99.0" : 6453870.472258065, + "99.9" : 6453870.472258065, + "99.99" : 6453870.472258065, + "99.999" : 6453870.472258065, + "99.9999" : 6453870.472258065, + "100.0" : 6453870.472258065 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6441251.466194462, + 6418451.837075048, + 6453870.472258065 + ], + [ + 6147048.186846958, + 6148743.549477566, + 6159800.388546798 + ], + [ + 6202072.626782393, + 6200365.234345939, + 6198786.140644362 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 6448861.512850301, + "scoreError" : 94674.30577495846, + "scoreConfidence" : [ + 6354187.207075343, + 6543535.81862526 + ], + "scorePercentiles" : { + "0.0" : 6392429.194249202, + "50.0" : 6421305.336970475, + "90.0" : 6533245.871325931, + "95.0" : 6533245.871325931, + "99.0" : 6533245.871325931, + "99.9" : 6533245.871325931, + "99.99" : 6533245.871325931, + "99.999" : 6533245.871325931, + "99.9999" : 6533245.871325931, + "100.0" : 6533245.871325931 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 6533245.871325931, + 6506297.143786597, + 6526423.699282452 + ], + [ + 6392429.194249202, + 6431628.632154341, + 6403075.450704225 + ], + [ + 6411964.421794872, + 6413383.865384615, + 6421305.336970475 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 2e055ae8f7994fc277950ad73d7e50e3cea94abf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 00:17:05 +0000 Subject: [PATCH 194/345] Add performance results for commit 4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a --- ...6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json | 1161 +++++++++++++++++ 1 file changed, 1161 insertions(+) create mode 100644 performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json diff --git a/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json b/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json new file mode 100644 index 0000000000..45bd9b817a --- /dev/null +++ b/performance-results/2025-02-24T00:16:50Z-4f40d2eed6c54adcdfb8f67de1f7601ad3d5311a-jdk17.json @@ -0,0 +1,1161 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4274036884572663, + "scoreError" : 0.024762764818203227, + "scoreConfidence" : [ + 3.402640923639063, + 3.4521664532754697 + ], + "scorePercentiles" : { + "0.0" : 3.4228175390638214, + "50.0" : 3.427351229060756, + "90.0" : 3.4320947566437314, + "95.0" : 3.4320947566437314, + "99.0" : 3.4320947566437314, + "99.9" : 3.4320947566437314, + "99.99" : 3.4320947566437314, + "99.999" : 3.4320947566437314, + "99.9999" : 3.4320947566437314, + "100.0" : 3.4320947566437314 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4280617857617046, + 3.4320947566437314 + ], + [ + 3.4228175390638214, + 3.4266406723598073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7317595392033245, + "scoreError" : 0.007202794691721973, + "scoreConfidence" : [ + 1.7245567445116026, + 1.7389623338950464 + ], + "scorePercentiles" : { + "0.0" : 1.730142448238231, + "50.0" : 1.7321035723481373, + "90.0" : 1.7326885638787919, + "95.0" : 1.7326885638787919, + "99.0" : 1.7326885638787919, + "99.9" : 1.7326885638787919, + "99.99" : 1.7326885638787919, + "99.999" : 1.7326885638787919, + "99.9999" : 1.7326885638787919, + "100.0" : 1.7326885638787919 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7320245712018445, + 1.7326885638787919 + ], + [ + 1.730142448238231, + 1.7321825734944303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696805774263187, + "scoreError" : 0.0034440948327385066, + "scoreConfidence" : [ + 0.8662364825935801, + 0.8731246722590572 + ], + "scorePercentiles" : { + "0.0" : 0.8691513855289171, + "50.0" : 0.8696254417977733, + "90.0" : 0.8703200405808109, + "95.0" : 0.8703200405808109, + "99.0" : 0.8703200405808109, + "99.9" : 0.8703200405808109, + "99.99" : 0.8703200405808109, + "99.999" : 0.8703200405808109, + "99.9999" : 0.8703200405808109, + "100.0" : 0.8703200405808109 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8699057612066945, + 0.8703200405808109 + ], + [ + 0.8693451223888521, + 0.8691513855289171 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 43.725382690111864, + "scoreError" : 1.2467483817498346, + "scoreConfidence" : [ + 42.47863430836203, + 44.972131071861696 + ], + "scorePercentiles" : { + "0.0" : 42.878972567778796, + "50.0" : 43.657222701719, + "90.0" : 44.64471078475697, + "95.0" : 44.64471078475697, + "99.0" : 44.64471078475697, + "99.9" : 44.64471078475697, + "99.99" : 44.64471078475697, + "99.999" : 44.64471078475697, + "99.9999" : 44.64471078475697, + "100.0" : 44.64471078475697 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.56080073698337, + 44.64471078475697, + 44.63330805860265 + ], + [ + 42.878972567778796, + 42.90726413527759, + 42.9272503303202 + ], + [ + 43.65377670524797, + 43.657222701719, + 43.66513819032023 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 43.51101417312418, + "scoreError" : 1.3039758175367824, + "scoreConfidence" : [ + 42.2070383555874, + 44.81498999066096 + ], + "scorePercentiles" : { + "0.0" : 42.46074799798999, + "50.0" : 43.919897336473376, + "90.0" : 44.14038266172348, + "95.0" : 44.14038266172348, + "99.0" : 44.14038266172348, + "99.9" : 44.14038266172348, + "99.99" : 44.14038266172348, + "99.999" : 44.14038266172348, + "99.9999" : 44.14038266172348, + "100.0" : 44.14038266172348 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 44.13510746298949, + 44.11681928133372, + 44.14038266172348 + ], + [ + 43.89040451298183, + 43.94458681643863, + 43.919897336473376 + ], + [ + 42.46074799798999, + 42.48649199343833, + 42.50468949474879 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.05188249344848197, + "scoreError" : 0.0016286800311858416, + "scoreConfidence" : [ + 0.05025381341729613, + 0.05351117347966781 + ], + "scorePercentiles" : { + "0.0" : 0.05066552862050097, + "50.0" : 0.05210605107363002, + "90.0" : 0.052883179308193064, + "95.0" : 0.052883179308193064, + "99.0" : 0.052883179308193064, + "99.9" : 0.052883179308193064, + "99.99" : 0.052883179308193064, + "99.999" : 0.052883179308193064, + "99.9999" : 0.052883179308193064, + "100.0" : 0.052883179308193064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.050668343981962356, + 0.05066552862050097, + 0.050671809669066786 + ], + [ + 0.0521102071869268, + 0.052101387525008334, + 0.05210605107363002 + ], + [ + 0.05288311202068758, + 0.052883179308193064, + 0.05285282165036177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33817752867976947, + "scoreError" : 0.01650232636616941, + "scoreConfidence" : [ + 0.3216752023136001, + 0.35467985504593885 + ], + "scorePercentiles" : { + "0.0" : 0.3254714952483239, + "50.0" : 0.3396426453267219, + "90.0" : 0.34879158770185903, + "95.0" : 0.34879158770185903, + "99.0" : 0.34879158770185903, + "99.9" : 0.34879158770185903, + "99.99" : 0.34879158770185903, + "99.999" : 0.34879158770185903, + "99.9999" : 0.34879158770185903, + "100.0" : 0.34879158770185903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34038622288028864, + 0.3396426453267219, + 0.3394560875084861 + ], + [ + 0.34879158770185903, + 0.34850733047569266, + 0.34845366375135023 + ], + [ + 0.3271867593901322, + 0.32570196583507033, + 0.3254714952483239 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.0527440308189436, + "scoreError" : 7.295368504205332E-4, + "scoreConfidence" : [ + 0.05201449396852306, + 0.05347356766936413 + ], + "scorePercentiles" : { + "0.0" : 0.05218023944147021, + "50.0" : 0.05290051550754614, + "90.0" : 0.053163110423544546, + "95.0" : 0.053163110423544546, + "99.0" : 0.053163110423544546, + "99.9" : 0.053163110423544546, + "99.99" : 0.053163110423544546, + "99.999" : 0.053163110423544546, + "99.9999" : 0.053163110423544546, + "100.0" : 0.053163110423544546 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0529105015846477, + 0.05289031704685492, + 0.05290051550754614 + ], + [ + 0.05218363736602064, + 0.052186375219179224, + 0.05218023944147021 + ], + [ + 0.053163110423544546, + 0.05316134911141944, + 0.053120231669809566 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5202083735295633, + "scoreError" : 0.03190522031978566, + "scoreConfidence" : [ + 0.48830315320977763, + 0.552113593849349 + ], + "scorePercentiles" : { + "0.0" : 0.49537793248129985, + "50.0" : 0.5277170549868074, + "90.0" : 0.5377159787073879, + "95.0" : 0.5377159787073879, + "99.0" : 0.5377159787073879, + "99.9" : 0.5377159787073879, + "99.99" : 0.5377159787073879, + "99.999" : 0.5377159787073879, + "99.9999" : 0.5377159787073879, + "100.0" : 0.5377159787073879 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5372063835947573, + 0.5372449502524981, + 0.5377159787073879 + ], + [ + 0.5277170549868074, + 0.5284748000845532, + 0.5269452361155021 + ], + [ + 0.49537793248129985, + 0.4955745880370682, + 0.4956184375061949 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.02330213170499937, + "scoreError" : 8.600355254300683E-4, + "scoreConfidence" : [ + 0.022442096179569302, + 0.02416216723042944 + ], + "scorePercentiles" : { + "0.0" : 0.022813897548678522, + "50.0" : 0.023125910827642506, + "90.0" : 0.02400309627284467, + "95.0" : 0.02400309627284467, + "99.0" : 0.02400309627284467, + "99.9" : 0.02400309627284467, + "99.99" : 0.02400309627284467, + "99.999" : 0.02400309627284467, + "99.9999" : 0.02400309627284467, + "100.0" : 0.02400309627284467 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.02400309627284467, + 0.02393782406913143, + 0.0239411025073199 + ], + [ + 0.023125910827642506, + 0.023130867757813513, + 0.02312172802480468 + ], + [ + 0.022815617882190817, + 0.022813897548678522, + 0.022829140454568284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.24497773765850908, + "scoreError" : 0.01858056660717018, + "scoreConfidence" : [ + 0.2263971710513389, + 0.2635583042656793 + ], + "scorePercentiles" : { + "0.0" : 0.23287860653905268, + "50.0" : 0.24373483102196009, + "90.0" : 0.2584875260545906, + "95.0" : 0.2584875260545906, + "99.0" : 0.2584875260545906, + "99.9" : 0.2584875260545906, + "99.99" : 0.2584875260545906, + "99.999" : 0.2584875260545906, + "99.9999" : 0.2584875260545906, + "100.0" : 0.2584875260545906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.24291845883838997, + 0.24373483102196009, + 0.244542229520223 + ], + [ + 0.23289833480832828, + 0.232887405798789, + 0.23287860653905268 + ], + [ + 0.2583865650983128, + 0.2580656812469356, + 0.2584875260545906 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.10041460423244533, + "scoreError" : 0.00344695704530663, + "scoreConfidence" : [ + 0.0969676471871387, + 0.10386156127775197 + ], + "scorePercentiles" : { + "0.0" : 0.09789638518844836, + "50.0" : 0.09973601610715496, + "90.0" : 0.10319401726415289, + "95.0" : 0.10319401726415289, + "99.0" : 0.10319401726415289, + "99.9" : 0.10319401726415289, + "99.99" : 0.10319401726415289, + "99.999" : 0.10319401726415289, + "99.9999" : 0.10319401726415289, + "100.0" : 0.10319401726415289 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0997753193151546, + 0.09973601610715496, + 0.09968744761999701 + ], + [ + 0.10319401726415289, + 0.10292642249737541, + 0.10296189465122266 + ], + [ + 0.09890774312108085, + 0.09864619232742124, + 0.09789638518844836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0159083973122576, + "scoreError" : 0.02939051680419365, + "scoreConfidence" : [ + 0.9865178805080639, + 1.0452989141164513 + ], + "scorePercentiles" : { + "0.0" : 1.0011459455400942, + "50.0" : 1.0057589681182741, + "90.0" : 1.0412337920874544, + "95.0" : 1.0412337920874544, + "99.0" : 1.0412337920874544, + "99.9" : 1.0412337920874544, + "99.99" : 1.0412337920874544, + "99.999" : 1.0412337920874544, + "99.9999" : 1.0412337920874544, + "100.0" : 1.0412337920874544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.009501218958207, + 1.005332541314837, + 1.0057589681182741 + ], + [ + 1.0412337920874544, + 1.0381442229834943, + 1.0374625426348547 + ], + [ + 1.003403861141768, + 1.0011924830313346, + 1.0011459455400942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.04436857258557735, + "scoreError" : 0.001215658707935488, + "scoreConfidence" : [ + 0.04315291387764186, + 0.04558423129351284 + ], + "scorePercentiles" : { + "0.0" : 0.04356789100771141, + "50.0" : 0.04423132656897566, + "90.0" : 0.04526977572758838, + "95.0" : 0.04526977572758838, + "99.0" : 0.04526977572758838, + "99.9" : 0.04526977572758838, + "99.99" : 0.04526977572758838, + "99.999" : 0.04526977572758838, + "99.9999" : 0.04526977572758838, + "100.0" : 0.04526977572758838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04427510071104736, + 0.04423132656897566, + 0.04421848874876743 + ], + [ + 0.043641449038373414, + 0.04356789100771141, + 0.04360398981424959 + ], + [ + 0.045260049685898945, + 0.04526977572758838, + 0.045249081967584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4358362930061064, + "scoreError" : 0.00755290990194395, + "scoreConfidence" : [ + 0.4282833831041624, + 0.44338920290805034 + ], + "scorePercentiles" : { + "0.0" : 0.4298716314477304, + "50.0" : 0.4364674297747905, + "90.0" : 0.44085744850996295, + "95.0" : 0.44085744850996295, + "99.0" : 0.44085744850996295, + "99.9" : 0.44085744850996295, + "99.99" : 0.44085744850996295, + "99.999" : 0.44085744850996295, + "99.9999" : 0.44085744850996295, + "100.0" : 0.44085744850996295 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4368088904953263, + 0.4364674297747905, + 0.43620555661694144 + ], + [ + 0.44085744850996295, + 0.4406312695747962, + 0.44042787976746234 + ], + [ + 0.43134281193926843, + 0.4299137189286789, + 0.4298716314477304 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 0.011722568660637263, + "scoreError" : 2.1956260875161603E-4, + "scoreConfidence" : [ + 0.011503006051885646, + 0.01194213126938888 + ], + "scorePercentiles" : { + "0.0" : 0.011542314397607535, + "50.0" : 0.011800895635252648, + "90.0" : 0.011824917085953011, + "95.0" : 0.011824917085953011, + "99.0" : 0.011824917085953011, + "99.9" : 0.011824917085953011, + "99.99" : 0.011824917085953011, + "99.999" : 0.011824917085953011, + "99.9999" : 0.011824917085953011, + "100.0" : 0.011824917085953011 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.011550013690086382, + 0.011542314397607535, + 0.01155425209245146 + ], + [ + 0.011824917085953011, + 0.011808919938877789, + 0.01182250247441645 + ], + [ + 0.011800895635252648, + 0.01179528595810834, + 0.011804016672981744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0698523009710762, + "scoreError" : 0.0014210968304418292, + "scoreConfidence" : [ + 0.06843120414063437, + 0.07127339780151802 + ], + "scorePercentiles" : { + "0.0" : 0.06866273061342196, + "50.0" : 0.07006469910388363, + "90.0" : 0.07072980937157407, + "95.0" : 0.07072980937157407, + "99.0" : 0.07072980937157407, + "99.9" : 0.07072980937157407, + "99.99" : 0.07072980937157407, + "99.999" : 0.07072980937157407, + "99.9999" : 0.07072980937157407, + "100.0" : 0.07072980937157407 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07070594901472782, + 0.07072980937157407, + 0.07066807764877146 + ], + [ + 0.06896519448563133, + 0.06874885908056566, + 0.06866273061342196 + ], + [ + 0.07010626623108039, + 0.07006469910388363, + 0.07001912319002941 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "10" + }, + "primaryMetric" : { + "score" : 2.2874525121049147E7, + "scoreError" : 920787.4900115487, + "scoreConfidence" : [ + 2.1953737631037597E7, + 2.3795312611060698E7 + ], + "scorePercentiles" : { + "0.0" : 2.240210304474273E7, + "50.0" : 2.2565303896396395E7, + "90.0" : 2.3641611439716313E7, + "95.0" : 2.3641611439716313E7, + "99.0" : 2.3641611439716313E7, + "99.9" : 2.3641611439716313E7, + "99.99" : 2.3641611439716313E7, + "99.999" : 2.3641611439716313E7, + "99.9999" : 2.3641611439716313E7, + "100.0" : 2.3641611439716313E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.3641611439716313E7, + 2.359826475471698E7, + 2.3560848635294117E7 + ], + [ + 2.2503107015730336E7, + 2.2443770878923766E7, + 2.240210304474273E7 + ], + [ + 2.2591522221218962E7, + 2.25641942027027E7, + 2.2565303896396395E7 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.3047301492169302E7, + "scoreError" : 309261.7454961725, + "scoreConfidence" : [ + 2.273803974667313E7, + 2.3356563237665474E7 + ], + "scorePercentiles" : { + "0.0" : 2.284278906392694E7, + "50.0" : 2.2973325006880734E7, + "90.0" : 2.3301097169767443E7, + "95.0" : 2.3301097169767443E7, + "99.0" : 2.3301097169767443E7, + "99.9" : 2.3301097169767443E7, + "99.99" : 2.3301097169767443E7, + "99.999" : 2.3301097169767443E7, + "99.9999" : 2.3301097169767443E7, + "100.0" : 2.3301097169767443E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.319061096064815E7, + 2.2973325006880734E7, + 2.2951058389908258E7 + ], + [ + 2.2868141162100457E7, + 2.2856062216894977E7, + 2.284278906392694E7 + ], + [ + 2.3301097169767443E7, + 2.323164748491879E7, + 2.3210981974477958E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Mon, 24 Feb 2025 11:00:12 +1000 Subject: [PATCH 195/345] tweak overlapping fields performance tests --- .../performance/OverlappingFieldValidationPerformance.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/performance/OverlappingFieldValidationPerformance.java b/src/test/java/performance/OverlappingFieldValidationPerformance.java index 15d8216d4a..ab6576f74f 100644 --- a/src/test/java/performance/OverlappingFieldValidationPerformance.java +++ b/src/test/java/performance/OverlappingFieldValidationPerformance.java @@ -1,5 +1,6 @@ package performance; +import graphql.Assert; import graphql.ExecutionResult; import graphql.GraphQL; import graphql.i18n.I18n; @@ -52,7 +53,7 @@ public static class MyState { GraphQLSchema schema2; Document document; - @Param({"10", "100"}) + @Param({"100", "1000"}) int size; Document overlapFrag; @@ -153,6 +154,7 @@ private List validateQuery(GraphQLSchema schema, Document docum OverlappingFieldsCanBeMerged overlappingFieldsCanBeMerged = new OverlappingFieldsCanBeMerged(validationContext, errorCollector); LanguageTraversal languageTraversal = new LanguageTraversal(); languageTraversal.traverse(document, new RulesVisitor(validationContext, Collections.singletonList(overlappingFieldsCanBeMerged))); + Assert.assertTrue(errorCollector.getErrors().size() == 0); return errorCollector.getErrors(); } From a10c49522f243b97b3e5328501b2a004c7cad4de Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 01:30:04 +0000 Subject: [PATCH 196/345] Add performance results for commit 53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d --- ...cbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json | 665 ++++++++++++++++++ 1 file changed, 665 insertions(+) create mode 100644 performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json diff --git a/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json b/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json new file mode 100644 index 0000000000..94b24bdf8f --- /dev/null +++ b/performance-results/2025-02-24T01:29:41Z-53fa9b53fcbe2b6804d82a3e24bd58c0f5e70c2d-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4240890205405137, + "scoreError" : 0.03936617511364664, + "scoreConfidence" : [ + 3.384722845426867, + 3.46345519565416 + ], + "scorePercentiles" : { + "0.0" : 3.416280112766159, + "50.0" : 3.424803993008525, + "90.0" : 3.4304679833788474, + "95.0" : 3.4304679833788474, + "99.0" : 3.4304679833788474, + "99.9" : 3.4304679833788474, + "99.99" : 3.4304679833788474, + "99.999" : 3.4304679833788474, + "99.9999" : 3.4304679833788474, + "100.0" : 3.4304679833788474 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4268828533900053, + 3.4304679833788474 + ], + [ + 3.416280112766159, + 3.4227251326270443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7289182439981992, + "scoreError" : 0.009875088289429172, + "scoreConfidence" : [ + 1.71904315570877, + 1.7387933322876283 + ], + "scorePercentiles" : { + "0.0" : 1.7275909081867116, + "50.0" : 1.728819061863204, + "90.0" : 1.7304439440796775, + "95.0" : 1.7304439440796775, + "99.0" : 1.7304439440796775, + "99.9" : 1.7304439440796775, + "99.99" : 1.7304439440796775, + "99.999" : 1.7304439440796775, + "99.9999" : 1.7304439440796775, + "100.0" : 1.7304439440796775 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7300225473819377, + 1.7304439440796775 + ], + [ + 1.7275909081867116, + 1.7276155763444705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8700132941789567, + "scoreError" : 0.0021170309298315024, + "scoreConfidence" : [ + 0.8678962632491252, + 0.8721303251087882 + ], + "scorePercentiles" : { + "0.0" : 0.8695372797886042, + "50.0" : 0.8701173884345118, + "90.0" : 0.870281120058199, + "95.0" : 0.870281120058199, + "99.0" : 0.870281120058199, + "99.9" : 0.870281120058199, + "99.99" : 0.870281120058199, + "99.999" : 0.870281120058199, + "99.9999" : 0.870281120058199, + "100.0" : 0.870281120058199 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695372797886042, + 0.8700857738212587 + ], + [ + 0.8701490030477649, + 0.870281120058199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 42.64160574403351, + "scoreError" : 1.3640765499826009, + "scoreConfidence" : [ + 41.27752919405091, + 44.00568229401611 + ], + "scorePercentiles" : { + "0.0" : 41.707744537786546, + "50.0" : 42.49634829304081, + "90.0" : 43.71206456211418, + "95.0" : 43.71206456211418, + "99.0" : 43.71206456211418, + "99.9" : 43.71206456211418, + "99.99" : 43.71206456211418, + "99.999" : 43.71206456211418, + "99.9999" : 43.71206456211418, + "100.0" : 43.71206456211418 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 41.707744537786546, + 41.77952555912812, + 41.87837244221971 + ], + [ + 43.71206456211418, + 43.60545355674085, + 43.60775354052616 + ], + [ + 42.50645826039412, + 42.48073094435115, + 42.49634829304081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34440201171656104, + "scoreError" : 0.004486131561743835, + "scoreConfidence" : [ + 0.3399158801548172, + 0.34888814327830486 + ], + "scorePercentiles" : { + "0.0" : 0.34078550754813425, + "50.0" : 0.34573783564390664, + "90.0" : 0.3467770228517928, + "95.0" : 0.3467770228517928, + "99.0" : 0.3467770228517928, + "99.9" : 0.3467770228517928, + "99.99" : 0.3467770228517928, + "99.999" : 0.3467770228517928, + "99.9999" : 0.3467770228517928, + "100.0" : 0.3467770228517928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3466564419717138, + 0.34573783564390664, + 0.3454683490862611 + ], + [ + 0.34078550754813425, + 0.341077951739427, + 0.3407947371183206 + ], + [ + 0.3467770228517928, + 0.3460057300532835, + 0.34631452943621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5108566930793287, + "scoreError" : 0.01673376640611887, + "scoreConfidence" : [ + 0.49412292667320984, + 0.5275904594854476 + ], + "scorePercentiles" : { + "0.0" : 0.4975432007562565, + "50.0" : 0.5133298237347295, + "90.0" : 0.5213933500521376, + "95.0" : 0.5213933500521376, + "99.0" : 0.5213933500521376, + "99.9" : 0.5213933500521376, + "99.99" : 0.5213933500521376, + "99.999" : 0.5213933500521376, + "99.9999" : 0.5213933500521376, + "100.0" : 0.5213933500521376 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5133298237347295, + 0.5134748340521668, + 0.5125813436699128 + ], + [ + 0.49966809073648444, + 0.49803418884462153, + 0.4975432007562565 + ], + [ + 0.5213933500521376, + 0.5209760688200052, + 0.5207093370476439 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.22985229142533534, + "scoreError" : 0.009007513978974728, + "scoreConfidence" : [ + 0.2208447774463606, + 0.23885980540431007 + ], + "scorePercentiles" : { + "0.0" : 0.2246681499179978, + "50.0" : 0.2278689162375245, + "90.0" : 0.237023872223934, + "95.0" : 0.237023872223934, + "99.0" : 0.237023872223934, + "99.9" : 0.237023872223934, + "99.99" : 0.237023872223934, + "99.999" : 0.237023872223934, + "99.9999" : 0.237023872223934, + "100.0" : 0.237023872223934 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.2278689162375245, + 0.22774250177636074, + 0.22795436086986254 + ], + [ + 0.22517435144446196, + 0.2246681499179978, + 0.2248926582634313 + ], + [ + 0.237023872223934, + 0.23653219364223374, + 0.2368136184522118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0276159079256935, + "scoreError" : 0.03894493523763066, + "scoreConfidence" : [ + 0.9886709726880628, + 1.0665608431633242 + ], + "scorePercentiles" : { + "0.0" : 1.0002823356671335, + "50.0" : 1.0272291300328678, + "90.0" : 1.0546416500052727, + "95.0" : 1.0546416500052727, + "99.0" : 1.0546416500052727, + "99.9" : 1.0546416500052727, + "99.99" : 1.0546416500052727, + "99.999" : 1.0546416500052727, + "99.9999" : 1.0546416500052727, + "100.0" : 1.0546416500052727 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0546416500052727, + 1.054312120177103, + 1.0531231917649537 + ], + [ + 1.0005659335667834, + 1.0002823356671335, + 1.0008482301841473 + ], + [ + 1.0303489075829384, + 1.0272291300328678, + 1.0271916723500412 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.43364130483497326, + "scoreError" : 0.00832028889387276, + "scoreConfidence" : [ + 0.4253210159411005, + 0.441961593728846 + ], + "scorePercentiles" : { + "0.0" : 0.42869411788914136, + "50.0" : 0.43192799589686004, + "90.0" : 0.4409237714285714, + "95.0" : 0.4409237714285714, + "99.0" : 0.4409237714285714, + "99.9" : 0.4409237714285714, + "99.99" : 0.4409237714285714, + "99.999" : 0.4409237714285714, + "99.9999" : 0.4409237714285714, + "100.0" : 0.4409237714285714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4409237714285714, + 0.4396748718839305, + 0.4388150212383167 + ], + [ + 0.4287206548915373, + 0.42869411788914136, + 0.4290466350609233 + ], + [ + 0.43398500785488003, + 0.43192799589686004, + 0.4309836673705986 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07000095626907243, + "scoreError" : 0.0014089190015736848, + "scoreConfidence" : [ + 0.06859203726749875, + 0.07140987527064611 + ], + "scorePercentiles" : { + "0.0" : 0.06913664714503985, + "50.0" : 0.06945898296891062, + "90.0" : 0.07108060061981121, + "95.0" : 0.07108060061981121, + "99.0" : 0.07108060061981121, + "99.9" : 0.07108060061981121, + "99.99" : 0.07108060061981121, + "99.999" : 0.07108060061981121, + "99.9999" : 0.07108060061981121, + "100.0" : 0.07108060061981121 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07108060061981121, + 0.06928036679298614, + 0.06945898296891062 + ], + [ + 0.0692402498563288, + 0.06913664714503985, + 0.06942358199868097 + ], + [ + 0.07097093614137184, + 0.0708561556971084, + 0.07056108520141402 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.315031757691618E7, + "scoreError" : 834203.297699478, + "scoreConfidence" : [ + 2.2316114279216703E7, + 2.3984520874615658E7 + ], + "scorePercentiles" : { + "0.0" : 2.251475790786517E7, + "50.0" : 2.3254453705336425E7, + "90.0" : 2.3667659647754136E7, + "95.0" : 2.3667659647754136E7, + "99.0" : 2.3667659647754136E7, + "99.9" : 2.3667659647754136E7, + "99.99" : 2.3667659647754136E7, + "99.999" : 2.3667659647754136E7, + "99.9999" : 2.3667659647754136E7, + "100.0" : 2.3667659647754136E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.3667659647754136E7, + 2.3658213401891254E7, + 2.366260164066194E7 + ], + [ + 2.251475790786517E7, + 2.2533523272522524E7, + 2.2547165313063063E7 + ], + [ + 2.3254453705336425E7, + 2.32293066450116E7, + 2.3285176658139534E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From d229276fb3c4911f7a7e56bf28334808acb01ca3 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Mon, 24 Feb 2025 19:18:16 +1000 Subject: [PATCH 197/345] tweak Overlapping performance test --- .../java/performance/OverlappingFieldValidationPerformance.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/performance/OverlappingFieldValidationPerformance.java b/src/test/java/performance/OverlappingFieldValidationPerformance.java index ab6576f74f..19e7c0cdda 100644 --- a/src/test/java/performance/OverlappingFieldValidationPerformance.java +++ b/src/test/java/performance/OverlappingFieldValidationPerformance.java @@ -53,7 +53,7 @@ public static class MyState { GraphQLSchema schema2; Document document; - @Param({"100", "1000"}) + @Param({"100"}) int size; Document overlapFrag; From 6ba6fd8a7308947cf7165e708893b68bdec7c2be Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Feb 2025 09:48:30 +0000 Subject: [PATCH 198/345] Add performance results for commit d229276fb3c4911f7a7e56bf28334808acb01ca3 --- ...3c4911f7a7e56bf28334808acb01ca3-jdk17.json | 665 ++++++++++++++++++ 1 file changed, 665 insertions(+) create mode 100644 performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json diff --git a/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json b/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json new file mode 100644 index 0000000000..30667dd796 --- /dev/null +++ b/performance-results/2025-02-24T09:48:13Z-d229276fb3c4911f7a7e56bf28334808acb01ca3-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4022546195396735, + "scoreError" : 0.017482973489114994, + "scoreConfidence" : [ + 3.3847716460505586, + 3.4197375930287883 + ], + "scorePercentiles" : { + "0.0" : 3.3988796541507518, + "50.0" : 3.4023760846252484, + "90.0" : 3.4053866547574443, + "95.0" : 3.4053866547574443, + "99.0" : 3.4053866547574443, + "99.9" : 3.4053866547574443, + "99.99" : 3.4053866547574443, + "99.999" : 3.4053866547574443, + "99.9999" : 3.4053866547574443, + "100.0" : 3.4053866547574443 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.401772014494162, + 3.4029801547563348 + ], + [ + 3.3988796541507518, + 3.4053866547574443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7196663533286398, + "scoreError" : 0.014536449828748476, + "scoreConfidence" : [ + 1.7051299034998912, + 1.7342028031573884 + ], + "scorePercentiles" : { + "0.0" : 1.7174594833968682, + "50.0" : 1.7194137156433158, + "90.0" : 1.722378498631059, + "95.0" : 1.722378498631059, + "99.0" : 1.722378498631059, + "99.9" : 1.722378498631059, + "99.99" : 1.722378498631059, + "99.999" : 1.722378498631059, + "99.9999" : 1.722378498631059, + "100.0" : 1.722378498631059 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7174594833968682, + 1.720602732042664 + ], + [ + 1.7182246992439676, + 1.722378498631059 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8642645143308028, + "scoreError" : 0.0034989436549679176, + "scoreConfidence" : [ + 0.8607655706758348, + 0.8677634579857707 + ], + "scorePercentiles" : { + "0.0" : 0.8635509397774016, + "50.0" : 0.8643195138315781, + "90.0" : 0.8648680898826532, + "95.0" : 0.8648680898826532, + "99.0" : 0.8648680898826532, + "99.9" : 0.8648680898826532, + "99.99" : 0.8648680898826532, + "99.999" : 0.8648680898826532, + "99.9999" : 0.8648680898826532, + "100.0" : 0.8648680898826532 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8643220007966118, + 0.8648680898826532 + ], + [ + 0.8635509397774016, + 0.8643170268665444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 37.92108556259461, + "scoreError" : 2.1803773481991127, + "scoreConfidence" : [ + 35.7407082143955, + 40.10146291079373 + ], + "scorePercentiles" : { + "0.0" : 36.7907295161254, + "50.0" : 37.1257475248306, + "90.0" : 39.74442108757022, + "95.0" : 39.74442108757022, + "99.0" : 39.74442108757022, + "99.9" : 39.74442108757022, + "99.99" : 39.74442108757022, + "99.999" : 39.74442108757022, + "99.9999" : 39.74442108757022, + "100.0" : 39.74442108757022 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 37.093128965232616, + 37.108901583866064, + 36.7907295161254 + ], + [ + 37.1257475248306, + 37.04892454527629, + 37.19742750402842 + ], + [ + 39.464342600993746, + 39.74442108757022, + 39.716146735428204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.35038660216748957, + "scoreError" : 0.0036178241546157524, + "scoreConfidence" : [ + 0.3467687780128738, + 0.3540044263221053 + ], + "scorePercentiles" : { + "0.0" : 0.34693029758889854, + "50.0" : 0.3503044037760964, + "90.0" : 0.3537241296381451, + "95.0" : 0.3537241296381451, + "99.0" : 0.3537241296381451, + "99.9" : 0.3537241296381451, + "99.99" : 0.3537241296381451, + "99.999" : 0.3537241296381451, + "99.9999" : 0.3537241296381451, + "100.0" : 0.3537241296381451 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3537241296381451, + 0.3500387195211593, + 0.3499470267697799 + ], + [ + 0.35256384406839414, + 0.3510276912492541, + 0.35132210816792553 + ], + [ + 0.3503044037760964, + 0.34762119872775304, + 0.34693029758889854 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5133334808724517, + "scoreError" : 0.004854914945014691, + "scoreConfidence" : [ + 0.508478565927437, + 0.5181883958174663 + ], + "scorePercentiles" : { + "0.0" : 0.5105533991422883, + "50.0" : 0.5127151179697513, + "90.0" : 0.517916162773836, + "95.0" : 0.517916162773836, + "99.0" : 0.517916162773836, + "99.9" : 0.517916162773836, + "99.99" : 0.517916162773836, + "99.999" : 0.517916162773836, + "99.9999" : 0.517916162773836, + "100.0" : 0.517916162773836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5110045925907001, + 0.5107955352436409, + 0.5110505164554374 + ], + [ + 0.517916162773836, + 0.516407525690679, + 0.5166440658710477 + ], + [ + 0.5127151179697513, + 0.5129144121146844, + 0.5105533991422883 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.24284745478312963, + "scoreError" : 0.01049551718919714, + "scoreConfidence" : [ + 0.2323519375939325, + 0.2533429719723268 + ], + "scorePercentiles" : { + "0.0" : 0.23525882779306936, + "50.0" : 0.24295487135881053, + "90.0" : 0.2516049401197605, + "95.0" : 0.2516049401197605, + "99.0" : 0.2516049401197605, + "99.9" : 0.2516049401197605, + "99.99" : 0.2516049401197605, + "99.999" : 0.2516049401197605, + "99.9999" : 0.2516049401197605, + "100.0" : 0.2516049401197605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.24295487135881053, + 0.2430232010012394, + 0.2428598038468077 + ], + [ + 0.2492799530373657, + 0.24897829017801568, + 0.2516049401197605 + ], + [ + 0.23538877749270312, + 0.23627842822039505, + 0.23525882779306936 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0144827414344384, + "scoreError" : 0.040590136169010034, + "scoreConfidence" : [ + 0.9738926052654283, + 1.0550728776034484 + ], + "scorePercentiles" : { + "0.0" : 0.9830720440381402, + "50.0" : 1.019898655109117, + "90.0" : 1.039894017988978, + "95.0" : 1.039894017988978, + "99.0" : 1.039894017988978, + "99.9" : 1.039894017988978, + "99.99" : 1.039894017988978, + "99.999" : 1.039894017988978, + "99.9999" : 1.039894017988978, + "100.0" : 1.039894017988978 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0388163423704166, + 1.0388171291160277, + 1.039894017988978 + ], + [ + 1.0213398724468954, + 1.019898655109117, + 1.0187678639095448 + ], + [ + 0.9838052153467781, + 0.9830720440381402, + 0.9859335325840481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.43793185003198876, + "scoreError" : 0.007114234387317298, + "scoreConfidence" : [ + 0.43081761564467147, + 0.44504608441930604 + ], + "scorePercentiles" : { + "0.0" : 0.43224321594052556, + "50.0" : 0.4372556124786848, + "90.0" : 0.4434983154020134, + "95.0" : 0.4434983154020134, + "99.0" : 0.4434983154020134, + "99.9" : 0.4434983154020134, + "99.99" : 0.4434983154020134, + "99.999" : 0.4434983154020134, + "99.9999" : 0.4434983154020134, + "100.0" : 0.4434983154020134 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4380310428821726, + 0.43682558900100465, + 0.43433328165038004 + ], + [ + 0.44269590252324037, + 0.4434983154020134, + 0.44286145321287806 + ], + [ + 0.4372556124786848, + 0.43224321594052556, + 0.43364223719699924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07028972787073305, + "scoreError" : 5.179855389906926E-4, + "scoreConfidence" : [ + 0.06977174233174235, + 0.07080771340972375 + ], + "scorePercentiles" : { + "0.0" : 0.06970817791269919, + "50.0" : 0.07033018202533248, + "90.0" : 0.07068447294240719, + "95.0" : 0.07068447294240719, + "99.0" : 0.07068447294240719, + "99.9" : 0.07068447294240719, + "99.99" : 0.07068447294240719, + "99.999" : 0.07068447294240719, + "99.9999" : 0.07068447294240719, + "100.0" : 0.07068447294240719 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06994119092314256, + 0.06970817791269919, + 0.07017967310904319 + ], + [ + 0.07031189624963087, + 0.07056519143351092, + 0.07033018202533248 + ], + [ + 0.0705037038261691, + 0.07038306241466195, + 0.07068447294240719 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.6797161614550885E7, + "scoreError" : 1219300.8546828355, + "scoreConfidence" : [ + 2.5577860759868048E7, + 2.801646246923372E7 + ], + "scorePercentiles" : { + "0.0" : 2.616316707310705E7, + "50.0" : 2.6336108715789475E7, + "90.0" : 2.7772019864265926E7, + "95.0" : 2.7772019864265926E7, + "99.0" : 2.7772019864265926E7, + "99.9" : 2.7772019864265926E7, + "99.99" : 2.7772019864265926E7, + "99.999" : 2.7772019864265926E7, + "99.9999" : 2.7772019864265926E7, + "100.0" : 2.7772019864265926E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.7772019864265926E7, + 2.770387028531856E7, + 2.7753106371191137E7 + ], + [ + 2.6267871010498688E7, + 2.616316707310705E7, + 2.6336108715789475E7 + ], + [ + 2.620666960209424E7, + 2.6275712790026248E7, + 2.6695928818666667E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 2f880f3c1b28bc9004d94aea79dd7609f3b3d513 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 25 Feb 2025 10:02:04 +1000 Subject: [PATCH 199/345] call Overlapping validation only once during validation --- .../rules/OverlappingFieldsCanBeMerged.java | 11 +- .../OverlappingFieldsCanBeMergedTest.groovy | 101 +++++++++++++++--- 2 files changed, 93 insertions(+), 19 deletions(-) diff --git a/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java b/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java index a674e46929..aa877d8cfd 100644 --- a/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java +++ b/src/main/java/graphql/validation/rules/OverlappingFieldsCanBeMerged.java @@ -10,6 +10,7 @@ import graphql.language.FragmentDefinition; import graphql.language.FragmentSpread; import graphql.language.InlineFragment; +import graphql.language.OperationDefinition; import graphql.language.Selection; import graphql.language.SelectionSet; import graphql.schema.GraphQLFieldDefinition; @@ -47,7 +48,6 @@ import static graphql.util.FpKit.filterSet; import static graphql.util.FpKit.groupingBy; import static graphql.validation.ValidationErrorType.FieldsConflict; -import static java.lang.String.format; @Internal public class OverlappingFieldsCanBeMerged extends AbstractRule { @@ -62,10 +62,15 @@ public OverlappingFieldsCanBeMerged(ValidationContext validationContext, Validat } @Override - public void leaveSelectionSet(SelectionSet selectionSet) { + public void checkOperationDefinition(OperationDefinition operationDefinition) { + super.checkOperationDefinition(operationDefinition); + impl(operationDefinition.getSelectionSet(), getValidationContext().getOutputType()); + } + + public void impl(SelectionSet selectionSet, GraphQLOutputType graphQLOutputType) { Map> fieldMap = new LinkedHashMap<>(); Set visitedFragmentSpreads = new LinkedHashSet<>(); - collectFields(fieldMap, selectionSet, getValidationContext().getOutputType(), visitedFragmentSpreads); + collectFields(fieldMap, selectionSet, graphQLOutputType, visitedFragmentSpreads); List conflicts = findConflicts(fieldMap); for (Conflict conflict : conflicts) { if (conflictsReported.contains(conflict.fields)) { diff --git a/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy b/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy index babf549a0a..d35ec38084 100644 --- a/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy +++ b/src/test/groovy/graphql/validation/rules/OverlappingFieldsCanBeMergedTest.groovy @@ -47,6 +47,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { def "identical fields are ok"() { given: def query = """ + {...f} fragment f on Test{ name name @@ -59,9 +60,22 @@ class OverlappingFieldsCanBeMergedTest extends Specification { errorCollector.errors.isEmpty() } + def "identical fields are ok 2"() { + given: + def query = """ + { name name name name: name} + """ + when: + traverse(query, null) + + then: + errorCollector.errors.isEmpty() + } + def "two aliases with different targets"() { given: def query = """ + {... f } fragment f on Test{ myName : name myName : nickname @@ -72,8 +86,8 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[f]) : 'myName' : 'name' and 'nickname' are different fields" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 17), new SourceLocation(4, 17)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'myName' : 'name' and 'nickname' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 17), new SourceLocation(5, 17)] } static GraphQLSchema unionSchema() { @@ -134,7 +148,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[boxUnion]) : 'scalar' : returns different types 'Int' and 'String'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : returns different types 'Int' and 'String'" } @@ -182,7 +196,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[boxUnion]) : 'scalar' : fields have different nullability shapes" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : fields have different nullability shapes" } def 'not the same list return types'() { @@ -206,7 +220,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[boxUnion]) : 'scalar' : fields have different list shapes" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'boxUnion/scalar' : fields have different list shapes" } @@ -303,6 +317,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { def 'Same aliases with different field targets'() { given: def query = """ + {dog{...sameAliasesWithDifferentFieldTargets}} fragment sameAliasesWithDifferentFieldTargets on Dog { fido: name fido: nickname @@ -322,13 +337,14 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[sameAliasesWithDifferentFieldTargets]) : 'fido' : 'name' and 'nickname' are different fields" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/fido' : 'name' and 'nickname' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] } def 'Alias masking direct field access'() { given: def query = """ + {dog{...aliasMaskingDirectFieldAccess}} fragment aliasMaskingDirectFieldAccess on Dog { name: nickname name @@ -346,8 +362,8 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[aliasMaskingDirectFieldAccess]) : 'name' : 'nickname' and 'name' are different fields" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/name' : 'nickname' and 'name' are different fields" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] } def 'issue 3332 - Alias masking direct field access non fragment'() { @@ -370,7 +386,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[dog]) : 'name' : 'nickname' and 'name' are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/name' : 'nickname' and 'name' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] } @@ -398,13 +414,14 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[cat]) : 'foo1' : 'foo1' and 'foo2' are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'cat/foo1' : 'foo1' and 'foo2' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(4, 17), new SourceLocation(5, 17)] } def 'conflicting args'() { given: def query = """ + {dog{...conflictingArgs}} fragment conflictingArgs on Dog { doesKnowCommand(dogCommand: SIT) doesKnowCommand(dogCommand: HEEL) @@ -424,8 +441,8 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[conflictingArgs]) : 'doesKnowCommand' : fields have different arguments" - errorCollector.getErrors()[0].locations == [new SourceLocation(3, 13), new SourceLocation(4, 13)] + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'dog/doesKnowCommand' : fields have different arguments" + errorCollector.getErrors()[0].locations == [new SourceLocation(4, 13), new SourceLocation(5, 13)] } // @@ -524,7 +541,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[f1]) : 'x' : 'a' and 'b' are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'f1/x' : 'a' and 'b' are different fields" errorCollector.getErrors()[0].locations == [new SourceLocation(18, 13), new SourceLocation(21, 13)] } @@ -672,7 +689,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[field]) : 'deepField/x' : 'a' and 'b' are different fields" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'field/deepField/x' : 'a' and 'b' are different fields" errorCollector.getErrors()[0].locations.size() == 2 } @@ -892,7 +909,7 @@ class OverlappingFieldsCanBeMergedTest extends Specification { then: errorCollector.getErrors().size() == 1 - errorCollector.getErrors()[0].message == "Validation error (FieldsConflict@[pets]) : 'friends/conflict' : returns different types 'Int' and 'Float'" + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'pets/friends/conflict' : returns different types 'Int' and 'Float'" } @@ -948,5 +965,57 @@ class OverlappingFieldsCanBeMergedTest extends Specification { errorCollector.getErrors().size() == 0 } + def "overlapping fields on lower level"() { + given: + def schema = schema(''' + type Query { + pets: [Pet] + } + interface Pet { + name: String + breed: String + friends: [Pet] + } + type Dog implements Pet { + name: String + age: Int + dogBreed: String + breed: String + friends: [Pet] + + } + type Cat implements Pet { + catBreed: String + breed: String + height: Float + name : String + friends: [Pet] + + } + ''') + def query = ''' + { + pets { + friends { + ... on Dog { + x: name + } + ... on Cat { + x: height + } + } + } + } + ''' + when: + traverse(query, schema) + + + then: + errorCollector.getErrors().size() == 1 + errorCollector.getErrors()[0].message == "Validation error (FieldsConflict) : 'pets/friends/x' : returns different types 'String' and 'Float'" + + } + } From 689cc26d9cf483c6a04abfe1fe7a34e381f22692 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 01:24:09 +0000 Subject: [PATCH 200/345] Add performance results for commit 2f880f3c1b28bc9004d94aea79dd7609f3b3d513 --- ...b28bc9004d94aea79dd7609f3b3d513-jdk17.json | 665 ++++++++++++++++++ 1 file changed, 665 insertions(+) create mode 100644 performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json diff --git a/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json b/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json new file mode 100644 index 0000000000..9ff60cd618 --- /dev/null +++ b/performance-results/2025-02-25T01:23:55Z-2f880f3c1b28bc9004d94aea79dd7609f3b3d513-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.404690960666666, + "scoreError" : 0.03044852968952923, + "scoreConfidence" : [ + 3.374242430977137, + 3.4351394903561956 + ], + "scorePercentiles" : { + "0.0" : 3.400213854643417, + "50.0" : 3.4045940175499285, + "90.0" : 3.4093619529233923, + "95.0" : 3.4093619529233923, + "99.0" : 3.4093619529233923, + "99.9" : 3.4093619529233923, + "99.99" : 3.4093619529233923, + "99.999" : 3.4093619529233923, + "99.9999" : 3.4093619529233923, + "100.0" : 3.4093619529233923 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4010779262103115, + 3.4093619529233923 + ], + [ + 3.400213854643417, + 3.4081101088895456 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7196934301008682, + "scoreError" : 0.009433261921329341, + "scoreConfidence" : [ + 1.7102601681795389, + 1.7291266920221975 + ], + "scorePercentiles" : { + "0.0" : 1.718360312679651, + "50.0" : 1.7193343356815178, + "90.0" : 1.7217447363607858, + "95.0" : 1.7217447363607858, + "99.0" : 1.7217447363607858, + "99.9" : 1.7217447363607858, + "99.99" : 1.7217447363607858, + "99.999" : 1.7217447363607858, + "99.9999" : 1.7217447363607858, + "100.0" : 1.7217447363607858 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.718360312679651, + 1.7196083418321035 + ], + [ + 1.7190603295309321, + 1.7217447363607858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8631208369410628, + "scoreError" : 0.013966265434022882, + "scoreConfidence" : [ + 0.8491545715070399, + 0.8770871023750857 + ], + "scorePercentiles" : { + "0.0" : 0.8611588039727823, + "50.0" : 0.8627513593861174, + "90.0" : 0.8658218250192341, + "95.0" : 0.8658218250192341, + "99.0" : 0.8658218250192341, + "99.9" : 0.8658218250192341, + "99.99" : 0.8658218250192341, + "99.999" : 0.8658218250192341, + "99.9999" : 0.8658218250192341, + "100.0" : 0.8658218250192341 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8611588039727823, + 0.8616121378539223 + ], + [ + 0.8638905809183123, + 0.8658218250192341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 98.27096987223166, + "scoreError" : 2.5045477559708336, + "scoreConfidence" : [ + 95.76642211626083, + 100.7755176282025 + ], + "scorePercentiles" : { + "0.0" : 95.68051247255123, + "50.0" : 98.9270899531805, + "90.0" : 100.39260288227369, + "95.0" : 100.39260288227369, + "99.0" : 100.39260288227369, + "99.9" : 100.39260288227369, + "99.99" : 100.39260288227369, + "99.999" : 100.39260288227369, + "99.9999" : 100.39260288227369, + "100.0" : 100.39260288227369 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 98.94312506760458, + 96.69698833361956, + 95.68051247255123 + ], + [ + 97.34514063006868, + 98.9270899531805, + 99.06264023901753 + ], + [ + 97.87215469667093, + 99.5184745750984, + 100.39260288227369 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18459150246144512, + "scoreError" : 0.015563152229965621, + "scoreConfidence" : [ + 0.1690283502314795, + 0.20015465469141075 + ], + "scorePercentiles" : { + "0.0" : 0.17348002208344177, + "50.0" : 0.18480328357326337, + "90.0" : 0.195657021150046, + "95.0" : 0.195657021150046, + "99.0" : 0.195657021150046, + "99.9" : 0.195657021150046, + "99.99" : 0.195657021150046, + "99.999" : 0.195657021150046, + "99.9999" : 0.195657021150046, + "100.0" : 0.195657021150046 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17405713295854075, + 0.17348002208344177, + 0.17388261548225556 + ], + [ + 0.18486138387311446, + 0.18480328357326337, + 0.18468698899292665 + ], + [ + 0.195657021150046, + 0.19494815564263018, + 0.19494691839678735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34461395648434884, + "scoreError" : 0.018543995661311215, + "scoreConfidence" : [ + 0.32606996082303763, + 0.36315795214566005 + ], + "scorePercentiles" : { + "0.0" : 0.33486547773238684, + "50.0" : 0.33847169561685564, + "90.0" : 0.35935824540031625, + "95.0" : 0.35935824540031625, + "99.0" : 0.35935824540031625, + "99.9" : 0.35935824540031625, + "99.99" : 0.35935824540031625, + "99.999" : 0.35935824540031625, + "99.9999" : 0.35935824540031625, + "100.0" : 0.35935824540031625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3397393252250722, + 0.33774711324259515, + 0.33847169561685564 + ], + [ + 0.33581736851472516, + 0.33486547773238684, + 0.33725926642385 + ], + [ + 0.3590065454676001, + 0.3592605707357379, + 0.35935824540031625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1662644528201741, + "scoreError" : 0.007041908485461542, + "scoreConfidence" : [ + 0.15922254433471256, + 0.17330636130563565 + ], + "scorePercentiles" : { + "0.0" : 0.16043068409991498, + "50.0" : 0.16863301156790664, + "90.0" : 0.16965664430646038, + "95.0" : 0.16965664430646038, + "99.0" : 0.16965664430646038, + "99.9" : 0.16965664430646038, + "99.99" : 0.16965664430646038, + "99.999" : 0.16965664430646038, + "99.9999" : 0.16965664430646038, + "100.0" : 0.16965664430646038 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16937442495172927, + 0.16863301156790664, + 0.16815488644694804 + ], + [ + 0.16933125113026398, + 0.16909790911243003, + 0.16965664430646038 + ], + [ + 0.16098464717719216, + 0.16071661658872122, + 0.16043068409991498 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3986439231800467, + "scoreError" : 0.00637091300263217, + "scoreConfidence" : [ + 0.39227301017741456, + 0.40501483618267886 + ], + "scorePercentiles" : { + "0.0" : 0.39420818677073477, + "50.0" : 0.3977881543754972, + "90.0" : 0.40496893557139385, + "95.0" : 0.40496893557139385, + "99.0" : 0.40496893557139385, + "99.9" : 0.40496893557139385, + "99.99" : 0.40496893557139385, + "99.999" : 0.40496893557139385, + "99.9999" : 0.40496893557139385, + "100.0" : 0.40496893557139385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40496893557139385, + 0.39927211874151564, + 0.3992613548528766 + ], + [ + 0.40407144094710895, + 0.3971080157646031, + 0.3967713057451198 + ], + [ + 0.3977881543754972, + 0.3943457958515714, + 0.39420818677073477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16648713306207816, + "scoreError" : 0.005414247074119306, + "scoreConfidence" : [ + 0.16107288598795885, + 0.17190138013619746 + ], + "scorePercentiles" : { + "0.0" : 0.16283060862981355, + "50.0" : 0.16614479812261174, + "90.0" : 0.1708238147110572, + "95.0" : 0.1708238147110572, + "99.0" : 0.1708238147110572, + "99.9" : 0.1708238147110572, + "99.99" : 0.1708238147110572, + "99.999" : 0.1708238147110572, + "99.9999" : 0.1708238147110572, + "100.0" : 0.1708238147110572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17022843914479283, + 0.1708238147110572, + 0.17013370232566052 + ], + [ + 0.16572026116929603, + 0.16614479812261174, + 0.16627377380576294 + ], + [ + 0.1633060520772095, + 0.16283060862981355, + 0.1629227475724992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048708404283641024, + "scoreError" : 3.256900826240487E-4, + "scoreConfidence" : [ + 0.048382714201016974, + 0.049034094366265074 + ], + "scorePercentiles" : { + "0.0" : 0.04842643591134269, + "50.0" : 0.04864128523274478, + "90.0" : 0.04892708317962317, + "95.0" : 0.04892708317962317, + "99.0" : 0.04892708317962317, + "99.9" : 0.04892708317962317, + "99.99" : 0.04892708317962317, + "99.999" : 0.04892708317962317, + "99.9999" : 0.04892708317962317, + "100.0" : 0.04892708317962317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048913571263665044, + 0.04851722961938724, + 0.04856391890421869 + ], + [ + 0.04892708317962317, + 0.04887132461807626, + 0.04889490055397192 + ], + [ + 0.048619889269739404, + 0.04864128523274478, + 0.04842643591134269 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0553918135524623E7, + "scoreError" : 679622.1646854198, + "scoreConfidence" : [ + 9874295.970839202, + 1.1233540300210044E7 + ], + "scorePercentiles" : { + "0.0" : 1.0047981846385542E7, + "50.0" : 1.0525982719242902E7, + "90.0" : 1.1121641787777778E7, + "95.0" : 1.1121641787777778E7, + "99.0" : 1.1121641787777778E7, + "99.9" : 1.1121641787777778E7, + "99.99" : 1.1121641787777778E7, + "99.999" : 1.1121641787777778E7, + "99.9999" : 1.1121641787777778E7, + "100.0" : 1.1121641787777778E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1.0205105657142857E7, + 1.0095831249243189E7, + 1.0047981846385542E7 + ], + [ + 1.0493827069254985E7, + 1.0525982719242902E7, + 1.0534360494736843E7 + ], + [ + 1.0856959726681128E7, + 1.1103572669256382E7, + 1.1121641787777778E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From d9ca76f4db09f2fc4314a54592ab8c6a6fb6d5c2 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 06:19:43 +1000 Subject: [PATCH 201/345] simplify ENF implementation --- .../ExecutableNormalizedOperationFactory.java | 140 ++++++++---------- ...tableNormalizedOperationFactoryTest.groovy | 2 +- 2 files changed, 61 insertions(+), 81 deletions(-) diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index 085fad0afb..d2c6da545d 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -457,6 +457,8 @@ private static class ExecutableNormalizedOperationFactoryImpl { private int fieldCount = 0; private int maxDepthSeen = 0; + private final List rootEnfs = new ArrayList<>(); + private ExecutableNormalizedOperationFactoryImpl( GraphQLSchema graphQLSchema, OperationDefinition operationDefinition, @@ -477,26 +479,8 @@ private ExecutableNormalizedOperationFactoryImpl( * Creates a new ExecutableNormalizedOperation for the provided query */ private ExecutableNormalizedOperation createNormalizedQueryImpl() { - GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); - - CollectNFResult collectFromOperationResult = collectFromOperation(rootType); - - for (ExecutableNormalizedField topLevel : collectFromOperationResult.children) { - ImmutableList fieldAndAstParents = collectFromOperationResult.normalizedFieldToAstFields.get(topLevel); - MergedField mergedField = newMergedField(fieldAndAstParents); - - captureMergedField(topLevel, mergedField); - - updateFieldToNFMap(topLevel, fieldAndAstParents); - updateCoordinatedToNFMap(topLevel); + buildEnfsRecursively(null, null, 0); - int depthSeen = buildFieldWithChildren( - topLevel, - fieldAndAstParents, - 1); - maxDepthSeen = Math.max(maxDepthSeen, depthSeen); - } - // getPossibleMergerList for (PossibleMerger possibleMerger : possibleMergerList) { List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); ENFMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema, options.deferSupport); @@ -504,7 +488,7 @@ private ExecutableNormalizedOperation createNormalizedQueryImpl() { return new ExecutableNormalizedOperation( operationDefinition.getOperation(), operationDefinition.getName(), - new ArrayList<>(collectFromOperationResult.children), + new ArrayList<>(rootEnfs), fieldToNormalizedField.build(), normalizedFieldToMergedField.build(), normalizedFieldToQueryDirectives.build(), @@ -521,17 +505,61 @@ private void captureMergedField(ExecutableNormalizedField enf, MergedField merge normalizedFieldToMergedField.put(enf, mergedFld); } - private int buildFieldWithChildren(ExecutableNormalizedField executableNormalizedField, - ImmutableList fieldAndAstParents, - int curLevel) { - checkMaxDepthExceeded(curLevel); + private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executableNormalizedField, + @Nullable ImmutableList fieldAndAstParents, + int curLevel) { + if (this.maxDepthSeen < curLevel) { + this.maxDepthSeen = curLevel; + checkMaxDepthExceeded(curLevel); + } + Set possibleObjects; + List collectedFields; - CollectNFResult nextLevel = collectFromMergedField(executableNormalizedField, fieldAndAstParents, curLevel + 1); + // special handling for the root selection Set + if (executableNormalizedField == null) { + GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); + possibleObjects = ImmutableSet.of(rootType); + collectedFields = new ArrayList<>(); + collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects, null); + } else { + checkMaxDepthExceeded(curLevel); + List fieldDefs = executableNormalizedField.getFieldDefinitions(graphQLSchema); + possibleObjects = resolvePossibleObjects(fieldDefs); + if (possibleObjects.isEmpty()) { + return; + } + collectedFields = new ArrayList<>(); + for (FieldAndAstParent fieldAndAstParent : fieldAndAstParents) { + if (fieldAndAstParent.field.getSelectionSet() == null) { + continue; + } + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astParentType, fieldAndAstParent.field.getName()); + GraphQLUnmodifiedType selectionSetType = unwrapAll(fieldDefinition.getType()); + this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), + collectedFields, + (GraphQLCompositeType) selectionSetType, + possibleObjects, + null + ); + } + } - int maxDepthSeen = curLevel; - for (ExecutableNormalizedField childENF : nextLevel.children) { - executableNormalizedField.addChild(childENF); - ImmutableList childFieldAndAstParents = nextLevel.normalizedFieldToAstFields.get(childENF); + Map> fieldsByName = fieldsByResultKey(collectedFields); + ImmutableList.Builder resultNFs = ImmutableList.builder(); + ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); + createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, curLevel + 1, executableNormalizedField); + + ImmutableList nextLevelChildren = resultNFs.build(); + ImmutableListMultimap nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build(); + + for (ExecutableNormalizedField childENF : nextLevelChildren) { + if (executableNormalizedField == null) { + // all root ENFs don't have a parent, but are collected in the rootEnfs list + rootEnfs.add(childENF); + } else { + executableNormalizedField.addChild(childENF); + } + ImmutableList childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF); MergedField mergedField = newMergedField(childFieldAndAstParents); captureMergedField(childENF, mergedField); @@ -539,14 +567,11 @@ private int buildFieldWithChildren(ExecutableNormalizedField executableNormalize updateFieldToNFMap(childENF, childFieldAndAstParents); updateCoordinatedToNFMap(childENF); - int depthSeen = buildFieldWithChildren(childENF, + // recursive call + buildEnfsRecursively(childENF, childFieldAndAstParents, curLevel + 1); - maxDepthSeen = Math.max(maxDepthSeen, depthSeen); - - checkMaxDepthExceeded(maxDepthSeen); } - return maxDepthSeen; } private void checkMaxDepthExceeded(int depthSeen) { @@ -573,37 +598,6 @@ private void updateCoordinatedToNFMap(ExecutableNormalizedField topLevel) { } } - public CollectNFResult collectFromMergedField(ExecutableNormalizedField executableNormalizedField, - ImmutableList mergedField, - int level) { - List fieldDefs = executableNormalizedField.getFieldDefinitions(graphQLSchema); - Set possibleObjects = resolvePossibleObjects(fieldDefs); - if (possibleObjects.isEmpty()) { - return new CollectNFResult(ImmutableKit.emptyList(), ImmutableListMultimap.of()); - } - - List collectedFields = new ArrayList<>(); - for (FieldAndAstParent fieldAndAstParent : mergedField) { - if (fieldAndAstParent.field.getSelectionSet() == null) { - continue; - } - GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astParentType, fieldAndAstParent.field.getName()); - GraphQLUnmodifiedType astParentType = unwrapAll(fieldDefinition.getType()); - this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), - collectedFields, - (GraphQLCompositeType) astParentType, - possibleObjects, - null - ); - } - Map> fieldsByName = fieldsByResultKey(collectedFields); - ImmutableList.Builder resultNFs = ImmutableList.builder(); - ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); - - createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, level, executableNormalizedField); - - return new CollectNFResult(resultNFs.build(), normalizedFieldToAstFields.build()); - } private Map> fieldsByResultKey(List collectedFields) { Map> fieldsByName = new LinkedHashMap<>(); @@ -613,21 +607,6 @@ private Map> fieldsByResultKey(List return fieldsByName; } - public CollectNFResult collectFromOperation(GraphQLObjectType rootType) { - - - Set possibleObjects = ImmutableSet.of(rootType); - List collectedFields = new ArrayList<>(); - collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects, null); - // group by result key - Map> fieldsByName = fieldsByResultKey(collectedFields); - ImmutableList.Builder resultNFs = ImmutableList.builder(); - ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); - - createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, 1, null); - - return new CollectNFResult(resultNFs.build(), normalizedFieldToAstFields.build()); - } private void createNFs(ImmutableList.Builder nfListBuilder, Map> fieldsByName, @@ -657,6 +636,7 @@ private void createNFs(ImmutableList.Builder nfListBu } } + // new single ENF private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGroup, int level, ExecutableNormalizedField parent) { diff --git a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy index 2b9f146721..88c7a01aa0 100644 --- a/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy +++ b/src/test/groovy/graphql/normalized/ExecutableNormalizedOperationFactoryTest.groovy @@ -29,7 +29,7 @@ import static graphql.language.AstPrinter.printAst import static graphql.parser.Parser.parseValue import static graphql.schema.FieldCoordinates.coordinates -abstract class ExecutableNormalizedOperationFactoryTest extends Specification { +class ExecutableNormalizedOperationFactoryTest extends Specification { static boolean deferSupport From 04789564b5c4f9d5b6887bdc138f78928f08f5af Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 06:44:50 +1000 Subject: [PATCH 202/345] more simplify --- .../graphql/normalized/ExecutableNormalizedOperationFactory.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index d2c6da545d..538ff2916b 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -522,7 +522,6 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable collectedFields = new ArrayList<>(); collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects, null); } else { - checkMaxDepthExceeded(curLevel); List fieldDefs = executableNormalizedField.getFieldDefinitions(graphQLSchema); possibleObjects = resolvePossibleObjects(fieldDefs); if (possibleObjects.isEmpty()) { From 7bd8ef92625e1ee80e30459c837f4b178406d556 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 26 Feb 2025 21:09:11 +0000 Subject: [PATCH 203/345] Add performance results for commit 6f33577a109177a85edb84a8f9d16c4662a8b867 --- ...09177a85edb84a8f9d16c4662a8b867-jdk17.json | 665 ++++++++++++++++++ 1 file changed, 665 insertions(+) create mode 100644 performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json diff --git a/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json b/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json new file mode 100644 index 0000000000..7955929f2c --- /dev/null +++ b/performance-results/2025-02-26T21:08:56Z-6f33577a109177a85edb84a8f9d16c4662a8b867-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4146001038397236, + "scoreError" : 0.06330522138552402, + "scoreConfidence" : [ + 3.3512948824541997, + 3.4779053252252474 + ], + "scorePercentiles" : { + "0.0" : 3.406498306401554, + "50.0" : 3.4121721428099234, + "90.0" : 3.4275578233374935, + "95.0" : 3.4275578233374935, + "99.0" : 3.4275578233374935, + "99.9" : 3.4275578233374935, + "99.99" : 3.4275578233374935, + "99.999" : 3.4275578233374935, + "99.9999" : 3.4275578233374935, + "100.0" : 3.4275578233374935 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406498306401554, + 3.4075577224157994 + ], + [ + 3.4167865632040475, + 3.4275578233374935 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.724084373375287, + "scoreError" : 0.009173345534947237, + "scoreConfidence" : [ + 1.7149110278403399, + 1.7332577189102343 + ], + "scorePercentiles" : { + "0.0" : 1.722132522557934, + "50.0" : 1.7244104377307181, + "90.0" : 1.725384095481778, + "95.0" : 1.725384095481778, + "99.0" : 1.725384095481778, + "99.9" : 1.725384095481778, + "99.99" : 1.725384095481778, + "99.999" : 1.725384095481778, + "99.9999" : 1.725384095481778, + "100.0" : 1.725384095481778 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7240017613168217, + 1.722132522557934 + ], + [ + 1.725384095481778, + 1.7248191141446145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685933549611762, + "scoreError" : 0.0035669294749559304, + "scoreConfidence" : [ + 0.8650264254862202, + 0.8721602844361321 + ], + "scorePercentiles" : { + "0.0" : 0.8679462300764225, + "50.0" : 0.8686644140845527, + "90.0" : 0.8690983615991764, + "95.0" : 0.8690983615991764, + "99.0" : 0.8690983615991764, + "99.9" : 0.8690983615991764, + "99.99" : 0.8690983615991764, + "99.999" : 0.8690983615991764, + "99.9999" : 0.8690983615991764, + "100.0" : 0.8690983615991764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8679462300764225, + 0.869003652537736 + ], + [ + 0.8683251756313696, + 0.8690983615991764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.03131562635369, + "scoreError" : 3.8131574268555535, + "scoreConfidence" : [ + 100.21815819949813, + 107.84447305320924 + ], + "scorePercentiles" : { + "0.0" : 101.2345222399038, + "50.0" : 104.32314641078156, + "90.0" : 107.1723185797236, + "95.0" : 107.1723185797236, + "99.0" : 107.1723185797236, + "99.9" : 107.1723185797236, + "99.99" : 107.1723185797236, + "99.999" : 107.1723185797236, + "99.9999" : 107.1723185797236, + "100.0" : 107.1723185797236 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.72396500224156, + 104.42774438643247, + 104.32314641078156 + ], + [ + 101.2345222399038, + 101.61710742984098, + 101.3750069855028 + ], + [ + 105.55519565109971, + 107.1723185797236, + 106.85283395165672 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18162770750824003, + "scoreError" : 0.006044886405865979, + "scoreConfidence" : [ + 0.17558282110237405, + 0.187672593914106 + ], + "scorePercentiles" : { + "0.0" : 0.17692104912957327, + "50.0" : 0.1825373323354933, + "90.0" : 0.18598964871298915, + "95.0" : 0.18598964871298915, + "99.0" : 0.18598964871298915, + "99.9" : 0.18598964871298915, + "99.99" : 0.18598964871298915, + "99.999" : 0.18598964871298915, + "99.9999" : 0.18598964871298915, + "100.0" : 0.18598964871298915 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18334443915809545, + 0.1825373323354933, + 0.1824438548310589 + ], + [ + 0.17756069605823863, + 0.17692104912957327, + 0.17704654118938443 + ], + [ + 0.18598964871298915, + 0.1859790866266203, + 0.18282671953270685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33103155204854806, + "scoreError" : 0.010016052614272533, + "scoreConfidence" : [ + 0.32101549943427554, + 0.3410476046628206 + ], + "scorePercentiles" : { + "0.0" : 0.32390096534300705, + "50.0" : 0.33049450798109653, + "90.0" : 0.3382305706893053, + "95.0" : 0.3382305706893053, + "99.0" : 0.3382305706893053, + "99.9" : 0.3382305706893053, + "99.99" : 0.3382305706893053, + "99.999" : 0.3382305706893053, + "99.9999" : 0.3382305706893053, + "100.0" : 0.3382305706893053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33280675099840257, + 0.33049450798109653, + 0.33046942586167016 + ], + [ + 0.3243713012325657, + 0.32400376565689293, + 0.32390096534300705 + ], + [ + 0.33713828767446563, + 0.3382305706893053, + 0.337868392999527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1651612001317232, + "scoreError" : 0.006671777327387482, + "scoreConfidence" : [ + 0.1584894228043357, + 0.1718329774591107 + ], + "scorePercentiles" : { + "0.0" : 0.15975479700305126, + "50.0" : 0.16664202561239794, + "90.0" : 0.16899561237008873, + "95.0" : 0.16899561237008873, + "99.0" : 0.16899561237008873, + "99.9" : 0.16899561237008873, + "99.99" : 0.16899561237008873, + "99.999" : 0.16899561237008873, + "99.9999" : 0.16899561237008873, + "100.0" : 0.16899561237008873 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1686909112378125, + 0.16899561237008873, + 0.16836642324398948 + ], + [ + 0.16008070533055868, + 0.16014325713828167, + 0.15975479700305126 + ], + [ + 0.16664202561239794, + 0.16726839185414402, + 0.16650867739518466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39718276540797226, + "scoreError" : 0.010495068770156386, + "scoreConfidence" : [ + 0.3866876966378159, + 0.40767783417812864 + ], + "scorePercentiles" : { + "0.0" : 0.39033811225605, + "50.0" : 0.39952032495705325, + "90.0" : 0.4070250141641906, + "95.0" : 0.4070250141641906, + "99.0" : 0.4070250141641906, + "99.9" : 0.4070250141641906, + "99.99" : 0.4070250141641906, + "99.999" : 0.4070250141641906, + "99.9999" : 0.4070250141641906, + "100.0" : 0.4070250141641906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39952032495705325, + 0.39207139022190857, + 0.39109308951896754 + ], + [ + 0.39983248678581423, + 0.39033811225605, + 0.3905832244180597 + ], + [ + 0.4070250141641906, + 0.40276224173345687, + 0.4014190046162492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16230465175803965, + "scoreError" : 0.0039183994711270995, + "scoreConfidence" : [ + 0.15838625228691255, + 0.16622305122916675 + ], + "scorePercentiles" : { + "0.0" : 0.1597745644442314, + "50.0" : 0.16203763755975045, + "90.0" : 0.16624055238966004, + "95.0" : 0.16624055238966004, + "99.0" : 0.16624055238966004, + "99.9" : 0.16624055238966004, + "99.99" : 0.16624055238966004, + "99.999" : 0.16624055238966004, + "99.9999" : 0.16624055238966004, + "100.0" : 0.16624055238966004 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16624055238966004, + 0.16400418776547765, + 0.16484738292891996 + ], + [ + 0.15981138290051938, + 0.1598962359854178, + 0.1597745644442314 + ], + [ + 0.16191029436241175, + 0.16203763755975045, + 0.16221962748596827 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04763327336182691, + "scoreError" : 4.3904494906094033E-4, + "scoreConfidence" : [ + 0.04719422841276597, + 0.04807231831088785 + ], + "scorePercentiles" : { + "0.0" : 0.04727598728767486, + "50.0" : 0.04777726915010009, + "90.0" : 0.04794205962950889, + "95.0" : 0.04794205962950889, + "99.0" : 0.04794205962950889, + "99.9" : 0.04794205962950889, + "99.99" : 0.04794205962950889, + "99.999" : 0.04794205962950889, + "99.9999" : 0.04794205962950889, + "100.0" : 0.04794205962950889 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04788952776833304, + 0.047806814378185084, + 0.04777726915010009 + ], + [ + 0.04794205962950889, + 0.047515909017908475, + 0.0477935064352863 + ], + [ + 0.04729572183939576, + 0.04740266475004977, + 0.04727598728767486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9672020.973374372, + "scoreError" : 191105.9680058244, + "scoreConfidence" : [ + 9480915.005368548, + 9863126.941380197 + ], + "scorePercentiles" : { + "0.0" : 9516544.845861085, + "50.0" : 9728260.992217898, + "90.0" : 9787208.828767123, + "95.0" : 9787208.828767123, + "99.0" : 9787208.828767123, + "99.9" : 9787208.828767123, + "99.99" : 9787208.828767123, + "99.999" : 9787208.828767123, + "99.9999" : 9787208.828767123, + "100.0" : 9787208.828767123 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9773146.44921875, + 9744554.864654332, + 9751680.31871345 + ], + [ + 9787208.828767123, + 9728260.992217898, + 9688269.999031946 + ], + [ + 9516544.845861085, + 9527939.308571428, + 9530583.153333334 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From c2d1a3b7a277ffb797f13873463e4c5566e6e28c Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 09:20:38 +1000 Subject: [PATCH 204/345] add ENF performance tests --- .../ExecutableNormalizedOperationFactory.java | 3 + .../java/performance/ENF1Performance.java | 70 ++++++++++ .../java/performance/ENF2Performance.java | 59 ++++++++ .../ENFDeepIntrospectionPerformance.java | 128 ++++++++++++++++++ .../performance/ENFExtraLargePerformance.java | 68 ++++++++++ 5 files changed, 328 insertions(+) create mode 100644 src/test/java/performance/ENF1Performance.java create mode 100644 src/test/java/performance/ENF2Performance.java create mode 100644 src/test/java/performance/ENFDeepIntrospectionPerformance.java create mode 100644 src/test/java/performance/ENFExtraLargePerformance.java diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index 538ff2916b..5dce5980db 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -532,6 +532,9 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable if (fieldAndAstParent.field.getSelectionSet() == null) { continue; } + // the AST parent comes from the previous collect from selection set call + // and is the type to which the field belongs (the container type of the field) and output type + // of the field needs to be determined based on the field name GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astParentType, fieldAndAstParent.field.getName()); GraphQLUnmodifiedType selectionSetType = unwrapAll(fieldDefinition.getType()); this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), diff --git a/src/test/java/performance/ENF1Performance.java b/src/test/java/performance/ENF1Performance.java new file mode 100644 index 0000000000..8e324b2976 --- /dev/null +++ b/src/test/java/performance/ENF1Performance.java @@ -0,0 +1,70 @@ +package performance; + +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(3) +public class ENF1Performance { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = PerformanceTestingUtils.loadResource("large-schema-1.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + String query = PerformanceTestingUtils.loadResource("large-schema-1-query.graphql"); + document = Parser.parse(query); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAvgTime(MyState myState, Blackhole blackhole) { + runImpl(myState, blackhole); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkThroughput(MyState myState, Blackhole blackhole) { + runImpl(myState, blackhole); + } + + private void runImpl(MyState myState, Blackhole blackhole) { + ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); + blackhole.consume(executableNormalizedOperation); + } + + +} diff --git a/src/test/java/performance/ENF2Performance.java b/src/test/java/performance/ENF2Performance.java new file mode 100644 index 0000000000..4a6989e77c --- /dev/null +++ b/src/test/java/performance/ENF2Performance.java @@ -0,0 +1,59 @@ +package performance; + +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(3) +public class ENF2Performance { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + String query = PerformanceTestingUtils.loadResource("large-schema-2-query.graphql"); + document = Parser.parse(query); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public ExecutableNormalizedOperation benchMarkAvgTime(MyState myState) { + ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); +// System.out.println("fields size:" + normalizedQuery.getFieldToNormalizedField().size()); + return executableNormalizedOperation; + } + +} diff --git a/src/test/java/performance/ENFDeepIntrospectionPerformance.java b/src/test/java/performance/ENFDeepIntrospectionPerformance.java new file mode 100644 index 0000000000..c7e0641181 --- /dev/null +++ b/src/test/java/performance/ENFDeepIntrospectionPerformance.java @@ -0,0 +1,128 @@ +package performance; + +import benchmark.BenchmarkUtils; +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Param; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import java.util.concurrent.TimeUnit; + +import static graphql.normalized.ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3, time = 5) +@Fork(2) +public class ENFDeepIntrospectionPerformance { + + @Param({"2", "10", "20"}) + int howDeep = 2; + + String query = ""; + + GraphQLSchema schema; + Document document; + + @Setup(Level.Trial) + public void setUp() { + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + query = createDeepQuery(howDeep); + document = Parser.parse(query); + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public ExecutableNormalizedOperation benchMarkAvgTime() { + ExecutableNormalizedOperationFactory.Options options = ExecutableNormalizedOperationFactory.Options.defaultOptions(); + ExecutableNormalizedOperation executableNormalizedOperation = createExecutableNormalizedOperation(schema, + document, + null, + CoercedVariables.emptyVariables(), + options); + return executableNormalizedOperation; + } + + public static void main(String[] args) throws RunnerException { + runAtStartup(); + + Options opt = new OptionsBuilder() + .include("benchmark.ENFBenchmarkDeepIntrospection") + .build(); + + new Runner(opt).run(); + } + + private static void runAtStartup() { + + ENFDeepIntrospectionPerformance benchmarkIntrospection = new ENFDeepIntrospectionPerformance(); + benchmarkIntrospection.howDeep = 2; + + BenchmarkUtils.runInToolingForSomeTimeThenExit( + benchmarkIntrospection::setUp, + () -> { + while (true) { + benchmarkIntrospection.benchMarkAvgTime(); + } + }, + () -> { + } + ); + } + + + private static String createDeepQuery(int depth) { + String result = "query test {\n" + + " __schema {\n" + + " types {\n" + + " ...F1\n" + + " }\n" + + " }\n" + + "}\n"; + + for (int i = 1; i < depth; i++) { + result += " fragment F" + i + " on __Type {\n" + + " fields {\n" + + " type {\n" + + " ...F" + (i + 1) + "\n" + + " }\n" + + " }\n" + + "\n" + + " ofType {\n" + + " ...F" + (i + 1) + "\n" + + " }\n" + + " }\n"; + } + result += " fragment F" + depth + " on __Type {\n" + + " fields {\n" + + " type {\n" + + "name\n" + + " }\n" + + " }\n" + + "}\n"; + return result; + } + +} diff --git a/src/test/java/performance/ENFExtraLargePerformance.java b/src/test/java/performance/ENFExtraLargePerformance.java new file mode 100644 index 0000000000..f0be3a09c5 --- /dev/null +++ b/src/test/java/performance/ENFExtraLargePerformance.java @@ -0,0 +1,68 @@ +package performance; + +import graphql.execution.CoercedVariables; +import graphql.language.Document; +import graphql.normalized.ExecutableNormalizedOperation; +import graphql.normalized.ExecutableNormalizedOperationFactory; +import graphql.parser.Parser; +import graphql.schema.GraphQLSchema; +import graphql.schema.idl.SchemaGenerator; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@Warmup(iterations = 2, time = 5) +@Measurement(iterations = 3) +@Fork(3) +public class ENFExtraLargePerformance { + + @State(Scope.Benchmark) + public static class MyState { + + GraphQLSchema schema; + Document document; + + @Setup + public void setup() { + try { + String schemaString = PerformanceTestingUtils.loadResource("extra-large-schema-1.graphqls"); + schema = SchemaGenerator.createdMockedSchema(schemaString); + + String query = PerformanceTestingUtils.loadResource("extra-large-schema-1-query.graphql"); + document = Parser.parse(query); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + } + + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAvgTime(MyState myState, Blackhole blackhole) { + runImpl(myState, blackhole); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.SECONDS) + public void benchMarkThroughput(MyState myState, Blackhole blackhole) { + runImpl(myState, blackhole); + } + + private void runImpl(MyState myState, Blackhole blackhole) { + ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); + blackhole.consume(executableNormalizedOperation); + } +} From 9f18a4d6be271ad784c003471b9f1aac03b4f73c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 00:02:51 +0000 Subject: [PATCH 205/345] Add performance results for commit c2d1a3b7a277ffb797f13873463e4c5566e6e28c --- ...277ffb797f13873463e4c5566e6e28c-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json diff --git a/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json b/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json new file mode 100644 index 0000000000..93a667cc19 --- /dev/null +++ b/performance-results/2025-02-27T00:02:35Z-c2d1a3b7a277ffb797f13873463e4c5566e6e28c-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.417549733621442, + "scoreError" : 0.01110297891536587, + "scoreConfidence" : [ + 3.406446754706076, + 3.428652712536808 + ], + "scorePercentiles" : { + "0.0" : 3.415335793926578, + "50.0" : 3.4177333996326036, + "90.0" : 3.419396341293982, + "95.0" : 3.419396341293982, + "99.0" : 3.419396341293982, + "99.9" : 3.419396341293982, + "99.99" : 3.419396341293982, + "99.999" : 3.419396341293982, + "99.9999" : 3.419396341293982, + "100.0" : 3.419396341293982 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4172446969186234, + 3.419396341293982 + ], + [ + 3.415335793926578, + 3.4182221023465837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7274036461599989, + "scoreError" : 0.006128573825496412, + "scoreConfidence" : [ + 1.7212750723345025, + 1.7335322199854952 + ], + "scorePercentiles" : { + "0.0" : 1.726368585774484, + "50.0" : 1.7273860309105475, + "90.0" : 1.728473937044416, + "95.0" : 1.728473937044416, + "99.0" : 1.728473937044416, + "99.9" : 1.728473937044416, + "99.99" : 1.728473937044416, + "99.999" : 1.728473937044416, + "99.9999" : 1.728473937044416, + "100.0" : 1.728473937044416 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.727876395518843, + 1.728473937044416 + ], + [ + 1.726895666302252, + 1.726368585774484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8696277675660219, + "scoreError" : 0.003731430116841793, + "scoreConfidence" : [ + 0.8658963374491802, + 0.8733591976828636 + ], + "scorePercentiles" : { + "0.0" : 0.8687745341041557, + "50.0" : 0.8698516605045905, + "90.0" : 0.8700332151507507, + "95.0" : 0.8700332151507507, + "99.0" : 0.8700332151507507, + "99.9" : 0.8700332151507507, + "99.99" : 0.8700332151507507, + "99.999" : 0.8700332151507507, + "99.9999" : 0.8700332151507507, + "100.0" : 0.8700332151507507 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8687745341041557, + 0.8697897336521034 + ], + [ + 0.8699135873570777, + 0.8700332151507507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68564.59072017718, + "scoreError" : 3342.4151922036704, + "scoreConfidence" : [ + 65222.17552797351, + 71907.00591238085 + ], + "scorePercentiles" : { + "0.0" : 66365.38880921605, + "50.0" : 68390.3393489677, + "90.0" : 70982.41269147139, + "95.0" : 70982.41269147139, + "99.0" : 70982.41269147139, + "99.9" : 70982.41269147139, + "99.99" : 70982.41269147139, + "99.999" : 70982.41269147139, + "99.9999" : 70982.41269147139, + "100.0" : 70982.41269147139 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70921.10080429926, + 70971.54880272943, + 70982.41269147139 + ], + [ + 66391.38054980467, + 66403.4487675499, + 66365.38880921605 + ], + [ + 68121.9882924485, + 68390.3393489677, + 68533.7084151077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.6073517068847, + "scoreError" : 14.226277593346195, + "scoreConfidence" : [ + 338.3810741135385, + 366.8336293002309 + ], + "scorePercentiles" : { + "0.0" : 340.9222360811488, + "50.0" : 357.0779004844468, + "90.0" : 360.2449960648248, + "95.0" : 360.2449960648248, + "99.0" : 360.2449960648248, + "99.9" : 360.2449960648248, + "99.99" : 360.2449960648248, + "99.999" : 360.2449960648248, + "99.9999" : 360.2449960648248, + "100.0" : 360.2449960648248 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.2449960648248, + 357.0779004844468, + 355.97632825052636 + ], + [ + 341.52235438044806, + 341.8721856208501, + 340.9222360811488 + ], + [ + 359.11797705900995, + 357.9689783725373, + 358.76320904817004 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 43.22957453296144, + "scoreError" : 1.0524067752181139, + "scoreConfidence" : [ + 42.17716775774333, + 44.28198130817956 + ], + "scorePercentiles" : { + "0.0" : 42.491759424373676, + "50.0" : 43.16580648696909, + "90.0" : 43.99113632712106, + "95.0" : 43.99113632712106, + "99.0" : 43.99113632712106, + "99.9" : 43.99113632712106, + "99.99" : 43.99113632712106, + "99.999" : 43.99113632712106, + "99.9999" : 43.99113632712106, + "100.0" : 43.99113632712106 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 42.491759424373676, + 42.55520495290065, + 42.53175908126641 + ], + [ + 43.95321369840156, + 43.96024421025855, + 43.99113632712106 + ], + [ + 43.16580648696909, + 43.14083248198754, + 43.27621413337447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014312895471575268, + "scoreError" : 3.590636914352757E-4, + "scoreConfidence" : [ + 0.013953831780139992, + 0.014671959163010543 + ], + "scorePercentiles" : { + "0.0" : 0.014156584854911, + "50.0" : 0.014173242913814926, + "90.0" : 0.014606530733984486, + "95.0" : 0.014606530733984486, + "99.0" : 0.014606530733984486, + "99.9" : 0.014606530733984486, + "99.99" : 0.014606530733984486, + "99.999" : 0.014606530733984486, + "99.9999" : 0.014606530733984486, + "100.0" : 0.014606530733984486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014172841730880705, + 0.014173242913814926, + 0.01419092347350018 + ], + [ + 0.014597928211176914, + 0.014606530733984486, + 0.014587914766734694 + ], + [ + 0.014156584854911, + 0.014164157074343924, + 0.014165935484830585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.051780842346681, + "scoreError" : 0.010553840560371822, + "scoreConfidence" : [ + 1.0412270017863092, + 1.0623346829070528 + ], + "scorePercentiles" : { + "0.0" : 1.0440643342728886, + "50.0" : 1.0495260304334137, + "90.0" : 1.061504448100191, + "95.0" : 1.061504448100191, + "99.0" : 1.061504448100191, + "99.9" : 1.061504448100191, + "99.99" : 1.061504448100191, + "99.999" : 1.061504448100191, + "99.9999" : 1.061504448100191, + "100.0" : 1.061504448100191 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0475535410076464, + 1.0495260304334137, + 1.0485825257418475 + ], + [ + 1.0462639663109436, + 1.0440643342728886, + 1.051101247950389 + ], + [ + 1.061504448100191, + 1.0594869623900838, + 1.0579445249127262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013025928893002378, + "scoreError" : 2.9233162577219546E-4, + "scoreConfidence" : [ + 0.012733597267230182, + 0.013318260518774574 + ], + "scorePercentiles" : { + "0.0" : 0.012845165675472241, + "50.0" : 0.013048059291336388, + "90.0" : 0.013116028007302832, + "95.0" : 0.013116028007302832, + "99.0" : 0.013116028007302832, + "99.9" : 0.013116028007302832, + "99.99" : 0.013116028007302832, + "99.999" : 0.013116028007302832, + "99.9999" : 0.013116028007302832, + "100.0" : 0.013116028007302832 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012845165675472241, + 0.012994237794150132, + 0.012995796729287742 + ], + [ + 0.013104023298416284, + 0.013100321853385034, + 0.013116028007302832 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6386671189948117, + "scoreError" : 0.23283007966411665, + "scoreConfidence" : [ + 3.405837039330695, + 3.871497198658928 + ], + "scorePercentiles" : { + "0.0" : 3.5593792142348755, + "50.0" : 3.638552702472288, + "90.0" : 3.717080251857355, + "95.0" : 3.717080251857355, + "99.0" : 3.717080251857355, + "99.9" : 3.717080251857355, + "99.99" : 3.717080251857355, + "99.999" : 3.717080251857355, + "99.9999" : 3.717080251857355, + "100.0" : 3.717080251857355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.714684306607275, + 3.717080251857355, + 3.711503275222552 + ], + [ + 3.5593792142348755, + 3.5656021297220244, + 3.5637535363247865 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.892068432953975, + "scoreError" : 0.009267708162824911, + "scoreConfidence" : [ + 2.8828007247911502, + 2.9013361411167997 + ], + "scorePercentiles" : { + "0.0" : 2.8829103447679447, + "50.0" : 2.8941400842013887, + "90.0" : 2.900774136600928, + "95.0" : 2.900774136600928, + "99.0" : 2.900774136600928, + "99.9" : 2.900774136600928, + "99.99" : 2.900774136600928, + "99.999" : 2.900774136600928, + "99.9999" : 2.900774136600928, + "100.0" : 2.900774136600928 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8909567751445087, + 2.900774136600928, + 2.895437655761436 + ], + [ + 2.8829103447679447, + 2.8853761220427003, + 2.8949296243125904 + ], + [ + 2.894673690593343, + 2.889417463160936, + 2.8941400842013887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33691360853923774, + "scoreError" : 0.019185202933204835, + "scoreConfidence" : [ + 0.3177284056060329, + 0.3560988114724426 + ], + "scorePercentiles" : { + "0.0" : 0.3215903219063545, + "50.0" : 0.34066744595469256, + "90.0" : 0.3475835746411317, + "95.0" : 0.3475835746411317, + "99.0" : 0.3475835746411317, + "99.9" : 0.3475835746411317, + "99.99" : 0.3475835746411317, + "99.999" : 0.3475835746411317, + "99.9999" : 0.3475835746411317, + "100.0" : 0.3475835746411317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3230329570048777, + 0.32178376835703715, + 0.3215903219063545 + ], + [ + 0.3474673598554602, + 0.3475835746411317, + 0.34700911492418196 + ], + [ + 0.34260209705711053, + 0.34066744595469256, + 0.3404858371522931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.5147195619121575, + "scoreError" : 0.005365502061905538, + "scoreConfidence" : [ + 0.509354059850252, + 0.5200850639740631 + ], + "scorePercentiles" : { + "0.0" : 0.5095666566114649, + "50.0" : 0.5141572140359897, + "90.0" : 0.5199076203275279, + "95.0" : 0.5199076203275279, + "99.0" : 0.5199076203275279, + "99.9" : 0.5199076203275279, + "99.99" : 0.5199076203275279, + "99.999" : 0.5199076203275279, + "99.9999" : 0.5199076203275279, + "100.0" : 0.5199076203275279 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.5095666566114649, + 0.5120266715989965, + 0.5134771368864243 + ], + [ + 0.5141572140359897, + 0.5143587923053183, + 0.5136087965692568 + ], + [ + 0.5199076203275279, + 0.5176240380434782, + 0.5177491308309604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.2364564205155297, + "scoreError" : 0.005615719741969599, + "scoreConfidence" : [ + 0.23084070077356011, + 0.2420721402574993 + ], + "scorePercentiles" : { + "0.0" : 0.23106783016775267, + "50.0" : 0.23710881167014417, + "90.0" : 0.2401375854624916, + "95.0" : 0.2401375854624916, + "99.0" : 0.2401375854624916, + "99.9" : 0.2401375854624916, + "99.99" : 0.2401375854624916, + "99.999" : 0.2401375854624916, + "99.9999" : 0.2401375854624916, + "100.0" : 0.2401375854624916 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.2401375854624916, + 0.23965306583109663, + 0.2394539756961904 + ], + [ + 0.23547254910640703, + 0.23145445165023376, + 0.23106783016775267 + ], + [ + 0.23750379399610508, + 0.23710881167014417, + 0.23625572105934606 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.039934086864828, + "scoreError" : 0.014696474985303161, + "scoreConfidence" : [ + 1.0252376118795248, + 1.054630561850131 + ], + "scorePercentiles" : { + "0.0" : 1.0283595919794344, + "50.0" : 1.043634660857769, + "90.0" : 1.0487148862206377, + "95.0" : 1.0487148862206377, + "99.0" : 1.0487148862206377, + "99.9" : 1.0487148862206377, + "99.99" : 1.0487148862206377, + "99.999" : 1.0487148862206377, + "99.9999" : 1.0487148862206377, + "100.0" : 1.0487148862206377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0287253541816685, + 1.0284066072603866, + 1.0283595919794344 + ], + [ + 1.0434719802796326, + 1.043634660857769, + 1.0443083778195488 + ], + [ + 1.0487148862206377, + 1.046657566509681, + 1.0471277566746937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.44161499542324184, + "scoreError" : 0.004366581579714742, + "scoreConfidence" : [ + 0.4372484138435271, + 0.4459815770029566 + ], + "scorePercentiles" : { + "0.0" : 0.43823696555501995, + "50.0" : 0.44111343381412377, + "90.0" : 0.44522993410800943, + "95.0" : 0.44522993410800943, + "99.0" : 0.44522993410800943, + "99.9" : 0.44522993410800943, + "99.99" : 0.44522993410800943, + "99.999" : 0.44522993410800943, + "99.9999" : 0.44522993410800943, + "100.0" : 0.44522993410800943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4385348860726188, + 0.43823696555501995, + 0.4400182119065429 + ], + [ + 0.44461083727547573, + 0.4443986759098787, + 0.44522993410800943 + ], + [ + 0.44149149507748003, + 0.44111343381412377, + 0.4409005190900273 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.07051290382076661, + "scoreError" : 0.0015072824781688767, + "scoreConfidence" : [ + 0.06900562134259773, + 0.07202018629893549 + ], + "scorePercentiles" : { + "0.0" : 0.06945675739875119, + "50.0" : 0.07009593459457186, + "90.0" : 0.07172936275867016, + "95.0" : 0.07172936275867016, + "99.0" : 0.07172936275867016, + "99.9" : 0.07172936275867016, + "99.99" : 0.07172936275867016, + "99.999" : 0.07172936275867016, + "99.9999" : 0.07172936275867016, + "100.0" : 0.07172936275867016 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.07009593459457186, + 0.07000790423051882, + 0.06975306674571898 + ], + [ + 0.07172936275867016, + 0.0716311333968454, + 0.07164192272864041 + ], + [ + 0.07030226510597912, + 0.0699977874272035, + 0.06945675739875119 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 2.2916434512089096E7, + "scoreError" : 334761.1993547782, + "scoreConfidence" : [ + 2.2581673312734317E7, + 2.3251195711443875E7 + ], + "scorePercentiles" : { + "0.0" : 2.2709041746031746E7, + "50.0" : 2.286806340410959E7, + "90.0" : 2.321051393039443E7, + "95.0" : 2.321051393039443E7, + "99.0" : 2.321051393039443E7, + "99.9" : 2.321051393039443E7, + "99.99" : 2.321051393039443E7, + "99.999" : 2.321051393039443E7, + "99.9999" : 2.321051393039443E7, + "100.0" : 2.321051393039443E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 2.321051393039443E7, + 2.3181100655092593E7, + 2.310629179907621E7 + ], + [ + 2.2853278180365298E7, + 2.286806340410959E7, + 2.2868454625570778E7 + ], + [ + 2.2739949259090908E7, + 2.2709041746031746E7, + 2.2711217009070296E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From bfe691ab3116c8111f5be38097243b08baf3b946 Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 27 Feb 2025 11:54:24 +1100 Subject: [PATCH 206/345] Merged in master and tweaked Execution.java --- .../java/graphql/execution/Execution.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index 1444be2af3..dcdcf59407 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -70,24 +70,13 @@ public Execution(ExecutionStrategy queryStrategy, } public CompletableFuture execute(Document document, GraphQLSchema graphQLSchema, ExecutionId executionId, ExecutionInput executionInput, InstrumentationState instrumentationState) { - - NodeUtil.GetOperationResult getOperationResult; CoercedVariables coercedVariables; Supplier normalizedVariableValues; try { getOperationResult = NodeUtil.getOperation(document, executionInput.getOperationName()); coercedVariables = coerceVariableValues(graphQLSchema, executionInput, getOperationResult.operationDefinition); - - RawVariables inputVariables = executionInput.getRawVariables(); - List variableDefinitions = getOperationResult.operationDefinition.getVariableDefinitions(); - - normalizedVariableValues = FpKit.intraThreadMemoize(() -> - ValuesResolver.getNormalizedVariableValues(graphQLSchema, - variableDefinitions, - inputVariables, - executionInput.getGraphQLContext(), executionInput.getLocale()); - + normalizedVariableValues = normalizedVariableValues(graphQLSchema, executionInput, getOperationResult); } catch (RuntimeException rte) { if (rte instanceof GraphQLError) { return completedFuture(new ExecutionResultImpl((GraphQLError) rte)); @@ -133,6 +122,19 @@ public CompletableFuture execute(Document document, GraphQLSche return ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); } + private static @NotNull Supplier normalizedVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, NodeUtil.GetOperationResult getOperationResult) { + Supplier normalizedVariableValues; + RawVariables inputVariables = executionInput.getRawVariables(); + List variableDefinitions = getOperationResult.operationDefinition.getVariableDefinitions(); + + normalizedVariableValues = FpKit.intraThreadMemoize(() -> + ValuesResolver.getNormalizedVariableValues(graphQLSchema, + variableDefinitions, + inputVariables, + executionInput.getGraphQLContext(), executionInput.getLocale())); + return normalizedVariableValues; + } + private CompletableFuture executeOperation(ExecutionContext executionContext, Object root, OperationDefinition operationDefinition) { @@ -244,7 +246,7 @@ private DataLoaderDispatchStrategy createDataLoaderDispatchStrategy(ExecutionCon if (executionContext.getDataLoaderRegistry() == EMPTY_DATALOADER_REGISTRY || doNotAutomaticallyDispatchDataLoader) { return DataLoaderDispatchStrategy.NO_OP; } - if (! executionContext.isSubscriptionOperation()) { + if (!executionContext.isSubscriptionOperation()) { boolean deferEnabled = Optional.ofNullable(executionContext.getGraphQLContext()) .map(graphqlContext -> graphqlContext.getBoolean(ExperimentalApi.ENABLE_INCREMENTAL_SUPPORT)) .orElse(false); From a72048b16b2834b2c447861140bc4e040871bee2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 12:02:56 +1100 Subject: [PATCH 207/345] Bump io.projectreactor:reactor-core from 3.7.2 to 3.7.3 (#3827) Bumps [io.projectreactor:reactor-core](https://github.com/reactor/reactor-core) from 3.7.2 to 3.7.3. - [Release notes](https://github.com/reactor/reactor-core/releases) - [Commits](https://github.com/reactor/reactor-core/compare/v3.7.2...v3.7.3) --- updated-dependencies: - dependency-name: io.projectreactor:reactor-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d68c9a036b..18148e272c 100644 --- a/build.gradle +++ b/build.gradle @@ -117,7 +117,7 @@ dependencies { testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" - testImplementation "io.projectreactor:reactor-core:3.7.2" + testImplementation "io.projectreactor:reactor-core:3.7.3" testImplementation 'org.testng:testng:7.10.2' // use for reactive streams test inheritance From 6f83033cdf3f5a69d27578d93a454640f2c62187 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 12:03:06 +1100 Subject: [PATCH 208/345] Bump org.testng:testng from 7.10.2 to 7.11.0 (#3829) Bumps [org.testng:testng](https://github.com/testng-team/testng) from 7.10.2 to 7.11.0. - [Release notes](https://github.com/testng-team/testng/releases) - [Changelog](https://github.com/testng-team/testng/blob/master/CHANGES.txt) - [Commits](https://github.com/testng-team/testng/compare/7.10.2...7.11.0) --- updated-dependencies: - dependency-name: org.testng:testng dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 18148e272c..ba3b2524d0 100644 --- a/build.gradle +++ b/build.gradle @@ -119,7 +119,7 @@ dependencies { testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" testImplementation "io.projectreactor:reactor-core:3.7.3" - testImplementation 'org.testng:testng:7.10.2' // use for reactive streams test inheritance + testImplementation 'org.testng:testng:7.11.0' // use for reactive streams test inheritance testImplementation 'org.openjdk.jmh:jmh-core:1.37' testAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37' From 20cbff1d89e346601e6ac1f908ca50094552c03f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 12:03:19 +1100 Subject: [PATCH 209/345] Bump org.junit.jupiter:junit-jupiter from 5.11.4 to 5.12.0 (#3834) Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.11.4 to 5.12.0. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.11.4...r5.12.0) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 73ee065367..4c42901054 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -6,7 +6,7 @@ dependencies { implementation(rootProject) implementation("net.bytebuddy:byte-buddy-agent:1.17.1") - testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4' + testImplementation 'org.junit.jupiter:junit-jupiter:5.12.0' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation("org.assertj:assertj-core:3.27.3") From 31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 11:04:02 +1000 Subject: [PATCH 210/345] a bit faster maybe --- .../ExecutableNormalizedOperationFactory.java | 42 +++++-------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index 5dce5980db..0b3cb0cd84 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -506,7 +506,7 @@ private void captureMergedField(ExecutableNormalizedField enf, MergedField merge } private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executableNormalizedField, - @Nullable ImmutableList fieldAndAstParents, + @Nullable ImmutableList fieldAndAstParents, int curLevel) { if (this.maxDepthSeen < curLevel) { this.maxDepthSeen = curLevel; @@ -528,14 +528,14 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable return; } collectedFields = new ArrayList<>(); - for (FieldAndAstParent fieldAndAstParent : fieldAndAstParents) { + for (CollectedField fieldAndAstParent : fieldAndAstParents) { if (fieldAndAstParent.field.getSelectionSet() == null) { continue; } // the AST parent comes from the previous collect from selection set call // and is the type to which the field belongs (the container type of the field) and output type // of the field needs to be determined based on the field name - GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astParentType, fieldAndAstParent.field.getName()); + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astTypeCondition, fieldAndAstParent.field.getName()); GraphQLUnmodifiedType selectionSetType = unwrapAll(fieldDefinition.getType()); this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), collectedFields, @@ -548,11 +548,11 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable Map> fieldsByName = fieldsByResultKey(collectedFields); ImmutableList.Builder resultNFs = ImmutableList.builder(); - ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); + ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, curLevel + 1, executableNormalizedField); ImmutableList nextLevelChildren = resultNFs.build(); - ImmutableListMultimap nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build(); + ImmutableListMultimap nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build(); for (ExecutableNormalizedField childENF : nextLevelChildren) { if (executableNormalizedField == null) { @@ -561,7 +561,7 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable } else { executableNormalizedField.addChild(childENF); } - ImmutableList childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF); + ImmutableList childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF); MergedField mergedField = newMergedField(childFieldAndAstParents); captureMergedField(childENF, mergedField); @@ -582,13 +582,13 @@ private void checkMaxDepthExceeded(int depthSeen) { } } - private static MergedField newMergedField(ImmutableList fieldAndAstParents) { + private static MergedField newMergedField(ImmutableList fieldAndAstParents) { return MergedField.newMergedField(map(fieldAndAstParents, fieldAndAstParent -> fieldAndAstParent.field)).build(); } private void updateFieldToNFMap(ExecutableNormalizedField executableNormalizedField, - ImmutableList mergedField) { - for (FieldAndAstParent astField : mergedField) { + ImmutableList mergedField) { + for (CollectedField astField : mergedField) { fieldToNormalizedField.put(astField.field, executableNormalizedField); } } @@ -612,7 +612,7 @@ private Map> fieldsByResultKey(List private void createNFs(ImmutableList.Builder nfListBuilder, Map> fieldsByName, - ImmutableListMultimap.Builder normalizedFieldToAstFields, + ImmutableListMultimap.Builder normalizedFieldToAstFields, int level, ExecutableNormalizedField parent) { for (String resultKey : fieldsByName.keySet()) { @@ -624,7 +624,7 @@ private void createNFs(ImmutableList.Builder nfListBu continue; } for (CollectedField collectedField : fieldGroup.fields) { - normalizedFieldToAstFields.put(nf, new FieldAndAstParent(collectedField.field, collectedField.astTypeCondition)); + normalizedFieldToAstFields.put(nf, collectedField); } nfListBuilder.add(nf); @@ -924,26 +924,6 @@ public CollectedField(Field field, Set objectTypes, GraphQLCo } } - public static class CollectNFResult { - private final Collection children; - private final ImmutableListMultimap normalizedFieldToAstFields; - - public CollectNFResult(Collection children, ImmutableListMultimap normalizedFieldToAstFields) { - this.children = children; - this.normalizedFieldToAstFields = normalizedFieldToAstFields; - } - } - - private static class FieldAndAstParent { - final Field field; - final GraphQLCompositeType astParentType; - - private FieldAndAstParent(Field field, GraphQLCompositeType astParentType) { - this.field = field; - this.astParentType = astParentType; - } - } - private static class CollectedFieldGroup { Set objectTypes; Set fields; From 15a95da153ff44e9a23ea478bad0e33dc35c94f8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 01:26:14 +0000 Subject: [PATCH 211/345] Add performance results for commit 31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2 --- ...9dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json | 413 ++++++++++++++++++ 1 file changed, 413 insertions(+) create mode 100644 performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json diff --git a/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json b/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json new file mode 100644 index 0000000000..e07aecac38 --- /dev/null +++ b/performance-results/2025-02-27T01:25:55Z-31804cdc79dd4fa2c8b6ddd9fac1a4168e510fc2-jdk17.json @@ -0,0 +1,413 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70219.54876920363, + "scoreError" : 877.051607001723, + "scoreConfidence" : [ + 69342.49716220191, + 71096.60037620534 + ], + "scorePercentiles" : { + "0.0" : 69373.1799451383, + "50.0" : 70346.02467738034, + "90.0" : 70806.15426297102, + "95.0" : 70806.15426297102, + "99.0" : 70806.15426297102, + "99.9" : 70806.15426297102, + "99.99" : 70806.15426297102, + "99.999" : 70806.15426297102, + "99.9999" : 70806.15426297102, + "100.0" : 70806.15426297102 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69518.78115218057, + 69373.1799451383, + 69976.66849523893 + ], + [ + 70806.15426297102, + 70725.87117127908, + 70610.372758707 + ], + [ + 70561.85379402456, + 70057.03266591279, + 70346.02467738034 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.9107894426578, + "scoreError" : 9.426249005233789, + "scoreConfidence" : [ + 337.484540437424, + 356.3370384478916 + ], + "scorePercentiles" : { + "0.0" : 338.26005679797504, + "50.0" : 347.03501349459947, + "90.0" : 354.57859781312527, + "95.0" : 354.57859781312527, + "99.0" : 354.57859781312527, + "99.9" : 354.57859781312527, + "99.99" : 354.57859781312527, + "99.999" : 354.57859781312527, + "99.9999" : 354.57859781312527, + "100.0" : 354.57859781312527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 338.26005679797504, + 340.50631789283403, + 343.88528415142383 + ], + [ + 353.56875541193926, + 351.6138386462634, + 354.57859781312527 + ], + [ + 347.03976687575766, + 345.7094739000024, + 347.03501349459947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014352362665403752, + "scoreError" : 2.98599213348489E-4, + "scoreConfidence" : [ + 0.014053763452055263, + 0.01465096187875224 + ], + "scorePercentiles" : { + "0.0" : 0.014157780336214879, + "50.0" : 0.014331860724752957, + "90.0" : 0.014639790268461288, + "95.0" : 0.014639790268461288, + "99.0" : 0.014639790268461288, + "99.9" : 0.014639790268461288, + "99.99" : 0.014639790268461288, + "99.999" : 0.014639790268461288, + "99.9999" : 0.014639790268461288, + "100.0" : 0.014639790268461288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014339939093238652, + 0.014331860724752957, + 0.014260492186764702 + ], + [ + 0.014538310723621276, + 0.014639790268461288, + 0.014531535512455552 + ], + [ + 0.014157780336214879, + 0.01420724729817084, + 0.014164307844953598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.056255119077973, + "scoreError" : 0.07030724285344893, + "scoreConfidence" : [ + 0.9859478762245241, + 1.126562361931422 + ], + "scorePercentiles" : { + "0.0" : 1.0189330812022415, + "50.0" : 1.0329520149762446, + "90.0" : 1.1164261720250055, + "95.0" : 1.1164261720250055, + "99.0" : 1.1164261720250055, + "99.9" : 1.1164261720250055, + "99.99" : 1.1164261720250055, + "99.999" : 1.1164261720250055, + "99.9999" : 1.1164261720250055, + "100.0" : 1.1164261720250055 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0477812422210582, + 1.0329520149762446, + 1.0309344408823833 + ], + [ + 1.1030785476505625, + 1.1164261720250055, + 1.1125569858716209 + ], + [ + 1.0189330812022415, + 1.0217059660878447, + 1.0219276207847947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013035694974636735, + "scoreError" : 3.80344969049074E-4, + "scoreConfidence" : [ + 0.01265535000558766, + 0.01341603994368581 + ], + "scorePercentiles" : { + "0.0" : 0.012849147604975074, + "50.0" : 0.013023318203321078, + "90.0" : 0.013215352230829614, + "95.0" : 0.013215352230829614, + "99.0" : 0.013215352230829614, + "99.9" : 0.013215352230829614, + "99.99" : 0.013215352230829614, + "99.999" : 0.013215352230829614, + "99.9999" : 0.013215352230829614, + "100.0" : 0.013215352230829614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012849147604975074, + 0.012976139697715217, + 0.012952399375191043 + ], + [ + 0.013150634230182525, + 0.013215352230829614, + 0.013070496708926937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6779970045280823, + "scoreError" : 0.14690336575784563, + "scoreConfidence" : [ + 3.5310936387702365, + 3.824900370285928 + ], + "scorePercentiles" : { + "0.0" : 3.5989308258992807, + "50.0" : 3.6785783035306947, + "90.0" : 3.754549879129129, + "95.0" : 3.754549879129129, + "99.0" : 3.754549879129129, + "99.9" : 3.754549879129129, + "99.99" : 3.754549879129129, + "99.999" : 3.754549879129129, + "99.9999" : 3.754549879129129, + "100.0" : 3.754549879129129 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5989308258992807, + 3.658934260424287, + 3.6582162809070957 + ], + [ + 3.698222346637103, + 3.754549879129129, + 3.6991284341715978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.884272532819487, + "scoreError" : 0.12828739230038708, + "scoreConfidence" : [ + 2.7559851405191, + 3.012559925119874 + ], + "scorePercentiles" : { + "0.0" : 2.7761082681099083, + "50.0" : 2.9086586077348064, + "90.0" : 3.0072171803968732, + "95.0" : 3.0072171803968732, + "99.0" : 3.0072171803968732, + "99.9" : 3.0072171803968732, + "99.99" : 3.0072171803968732, + "99.999" : 3.0072171803968732, + "99.9999" : 3.0072171803968732, + "100.0" : 3.0072171803968732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9186964487890283, + 2.923129876972531, + 2.9086586077348064 + ], + [ + 2.897631711761298, + 2.927875331967213, + 3.0072171803968732 + ], + [ + 2.7761082681099083, + 2.8062966290684623, + 2.792838740575258 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From f7dd9aae7a1752afc1e6880dd0edf0ffd669c68a Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 11:32:07 +1000 Subject: [PATCH 212/345] try to fix failing tests --- agent/src/main/java/graphql/agent/GraphQLJavaAgent.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/agent/src/main/java/graphql/agent/GraphQLJavaAgent.java b/agent/src/main/java/graphql/agent/GraphQLJavaAgent.java index 1dd9f1fe42..6169e2e7bd 100644 --- a/agent/src/main/java/graphql/agent/GraphQLJavaAgent.java +++ b/agent/src/main/java/graphql/agent/GraphQLJavaAgent.java @@ -71,7 +71,7 @@ public static void agentmain(String agentArgs, Instrumentation inst) { return builder .visit(Advice.to(DataLoaderHelperDispatchAdvice.class).on(nameMatches("dispatch"))) .visit(Advice.to(DataLoaderHelperInvokeBatchLoaderAdvice.class) - .on(nameMatches("invokeLoader").and(takesArguments(List.class, List.class)))); + .on(nameMatches("invokeLoader").and(takesArguments(List.class, List.class, List.class)))); }) .type(named("graphql.schema.DataFetchingEnvironmentImpl")) .transform((builder, typeDescription, classLoader, module, protectionDomain) -> { @@ -207,6 +207,7 @@ public static class DataLoaderHelperInvokeBatchLoaderAdvice { @Advice.OnMethodEnter public static void invokeLoader(@Advice.Argument(0) List keys, @Advice.Argument(1) List keysContext, + @Advice.Argument(2) List queuedFutures, @Advice.This(typing = Assigner.Typing.DYNAMIC) Object dataLoaderHelper) { DataLoader dataLoader = getDataLoaderForHelper(dataLoaderHelper); ExecutionId executionId = GraphQLJavaAgent.dataLoaderToExecutionId.get(dataLoader); From 9893b11bbce89e97ed6693cb42cace2d7de22914 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 14:26:54 +1000 Subject: [PATCH 213/345] cleanups --- src/test/java/benchmark/ENFBenchmark1.java | 70 ---------- src/test/java/benchmark/ENFBenchmark2.java | 59 --------- .../ENFBenchmarkDeepIntrospection.java | 122 ------------------ .../benchmark/ENFExtraLargeBenchmark.java | 68 ---------- .../ENFDeepIntrospectionPerformance.java | 4 +- 5 files changed, 2 insertions(+), 321 deletions(-) delete mode 100644 src/test/java/benchmark/ENFBenchmark1.java delete mode 100644 src/test/java/benchmark/ENFBenchmark2.java delete mode 100644 src/test/java/benchmark/ENFBenchmarkDeepIntrospection.java delete mode 100644 src/test/java/benchmark/ENFExtraLargeBenchmark.java diff --git a/src/test/java/benchmark/ENFBenchmark1.java b/src/test/java/benchmark/ENFBenchmark1.java deleted file mode 100644 index 6c10de1b19..0000000000 --- a/src/test/java/benchmark/ENFBenchmark1.java +++ /dev/null @@ -1,70 +0,0 @@ -package benchmark; - -import graphql.execution.CoercedVariables; -import graphql.language.Document; -import graphql.normalized.ExecutableNormalizedOperation; -import graphql.normalized.ExecutableNormalizedOperationFactory; -import graphql.parser.Parser; -import graphql.schema.GraphQLSchema; -import graphql.schema.idl.SchemaGenerator; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Measurement; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.Warmup; -import org.openjdk.jmh.infra.Blackhole; - -import java.util.concurrent.TimeUnit; - -@State(Scope.Benchmark) -@Warmup(iterations = 2, time = 5) -@Measurement(iterations = 3) -@Fork(3) -public class ENFBenchmark1 { - - @State(Scope.Benchmark) - public static class MyState { - - GraphQLSchema schema; - Document document; - - @Setup - public void setup() { - try { - String schemaString = BenchmarkUtils.loadResource("large-schema-1.graphqls"); - schema = SchemaGenerator.createdMockedSchema(schemaString); - - String query = BenchmarkUtils.loadResource("large-schema-1-query.graphql"); - document = Parser.parse(query); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - } - - @Benchmark - @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.MILLISECONDS) - public void benchMarkAvgTime(MyState myState, Blackhole blackhole) { - runImpl(myState, blackhole); - } - - @Benchmark - @BenchmarkMode(Mode.Throughput) - @OutputTimeUnit(TimeUnit.SECONDS) - public void benchMarkThroughput(MyState myState, Blackhole blackhole) { - runImpl(myState, blackhole); - } - - private void runImpl(MyState myState, Blackhole blackhole) { - ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); - blackhole.consume(executableNormalizedOperation); - } - - -} diff --git a/src/test/java/benchmark/ENFBenchmark2.java b/src/test/java/benchmark/ENFBenchmark2.java deleted file mode 100644 index a2a0ad3648..0000000000 --- a/src/test/java/benchmark/ENFBenchmark2.java +++ /dev/null @@ -1,59 +0,0 @@ -package benchmark; - -import graphql.execution.CoercedVariables; -import graphql.language.Document; -import graphql.normalized.ExecutableNormalizedOperation; -import graphql.normalized.ExecutableNormalizedOperationFactory; -import graphql.parser.Parser; -import graphql.schema.GraphQLSchema; -import graphql.schema.idl.SchemaGenerator; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Measurement; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.Warmup; - -import java.util.concurrent.TimeUnit; - -@State(Scope.Benchmark) -@Warmup(iterations = 2, time = 5) -@Measurement(iterations = 3) -@Fork(3) -public class ENFBenchmark2 { - - @State(Scope.Benchmark) - public static class MyState { - - GraphQLSchema schema; - Document document; - - @Setup - public void setup() { - try { - String schemaString = BenchmarkUtils.loadResource("large-schema-2.graphqls"); - schema = SchemaGenerator.createdMockedSchema(schemaString); - - String query = BenchmarkUtils.loadResource("large-schema-2-query.graphql"); - document = Parser.parse(query); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - } - - @Benchmark - @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.MILLISECONDS) - public ExecutableNormalizedOperation benchMarkAvgTime(MyState myState) { - ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); -// System.out.println("fields size:" + normalizedQuery.getFieldToNormalizedField().size()); - return executableNormalizedOperation; - } - -} diff --git a/src/test/java/benchmark/ENFBenchmarkDeepIntrospection.java b/src/test/java/benchmark/ENFBenchmarkDeepIntrospection.java deleted file mode 100644 index 0ed09d4675..0000000000 --- a/src/test/java/benchmark/ENFBenchmarkDeepIntrospection.java +++ /dev/null @@ -1,122 +0,0 @@ -package benchmark; - -import graphql.execution.CoercedVariables; -import graphql.language.Document; -import graphql.normalized.ExecutableNormalizedOperation; -import graphql.normalized.ExecutableNormalizedOperationFactory; -import graphql.parser.Parser; -import graphql.schema.GraphQLSchema; -import graphql.schema.idl.SchemaGenerator; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Level; -import org.openjdk.jmh.annotations.Measurement; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Param; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.Warmup; -import org.openjdk.jmh.runner.Runner; -import org.openjdk.jmh.runner.RunnerException; -import org.openjdk.jmh.runner.options.Options; -import org.openjdk.jmh.runner.options.OptionsBuilder; - -import java.util.concurrent.TimeUnit; - -import static graphql.normalized.ExecutableNormalizedOperationFactory.*; - -@State(Scope.Benchmark) -@Warmup(iterations = 2, time = 5) -@Measurement(iterations = 3, time = 5) -@Fork(2) -public class ENFBenchmarkDeepIntrospection { - - @Param({"2", "10", "20"}) - int howDeep = 2; - - String query = ""; - - GraphQLSchema schema; - Document document; - - @Setup(Level.Trial) - public void setUp() { - String schemaString = BenchmarkUtils.loadResource("large-schema-2.graphqls"); - schema = SchemaGenerator.createdMockedSchema(schemaString); - - query = createDeepQuery(howDeep); - document = Parser.parse(query); - } - @Benchmark - @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.MILLISECONDS) - public ExecutableNormalizedOperation benchMarkAvgTime() { - ExecutableNormalizedOperationFactory.Options options = ExecutableNormalizedOperationFactory.Options.defaultOptions(); - ExecutableNormalizedOperation executableNormalizedOperation = createExecutableNormalizedOperation(schema, - document, - null, - CoercedVariables.emptyVariables(), - options); - return executableNormalizedOperation; - } - - public static void main(String[] args) throws RunnerException { - runAtStartup(); - - Options opt = new OptionsBuilder() - .include("benchmark.ENFBenchmarkDeepIntrospection") - .build(); - - new Runner(opt).run(); - } - - private static void runAtStartup() { - - ENFBenchmarkDeepIntrospection benchmarkIntrospection = new ENFBenchmarkDeepIntrospection(); - benchmarkIntrospection.howDeep = 2; - - BenchmarkUtils.runInToolingForSomeTimeThenExit( - benchmarkIntrospection::setUp, - () -> { while (true) { benchmarkIntrospection.benchMarkAvgTime(); }}, - () ->{} - ); - } - - - - private static String createDeepQuery(int depth) { - String result = "query test {\n" + - " __schema {\n" + - " types {\n" + - " ...F1\n" + - " }\n" + - " }\n" + - "}\n"; - - for (int i = 1; i < depth; i++) { - result += " fragment F" + i + " on __Type {\n" + - " fields {\n" + - " type {\n" + - " ...F" + (i + 1) +"\n" + - " }\n" + - " }\n" + - "\n" + - " ofType {\n" + - " ...F"+ (i + 1) + "\n" + - " }\n" + - " }\n"; - } - result += " fragment F" + depth + " on __Type {\n" + - " fields {\n" + - " type {\n" + - "name\n" + - " }\n" + - " }\n" + - "}\n"; - return result; - } - -} diff --git a/src/test/java/benchmark/ENFExtraLargeBenchmark.java b/src/test/java/benchmark/ENFExtraLargeBenchmark.java deleted file mode 100644 index 19a410a44d..0000000000 --- a/src/test/java/benchmark/ENFExtraLargeBenchmark.java +++ /dev/null @@ -1,68 +0,0 @@ -package benchmark; - -import graphql.execution.CoercedVariables; -import graphql.language.Document; -import graphql.normalized.ExecutableNormalizedOperation; -import graphql.normalized.ExecutableNormalizedOperationFactory; -import graphql.parser.Parser; -import graphql.schema.GraphQLSchema; -import graphql.schema.idl.SchemaGenerator; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Measurement; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.Warmup; -import org.openjdk.jmh.infra.Blackhole; - -import java.util.concurrent.TimeUnit; - -@State(Scope.Benchmark) -@Warmup(iterations = 2, time = 5) -@Measurement(iterations = 3) -@Fork(3) -public class ENFExtraLargeBenchmark { - - @State(Scope.Benchmark) - public static class MyState { - - GraphQLSchema schema; - Document document; - - @Setup - public void setup() { - try { - String schemaString = BenchmarkUtils.loadResource("extra-large-schema-1.graphqls"); - schema = SchemaGenerator.createdMockedSchema(schemaString); - - String query = BenchmarkUtils.loadResource("extra-large-schema-1-query.graphql"); - document = Parser.parse(query); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - } - - @Benchmark - @BenchmarkMode(Mode.AverageTime) - @OutputTimeUnit(TimeUnit.MILLISECONDS) - public void benchMarkAvgTime(MyState myState, Blackhole blackhole) { - runImpl(myState, blackhole); - } - - @Benchmark - @BenchmarkMode(Mode.Throughput) - @OutputTimeUnit(TimeUnit.SECONDS) - public void benchMarkThroughput(MyState myState, Blackhole blackhole) { - runImpl(myState, blackhole); - } - - private void runImpl(MyState myState, Blackhole blackhole) { - ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(myState.schema, myState.document, null, CoercedVariables.emptyVariables()); - blackhole.consume(executableNormalizedOperation); - } -} diff --git a/src/test/java/performance/ENFDeepIntrospectionPerformance.java b/src/test/java/performance/ENFDeepIntrospectionPerformance.java index c7e0641181..02d3626d0c 100644 --- a/src/test/java/performance/ENFDeepIntrospectionPerformance.java +++ b/src/test/java/performance/ENFDeepIntrospectionPerformance.java @@ -35,7 +35,7 @@ @Fork(2) public class ENFDeepIntrospectionPerformance { - @Param({"2", "10", "20"}) + @Param({"2", "10"}) int howDeep = 2; String query = ""; @@ -69,7 +69,7 @@ public static void main(String[] args) throws RunnerException { runAtStartup(); Options opt = new OptionsBuilder() - .include("benchmark.ENFBenchmarkDeepIntrospection") + .include("performance.ENFDeepIntrospectionPerformance") .build(); new Runner(opt).run(); From ffc2eaa41fb72d004f79ca155fe28d4713600b23 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 16:03:56 +1000 Subject: [PATCH 214/345] normalized stuff --- .../normalized/nf/NormalizedDocument.java | 13 + .../nf/NormalizedDocumentFactory.java | 581 +++++++++++------- .../normalized/nf/NormalizedFieldsMerger.java | 191 ++++++ .../normalized/nf/NormalizedOperation.java | 180 ++++++ .../nf/NormalizedDocumentFactoryTest.groovy | 152 +++++ 5 files changed, 891 insertions(+), 226 deletions(-) create mode 100644 src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java create mode 100644 src/main/java/graphql/normalized/nf/NormalizedOperation.java create mode 100644 src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocument.java b/src/main/java/graphql/normalized/nf/NormalizedDocument.java index f90ffe6b4f..334a3f4591 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocument.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocument.java @@ -1,4 +1,17 @@ package graphql.normalized.nf; +import java.util.List; + public class NormalizedDocument { + + private final List normalizedOperations; + + public NormalizedDocument(List normalizedOperations) { + this.normalizedOperations = normalizedOperations; + } + + public List getNormalizedOperations() { + return normalizedOperations; + } } + diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java index c0f786ccca..342cf3203d 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -4,165 +4,371 @@ import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import graphql.Assert; +import graphql.ExperimentalApi; +import graphql.GraphQLContext; import graphql.PublicApi; import graphql.collect.ImmutableKit; import graphql.execution.AbortExecutionException; -import graphql.execution.CoercedVariables; import graphql.execution.MergedField; -import graphql.execution.ValuesResolver; import graphql.execution.conditional.ConditionalNodes; import graphql.execution.directives.QueryDirectives; -import graphql.execution.directives.QueryDirectivesImpl; import graphql.introspection.Introspection; -import graphql.language.*; -import graphql.normalized.ENFMerger; -import graphql.normalized.ExecutableNormalizedField; -import graphql.normalized.ExecutableNormalizedOperation; -import graphql.normalized.NormalizedInputValue; -import graphql.normalized.incremental.NormalizedDeferredExecution; -import graphql.schema.*; +import graphql.language.Document; +import graphql.language.Field; +import graphql.language.FragmentDefinition; +import graphql.language.FragmentSpread; +import graphql.language.InlineFragment; +import graphql.language.NodeUtil; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLType; +import graphql.schema.GraphQLUnionType; +import graphql.schema.GraphQLUnmodifiedType; import graphql.schema.impl.SchemaUtil; - -import java.util.*; - -import static graphql.Assert.*; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + +import static graphql.Assert.assertNotNull; +import static graphql.Assert.assertShouldNeverHappen; import static graphql.collect.ImmutableKit.map; import static graphql.schema.GraphQLTypeUtil.unwrapAll; -import static graphql.util.FpKit.*; +import static graphql.util.FpKit.filterSet; +import static graphql.util.FpKit.groupingBy; +import static graphql.util.FpKit.intersection; import static java.util.Collections.singleton; import static java.util.Collections.singletonList; @PublicApi public class NormalizedDocumentFactory { + public static class Options { + + + private final GraphQLContext graphQLContext; + private final Locale locale; + private final int maxChildrenDepth; + private final int maxFieldsCount; + + private final boolean deferSupport; + + /** + * The default max fields count is 100,000. + * This is big enough for even very large queries, but + * can be changed via {#setDefaultOptions + */ + public static final int DEFAULT_MAX_FIELDS_COUNT = 100_000; + private static Options defaultOptions = new Options(GraphQLContext.getDefault(), + Locale.getDefault(), + Integer.MAX_VALUE, + DEFAULT_MAX_FIELDS_COUNT, + false); + + private Options(GraphQLContext graphQLContext, + Locale locale, + int maxChildrenDepth, + int maxFieldsCount, + boolean deferSupport) { + this.graphQLContext = graphQLContext; + this.locale = locale; + this.maxChildrenDepth = maxChildrenDepth; + this.deferSupport = deferSupport; + this.maxFieldsCount = maxFieldsCount; + } + + /** + * Sets new default Options used when creating instances of {@link NormalizedDocument}. + * + * @param options new default options + */ + public static void setDefaultOptions(Options options) { + defaultOptions = Assert.assertNotNull(options); + } + + + /** + * Returns the default options used when creating instances of {@link NormalizedDocument}. + * + * @return the default options + */ + public static Options defaultOptions() { + return defaultOptions; + } + + /** + * Locale to use when parsing the query. + *

    + * e.g. can be passed to {@link graphql.schema.Coercing} for parsing. + * + * @param locale the locale to use + * + * @return new options object to use + */ + public Options locale(Locale locale) { + return new Options(this.graphQLContext, locale, this.maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Context object to use when parsing the operation. + *

    + * Can be used to intercept input values e.g. using {@link graphql.execution.values.InputInterceptor}. + * + * @param graphQLContext the context to use + * + * @return new options object to use + */ + public Options graphQLContext(GraphQLContext graphQLContext) { + return new Options(graphQLContext, this.locale, this.maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Controls the maximum depth of the operation. Can be used to prevent + * against malicious operations. + * + * @param maxChildrenDepth the max depth + * + * @return new options object to use + */ + public Options maxChildrenDepth(int maxChildrenDepth) { + return new Options(this.graphQLContext, this.locale, maxChildrenDepth, this.maxFieldsCount, this.deferSupport); + } + + /** + * Controls the maximum number of ENFs created. Can be used to prevent + * against malicious operations. + * + * @param maxFieldsCount the max number of ENFs created + * + * @return new options object to use + */ + public Options maxFieldsCount(int maxFieldsCount) { + return new Options(this.graphQLContext, this.locale, this.maxChildrenDepth, maxFieldsCount, this.deferSupport); + } + + /** + * Controls whether defer execution is supported when creating instances of {@link NormalizedDocument}. + * + * @param deferSupport true to enable support for defer + * + * @return new options object to use + */ + @ExperimentalApi + public Options deferSupport(boolean deferSupport) { + return new Options(this.graphQLContext, this.locale, this.maxChildrenDepth, this.maxFieldsCount, deferSupport); + } + + /** + * @return context to use during operation parsing + * + * @see #graphQLContext(GraphQLContext) + */ + public GraphQLContext getGraphQLContext() { + return graphQLContext; + } + + /** + * @return locale to use during operation parsing + * + * @see #locale(Locale) + */ + public Locale getLocale() { + return locale; + } + + /** + * @return maximum children depth before aborting parsing + * + * @see #maxChildrenDepth(int) + */ + public int getMaxChildrenDepth() { + return maxChildrenDepth; + } + + public int getMaxFieldsCount() { + return maxFieldsCount; + } + + } + private static final ConditionalNodes conditionalNodes = new ConditionalNodes(); private NormalizedDocumentFactory() { } - /** - * This will create a runtime representation of the graphql operation that would be executed - * in a runtime sense. - * - * @param graphQLSchema the schema to be used - * @param document the {@link Document} holding the operation text - * @param operationName the operation name to use - * @param coercedVariableValues the coerced variables to use - * @return a runtime representation of the graphql operation. - */ - public static ExecutableNormalizedOperation createExecutableNormalizedOperation( + public static NormalizedDocument createNormalizedDocument( GraphQLSchema graphQLSchema, - Document document, - String operationName, - CoercedVariables coercedVariableValues - ) { - return createExecutableNormalizedOperation( + Document document) { + return createNormalizedDocument( graphQLSchema, document, - operationName, - coercedVariableValues, Options.defaultOptions()); } - public static NormalizedDocument createNormalizedDocument( - GraphQLSchema graphQLSchema, - Document document - ) { + + public static NormalizedDocument createNormalizedDocument(GraphQLSchema graphQLSchema, + Document document, + Options options) { return new NormalizedDocumentFactoryImpl( graphQLSchema, - document - ).createNormalizedDocument(); + document, + options + ).createNormalizedQueryImpl(); } private static class NormalizedDocumentFactoryImpl { private final GraphQLSchema graphQLSchema; private final Document document; + private final Options options; + private final Map fragments; private final List possibleMergerList = new ArrayList<>(); - private final ImmutableListMultimap.Builder fieldToNormalizedField = ImmutableListMultimap.builder(); - private final ImmutableMap.Builder normalizedFieldToMergedField = ImmutableMap.builder(); - private final ImmutableMap.Builder normalizedFieldToQueryDirectives = ImmutableMap.builder(); - private final ImmutableListMultimap.Builder coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + private ImmutableListMultimap.Builder fieldToNormalizedField = ImmutableListMultimap.builder(); + private ImmutableMap.Builder normalizedFieldToMergedField = ImmutableMap.builder(); + private ImmutableMap.Builder normalizedFieldToQueryDirectives = ImmutableMap.builder(); + private ImmutableListMultimap.Builder coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + private int fieldCount = 0; private int maxDepthSeen = 0; + private final List rootEnfs = new ArrayList<>(); + private NormalizedDocumentFactoryImpl( GraphQLSchema graphQLSchema, - Document document + Document document, + Options options ) { this.graphQLSchema = graphQLSchema; this.document = document; + this.options = options; + this.fragments = NodeUtil.getFragmentsByName(document); } /** - * Creates a new ExecutableNormalizedOperation for the provided query + * Creates a new NormalizedDocument for the provided query */ - private NormalizedDocument createNormalizedDocument() { - - List operationDefinitions = document.getDefinitions(); - for (Definition definition : operationDefinitions) { - assertTrue(definition instanceof OperationDefinition, "Only operation definitions expected"); - OperationDefinition operationDefinition = (OperationDefinition) definition; - GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); - - operationDefinition.getVariableDefinitions(); - CollectNFResult collectFromOperationResult = collectFromOperation(rootType, operationDefinition); - - for (ExecutableNormalizedField topLevel : collectFromOperationResult.children) { - ImmutableList fieldAndAstParents = collectFromOperationResult.normalizedFieldToAstFields.get(topLevel); - MergedField mergedField = newMergedField(fieldAndAstParents); - - captureMergedField(topLevel, mergedField); - - updateFieldToNFMap(topLevel, fieldAndAstParents); - updateCoordinatedToNFMap(topLevel); - - int depthSeen = buildFieldWithChildren( - topLevel, - fieldAndAstParents, - 1); - maxDepthSeen = Math.max(maxDepthSeen, depthSeen); - } - // getPossibleMergerList + private NormalizedDocument createNormalizedQueryImpl() { + List normalizedOperations = new ArrayList<>(); + for (OperationDefinition operationDefinition : document.getDefinitionsOfType(OperationDefinition.class)) { + this.rootEnfs.clear(); + this.fieldCount = 0; + this.maxDepthSeen = 0; + this.possibleMergerList.clear(); + ; + fieldToNormalizedField = ImmutableListMultimap.builder(); + normalizedFieldToMergedField = ImmutableMap.builder(); + normalizedFieldToQueryDirectives = ImmutableMap.builder(); + coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + + buildNormalizedFieldsRecursively(null, operationDefinition, null, 0); + + // TODO: handle possible mergers later for (PossibleMerger possibleMerger : possibleMergerList) { - List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); - ENFMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema, options.deferSupport); + List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); + NormalizedFieldsMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema); } + + NormalizedOperation normalizedOperation = new NormalizedOperation( + operationDefinition.getOperation(), + operationDefinition.getName(), + rootEnfs, + fieldToNormalizedField.build(), + normalizedFieldToMergedField.build(), + normalizedFieldToQueryDirectives.build(), + coordinatesToNormalizedFields.build(), + fieldCount, + maxDepthSeen + ); + normalizedOperations.add(normalizedOperation); } - return new ExecutableNormalizedOperation( - operationDefinition.getOperation(), - operationDefinition.getName(), - new ArrayList<>(collectFromOperationResult.children), - fieldToNormalizedField.build(), - normalizedFieldToMergedField.build(), - normalizedFieldToQueryDirectives.build(), - coordinatesToNormalizedFields.build(), - fieldCount, - maxDepthSeen + + return new NormalizedDocument( + normalizedOperations ); } - private void captureMergedField(ExecutableNormalizedField enf, MergedField mergedFld) { - // QueryDirectivesImpl is a lazy object and only computes itself when asked for - QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, coercedVariableValues.toMap(), options.getGraphQLContext(), options.getLocale()); - normalizedFieldToQueryDirectives.put(enf, queryDirectives); + private void captureMergedField(NormalizedField enf, MergedField mergedFld) { +// // QueryDirectivesImpl is a lazy object and only computes itself when asked for +// QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, coercedVariableValues.toMap(), options.getGraphQLContext(), options.getLocale()); +// normalizedFieldToQueryDirectives.put(enf, queryDirectives); normalizedFieldToMergedField.put(enf, mergedFld); } - private int buildFieldWithChildren(ExecutableNormalizedField executableNormalizedField, - ImmutableList fieldAndAstParents, - int curLevel) { - checkMaxDepthExceeded(curLevel); + private void buildNormalizedFieldsRecursively(@Nullable NormalizedField normalizedField, + @Nullable OperationDefinition operationDefinition, + @Nullable ImmutableList fieldAndAstParents, + int curLevel) { + if (this.maxDepthSeen < curLevel) { + this.maxDepthSeen = curLevel; + checkMaxDepthExceeded(curLevel); + } + Set possibleObjects; + List collectedFields; - CollectNFResult nextLevel = collectFromMergedField(executableNormalizedField, fieldAndAstParents, curLevel + 1); + // special handling for the root selection Set + if (normalizedField == null) { + GraphQLObjectType rootType = SchemaUtil.getOperationRootType(graphQLSchema, operationDefinition); + possibleObjects = ImmutableSet.of(rootType); + collectedFields = new ArrayList<>(); + collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects); + } else { + List fieldDefs = normalizedField.getFieldDefinitions(graphQLSchema); + possibleObjects = resolvePossibleObjects(fieldDefs); + if (possibleObjects.isEmpty()) { + return; + } + collectedFields = new ArrayList<>(); + for (CollectedField fieldAndAstParent : fieldAndAstParents) { + if (fieldAndAstParent.field.getSelectionSet() == null) { + continue; + } + // the AST parent comes from the previous collect from selection set call + // and is the type to which the field belongs (the container type of the field) and output type + // of the field needs to be determined based on the field name + GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astTypeCondition, fieldAndAstParent.field.getName()); + // it must a composite type, because the field has a selection set + GraphQLCompositeType selectionSetType = (GraphQLCompositeType) unwrapAll(fieldDefinition.getType()); + this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), + collectedFields, + selectionSetType, + possibleObjects + ); + } + } - int maxDepthSeen = curLevel; - for (ExecutableNormalizedField childENF : nextLevel.children) { - executableNormalizedField.addChild(childENF); - ImmutableList childFieldAndAstParents = nextLevel.normalizedFieldToAstFields.get(childENF); + Map> fieldsByName = fieldsByResultKey(collectedFields); + ImmutableList.Builder resultNFs = ImmutableList.builder(); + ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); + createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, curLevel + 1, normalizedField); + + ImmutableList nextLevelChildren = resultNFs.build(); + ImmutableListMultimap nextLevelNormalizedFieldToAstFields = normalizedFieldToAstFields.build(); + + for (NormalizedField childENF : nextLevelChildren) { + if (normalizedField == null) { + // all root ENFs don't have a parent, but are collected in the rootEnfs list + rootEnfs.add(childENF); + } else { + normalizedField.addChild(childENF); + } + ImmutableList childFieldAndAstParents = nextLevelNormalizedFieldToAstFields.get(childENF); MergedField mergedField = newMergedField(childFieldAndAstParents); captureMergedField(childENF, mergedField); @@ -170,14 +376,12 @@ private int buildFieldWithChildren(ExecutableNormalizedField executableNormalize updateFieldToNFMap(childENF, childFieldAndAstParents); updateCoordinatedToNFMap(childENF); - int depthSeen = buildFieldWithChildren(childENF, + // recursive call + buildNormalizedFieldsRecursively(childENF, + null, childFieldAndAstParents, curLevel + 1); - maxDepthSeen = Math.max(maxDepthSeen, depthSeen); - - checkMaxDepthExceeded(maxDepthSeen); } - return maxDepthSeen; } private void checkMaxDepthExceeded(int depthSeen) { @@ -186,55 +390,24 @@ private void checkMaxDepthExceeded(int depthSeen) { } } - private static MergedField newMergedField(ImmutableList fieldAndAstParents) { + private static MergedField newMergedField(ImmutableList fieldAndAstParents) { return MergedField.newMergedField(map(fieldAndAstParents, fieldAndAstParent -> fieldAndAstParent.field)).build(); } - private void updateFieldToNFMap(ExecutableNormalizedField executableNormalizedField, - ImmutableList mergedField) { - for (FieldAndAstParent astField : mergedField) { - fieldToNormalizedField.put(astField.field, executableNormalizedField); + private void updateFieldToNFMap(NormalizedField NormalizedField, + ImmutableList mergedField) { + for (CollectedField astField : mergedField) { + fieldToNormalizedField.put(astField.field, NormalizedField); } } - private void updateCoordinatedToNFMap(ExecutableNormalizedField topLevel) { + private void updateCoordinatedToNFMap(NormalizedField topLevel) { for (String objectType : topLevel.getObjectTypeNames()) { FieldCoordinates coordinates = FieldCoordinates.coordinates(objectType, topLevel.getFieldName()); coordinatesToNormalizedFields.put(coordinates, topLevel); } } - public CollectNFResult collectFromMergedField(ExecutableNormalizedField executableNormalizedField, - ImmutableList mergedField, - int level) { - List fieldDefs = executableNormalizedField.getFieldDefinitions(graphQLSchema); - Set possibleObjects = resolvePossibleObjects(fieldDefs); - if (possibleObjects.isEmpty()) { - return new CollectNFResult(ImmutableKit.emptyList(), ImmutableListMultimap.of()); - } - - List collectedFields = new ArrayList<>(); - for (FieldAndAstParent fieldAndAstParent : mergedField) { - if (fieldAndAstParent.field.getSelectionSet() == null) { - continue; - } - GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astParentType, fieldAndAstParent.field.getName()); - GraphQLUnmodifiedType astParentType = unwrapAll(fieldDefinition.getType()); - this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), - collectedFields, - (GraphQLCompositeType) astParentType, - possibleObjects, - null - ); - } - Map> fieldsByName = fieldsByResultKey(collectedFields); - ImmutableList.Builder resultNFs = ImmutableList.builder(); - ImmutableListMultimap.Builder normalizedFieldToAstFields = ImmutableListMultimap.builder(); - - createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, level, executableNormalizedField); - - return new CollectNFResult(resultNFs.build(), normalizedFieldToAstFields.build()); - } private Map> fieldsByResultKey(List collectedFields) { Map> fieldsByName = new LinkedHashMap<>(); @@ -244,41 +417,25 @@ private Map> fieldsByResultKey(List return fieldsByName; } - public CollectNFResult collectFromOperation(GraphQLObjectType rootType, OperationDefinition operationDefinition) { - Set possibleObjects = ImmutableSet.of(rootType); - List collectedFields = new ArrayList<>(); - collectFromSelectionSet(operationDefinition.getSelectionSet(), collectedFields, rootType, possibleObjects); - // group by result key - Map> fieldsByName = fieldsByResultKey(collectedFields); - ImmutableList.Builder resultNFs = ImmutableList.builder(); - - createNFs(resultNFs, fieldsByName, normalizedFieldToAstFields, 1, null); - - return new CollectNFResult(resultNFs.build())); - } - - // private void createNFs(ImmutableList.Builder nfListBuilder, Map> fieldsByName, + ImmutableListMultimap.Builder normalizedFieldToAstFields, int level, - ExecutableNormalizedField parent) { + NormalizedField parent) { for (String resultKey : fieldsByName.keySet()) { List fieldsWithSameResultKey = fieldsByName.get(resultKey); List commonParentsGroups = groupByCommonParents(fieldsWithSameResultKey); for (CollectedFieldGroup fieldGroup : commonParentsGroups) { - ExecutableNormalizedField nf = createNF(fieldGroup, level, parent); + NormalizedField nf = createNF(fieldGroup, level, parent); if (nf == null) { continue; } for (CollectedField collectedField : fieldGroup.fields) { - normalizedFieldToAstFields.put(nf, new FieldAndAstParent(collectedField.field, collectedField.astTypeCondition)); + normalizedFieldToAstFields.put(nf, collectedField); } nfListBuilder.add(nf); - if (this.options.deferSupport) { - nf.addDeferredExecutions(fieldGroup.deferredExecutions); - } } if (commonParentsGroups.size() > 1) { possibleMergerList.add(new PossibleMerger(parent, resultKey)); @@ -286,26 +443,27 @@ private void createNFs(ImmutableList.Builder nfListBuilder, } } - private ExecutableNormalizedField createNF(CollectedFieldGroup collectedFieldGroup, - int level, - ExecutableNormalizedField parent) { + // new single ENF + private NormalizedField createNF(CollectedFieldGroup collectedFieldGroup, + int level, + NormalizedField parent) { + this.fieldCount++; + if (this.fieldCount > this.options.getMaxFieldsCount()) { + throw new AbortExecutionException("Maximum field count exceeded. " + this.fieldCount + " > " + this.options.getMaxFieldsCount()); + } Field field; Set objectTypes = collectedFieldGroup.objectTypes; field = collectedFieldGroup.fields.iterator().next().field; String fieldName = field.getName(); GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDefinition(graphQLSchema, objectTypes.iterator().next(), fieldName); - Map argumentValues = ValuesResolver.getArgumentValues(fieldDefinition.getArguments(), field.getArguments(), CoercedVariables.of(this.coercedVariableValues.toMap()), this.options.graphQLContext, this.options.locale); - Map normalizedArgumentValues = null; - if (this.normalizedVariableValues != null) { - normalizedArgumentValues = ValuesResolver.getNormalizedArgumentValues(fieldDefinition.getArguments(), field.getArguments(), this.normalizedVariableValues); - } +// Map argumentValues = ValuesResolver.getArgumentValues(fieldDefinition.getArguments(), field.getArguments(), CoercedVariables.of(this.coercedVariableValues.toMap()), this.options.graphQLContext, this.options.locale); ImmutableList objectTypeNames = map(objectTypes, GraphQLObjectType::getName); - return ExecutableNormalizedField.newNormalizedField() + return NormalizedField.newNormalizedField() .alias(field.getAlias()) - .resolvedArguments(argumentValues) - .normalizedArguments(normalizedArgumentValues) +// .resolvedArguments(argumentValues) +// .normalizedArguments(normalizedArgumentValues) .astArguments(field.getArguments()) .objectTypeNames(objectTypeNames) .fieldName(fieldName) @@ -323,18 +481,17 @@ private List groupByCommonParents(Collection allRelevantObjects = objectTypes.build(); Map> groupByAstParent = groupingBy(fields, fieldAndType -> fieldAndType.astTypeCondition); if (groupByAstParent.size() == 1) { - return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects, null)); + return singletonList(new CollectedFieldGroup(ImmutableSet.copyOf(fields), allRelevantObjects)); } ImmutableList.Builder result = ImmutableList.builder(); for (GraphQLObjectType objectType : allRelevantObjects) { Set relevantFields = filterSet(fields, field -> field.objectTypes.contains(objectType)); - result.add(new CollectedFieldGroup(relevantFields, singleton(objectType), null)); + result.add(new CollectedFieldGroup(relevantFields, singleton(objectType))); } return result.build(); } - private void collectFromSelectionSet(SelectionSet selectionSet, List result, GraphQLCompositeType astTypeCondition, @@ -355,23 +512,22 @@ private void collectFragmentSpread(List result, FragmentSpread fragmentSpread, Set possibleObjects ) { - if (!conditionalNodes.shouldInclude(fragmentSpread, - this.coercedVariableValues.toMap(), - this.graphQLSchema, - this.options.graphQLContext)) { - return; - } +// if (!conditionalNodes.shouldInclude(fragmentSpread, +// this.coercedVariableValues.toMap(), +// this.graphQLSchema, +// this.options.graphQLContext)) { +// return; +// } FragmentDefinition fragmentDefinition = assertNotNull(this.fragments.get(fragmentSpread.getName())); - if (!conditionalNodes.shouldInclude(fragmentDefinition, - this.coercedVariableValues.toMap(), - this.graphQLSchema, - this.options.graphQLContext)) { - return; - } +// if (!conditionalNodes.shouldInclude(fragmentDefinition, +// this.coercedVariableValues.toMap(), +// this.graphQLSchema, +// this.options.graphQLContext)) { +// return; +// } GraphQLCompositeType newAstTypeCondition = (GraphQLCompositeType) assertNotNull(this.graphQLSchema.getType(fragmentDefinition.getTypeCondition().getName())); Set newPossibleObjects = narrowDownPossibleObjects(possibleObjects, newAstTypeCondition); - collectFromSelectionSet(fragmentDefinition.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects); } @@ -380,9 +536,9 @@ private void collectInlineFragment(List result, Set possibleObjects, GraphQLCompositeType astTypeCondition ) { - if (!conditionalNodes.shouldInclude(inlineFragment, this.coercedVariableValues.toMap(), this.graphQLSchema, this.options.graphQLContext)) { - return; - } +// if (!conditionalNodes.shouldInclude(inlineFragment, this.coercedVariableValues.toMap(), this.graphQLSchema, this.options.graphQLContext)) { +// return; +// } Set newPossibleObjects = possibleObjects; GraphQLCompositeType newAstTypeCondition = astTypeCondition; @@ -392,29 +548,25 @@ private void collectInlineFragment(List result, } + collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects); } - private void collectField(List result, Field field, Set possibleObjectTypes, GraphQLCompositeType astTypeCondition ) { - List directives = field.getDirectives(); - +// if (!conditionalNodes.shouldInclude(field, +// this.coercedVariableValues.toMap(), +// this.graphQLSchema, +// this.options.graphQLContext)) { +// return; +// } // this means there is actually no possible type for this field, and we are done if (possibleObjectTypes.isEmpty()) { return; } - Boolean shouldInclude = conditionalNodes.shouldIncludeWithoutVariables(field); - if (shouldInclude != null && !shouldInclude) { - return; - } - if (shouldInclude == null) { - // now we need to copy the whole NF and proceed one without and one with - } - // should include is just true result.add(new CollectedField(field, possibleObjectTypes, astTypeCondition)); } @@ -457,21 +609,18 @@ private ImmutableSet resolvePossibleObjects(GraphQLCompositeT } private static class PossibleMerger { - ExecutableNormalizedField parent; + NormalizedField parent; String resultKey; - public PossibleMerger(ExecutableNormalizedField parent, String resultKey) { + public PossibleMerger(NormalizedField parent, String resultKey) { this.parent = parent; this.resultKey = resultKey; } } private static class CollectedField { - // the AST field Field field; - // the set of type conditions for this field, resolved to object types based on the schema Set objectTypes; - // the last type condition used for this field GraphQLCompositeType astTypeCondition; public CollectedField(Field field, Set objectTypes, GraphQLCompositeType astTypeCondition) { @@ -481,33 +630,13 @@ public CollectedField(Field field, Set objectTypes, GraphQLCo } } - public static class CollectNFResult { - private final Collection children; - - public CollectNFResult(Collection children) { - this.children = children; - } - } - - private static class FieldAndAstParent { - final Field field; - final GraphQLCompositeType astParentType; - - private FieldAndAstParent(Field field, GraphQLCompositeType astParentType) { - this.field = field; - this.astParentType = astParentType; - } - } - private static class CollectedFieldGroup { Set objectTypes; Set fields; - Set deferredExecutions; - public CollectedFieldGroup(Set fields, Set objectTypes, Set deferredExecutions) { + public CollectedFieldGroup(Set fields, Set objectTypes) { this.fields = fields; this.objectTypes = objectTypes; - this.deferredExecutions = deferredExecutions; } } } diff --git a/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java b/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java new file mode 100644 index 0000000000..b7ade1f450 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java @@ -0,0 +1,191 @@ +package graphql.normalized.nf; + +import graphql.Internal; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.AstComparator; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; + +@Internal +public class NormalizedFieldsMerger { + + public static void merge( + NormalizedField parent, + List childrenWithSameResultKey, + GraphQLSchema schema + ) { + // they have all the same result key + // we can only merge the fields if they have the same field name + arguments + all children are the same + List> possibleGroupsToMerge = new ArrayList<>(); + for (NormalizedField field : childrenWithSameResultKey) { + boolean addToGroup = false; + overPossibleGroups: + for (Set group : possibleGroupsToMerge) { + for (NormalizedField fieldInGroup : group) { + if (field.getFieldName().equals(Introspection.TypeNameMetaFieldDef.getName())) { + addToGroup = true; + group.add(field); + continue overPossibleGroups; + } + if (field.getFieldName().equals(fieldInGroup.getFieldName()) && + sameArguments(field.getAstArguments(), fieldInGroup.getAstArguments()) + && isFieldInSharedInterface(field, fieldInGroup, schema) + ) { + addToGroup = true; + group.add(field); + continue overPossibleGroups; + } + } + } + if (!addToGroup) { + LinkedHashSet group = new LinkedHashSet<>(); + group.add(field); + possibleGroupsToMerge.add(group); + } + } + for (Set groupOfFields : possibleGroupsToMerge) { + // for each group we check if it could be merged + List> listOfChildrenForGroup = new ArrayList<>(); + for (NormalizedField fieldInGroup : groupOfFields) { + Set childrenSets = new LinkedHashSet<>(fieldInGroup.getChildren()); + listOfChildrenForGroup.add(childrenSets); + } + boolean mergeable = areFieldSetsTheSame(listOfChildrenForGroup); + if (mergeable) { + Set mergedObjects = new LinkedHashSet<>(); + groupOfFields.forEach(f -> mergedObjects.addAll(f.getObjectTypeNames())); + // patching the first one to contain more objects, remove all others + Iterator iterator = groupOfFields.iterator(); + NormalizedField first = iterator.next(); + + while (iterator.hasNext()) { + NormalizedField next = iterator.next(); + parent.getChildren().remove(next); + } + first.setObjectTypeNames(mergedObjects); + } + } + } + + private static boolean isFieldInSharedInterface(NormalizedField fieldOne, NormalizedField fieldTwo, GraphQLSchema schema) { + + /* + * we can get away with only checking one of the object names, because all object names in one ENF are guaranteed to be the same field. + * This comes from how the ENFs are created in the factory before. + */ + String firstObject = fieldOne.getSingleObjectTypeName(); + String secondObject = fieldTwo.getSingleObjectTypeName(); + // we know that the field names are the same, therefore we can just take the first one + String fieldName = fieldOne.getFieldName(); + + GraphQLObjectType objectTypeOne = schema.getObjectType(firstObject); + GraphQLObjectType objectTypeTwo = schema.getObjectType(secondObject); + List interfacesOne = (List) objectTypeOne.getInterfaces(); + List interfacesTwo = (List) objectTypeTwo.getInterfaces(); + + Optional firstInterfaceFound = interfacesOne.stream().filter(singleInterface -> singleInterface.getFieldDefinition(fieldName) != null).findFirst(); + Optional secondInterfaceFound = interfacesTwo.stream().filter(singleInterface -> singleInterface.getFieldDefinition(fieldName) != null).findFirst(); + if (!firstInterfaceFound.isPresent() || !secondInterfaceFound.isPresent()) { + return false; + } + return firstInterfaceFound.get().getName().equals(secondInterfaceFound.get().getName()); + } + + + private static boolean areFieldSetsTheSame(List> listOfSets) { + if (listOfSets.size() == 0 || listOfSets.size() == 1) { + return true; + } + Set first = listOfSets.get(0); + Iterator> iterator = listOfSets.iterator(); + iterator.next(); + while (iterator.hasNext()) { + Set set = iterator.next(); + if (!compareTwoFieldSets(first, set)) { + return false; + } + } + List> nextLevel = new ArrayList<>(); + for (Set set : listOfSets) { + for (NormalizedField fieldInSet : set) { + nextLevel.add(new LinkedHashSet<>(fieldInSet.getChildren())); + } + } + return areFieldSetsTheSame(nextLevel); + } + + private static boolean compareTwoFieldSets(Set setOne, Set setTwo) { + if (setOne.size() != setTwo.size()) { + return false; + } + for (NormalizedField field : setOne) { + if (!isContained(field, setTwo)) { + return false; + } + } + return true; + } + + private static boolean isContained(NormalizedField searchFor, Set set) { + for (NormalizedField field : set) { + if (compareWithoutChildren(searchFor, field)) { + return true; + } + } + return false; + } + + private static boolean compareWithoutChildren(NormalizedField one, NormalizedField two) { + + if (!one.getObjectTypeNames().equals(two.getObjectTypeNames())) { + return false; + } + if (!Objects.equals(one.getAlias(), two.getAlias())) { + return false; + } + if (!Objects.equals(one.getFieldName(), two.getFieldName())) { + return false; + } + if (!sameArguments(one.getAstArguments(), two.getAstArguments())) { + return false; + } + return true; + } + + // copied from graphql.validation.rules.OverlappingFieldsCanBeMerged + private static boolean sameArguments(List arguments1, List arguments2) { + if (arguments1.size() != arguments2.size()) { + return false; + } + for (Argument argument : arguments1) { + Argument matchedArgument = findArgumentByName(argument.getName(), arguments2); + if (matchedArgument == null) { + return false; + } + if (!AstComparator.sameValue(argument.getValue(), matchedArgument.getValue())) { + return false; + } + } + return true; + } + + private static Argument findArgumentByName(String name, List arguments) { + for (Argument argument : arguments) { + if (argument.getName().equals(name)) { + return argument; + } + } + return null; + } + +} diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperation.java b/src/main/java/graphql/normalized/nf/NormalizedOperation.java new file mode 100644 index 0000000000..f2d42dd4cb --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedOperation.java @@ -0,0 +1,180 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableListMultimap; +import graphql.Assert; +import graphql.PublicApi; +import graphql.execution.MergedField; +import graphql.execution.ResultPath; +import graphql.execution.directives.QueryDirectives; +import graphql.language.Field; +import graphql.language.OperationDefinition; +import graphql.schema.FieldCoordinates; +import graphql.schema.GraphQLFieldsContainer; + +import java.util.List; +import java.util.Map; + +/** + * A {@link NormalizedOperation} represent how the text of a graphql operation (sometimes known colloquially as a query) + * will be executed at runtime according to the graphql specification. It handles complex mechanisms like merging + * duplicate fields into one and also detecting when the types of a given field may actually be for more than one possible object + * type. + *

    + * An operation consists of a list of {@link NormalizedField}s in a parent child hierarchy + */ +@PublicApi +public class NormalizedOperation { + private final OperationDefinition.Operation operation; + private final String operationName; + private final List topLevelFields; + private final ImmutableListMultimap fieldToNormalizedField; + private final Map normalizedFieldToMergedField; + private final Map normalizedFieldToQueryDirectives; + private final ImmutableListMultimap coordinatesToNormalizedFields; + private final int operationFieldCount; + private final int operationDepth; + + public NormalizedOperation( + OperationDefinition.Operation operation, + String operationName, + List topLevelFields, + ImmutableListMultimap fieldToNormalizedField, + Map normalizedFieldToMergedField, + Map normalizedFieldToQueryDirectives, + ImmutableListMultimap coordinatesToNormalizedFields, + int operationFieldCount, + int operationDepth) { + this.operation = operation; + this.operationName = operationName; + this.topLevelFields = topLevelFields; + this.fieldToNormalizedField = fieldToNormalizedField; + this.normalizedFieldToMergedField = normalizedFieldToMergedField; + this.normalizedFieldToQueryDirectives = normalizedFieldToQueryDirectives; + this.coordinatesToNormalizedFields = coordinatesToNormalizedFields; + this.operationFieldCount = operationFieldCount; + this.operationDepth = operationDepth; + } + + /** + * @return operation AST being executed + */ + public OperationDefinition.Operation getOperation() { + return operation; + } + + /** + * @return the operation name, which can be null + */ + public String getOperationName() { + return operationName; + } + + /** + * @return This returns how many {@link NormalizedField}s are in the operation. + */ + public int getOperationFieldCount() { + return operationFieldCount; + } + + /** + * @return This returns the depth of the operation + */ + public int getOperationDepth() { + return operationDepth; + } + + /** + * This multimap shows how a given {@link NormalizedField} maps to a one or more field coordinate in the schema + * + * @return a multimap of fields to schema field coordinates + */ + public ImmutableListMultimap getCoordinatesToNormalizedFields() { + return coordinatesToNormalizedFields; + } + + /** + * @return a list of the top level {@link NormalizedField}s in this operation. + */ + public List getTopLevelFields() { + return topLevelFields; + } + + /** + * This is a multimap and the size of it reflects all the normalized fields in the operation + * + * @return an immutable list multimap of {@link Field} to {@link NormalizedField} + */ + public ImmutableListMultimap getFieldToNormalizedField() { + return fieldToNormalizedField; + } + + /** + * Looks up one or more {@link NormalizedField}s given a {@link Field} AST element in the operation + * + * @param field the field to look up + * + * @return zero, one or more possible {@link NormalizedField}s that represent that field + */ + public List getNormalizedFields(Field field) { + return fieldToNormalizedField.get(field); + } + + /** + * @return a map of {@link NormalizedField} to {@link MergedField}s + */ + public Map getNormalizedFieldToMergedField() { + return normalizedFieldToMergedField; + } + + /** + * Looks up the {@link MergedField} given a {@link NormalizedField} + * + * @param NormalizedField the field to use the key + * + * @return a {@link MergedField} or null if its not present + */ + public MergedField getMergedField(NormalizedField NormalizedField) { + return normalizedFieldToMergedField.get(NormalizedField); + } + + /** + * @return a map of {@link NormalizedField} to its {@link QueryDirectives} + */ + public Map getNormalizedFieldToQueryDirectives() { + return normalizedFieldToQueryDirectives; + + } + + /** + * This looks up the {@link QueryDirectives} associated with the given {@link NormalizedField} + * + * @param NormalizedField the executable normalised field in question + * + * @return the fields query directives or null + */ + public QueryDirectives getQueryDirectives(NormalizedField NormalizedField) { + return normalizedFieldToQueryDirectives.get(NormalizedField); + } + + /** + * This will find a {@link NormalizedField} given a merged field and a result path. If this does not find a field it will assert with an exception + * + * @param mergedField the merged field + * @param fieldsContainer the containing type of that field + * @param resultPath the result path in play + * + * @return the NormalizedField + */ + public NormalizedField getNormalizedField(MergedField mergedField, GraphQLFieldsContainer fieldsContainer, ResultPath resultPath) { + List NormalizedFields = fieldToNormalizedField.get(mergedField.getSingleField()); + List keysOnlyPath = resultPath.getKeysOnly(); + for (NormalizedField NormalizedField : NormalizedFields) { + if (NormalizedField.getListOfResultKeys().equals(keysOnlyPath)) { + if (NormalizedField.getObjectTypeNames().contains(fieldsContainer.getName())) { + return NormalizedField; + } + } + } + return Assert.assertShouldNeverHappen("normalized field not found"); + } +} diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy new file mode 100644 index 0000000000..30a85d88bb --- /dev/null +++ b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy @@ -0,0 +1,152 @@ +package graphql.normalized.nf + +import graphql.ExecutionInput +import graphql.GraphQL +import graphql.TestUtil +import graphql.language.Document +import graphql.schema.GraphQLSchema +import graphql.schema.GraphQLTypeUtil +import graphql.util.TraversalControl +import graphql.util.Traverser +import graphql.util.TraverserContext +import graphql.util.TraverserVisitorStub +import spock.lang.Specification + +class NormalizedDocumentFactoryTest extends Specification { + + def "test"() { + String schema = """ +type Query{ + animal: Animal +} +interface Animal { + name: String + friends: [Friend] +} + +union Pet = Dog | Cat + +type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] +} + +type Bird implements Animal { + name: String + friends: [Friend] +} + +type Cat implements Animal{ + name: String + friends: [Friend] + breed: String +} + +type Dog implements Animal{ + name: String + breed: String + friends: [Friend] +} + + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = """ + { + animal{ + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + } + }} + + """ + + assertValidQuery(graphQLSchema, query) + + Document document = TestUtil.parseQuery(query) + def tree = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def printedTree = printDocumentWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.animal: Animal', + '--[Bird, Cat, Dog].name: String', + '--otherName: [Bird, Cat, Dog].name: String', + '--Cat.friends: [Friend]', + '---Friend.isCatOwner: Boolean', + '---Friend.pets: [Pet]', + '----Dog.name: String', + '--Bird.friends: [Friend]', + '---Friend.isBirdOwner: Boolean', + '---Friend.name: String', + '---Friend.pets: [Pet]', + '----Cat.breed: String' + ] + } + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + def ei = ExecutionInput.newExecutionInput(query).variables(variables).build() + assert graphQL.execute(ei).errors.size() == 0 + } + + static List printDocumentWithLevelInfo(NormalizedDocument normalizedDocument, GraphQLSchema schema) { + def result = [] + for (NormalizedOperation normalizedOperation : normalizedDocument.normalizedOperations) { + Traverser traverser = Traverser.depthFirst({ it.getChildren() }) + traverser.traverse(normalizedOperation.getTopLevelFields(), new TraverserVisitorStub() { + @Override + TraversalControl enter(TraverserContext context) { + NormalizedField normalizedField = context.thisNode() + String prefix = "" + for (int i = 1; i <= normalizedField.getLevel(); i++) { + prefix += "-" + } + + def possibleOutputTypes = new LinkedHashSet() + for (fieldDef in normalizedField.getFieldDefinitions(schema)) { + possibleOutputTypes.add(GraphQLTypeUtil.simplePrint(fieldDef.type)) + } + + result << (prefix + normalizedField.printDetails() + ": " + possibleOutputTypes.join(", ")) + return TraversalControl.CONTINUE + } + }) + } + result + } + + +} From 444bd547914d79506a26b813f1d064a2ac526db7 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 17:28:53 +1000 Subject: [PATCH 215/345] conditional nodes ... not quite there yet --- .../conditional/ConditionalNodes.java | 43 ++++++- .../normalized/nf/NormalizedDocument.java | 28 ++++- .../nf/NormalizedDocumentFactory.java | 114 ++++++++++++------ .../nf/NormalizedDocumentFactoryTest.groovy | 54 ++++++++- 4 files changed, 197 insertions(+), 42 deletions(-) diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodes.java b/src/main/java/graphql/execution/conditional/ConditionalNodes.java index babcd87690..7cf26c63e9 100644 --- a/src/main/java/graphql/execution/conditional/ConditionalNodes.java +++ b/src/main/java/graphql/execution/conditional/ConditionalNodes.java @@ -4,7 +4,12 @@ import graphql.GraphQLContext; import graphql.Internal; import graphql.execution.CoercedVariables; -import graphql.language.*; +import graphql.language.Argument; +import graphql.language.BooleanValue; +import graphql.language.Directive; +import graphql.language.DirectivesContainer; +import graphql.language.NodeUtil; +import graphql.language.VariableReference; import graphql.schema.GraphQLSchema; import org.jetbrains.annotations.Nullable; @@ -27,7 +32,7 @@ public Boolean shouldIncludeWithoutVariables(DirectivesContainer element) { public boolean shouldInclude(DirectivesContainer element, Map variables, GraphQLSchema graphQLSchema, - GraphQLContext graphQLContext + @Nullable GraphQLContext graphQLContext ) { // // call the base @include / @skip first @@ -94,6 +99,37 @@ public GraphQLContext getGraphQLContext() { return getDirectiveResult(variables, directives, IncludeDirective.getName(), true); } + public boolean containsSkipOrIncludeDirective(DirectivesContainer directivesContainer) { + return NodeUtil.findNodeByName(directivesContainer.getDirectives(), SkipDirective.getName()) != null || + NodeUtil.findNodeByName(directivesContainer.getDirectives(), IncludeDirective.getName()) != null; + } + + + public String getSkipVariableName(DirectivesContainer directivesContainer) { + Directive skipDirective = NodeUtil.findNodeByName(directivesContainer.getDirectives(), SkipDirective.getName()); + if (skipDirective == null) { + return null; + } + Argument argument = skipDirective.getArgument("if"); + if (argument.getValue() instanceof VariableReference) { + return ((VariableReference) argument.getValue()).getName(); + } + return null; + } + + public String getIncludeVariableName(DirectivesContainer directivesContainer) { + Directive skipDirective = NodeUtil.findNodeByName(directivesContainer.getDirectives(), IncludeDirective.getName()); + if (skipDirective == null) { + return null; + } + Argument argument = skipDirective.getArgument("if"); + if (argument.getValue() instanceof VariableReference) { + return ((VariableReference) argument.getValue()).getName(); + } + return null; + } + + private @Nullable Boolean getDirectiveResult(Map variables, List directives, String directiveName, boolean defaultValue) { Directive foundDirective = NodeUtil.findNodeByName(directives, directiveName); if (foundDirective != null) { @@ -110,6 +146,9 @@ public GraphQLContext getGraphQLContext() { return ((BooleanValue) value).isValue(); } if (value instanceof VariableReference && variables != null) { + if (variables.get(((VariableReference) value).getName()) == null) { + System.out.println("yeahhhhhhhhhhh"); + } return (boolean) variables.get(((VariableReference) value).getName()); } return null; diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocument.java b/src/main/java/graphql/normalized/nf/NormalizedDocument.java index 334a3f4591..f8323c5135 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocument.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocument.java @@ -1,17 +1,39 @@ package graphql.normalized.nf; +import org.jetbrains.annotations.Nullable; + import java.util.List; +import java.util.Map; public class NormalizedDocument { - private final List normalizedOperations; + private final List normalizedOperations; - public NormalizedDocument(List normalizedOperations) { + public NormalizedDocument(List normalizedOperations) { this.normalizedOperations = normalizedOperations; } - public List getNormalizedOperations() { + public List getNormalizedOperations() { return normalizedOperations; } + + public static class NormalizedOperationWithAssumedSkipIncludeVariables { + + Map assumedSkipIncludeVariables; + NormalizedOperation normalizedOperation; + + public NormalizedOperationWithAssumedSkipIncludeVariables(@Nullable Map assumedSkipIncludeVariables, NormalizedOperation normalizedOperation) { + this.assumedSkipIncludeVariables = assumedSkipIncludeVariables; + this.normalizedOperation = normalizedOperation; + } + + public Map getAssumedSkipIncludeVariables() { + return assumedSkipIncludeVariables; + } + + public NormalizedOperation getNormalizedOperation() { + return normalizedOperation; + } + } } diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java index 342cf3203d..d8cb5ee058 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -39,6 +39,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Map; @@ -250,6 +251,10 @@ private static class NormalizedDocumentFactoryImpl { private final List rootEnfs = new ArrayList<>(); + private final Set skipIncludeVariableNames = new LinkedHashSet<>(); + + private Map assumedSkipIncludeVariableValues; + private NormalizedDocumentFactoryImpl( GraphQLSchema graphQLSchema, Document document, @@ -265,38 +270,28 @@ private NormalizedDocumentFactoryImpl( * Creates a new NormalizedDocument for the provided query */ private NormalizedDocument createNormalizedQueryImpl() { - List normalizedOperations = new ArrayList<>(); + List normalizedOperations = new ArrayList<>(); for (OperationDefinition operationDefinition : document.getDefinitionsOfType(OperationDefinition.class)) { - this.rootEnfs.clear(); - this.fieldCount = 0; - this.maxDepthSeen = 0; - this.possibleMergerList.clear(); - ; - fieldToNormalizedField = ImmutableListMultimap.builder(); - normalizedFieldToMergedField = ImmutableMap.builder(); - normalizedFieldToQueryDirectives = ImmutableMap.builder(); - coordinatesToNormalizedFields = ImmutableListMultimap.builder(); - - buildNormalizedFieldsRecursively(null, operationDefinition, null, 0); - - // TODO: handle possible mergers later - for (PossibleMerger possibleMerger : possibleMergerList) { - List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); - NormalizedFieldsMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema); - } - NormalizedOperation normalizedOperation = new NormalizedOperation( - operationDefinition.getOperation(), - operationDefinition.getName(), - rootEnfs, - fieldToNormalizedField.build(), - normalizedFieldToMergedField.build(), - normalizedFieldToQueryDirectives.build(), - coordinatesToNormalizedFields.build(), - fieldCount, - maxDepthSeen - ); - normalizedOperations.add(normalizedOperation); + assumedSkipIncludeVariableValues = null; + skipIncludeVariableNames.clear(); + NormalizedOperation normalizedOperation = createNormalizedOperation(operationDefinition); + + if (skipIncludeVariableNames.size() == 0) { + normalizedOperations.add(new NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables(null, normalizedOperation)); + } else { + int combinations = (int) Math.pow(2, skipIncludeVariableNames.size()); + for (int i = 0; i < combinations; i++) { + assumedSkipIncludeVariableValues = new LinkedHashMap<>(); + int variableIndex = 0; + for (String variableName : skipIncludeVariableNames) { + assumedSkipIncludeVariableValues.put(variableName, (i & (1 << variableIndex++)) != 0); + } + + NormalizedOperation operationWithAssumedVariables = createNormalizedOperation(operationDefinition); + normalizedOperations.add(new NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables(assumedSkipIncludeVariableValues, operationWithAssumedVariables)); + } + } } return new NormalizedDocument( @@ -304,6 +299,38 @@ private NormalizedDocument createNormalizedQueryImpl() { ); } + private NormalizedOperation createNormalizedOperation(OperationDefinition operationDefinition) { + this.rootEnfs.clear(); + this.fieldCount = 0; + this.maxDepthSeen = 0; + this.possibleMergerList.clear(); + fieldToNormalizedField = ImmutableListMultimap.builder(); + normalizedFieldToMergedField = ImmutableMap.builder(); + normalizedFieldToQueryDirectives = ImmutableMap.builder(); + coordinatesToNormalizedFields = ImmutableListMultimap.builder(); + + buildNormalizedFieldsRecursively(null, operationDefinition, null, 0); + + for (PossibleMerger possibleMerger : possibleMergerList) { + List childrenWithSameResultKey = possibleMerger.parent.getChildrenWithSameResultKey(possibleMerger.resultKey); + NormalizedFieldsMerger.merge(possibleMerger.parent, childrenWithSameResultKey, graphQLSchema); + } + + NormalizedOperation normalizedOperation = new NormalizedOperation( + operationDefinition.getOperation(), + operationDefinition.getName(), + rootEnfs, + fieldToNormalizedField.build(), + normalizedFieldToMergedField.build(), + normalizedFieldToQueryDirectives.build(), + coordinatesToNormalizedFields.build(), + fieldCount, + maxDepthSeen + ); + return normalizedOperation; + } + + private void captureMergedField(NormalizedField enf, MergedField mergedFld) { // // QueryDirectivesImpl is a lazy object and only computes itself when asked for // QueryDirectives queryDirectives = new QueryDirectivesImpl(mergedFld, graphQLSchema, coercedVariableValues.toMap(), options.getGraphQLContext(), options.getLocale()); @@ -557,12 +584,27 @@ private void collectField(List result, Set possibleObjectTypes, GraphQLCompositeType astTypeCondition ) { -// if (!conditionalNodes.shouldInclude(field, -// this.coercedVariableValues.toMap(), -// this.graphQLSchema, -// this.options.graphQLContext)) { -// return; -// } + Boolean shouldInclude; + if (assumedSkipIncludeVariableValues == null) { + if ((shouldInclude = conditionalNodes.shouldIncludeWithoutVariables(field)) == null) { + + String skipVariableName = conditionalNodes.getSkipVariableName(field); + String includeVariableName = conditionalNodes.getIncludeVariableName(field); + if (skipVariableName != null) { + skipIncludeVariableNames.add(skipVariableName); + } + if (includeVariableName != null) { + skipIncludeVariableNames.add(includeVariableName); + } + } + if (shouldInclude != null && !shouldInclude) { + return; + } + } else { + if (!conditionalNodes.shouldInclude(field, (Map) assumedSkipIncludeVariableValues, graphQLSchema, null)) { + return; + } + } // this means there is actually no possible type for this field, and we are done if (possibleObjectTypes.isEmpty()) { return; diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy index 30a85d88bb..d2ae58876a 100644 --- a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy +++ b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy @@ -116,6 +116,56 @@ type Dog implements Animal{ ] } + def "document with skip/include with variables"() { + String schema = """ + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query ($skip: Boolean!, $include: Boolean!) { + foo { + name + bar @skip(if: $skip) { + baz @include(if: $include) + } + } + } + ''' + + + assertValidQuery(graphQLSchema, query, [skip: false, include: true]) + + Document document = TestUtil.parseQuery(query) + def tree = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def printedTree = printDocumentWithLevelInfo(tree, graphQLSchema) + + expect: + printedTree == ['-Query.animal: Animal', + '--[Bird, Cat, Dog].name: String', + '--otherName: [Bird, Cat, Dog].name: String', + '--Cat.friends: [Friend]', + '---Friend.isCatOwner: Boolean', + '---Friend.pets: [Pet]', + '----Dog.name: String', + '--Bird.friends: [Friend]', + '---Friend.isBirdOwner: Boolean', + '---Friend.name: String', + '---Friend.pets: [Pet]', + '----Cat.breed: String' + ] + } + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() def ei = ExecutionInput.newExecutionInput(query).variables(variables).build() @@ -124,7 +174,9 @@ type Dog implements Animal{ static List printDocumentWithLevelInfo(NormalizedDocument normalizedDocument, GraphQLSchema schema) { def result = [] - for (NormalizedOperation normalizedOperation : normalizedDocument.normalizedOperations) { + for (NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables normalizedOperationWithAssumedSkipIncludeVariables : normalizedDocument.normalizedOperations) { + NormalizedOperation normalizedOperation = normalizedOperationWithAssumedSkipIncludeVariables.normalizedOperation; + result << "assumed variables: " + normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables Traverser traverser = Traverser.depthFirst({ it.getChildren() }) traverser.traverse(normalizedOperation.getTopLevelFields(), new TraverserVisitorStub() { @Override From 08b498fa0a6b0af3f93e5b0ba898a3d2fbe1fbf9 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 27 Feb 2025 21:04:47 +1000 Subject: [PATCH 216/345] working test --- .../conditional/ConditionalNodes.java | 3 -- .../nf/NormalizedDocumentFactory.java | 3 +- .../nf/NormalizedDocumentFactoryTest.groovy | 32 +++++++++++-------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodes.java b/src/main/java/graphql/execution/conditional/ConditionalNodes.java index 7cf26c63e9..48efec5f1c 100644 --- a/src/main/java/graphql/execution/conditional/ConditionalNodes.java +++ b/src/main/java/graphql/execution/conditional/ConditionalNodes.java @@ -146,9 +146,6 @@ public String getIncludeVariableName(DirectivesContainer directivesContainer) return ((BooleanValue) value).isValue(); } if (value instanceof VariableReference && variables != null) { - if (variables.get(((VariableReference) value).getName()) == null) { - System.out.println("yeahhhhhhhhhhh"); - } return (boolean) variables.get(((VariableReference) value).getName()); } return null; diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java index d8cb5ee058..99f88d58d6 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -287,7 +287,6 @@ private NormalizedDocument createNormalizedQueryImpl() { for (String variableName : skipIncludeVariableNames) { assumedSkipIncludeVariableValues.put(variableName, (i & (1 << variableIndex++)) != 0); } - NormalizedOperation operationWithAssumedVariables = createNormalizedOperation(operationDefinition); normalizedOperations.add(new NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables(assumedSkipIncludeVariableValues, operationWithAssumedVariables)); } @@ -319,7 +318,7 @@ private NormalizedOperation createNormalizedOperation(OperationDefinition operat NormalizedOperation normalizedOperation = new NormalizedOperation( operationDefinition.getOperation(), operationDefinition.getName(), - rootEnfs, + new ArrayList<>(rootEnfs), fieldToNormalizedField.build(), normalizedFieldToMergedField.build(), normalizedFieldToQueryDirectives.build(), diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy index d2ae58876a..58c69529ad 100644 --- a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy +++ b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy @@ -150,19 +150,21 @@ type Dog implements Animal{ def printedTree = printDocumentWithLevelInfo(tree, graphQLSchema) expect: - printedTree == ['-Query.animal: Animal', - '--[Bird, Cat, Dog].name: String', - '--otherName: [Bird, Cat, Dog].name: String', - '--Cat.friends: [Friend]', - '---Friend.isCatOwner: Boolean', - '---Friend.pets: [Pet]', - '----Dog.name: String', - '--Bird.friends: [Friend]', - '---Friend.isBirdOwner: Boolean', - '---Friend.name: String', - '---Friend.pets: [Pet]', - '----Cat.breed: String' - ] + printedTree.join("\n") == '''variables: [skip:false, include:false] +-Query.foo: Foo +--Foo.name: String +--Foo.bar: Bar +variables: [skip:true, include:false] +-Query.foo: Foo +--Foo.name: String +variables: [skip:false, include:true] +-Query.foo: Foo +--Foo.name: String +--Foo.bar: Bar +---Bar.baz: String +variables: [skip:true, include:true] +-Query.foo: Foo +--Foo.name: String''' } @@ -176,7 +178,9 @@ type Dog implements Animal{ def result = [] for (NormalizedDocument.NormalizedOperationWithAssumedSkipIncludeVariables normalizedOperationWithAssumedSkipIncludeVariables : normalizedDocument.normalizedOperations) { NormalizedOperation normalizedOperation = normalizedOperationWithAssumedSkipIncludeVariables.normalizedOperation; - result << "assumed variables: " + normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables + if (normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables != null) { + result << "variables: " + normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables + } Traverser traverser = Traverser.depthFirst({ it.getChildren() }) traverser.traverse(normalizedOperation.getTopLevelFields(), new TraverserVisitorStub() { @Override From c464d44050d30df3a137059d545b1d4b9a30d5b4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 19:41:21 +0000 Subject: [PATCH 217/345] Add performance results for commit 11211e11a54c35e1e9ffe9900e7ec7baad92d55c --- ...54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json | 665 ++++++++++++++++++ 1 file changed, 665 insertions(+) create mode 100644 performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json diff --git a/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json b/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json new file mode 100644 index 0000000000..34f194c1bf --- /dev/null +++ b/performance-results/2025-02-27T19:41:06Z-11211e11a54c35e1e9ffe9900e7ec7baad92d55c-jdk17.json @@ -0,0 +1,665 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424204324807343, + "scoreError" : 0.05799769532538598, + "scoreConfidence" : [ + 3.366206629481957, + 3.482202020132729 + ], + "scorePercentiles" : { + "0.0" : 3.4159836041695884, + "50.0" : 3.4237277918290836, + "90.0" : 3.433378111401614, + "95.0" : 3.433378111401614, + "99.0" : 3.433378111401614, + "99.9" : 3.433378111401614, + "99.99" : 3.433378111401614, + "99.999" : 3.433378111401614, + "99.9999" : 3.433378111401614, + "100.0" : 3.433378111401614 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4159836041695884, + 3.417039358674823 + ], + [ + 3.430416224983344, + 3.433378111401614 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.728024357619412, + "scoreError" : 0.005667731146331268, + "scoreConfidence" : [ + 1.7223566264730807, + 1.7336920887657434 + ], + "scorePercentiles" : { + "0.0" : 1.7270563159253658, + "50.0" : 1.728063700679468, + "90.0" : 1.7289137131933463, + "95.0" : 1.7289137131933463, + "99.0" : 1.7289137131933463, + "99.9" : 1.7289137131933463, + "99.99" : 1.7289137131933463, + "99.999" : 1.7289137131933463, + "99.9999" : 1.7289137131933463, + "100.0" : 1.7289137131933463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7286006804391694, + 1.7275267209197662 + ], + [ + 1.7270563159253658, + 1.7289137131933463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8687373037199976, + "scoreError" : 0.007828251353031416, + "scoreConfidence" : [ + 0.8609090523669661, + 0.876565555073029 + ], + "scorePercentiles" : { + "0.0" : 0.8677172931089318, + "50.0" : 0.8683724801432033, + "90.0" : 0.8704869614846519, + "95.0" : 0.8704869614846519, + "99.0" : 0.8704869614846519, + "99.9" : 0.8704869614846519, + "99.99" : 0.8704869614846519, + "99.999" : 0.8704869614846519, + "99.9999" : 0.8704869614846519, + "100.0" : 0.8704869614846519 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677172931089318, + 0.8685043429446764 + ], + [ + 0.8682406173417304, + 0.8704869614846519 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.1436562038279, + "scoreError" : 5.6105425024585065, + "scoreConfidence" : [ + 101.5331137013694, + 112.7541987062864 + ], + "scorePercentiles" : { + "0.0" : 102.50973848385428, + "50.0" : 109.21468173090412, + "90.0" : 109.90699541456834, + "95.0" : 109.90699541456834, + "99.0" : 109.90699541456834, + "99.9" : 109.90699541456834, + "99.99" : 109.90699541456834, + "99.999" : 109.90699541456834, + "99.9999" : 109.90699541456834, + "100.0" : 109.90699541456834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.21468173090412, + 109.27836917733696, + 109.90699541456834 + ], + [ + 102.50973848385428, + 102.60092263928637, + 103.01205226543857 + ], + [ + 108.97543715441627, + 109.36582665700297, + 109.4288823116432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18715525560681903, + "scoreError" : 0.020286238893373214, + "scoreConfidence" : [ + 0.1668690167134458, + 0.20744149450019225 + ], + "scorePercentiles" : { + "0.0" : 0.17607753671162446, + "50.0" : 0.18194778879953422, + "90.0" : 0.20298734608748603, + "95.0" : 0.20298734608748603, + "99.0" : 0.20298734608748603, + "99.9" : 0.20298734608748603, + "99.99" : 0.20298734608748603, + "99.999" : 0.20298734608748603, + "99.9999" : 0.20298734608748603, + "100.0" : 0.20298734608748603 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18297718427167767, + 0.18194778879953422, + 0.18188762704619862 + ], + [ + 0.20298734608748603, + 0.2028440355780933, + 0.20278723644401184 + ], + [ + 0.1767823894427945, + 0.17607753671162446, + 0.1761061560799507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33746284165580004, + "scoreError" : 0.009801170575544799, + "scoreConfidence" : [ + 0.32766167108025523, + 0.34726401223134484 + ], + "scorePercentiles" : { + "0.0" : 0.33322743102299235, + "50.0" : 0.3339327810131232, + "90.0" : 0.3462359468891736, + "95.0" : 0.3462359468891736, + "99.0" : 0.3462359468891736, + "99.9" : 0.3462359468891736, + "99.99" : 0.3462359468891736, + "99.999" : 0.3462359468891736, + "99.9999" : 0.3462359468891736, + "100.0" : 0.3462359468891736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3339327810131232, + 0.333327132728909, + 0.33331685544297046 + ], + [ + 0.3462359468891736, + 0.3447156930368838, + 0.34466495712562467 + ], + [ + 0.3342104271439075, + 0.3335343504986159, + 0.33322743102299235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1626035761133484, + "scoreError" : 0.009923728597793184, + "scoreConfidence" : [ + 0.15267984751555522, + 0.1725273047111416 + ], + "scorePercentiles" : { + "0.0" : 0.15574798043857463, + "50.0" : 0.16241545803287208, + "90.0" : 0.16958445535789993, + "95.0" : 0.16958445535789993, + "99.0" : 0.16958445535789993, + "99.9" : 0.16958445535789993, + "99.99" : 0.16958445535789993, + "99.999" : 0.16958445535789993, + "99.9999" : 0.16958445535789993, + "100.0" : 0.16958445535789993 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16958445535789993, + 0.16957912419663904, + 0.16929908774632627 + ], + [ + 0.16241545803287208, + 0.16258103080849956, + 0.1624111286765303 + ], + [ + 0.15574798043857463, + 0.15582760495520062, + 0.1559863148075933 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3948568791221134, + "scoreError" : 0.005118335017259271, + "scoreConfidence" : [ + 0.38973854410485415, + 0.3999752141393727 + ], + "scorePercentiles" : { + "0.0" : 0.39062994046875, + "50.0" : 0.3952583020829216, + "90.0" : 0.3990008796680498, + "95.0" : 0.3990008796680498, + "99.0" : 0.3990008796680498, + "99.9" : 0.3990008796680498, + "99.99" : 0.3990008796680498, + "99.999" : 0.3990008796680498, + "99.9999" : 0.3990008796680498, + "100.0" : 0.3990008796680498 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3913463903889802, + 0.39134656312123345, + 0.39062994046875 + ], + [ + 0.3974219333147876, + 0.3969439823363633, + 0.3966984339719941 + ], + [ + 0.3990008796680498, + 0.39506548674594083, + 0.3952583020829216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1610574826858421, + "scoreError" : 0.003752410557245631, + "scoreConfidence" : [ + 0.15730507212859648, + 0.16480989324308773 + ], + "scorePercentiles" : { + "0.0" : 0.15879246556679422, + "50.0" : 0.1602639839738453, + "90.0" : 0.16460379410070283, + "95.0" : 0.16460379410070283, + "99.0" : 0.16460379410070283, + "99.9" : 0.16460379410070283, + "99.99" : 0.16460379410070283, + "99.999" : 0.16460379410070283, + "99.9999" : 0.16460379410070283, + "100.0" : 0.16460379410070283 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15879246556679422, + 0.15922639871029376, + 0.1590539176116934 + ], + [ + 0.16016096425311105, + 0.1602639839738453, + 0.1603011353231598 + ], + [ + 0.16460379410070283, + 0.16316207262196117, + 0.1639526120110175 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04835155109742807, + "scoreError" : 0.0014775111568661589, + "scoreConfidence" : [ + 0.04687403994056191, + 0.04982906225429423 + ], + "scorePercentiles" : { + "0.0" : 0.047276101358698225, + "50.0" : 0.048217913343684, + "90.0" : 0.04951674853308905, + "95.0" : 0.04951674853308905, + "99.0" : 0.04951674853308905, + "99.9" : 0.04951674853308905, + "99.99" : 0.04951674853308905, + "99.999" : 0.04951674853308905, + "99.9999" : 0.04951674853308905, + "100.0" : 0.04951674853308905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04951674853308905, + 0.04938211956247994, + 0.04941198198959399 + ], + [ + 0.04821848832645425, + 0.0481013592933039, + 0.048217913343684 + ], + [ + 0.04749393822546021, + 0.04754530924408902, + 0.047276101358698225 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9625059.040573487, + "scoreError" : 219935.77309763603, + "scoreConfidence" : [ + 9405123.26747585, + 9844994.813671123 + ], + "scorePercentiles" : { + "0.0" : 9448406.368271954, + "50.0" : 9683659.49177154, + "90.0" : 9762830.43609756, + "95.0" : 9762830.43609756, + "99.0" : 9762830.43609756, + "99.9" : 9762830.43609756, + "99.99" : 9762830.43609756, + "99.999" : 9762830.43609756, + "99.9999" : 9762830.43609756, + "100.0" : 9762830.43609756 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9687952.249757987, + 9683659.49177154, + 9676237.632495165 + ], + [ + 9762830.43609756, + 9739261.683544304, + 9712223.050485438 + ], + [ + 9461725.996215705, + 9453234.456521738, + 9448406.368271954 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 5de94cfc3169fe7a76eff5ec10e191f7e2a15602 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Fri, 28 Feb 2025 06:39:26 +1000 Subject: [PATCH 218/345] normalized operation to AST compiler --- .../normalized/nf/NormalizedDocument.java | 6 + .../nf/NormalizedOperationToAstCompiler.java | 210 ++++++++++++++++++ ...ormalizedOperationToAstCompilerTest.groovy | 144 ++++++++++++ 3 files changed, 360 insertions(+) create mode 100644 src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java create mode 100644 src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocument.java b/src/main/java/graphql/normalized/nf/NormalizedDocument.java index f8323c5135..d9332fea75 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocument.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocument.java @@ -1,5 +1,6 @@ package graphql.normalized.nf; +import graphql.Assert; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -17,6 +18,11 @@ public List getNormalizedOpe return normalizedOperations; } + public NormalizedOperation getSingleNormalizedOperation() { + Assert.assertTrue(normalizedOperations.size() == 1, "Expecting a single normalized operation"); + return normalizedOperations.get(0).getNormalizedOperation(); + } + public static class NormalizedOperationWithAssumedSkipIncludeVariables { Map assumedSkipIncludeVariables; diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java new file mode 100644 index 0000000000..c516606b09 --- /dev/null +++ b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java @@ -0,0 +1,210 @@ +package graphql.normalized.nf; + +import com.google.common.collect.ImmutableList; +import graphql.Assert; +import graphql.PublicApi; +import graphql.introspection.Introspection; +import graphql.language.Argument; +import graphql.language.Document; +import graphql.language.Field; +import graphql.language.InlineFragment; +import graphql.language.OperationDefinition; +import graphql.language.Selection; +import graphql.language.SelectionSet; +import graphql.language.TypeName; +import graphql.schema.GraphQLCompositeType; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLUnmodifiedType; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import static graphql.collect.ImmutableKit.emptyList; +import static graphql.language.Field.newField; +import static graphql.language.InlineFragment.newInlineFragment; +import static graphql.language.SelectionSet.newSelectionSet; +import static graphql.language.TypeName.newTypeName; +import static graphql.schema.GraphQLTypeUtil.unwrapAll; + +/** + * This class can take a list of {@link NormalizedField}s and compiling out a + * normalised operation {@link Document} that would represent how those fields + * may be executed. + *

    + * This is essentially the reverse of {@link NormalizedDocumentFactory} which takes + * operation text and makes {@link NormalizedField}s from it, this takes {@link NormalizedField}s + * and makes operation text from it. + *

    + * You could for example send that operation text onto to some other graphql server if it + * has the same schema as the one provided. + */ +@PublicApi +public class NormalizedOperationToAstCompiler { + + /** + * The result is a {@link Document} and a map of variables + * that would go with that document. + */ + public static class CompilerResult { + private final Document document; + private final Map variables; + + public CompilerResult(Document document, Map variables) { + this.document = document; + this.variables = variables; + } + + public Document getDocument() { + return document; + } + + public Map getVariables() { + return variables; + } + } + + public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, + NormalizedOperation normalizedOperation) { + GraphQLObjectType operationType = getOperationType(schema, normalizedOperation.getOperation()); + + List> selections = subSelectionsForNormalizedField(schema, operationType.getName(), normalizedOperation.getTopLevelFields()); + SelectionSet selectionSet = new SelectionSet(selections); + + OperationDefinition.Builder definitionBuilder = OperationDefinition.newOperationDefinition() + .name(normalizedOperation.getOperationName()) + .operation(normalizedOperation.getOperation()) + .selectionSet(selectionSet); + +// definitionBuilder.variableDefinitions(variableAccumulator.getVariableDefinitions()); + + return new CompilerResult( + Document.newDocument() + .definition(definitionBuilder.build()) + .build(), + null + ); + } + + private static List> subSelectionsForNormalizedField(GraphQLSchema schema, + @NotNull String parentOutputType, + List normalizedFields + ) { + ImmutableList.Builder> selections = ImmutableList.builder(); + + // All conditional fields go here instead of directly to selections, so they can be grouped together + // in the same inline fragment in the output + Map> fieldsByTypeCondition = new LinkedHashMap<>(); + + for (NormalizedField nf : normalizedFields) { + if (nf.isConditional(schema)) { + selectionForNormalizedField(schema, nf) + .forEach((objectTypeName, field) -> + fieldsByTypeCondition + .computeIfAbsent(objectTypeName, ignored -> new ArrayList<>()) + .add(field)); + } else { + selections.add(selectionForNormalizedField(schema, parentOutputType, nf)); + } + } + + fieldsByTypeCondition.forEach((objectTypeName, fields) -> { + TypeName typeName = newTypeName(objectTypeName).build(); + InlineFragment inlineFragment = newInlineFragment() + .typeCondition(typeName) + .selectionSet(selectionSet(fields)) + .build(); + selections.add(inlineFragment); + }); + + return selections.build(); + } + + /** + * @return Map of object type names to list of fields + */ + private static Map selectionForNormalizedField(GraphQLSchema schema, + NormalizedField normalizedField + ) { + Map groupedFields = new LinkedHashMap<>(); + + for (String objectTypeName : normalizedField.getObjectTypeNames()) { + groupedFields.put(objectTypeName, selectionForNormalizedField(schema, objectTypeName, normalizedField)); + } + + return groupedFields; + } + + /** + * @return Map of object type names to list of fields + */ + private static Field selectionForNormalizedField(GraphQLSchema schema, + String objectTypeName, + NormalizedField normalizedField) { + + final List> subSelections; + if (normalizedField.getChildren().isEmpty()) { + subSelections = emptyList(); + } else { + GraphQLFieldDefinition fieldDef = getFieldDefinition(schema, objectTypeName, normalizedField); + GraphQLUnmodifiedType fieldOutputType = unwrapAll(fieldDef.getType()); + + subSelections = subSelectionsForNormalizedField( + schema, + fieldOutputType.getName(), + normalizedField.getChildren() + ); + } + + SelectionSet selectionSet = selectionSetOrNullIfEmpty(subSelections); +// List arguments = createArguments(executableNormalizedField, variableAccumulator); + List arguments = normalizedField.getAstArguments(); + + + Field.Builder builder = newField() + .name(normalizedField.getFieldName()) + .alias(normalizedField.getAlias()) + .selectionSet(selectionSet) + .arguments(arguments); + return builder.build(); + } + + @Nullable + private static SelectionSet selectionSetOrNullIfEmpty(List> selections) { + return selections.isEmpty() ? null : newSelectionSet().selections(selections).build(); + } + + private static SelectionSet selectionSet(List fields) { + return newSelectionSet().selections(fields).build(); + } + + + @NotNull + private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, + String parentType, + NormalizedField nf) { + return Introspection.getFieldDef(schema, (GraphQLCompositeType) schema.getType(parentType), nf.getName()); + } + + + @Nullable + private static GraphQLObjectType getOperationType(@NotNull GraphQLSchema schema, + @NotNull OperationDefinition.Operation operationKind) { + switch (operationKind) { + case QUERY: + return schema.getQueryType(); + case MUTATION: + return schema.getMutationType(); + case SUBSCRIPTION: + return schema.getSubscriptionType(); + } + + return Assert.assertShouldNeverHappen("Unknown operation kind " + operationKind); + } + +} diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy new file mode 100644 index 0000000000..15d0f2381f --- /dev/null +++ b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy @@ -0,0 +1,144 @@ +package graphql.normalized.nf + +import graphql.GraphQL +import graphql.TestUtil +import graphql.language.AstPrinter +import graphql.language.AstSorter +import graphql.parser.Parser +import graphql.schema.GraphQLSchema +import spock.lang.Specification + +import static graphql.ExecutionInput.newExecutionInput + +class NormalizedOperationToAstCompilerTest extends Specification { + + + def "test pet interfaces"() { + String sdl = """ + type Query { + animal: Animal + } + interface Animal { + name: String + friends: [Friend] + } + + union Pet = Dog | Cat + + type Friend { + name: String + isBirdOwner: Boolean + isCatOwner: Boolean + pets: [Pet] + } + + type Bird implements Animal { + name: String + friends: [Friend] + } + + type Cat implements Animal { + name: String + friends: [Friend] + breed: String + mood: String + } + + type Dog implements Animal { + name: String + breed: String + friends: [Friend] + } + """ + + String query = """ + { + animal { + name + otherName: name + ... on Animal { + name + } + ... on Cat { + name + mood + friends { + ... on Friend { + isCatOwner + pets { + ... on Dog { + name + } + } + } + } + } + ... on Bird { + friends { + isBirdOwner + } + friends { + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Dog { + name + breed + } + } + } + """ + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, normalizedOperation) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + animal { + name + otherName: name + ... on Bird { + friends { + isBirdOwner + name + pets { + ... on Cat { + breed + } + } + } + } + ... on Cat { + friends { + isCatOwner + pets { + ... on Dog { + name + } + } + } + mood + } + ... on Dog { + breed + } + } +} +''' + } + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { + GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() + assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() + } + + +} From 80fdb8111db11271df6fa21a451d5bcc8772d891 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Fri, 28 Feb 2025 08:49:54 +1000 Subject: [PATCH 219/345] minor cleanups --- .../graphql/execution/incremental/IncrementalUtils.java | 3 ++- .../normalized/ExecutableNormalizedOperationFactory.java | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/graphql/execution/incremental/IncrementalUtils.java b/src/main/java/graphql/execution/incremental/IncrementalUtils.java index 2a89ade3fd..77473c8cb1 100644 --- a/src/main/java/graphql/execution/incremental/IncrementalUtils.java +++ b/src/main/java/graphql/execution/incremental/IncrementalUtils.java @@ -7,6 +7,7 @@ import graphql.execution.ValuesResolver; import graphql.language.Directive; import graphql.language.NodeUtil; +import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -20,7 +21,7 @@ public class IncrementalUtils { private IncrementalUtils() { } - public static T createDeferredExecution( + public static @Nullable T createDeferredExecution( Map variables, List directives, Function builderFunction diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index 0b3cb0cd84..56781bb447 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -536,10 +536,11 @@ private void buildEnfsRecursively(@Nullable ExecutableNormalizedField executable // and is the type to which the field belongs (the container type of the field) and output type // of the field needs to be determined based on the field name GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDef(graphQLSchema, fieldAndAstParent.astTypeCondition, fieldAndAstParent.field.getName()); - GraphQLUnmodifiedType selectionSetType = unwrapAll(fieldDefinition.getType()); + // it must a composite type, because the field has a selection set + GraphQLCompositeType selectionSetType = (GraphQLCompositeType) unwrapAll(fieldDefinition.getType()); this.collectFromSelectionSet(fieldAndAstParent.field.getSelectionSet(), collectedFields, - (GraphQLCompositeType) selectionSetType, + selectionSetType, possibleObjects, null ); @@ -829,7 +830,7 @@ private void collectInlineFragment(List result, collectFromSelectionSet(inlineFragment.getSelectionSet(), result, newAstTypeCondition, newPossibleObjects, newDeferredExecution); } - private NormalizedDeferredExecution buildDeferredExecution( + private @Nullable NormalizedDeferredExecution buildDeferredExecution( List directives, Set newPossibleObjects) { if (!options.deferSupport) { From f1fd32b50806a69c2e5ce9d8c34cca7886b535c8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 00:03:18 +0000 Subject: [PATCH 220/345] Add performance results for commit c0366ce7f430d3ea6827a80a5dca1b7c43c3950e --- ...430d3ea6827a80a5dca1b7c43c3950e-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json diff --git a/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json b/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json new file mode 100644 index 0000000000..93b65412ac --- /dev/null +++ b/performance-results/2025-02-28T00:03:05Z-c0366ce7f430d3ea6827a80a5dca1b7c43c3950e-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4093139013067724, + "scoreError" : 0.021893836129409316, + "scoreConfidence" : [ + 3.387420065177363, + 3.4312077374361816 + ], + "scorePercentiles" : { + "0.0" : 3.404731404003703, + "50.0" : 3.409860333857129, + "90.0" : 3.412803533509129, + "95.0" : 3.412803533509129, + "99.0" : 3.412803533509129, + "99.9" : 3.412803533509129, + "99.99" : 3.412803533509129, + "99.999" : 3.412803533509129, + "99.9999" : 3.412803533509129, + "100.0" : 3.412803533509129 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.409284321996756, + 3.4104363457175024 + ], + [ + 3.404731404003703, + 3.412803533509129 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7182419922433345, + "scoreError" : 0.009837862041857262, + "scoreConfidence" : [ + 1.7084041302014772, + 1.7280798542851918 + ], + "scorePercentiles" : { + "0.0" : 1.7161595064751782, + "50.0" : 1.7186904440757775, + "90.0" : 1.719427574346604, + "95.0" : 1.719427574346604, + "99.0" : 1.719427574346604, + "99.9" : 1.719427574346604, + "99.99" : 1.719427574346604, + "99.999" : 1.719427574346604, + "99.9999" : 1.719427574346604, + "100.0" : 1.719427574346604 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.719427574346604, + 1.7193263365006115 + ], + [ + 1.7161595064751782, + 1.7180545516509436 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8656415344042727, + "scoreError" : 0.00216935852863811, + "scoreConfidence" : [ + 0.8634721758756346, + 0.8678108929329108 + ], + "scorePercentiles" : { + "0.0" : 0.8652472998061675, + "50.0" : 0.8656445886938953, + "90.0" : 0.8660296604231326, + "95.0" : 0.8660296604231326, + "99.0" : 0.8660296604231326, + "99.9" : 0.8660296604231326, + "99.99" : 0.8660296604231326, + "99.999" : 0.8660296604231326, + "99.9999" : 0.8660296604231326, + "100.0" : 0.8660296604231326 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8657711262503519, + 0.8655180511374387 + ], + [ + 0.8652472998061675, + 0.8660296604231326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70249.89615163156, + "scoreError" : 184.9343928170246, + "scoreConfidence" : [ + 70064.96175881453, + 70434.83054444859 + ], + "scorePercentiles" : { + "0.0" : 70120.69035144885, + "50.0" : 70222.45600654616, + "90.0" : 70403.71718522921, + "95.0" : 70403.71718522921, + "99.0" : 70403.71718522921, + "99.9" : 70403.71718522921, + "99.99" : 70403.71718522921, + "99.999" : 70403.71718522921, + "99.9999" : 70403.71718522921, + "100.0" : 70403.71718522921 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70401.49822549731, + 70353.74617990099, + 70403.71718522921 + ], + [ + 70144.53735546515, + 70197.23574567295, + 70120.69035144885 + ], + [ + 70245.4038793827, + 70222.45600654616, + 70159.78043554082 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.1235870149517, + "scoreError" : 12.518422380833014, + "scoreConfidence" : [ + 311.6051646341187, + 336.64200939578467 + ], + "scorePercentiles" : { + "0.0" : 314.0885905749031, + "50.0" : 326.2222939474484, + "90.0" : 331.6432472176766, + "95.0" : 331.6432472176766, + "99.0" : 331.6432472176766, + "99.9" : 331.6432472176766, + "99.99" : 331.6432472176766, + "99.999" : 331.6432472176766, + "99.9999" : 331.6432472176766, + "100.0" : 331.6432472176766 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 325.97687376627675, + 327.32026111840463, + 331.126243086308 + ], + [ + 331.6432472176766, + 331.0286050083805, + 326.2222939474484 + ], + [ + 314.0885905749031, + 315.02124216928775, + 314.6849262458794 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.08364604746585, + "scoreError" : 1.343132091816652, + "scoreConfidence" : [ + 102.74051395564919, + 105.4267781392825 + ], + "scorePercentiles" : { + "0.0" : 103.10488102505084, + "50.0" : 103.9406500655117, + "90.0" : 105.49964296877762, + "95.0" : 105.49964296877762, + "99.0" : 105.49964296877762, + "99.9" : 105.49964296877762, + "99.99" : 105.49964296877762, + "99.999" : 105.49964296877762, + "99.9999" : 105.49964296877762, + "100.0" : 105.49964296877762 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.10488102505084, + 103.9406500655117, + 103.92876928971134 + ], + [ + 104.72044867134093, + 105.49964296877762, + 104.86104107178554 + ], + [ + 103.94586724796258, + 103.56578526150736, + 103.18572882554477 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01420008079255139, + "scoreError" : 3.534476823480423E-5, + "scoreConfidence" : [ + 0.014164736024316586, + 0.014235425560786193 + ], + "scorePercentiles" : { + "0.0" : 0.01417365751768496, + "50.0" : 0.014199791465741986, + "90.0" : 0.014234270268654507, + "95.0" : 0.014234270268654507, + "99.0" : 0.014234270268654507, + "99.9" : 0.014234270268654507, + "99.99" : 0.014234270268654507, + "99.999" : 0.014234270268654507, + "99.9999" : 0.014234270268654507, + "100.0" : 0.014234270268654507 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014199791465741986, + 0.014212377463151328, + 0.014190600920106542 + ], + [ + 0.01422226798704651, + 0.014209003600516065, + 0.014234270268654507 + ], + [ + 0.01417841923080195, + 0.01418033867925866, + 0.01417365751768496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0020239600224718, + "scoreError" : 0.020447026162184023, + "scoreConfidence" : [ + 0.9815769338602878, + 1.022470986184656 + ], + "scorePercentiles" : { + "0.0" : 0.9786403171543204, + "50.0" : 1.0060794966800806, + "90.0" : 1.017381385757884, + "95.0" : 1.017381385757884, + "99.0" : 1.017381385757884, + "99.9" : 1.017381385757884, + "99.99" : 1.017381385757884, + "99.999" : 1.017381385757884, + "99.9999" : 1.017381385757884, + "100.0" : 1.017381385757884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0114736057449176, + 1.017381385757884, + 1.0080577986090111 + ], + [ + 0.9922600353209644, + 0.9939197001590141, + 0.9989399211866946 + ], + [ + 1.0114633795893597, + 0.9786403171543204, + 1.0060794966800806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013369104906817872, + "scoreError" : 5.803541797248806E-4, + "scoreConfidence" : [ + 0.012788750727092991, + 0.013949459086542753 + ], + "scorePercentiles" : { + "0.0" : 0.013171773939042702, + "50.0" : 0.013363062333361295, + "90.0" : 0.01359549083414451, + "95.0" : 0.01359549083414451, + "99.0" : 0.01359549083414451, + "99.9" : 0.01359549083414451, + "99.99" : 0.01359549083414451, + "99.999" : 0.01359549083414451, + "99.9999" : 0.01359549083414451, + "100.0" : 0.01359549083414451 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013539637246645636, + 0.01359549083414451, + 0.0135357767250224 + ], + [ + 0.013181602754351786, + 0.013171773939042702, + 0.013190347941700192 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8901509541468826, + "scoreError" : 0.03736323494833567, + "scoreConfidence" : [ + 3.852787719198547, + 3.927514189095218 + ], + "scorePercentiles" : { + "0.0" : 3.8659979497681607, + "50.0" : 3.8930672909390642, + "90.0" : 3.9019652425897036, + "95.0" : 3.9019652425897036, + "99.0" : 3.9019652425897036, + "99.9" : 3.9019652425897036, + "99.99" : 3.9019652425897036, + "99.999" : 3.9019652425897036, + "99.9999" : 3.9019652425897036, + "100.0" : 3.9019652425897036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8659979497681607, + 3.9019652425897036, + 3.901129496099844 + ], + [ + 3.89117386848249, + 3.8949607133956388, + 3.8856784545454546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9819383742313637, + "scoreError" : 0.05841787458508158, + "scoreConfidence" : [ + 2.923520499646282, + 3.0403562488164453 + ], + "scorePercentiles" : { + "0.0" : 2.9387547916544228, + "50.0" : 2.9656987298339264, + "90.0" : 3.033763831058538, + "95.0" : 3.033763831058538, + "99.0" : 3.033763831058538, + "99.9" : 3.033763831058538, + "99.99" : 3.033763831058538, + "99.999" : 3.033763831058538, + "99.9999" : 3.033763831058538, + "100.0" : 3.033763831058538 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.033763831058538, + 3.01548591046126, + 3.0099463171832683 + ], + [ + 3.007374973541792, + 2.9656987298339264, + 2.9656569952550416 + ], + [ + 2.9459099366715757, + 2.954853882422452, + 2.9387547916544228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18768522962156822, + "scoreError" : 0.00834799006050313, + "scoreConfidence" : [ + 0.1793372395610651, + 0.19603321968207135 + ], + "scorePercentiles" : { + "0.0" : 0.18104723394586766, + "50.0" : 0.18936799948871383, + "90.0" : 0.19284200376034094, + "95.0" : 0.19284200376034094, + "99.0" : 0.19284200376034094, + "99.9" : 0.19284200376034094, + "99.99" : 0.19284200376034094, + "99.999" : 0.19284200376034094, + "99.9999" : 0.19284200376034094, + "100.0" : 0.19284200376034094 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19284200376034094, + 0.1923480044623966, + 0.19192666618685705 + ], + [ + 0.18179211868966896, + 0.18107432534810872, + 0.18104723394586766 + ], + [ + 0.18942655156084257, + 0.18934216315131777, + 0.18936799948871383 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34058191618212075, + "scoreError" : 0.003858026612173194, + "scoreConfidence" : [ + 0.33672388956994753, + 0.34443994279429396 + ], + "scorePercentiles" : { + "0.0" : 0.33769021212939826, + "50.0" : 0.3407948157374591, + "90.0" : 0.3438218884686791, + "95.0" : 0.3438218884686791, + "99.0" : 0.3438218884686791, + "99.9" : 0.3438218884686791, + "99.99" : 0.3438218884686791, + "99.999" : 0.3438218884686791, + "99.9999" : 0.3438218884686791, + "100.0" : 0.3438218884686791 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33851800196337295, + 0.33776987850846085, + 0.33769021212939826 + ], + [ + 0.3438218884686791, + 0.34235571417322835, + 0.34216245375851095 + ], + [ + 0.3407948157374591, + 0.3426416534982526, + 0.33948262740172447 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16430571049586792, + "scoreError" : 0.006062912563558703, + "scoreConfidence" : [ + 0.15824279793230922, + 0.17036862305942663 + ], + "scorePercentiles" : { + "0.0" : 0.16106335164038718, + "50.0" : 0.16263530021629885, + "90.0" : 0.16930342624477288, + "95.0" : 0.16930342624477288, + "99.0" : 0.16930342624477288, + "99.9" : 0.16930342624477288, + "99.99" : 0.16930342624477288, + "99.999" : 0.16930342624477288, + "99.9999" : 0.16930342624477288, + "100.0" : 0.16930342624477288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16297191605553926, + 0.16218497714851035, + 0.16263530021629885 + ], + [ + 0.16139171223149298, + 0.16106335164038718, + 0.16137712693648334 + ], + [ + 0.16871034478279207, + 0.16911323920653443, + 0.16930342624477288 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.4014406332579484, + "scoreError" : 0.0064106096443937105, + "scoreConfidence" : [ + 0.39503002361355466, + 0.4078512429023421 + ], + "scorePercentiles" : { + "0.0" : 0.39696473793267706, + "50.0" : 0.4002436985511887, + "90.0" : 0.40840316928040515, + "95.0" : 0.40840316928040515, + "99.0" : 0.40840316928040515, + "99.9" : 0.40840316928040515, + "99.99" : 0.40840316928040515, + "99.999" : 0.40840316928040515, + "99.9999" : 0.40840316928040515, + "100.0" : 0.40840316928040515 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39874033963317385, + 0.39796666401368935, + 0.39696473793267706 + ], + [ + 0.40840316928040515, + 0.4047517820860485, + 0.40437363024666395 + ], + [ + 0.40258169533011273, + 0.4002436985511887, + 0.3989399822475765 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1622603517749877, + "scoreError" : 0.0022710755266089396, + "scoreConfidence" : [ + 0.15998927624837878, + 0.16453142730159664 + ], + "scorePercentiles" : { + "0.0" : 0.16080216116998183, + "50.0" : 0.16173225106740846, + "90.0" : 0.1650935754874284, + "95.0" : 0.1650935754874284, + "99.0" : 0.1650935754874284, + "99.9" : 0.1650935754874284, + "99.99" : 0.1650935754874284, + "99.999" : 0.1650935754874284, + "99.9999" : 0.1650935754874284, + "100.0" : 0.1650935754874284 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16263024725569594, + 0.16173225106740846, + 0.16164135474485591 + ], + [ + 0.1650935754874284, + 0.1630933295387827, + 0.163012935448114 + ], + [ + 0.16125758538394555, + 0.16080216116998183, + 0.16107972587867658 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048687190219174316, + "scoreError" : 0.0012339357980707558, + "scoreConfidence" : [ + 0.04745325442110356, + 0.04992112601724507 + ], + "scorePercentiles" : { + "0.0" : 0.04793252728754254, + "50.0" : 0.048637015865141436, + "90.0" : 0.05031688491166984, + "95.0" : 0.05031688491166984, + "99.0" : 0.05031688491166984, + "99.9" : 0.05031688491166984, + "99.99" : 0.05031688491166984, + "99.999" : 0.05031688491166984, + "99.9999" : 0.05031688491166984, + "100.0" : 0.05031688491166984 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04793252728754254, + 0.04806552263605908, + 0.04803455098325536 + ], + [ + 0.05031688491166984, + 0.04888433324860193, + 0.048948174551274835 + ], + [ + 0.0489710829950295, + 0.048637015865141436, + 0.04839461949399433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9679679.952722099, + "scoreError" : 352471.94224217994, + "scoreConfidence" : [ + 9327208.01047992, + 1.0032151894964278E7 + ], + "scorePercentiles" : { + "0.0" : 9410322.933207903, + "50.0" : 9733389.864785992, + "90.0" : 9917231.136769079, + "95.0" : 9917231.136769079, + "99.0" : 9917231.136769079, + "99.9" : 9917231.136769079, + "99.99" : 9917231.136769079, + "99.999" : 9917231.136769079, + "99.9999" : 9917231.136769079, + "100.0" : 9917231.136769079 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9412682.519285042, + 9417082.15913371, + 9410322.933207903 + ], + [ + 9917231.136769079, + 9867065.872781064, + 9860209.638423646 + ], + [ + 9784028.08797654, + 9715107.362135923, + 9733389.864785992 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From a1cac7902682368a5a9277ec75600106c3c43cad Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Fri, 28 Feb 2025 10:27:04 +1000 Subject: [PATCH 221/345] capture custom directives per NF --- .../nf/NormalizedDocumentFactory.java | 9 ++-- .../normalized/nf/NormalizedField.java | 47 +++++++++++++---- .../normalized/nf/NormalizedFieldsMerger.java | 4 ++ .../normalized/nf/NormalizedOperation.java | 10 ++-- .../nf/NormalizedOperationToAstCompiler.java | 5 +- .../nf/NormalizedDocumentFactoryTest.groovy | 45 ++++++++++++++++- ...ormalizedOperationToAstCompilerTest.groovy | 50 +++++++++++++++++++ 7 files changed, 149 insertions(+), 21 deletions(-) diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java index 99f88d58d6..a0844bf7de 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -14,6 +14,7 @@ import graphql.execution.conditional.ConditionalNodes; import graphql.execution.directives.QueryDirectives; import graphql.introspection.Introspection; +import graphql.language.Directive; import graphql.language.Document; import graphql.language.Field; import graphql.language.FragmentDefinition; @@ -44,6 +45,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertShouldNeverHappen; @@ -481,16 +483,13 @@ private NormalizedField createNF(CollectedFieldGroup collectedFieldGroup, Field field; Set objectTypes = collectedFieldGroup.objectTypes; field = collectedFieldGroup.fields.iterator().next().field; + List directives = collectedFieldGroup.fields.stream().flatMap(f -> f.field.getDirectives().stream()).collect(Collectors.toList()); String fieldName = field.getName(); - GraphQLFieldDefinition fieldDefinition = Introspection.getFieldDefinition(graphQLSchema, objectTypes.iterator().next(), fieldName); - -// Map argumentValues = ValuesResolver.getArgumentValues(fieldDefinition.getArguments(), field.getArguments(), CoercedVariables.of(this.coercedVariableValues.toMap()), this.options.graphQLContext, this.options.locale); ImmutableList objectTypeNames = map(objectTypes, GraphQLObjectType::getName); return NormalizedField.newNormalizedField() .alias(field.getAlias()) -// .resolvedArguments(argumentValues) -// .normalizedArguments(normalizedArgumentValues) .astArguments(field.getArguments()) + .astDirectives(directives) .objectTypeNames(objectTypeNames) .fieldName(fieldName) .level(level) diff --git a/src/main/java/graphql/normalized/nf/NormalizedField.java b/src/main/java/graphql/normalized/nf/NormalizedField.java index 48c9469be9..38138ace39 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedField.java +++ b/src/main/java/graphql/normalized/nf/NormalizedField.java @@ -8,23 +8,39 @@ import graphql.collect.ImmutableKit; import graphql.introspection.Introspection; import graphql.language.Argument; +import graphql.language.Directive; import graphql.normalized.ExecutableNormalizedOperation; import graphql.normalized.NormalizedInputValue; -import graphql.normalized.incremental.NormalizedDeferredExecution; -import graphql.schema.*; +import graphql.schema.GraphQLFieldDefinition; +import graphql.schema.GraphQLInterfaceType; +import graphql.schema.GraphQLNamedOutputType; +import graphql.schema.GraphQLObjectType; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.GraphQLUnionType; import graphql.util.FpKit; import graphql.util.MutableRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.function.Consumer; import static graphql.Assert.assertNotNull; import static graphql.Assert.assertTrue; import static graphql.schema.GraphQLTypeUtil.simplePrint; import static graphql.schema.GraphQLTypeUtil.unwrapAll; -import static java.util.stream.Collectors.*; +import static java.util.stream.Collectors.joining; +import static java.util.stream.Collectors.toList; +import static java.util.stream.Collectors.toSet; /** * An {@link NormalizedField} represents a field in an executable graphql operation. Its models what @@ -40,6 +56,7 @@ public class NormalizedField { private final ImmutableMap normalizedArguments; private final LinkedHashMap resolvedArguments; private final ImmutableList astArguments; + private List astDirectives; // Mutable List on purpose: it is modified after creation private final LinkedHashSet objectTypeNames; @@ -60,6 +77,7 @@ private NormalizedField(Builder builder) { this.children = builder.children; this.level = builder.level; this.parent = builder.parent; + this.astDirectives = builder.astDirectives; } /** @@ -294,6 +312,15 @@ public ImmutableList getAstArguments() { return astArguments; } + public List getAstDirectives() { + return astDirectives; + } + + public void setAstDirectives(List astDirectives) { + this.astDirectives = astDirectives; + } + + /** * Returns an argument value as a {@link NormalizedInputValue} which contains its type name and its current value * @@ -556,6 +583,7 @@ public NormalizedField transform(Consumer builderConsumer) { return builder.build(); } + public static class Builder { private LinkedHashSet objectTypeNames = new LinkedHashSet<>(); private String fieldName; @@ -566,8 +594,8 @@ public static class Builder { private ImmutableMap normalizedArguments = ImmutableKit.emptyMap(); private LinkedHashMap resolvedArguments = new LinkedHashMap<>(); private ImmutableList astArguments = ImmutableKit.emptyList(); + private List astDirectives = Collections.emptyList(); - private LinkedHashSet deferredExecutions = new LinkedHashSet<>(); private Builder() { } @@ -614,6 +642,11 @@ public Builder astArguments(@NotNull List astArguments) { return this; } + public Builder astDirectives(@NotNull List astDirectives) { + this.astDirectives = astDirectives; + return this; + } + public Builder fieldName(String fieldName) { this.fieldName = fieldName; @@ -637,10 +670,6 @@ public Builder parent(NormalizedField parent) { return this; } - public Builder deferredExecutions(LinkedHashSet deferredExecutions) { - this.deferredExecutions = deferredExecutions; - return this; - } public NormalizedField build() { return new NormalizedField(this); diff --git a/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java b/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java index b7ade1f450..4261aa5307 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java +++ b/src/main/java/graphql/normalized/nf/NormalizedFieldsMerger.java @@ -4,6 +4,7 @@ import graphql.introspection.Introspection; import graphql.language.Argument; import graphql.language.AstComparator; +import graphql.language.Directive; import graphql.schema.GraphQLInterfaceType; import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; @@ -63,7 +64,9 @@ && isFieldInSharedInterface(field, fieldInGroup, schema) boolean mergeable = areFieldSetsTheSame(listOfChildrenForGroup); if (mergeable) { Set mergedObjects = new LinkedHashSet<>(); + List mergedDirectives = new ArrayList<>(); groupOfFields.forEach(f -> mergedObjects.addAll(f.getObjectTypeNames())); + groupOfFields.forEach(f -> mergedDirectives.addAll(f.getAstDirectives())); // patching the first one to contain more objects, remove all others Iterator iterator = groupOfFields.iterator(); NormalizedField first = iterator.next(); @@ -73,6 +76,7 @@ && isFieldInSharedInterface(field, fieldInGroup, schema) parent.getChildren().remove(next); } first.setObjectTypeNames(mergedObjects); + first.setAstDirectives(mergedDirectives); } } } diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperation.java b/src/main/java/graphql/normalized/nf/NormalizedOperation.java index f2d42dd4cb..149e210d46 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedOperation.java +++ b/src/main/java/graphql/normalized/nf/NormalizedOperation.java @@ -26,7 +26,7 @@ public class NormalizedOperation { private final OperationDefinition.Operation operation; private final String operationName; - private final List topLevelFields; + private final List rootFields; private final ImmutableListMultimap fieldToNormalizedField; private final Map normalizedFieldToMergedField; private final Map normalizedFieldToQueryDirectives; @@ -37,7 +37,7 @@ public class NormalizedOperation { public NormalizedOperation( OperationDefinition.Operation operation, String operationName, - List topLevelFields, + List rootFields, ImmutableListMultimap fieldToNormalizedField, Map normalizedFieldToMergedField, Map normalizedFieldToQueryDirectives, @@ -46,7 +46,7 @@ public NormalizedOperation( int operationDepth) { this.operation = operation; this.operationName = operationName; - this.topLevelFields = topLevelFields; + this.rootFields = rootFields; this.fieldToNormalizedField = fieldToNormalizedField; this.normalizedFieldToMergedField = normalizedFieldToMergedField; this.normalizedFieldToQueryDirectives = normalizedFieldToQueryDirectives; @@ -95,8 +95,8 @@ public ImmutableListMultimap getCoordinatesTo /** * @return a list of the top level {@link NormalizedField}s in this operation. */ - public List getTopLevelFields() { - return topLevelFields; + public List getRootFields() { + return rootFields; } /** diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java index c516606b09..d25aebee93 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java +++ b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java @@ -5,6 +5,7 @@ import graphql.PublicApi; import graphql.introspection.Introspection; import graphql.language.Argument; +import graphql.language.Directive; import graphql.language.Document; import graphql.language.Field; import graphql.language.InlineFragment; @@ -73,7 +74,7 @@ public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, NormalizedOperation normalizedOperation) { GraphQLObjectType operationType = getOperationType(schema, normalizedOperation.getOperation()); - List> selections = subSelectionsForNormalizedField(schema, operationType.getName(), normalizedOperation.getTopLevelFields()); + List> selections = subSelectionsForNormalizedField(schema, operationType.getName(), normalizedOperation.getRootFields()); SelectionSet selectionSet = new SelectionSet(selections); OperationDefinition.Builder definitionBuilder = OperationDefinition.newOperationDefinition() @@ -164,12 +165,14 @@ private static Field selectionForNormalizedField(GraphQLSchema schema, SelectionSet selectionSet = selectionSetOrNullIfEmpty(subSelections); // List arguments = createArguments(executableNormalizedField, variableAccumulator); List arguments = normalizedField.getAstArguments(); + List directives = normalizedField.getAstDirectives(); Field.Builder builder = newField() .name(normalizedField.getFieldName()) .alias(normalizedField.getAlias()) .selectionSet(selectionSet) + .directives(directives) .arguments(arguments); return builder.build(); } diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy index 58c69529ad..5ef79cd417 100644 --- a/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy +++ b/src/test/groovy/graphql/normalized/nf/NormalizedDocumentFactoryTest.groovy @@ -167,6 +167,49 @@ variables: [skip:true, include:true] --Foo.name: String''' } + def "document with custom directives"() { + String schema = """ + directive @cache(time: Int!) on FIELD + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + GraphQLSchema graphQLSchema = TestUtil.schema(schema) + + String query = ''' + query { + foo { + name + bar @cache(time:100) { + baz + } + bar @cache(time:200) { + baz + } + + } + } + ''' + + + assertValidQuery(graphQLSchema, query, [skip: false, include: true]) + + Document document = TestUtil.parseQuery(query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(graphQLSchema, document) + def rootField = normalizedDocument.getSingleNormalizedOperation().getRootFields().get(0) + def bar = rootField.getChildren().get(1) + + expect: + bar.getAstDirectives().size() == 2 + } + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() @@ -182,7 +225,7 @@ variables: [skip:true, include:true] result << "variables: " + normalizedOperationWithAssumedSkipIncludeVariables.assumedSkipIncludeVariables } Traverser traverser = Traverser.depthFirst({ it.getChildren() }) - traverser.traverse(normalizedOperation.getTopLevelFields(), new TraverserVisitorStub() { + traverser.traverse(normalizedOperation.getRootFields(), new TraverserVisitorStub() { @Override TraversalControl enter(TraverserContext context) { NormalizedField normalizedField = context.thisNode() diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy index 15d0f2381f..49f9cc0a53 100644 --- a/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy +++ b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy @@ -135,6 +135,56 @@ class NormalizedOperationToAstCompilerTest extends Specification { ''' } + def "print custom directives"() { + String sdl = """ + directive @cache(time: Int!) on FIELD + type Query{ + foo: Foo + } + type Foo { + bar: Bar + name: String + } + type Bar { + baz: String + } + """ + + String query = ''' + query { + foo { + name + bar @cache(time:100) { + baz + } + bar @cache(time:200) { + baz + } + + } + } + ''' + + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, normalizedOperation) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''{ + foo { + bar @cache(time: 100) @cache(time: 200) { + baz + } + name + } +} +''' + } + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() From 233fcc4f8943e346ae4ff21e5561b85f426f535b Mon Sep 17 00:00:00 2001 From: Martin Bonnin Date: Fri, 28 Feb 2025 01:39:54 +0100 Subject: [PATCH 222/345] Add support for @experimental_disableErrorPropagation (#3772) * Add @errorHandling * cosmetics * add test for NonNullableFieldValidator * Add integration test * Add @PublicApi * make some enums package-private * NULL -> ALLOW_NULL * remove wildcard imports * Add Javadoc * rename boolean getter * remove wildcard imports * restore empty lines * revert SchemaGenerator changes and add ExperimentalApi.ENABLE_CUSTOM_ERROR_PROPAGATION * remove unused imports * Also check error message * Rename to @nullOnError * add .idea/codeStyles * location -> position * Rename to @nullOnNonNullError * Revert "Rename to @nullOnNonNullError" This reverts commit e744ccaa53014d43b9632ffc9bb3a7e0f0502943. * keep in sync with graphql-js https://github.com/graphql/graphql-js/pull/4348 * resolve merge * Brad Baker here Rather than ask for these changes - I decided to push to your branch as a maintainer and then get them into your PR * revert codeStyle changes * Brad Baker here Rather than ask for these changes - I decided to push to your branch as a maintainer and then get them into your PR This now adds the directive to the schema if not present * Brad Baker here Rather than ask for these changes - I decided to push to your branch as a maintainer and then get them into your PR * import * Brad Baker here Rather than ask for these changes - I decided to push to your branch as a maintainer and then get them into your PR Added the directive to common list --------- Co-authored-by: bbaker --- src/main/java/graphql/Directives.java | 43 +++++++ .../java/graphql/execution/Execution.java | 15 +++ .../graphql/execution/ExecutionContext.java | 17 ++- .../execution/ExecutionContextBuilder.java | 10 ++ .../execution/NonNullableFieldValidator.java | 4 +- .../java/graphql/schema/GraphQLSchema.java | 20 +-- .../graphql/schema/idl/DirectiveInfo.java | 5 +- ...SchemaGeneratorAppliedDirectiveHelper.java | 2 +- .../schema/idl/SchemaGeneratorHelper.java | 1 - src/test/groovy/graphql/Issue2141.groovy | 3 + .../graphql/StarWarsIntrospectionTests.groovy | 2 +- ...rimentalDisableErrorPropagationTest.groovy | 114 ++++++++++++++++++ .../NonNullableFieldValidatorTest.groovy | 26 +++- ...rospectionWithDirectivesSupportTest.groovy | 7 +- .../graphql/schema/GraphQLSchemaTest.groovy | 8 +- .../schema/diffing/SchemaDiffingTest.groovy | 4 +- ...GeneratorAppliedDirectiveHelperTest.groovy | 2 + .../schema/idl/SchemaGeneratorTest.groovy | 4 +- .../schema/idl/SchemaPrinterTest.groovy | 36 ++++++ 19 files changed, 293 insertions(+), 30 deletions(-) create mode 100644 src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy diff --git a/src/main/java/graphql/Directives.java b/src/main/java/graphql/Directives.java index f0d9eb6745..37f2b28550 100644 --- a/src/main/java/graphql/Directives.java +++ b/src/main/java/graphql/Directives.java @@ -7,6 +7,8 @@ import graphql.language.StringValue; import graphql.schema.GraphQLDirective; +import java.util.concurrent.atomic.AtomicBoolean; + import static graphql.Scalars.GraphQLBoolean; import static graphql.Scalars.GraphQLString; import static graphql.introspection.Introspection.DirectiveLocation.ARGUMENT_DEFINITION; @@ -17,7 +19,10 @@ import static graphql.introspection.Introspection.DirectiveLocation.INLINE_FRAGMENT; import static graphql.introspection.Introspection.DirectiveLocation.INPUT_FIELD_DEFINITION; import static graphql.introspection.Introspection.DirectiveLocation.INPUT_OBJECT; +import static graphql.introspection.Introspection.DirectiveLocation.MUTATION; +import static graphql.introspection.Introspection.DirectiveLocation.QUERY; import static graphql.introspection.Introspection.DirectiveLocation.SCALAR; +import static graphql.introspection.Introspection.DirectiveLocation.SUBSCRIPTION; import static graphql.language.DirectiveLocation.newDirectiveLocation; import static graphql.language.InputValueDefinition.newInputValueDefinition; import static graphql.language.NonNullType.newNonNullType; @@ -37,6 +42,7 @@ public class Directives { private static final String SPECIFIED_BY = "specifiedBy"; private static final String ONE_OF = "oneOf"; private static final String DEFER = "defer"; + private static final String EXPERIMENTAL_DISABLE_ERROR_PROPAGATION = "experimental_disableErrorPropagation"; public static final DirectiveDefinition DEPRECATED_DIRECTIVE_DEFINITION; public static final DirectiveDefinition INCLUDE_DIRECTIVE_DEFINITION; @@ -46,6 +52,8 @@ public class Directives { public static final DirectiveDefinition ONE_OF_DIRECTIVE_DEFINITION; @ExperimentalApi public static final DirectiveDefinition DEFER_DIRECTIVE_DEFINITION; + @ExperimentalApi + public static final DirectiveDefinition EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION; public static final String BOOLEAN = "Boolean"; public static final String STRING = "String"; @@ -133,6 +141,13 @@ public class Directives { .type(newTypeName().name(STRING).build()) .build()) .build(); + EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION = DirectiveDefinition.newDirectiveDefinition() + .name(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION) + .directiveLocation(newDirectiveLocation().name(QUERY.name()).build()) + .directiveLocation(newDirectiveLocation().name(MUTATION.name()).build()) + .directiveLocation(newDirectiveLocation().name(SUBSCRIPTION.name()).build()) + .description(createDescription("This directive allows returning null in non-null positions that have an associated error")) + .build(); } /** @@ -226,7 +241,35 @@ public class Directives { .definition(ONE_OF_DIRECTIVE_DEFINITION) .build(); + @ExperimentalApi + public static final GraphQLDirective ExperimentalDisableErrorPropagationDirective = GraphQLDirective.newDirective() + .name(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION) + .description("This directive disables error propagation when a non nullable field returns null for the given operation.") + .validLocations(QUERY, MUTATION, SUBSCRIPTION) + .definition(EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION) + .build(); + private static Description createDescription(String s) { return new Description(s, null, false); } + + private static final AtomicBoolean EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED = new AtomicBoolean(true); + + /** + * This can be used to get the state the `@experimental_disableErrorPropagation` directive support on a JVM wide basis . + * @return true if the `@experimental_disableErrorPropagation` directive will be respected + */ + public static boolean isExperimentalDisableErrorPropagationDirectiveEnabled() { + return EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED.get(); + } + + /** + * This can be used to disable the `@experimental_disableErrorPropagation` directive support on a JVM wide basis in case your server + * implementation does NOT want to act on this directive ever. + * + * @param flag the desired state of the flag + */ + public static void setExperimentalDisableErrorPropagationEnabled(boolean flag) { + EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_ENABLED.set(flag); + } } diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index 6a9f0a5c8e..ddc384d468 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -1,6 +1,7 @@ package graphql.execution; +import graphql.Directives; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; @@ -20,6 +21,7 @@ import graphql.extensions.ExtensionsBuilder; import graphql.incremental.DelayedIncrementalPartialResult; import graphql.incremental.IncrementalExecutionResultImpl; +import graphql.language.Directive; import graphql.language.Document; import graphql.language.NodeUtil; import graphql.language.OperationDefinition; @@ -36,6 +38,7 @@ import java.util.Optional; import java.util.concurrent.CompletableFuture; +import static graphql.Directives.EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION; import static graphql.execution.ExecutionContextBuilder.newExecutionContextBuilder; import static graphql.execution.ExecutionStepInfo.newExecutionStepInfo; import static graphql.execution.ExecutionStrategyParameters.newParameters; @@ -81,6 +84,8 @@ public CompletableFuture execute(Document document, GraphQLSche throw rte; } + boolean propagateErrorsOnNonNullContractFailure = propagateErrorsOnNonNullContractFailure(getOperationResult.operationDefinition.getDirectives()); + ExecutionContext executionContext = newExecutionContextBuilder() .instrumentation(instrumentation) .instrumentationState(instrumentationState) @@ -101,6 +106,7 @@ public CompletableFuture execute(Document document, GraphQLSche .locale(executionInput.getLocale()) .valueUnboxer(valueUnboxer) .executionInput(executionInput) + .propagapropagateErrorsOnNonNullContractFailureeErrors(propagateErrorsOnNonNullContractFailure) .build(); executionContext.getGraphQLContext().put(ResultNodesInfo.RESULT_NODES_INFO, executionContext.getResultNodesInfo()); @@ -263,4 +269,13 @@ private ExecutionResult mergeExtensionsBuilderIfPresent(ExecutionResult executio } return executionResult; } + + private boolean propagateErrorsOnNonNullContractFailure(List directives) { + boolean jvmWideEnabled = Directives.isExperimentalDisableErrorPropagationDirectiveEnabled(); + if (! jvmWideEnabled) { + return true; + } + Directive foundDirective = NodeUtil.findNodeByName(directives, EXPERIMENTAL_DISABLE_ERROR_PROPAGATION_DIRECTIVE_DEFINITION.getName()); + return foundDirective == null; + } } diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index ddb1fd6db8..f7727371a5 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import graphql.ExecutionInput; +import graphql.ExperimentalApi; import graphql.GraphQLContext; import graphql.GraphQLError; import graphql.Internal; @@ -59,6 +60,7 @@ public class ExecutionContext { private final ValueUnboxer valueUnboxer; private final ExecutionInput executionInput; private final Supplier queryTree; + private final boolean propagateErrorsOnNonNullContractFailure; // this is modified after creation so it needs to be volatile to ensure visibility across Threads private volatile DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; @@ -88,6 +90,7 @@ public class ExecutionContext { this.executionInput = builder.executionInput; this.dataLoaderDispatcherStrategy = builder.dataLoaderDispatcherStrategy; this.queryTree = FpKit.interThreadMemoize(() -> ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(graphQLSchema, operationDefinition, fragmentsByName, coercedVariables)); + this.propagateErrorsOnNonNullContractFailure = builder.propagateErrorsOnNonNullContractFailure; } @@ -129,9 +132,7 @@ public CoercedVariables getCoercedVariables() { /** * @param for two - * * @return the legacy context - * * @deprecated use {@link #getGraphQLContext()} instead */ @Deprecated(since = "2021-07-05") @@ -170,6 +171,17 @@ public ValueUnboxer getValueUnboxer() { return valueUnboxer; } + /** + * @return true if the current operation should propagate errors in non-null positions + * Propagating errors is the default. Error aware clients may opt in returning null in non-null positions + * by using the `@experimental_disableErrorPropagation` directive. + * @see graphql.Directives#setExperimentalDisableErrorPropagationEnabled(boolean) to change the JVM wide default + */ + @ExperimentalApi + public boolean propagateErrorsOnNonNullContractFailure() { + return propagateErrorsOnNonNullContractFailure; + } + /** * @return true if the current operation is a Query */ @@ -317,7 +329,6 @@ public DataLoaderDispatchStrategy getDataLoaderDispatcherStrategy() { * the current values and allows you to transform it how you want. * * @param builderConsumer the consumer code that will be given a builder to transform - * * @return a new ExecutionContext object based on calling build on that builder */ public ExecutionContext transform(Consumer builderConsumer) { diff --git a/src/main/java/graphql/execution/ExecutionContextBuilder.java b/src/main/java/graphql/execution/ExecutionContextBuilder.java index b60c793b20..33a5d3b3d1 100644 --- a/src/main/java/graphql/execution/ExecutionContextBuilder.java +++ b/src/main/java/graphql/execution/ExecutionContextBuilder.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import graphql.ExecutionInput; +import graphql.ExperimentalApi; import graphql.GraphQLContext; import graphql.GraphQLError; import graphql.Internal; @@ -46,6 +47,7 @@ public class ExecutionContextBuilder { Object localContext; ExecutionInput executionInput; DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; + boolean propagateErrorsOnNonNullContractFailure = true; /** * @return a new builder of {@link graphql.execution.ExecutionContext}s @@ -92,6 +94,7 @@ public ExecutionContextBuilder() { valueUnboxer = other.getValueUnboxer(); executionInput = other.getExecutionInput(); dataLoaderDispatcherStrategy = other.getDataLoaderDispatcherStrategy(); + propagateErrorsOnNonNullContractFailure = other.propagateErrorsOnNonNullContractFailure(); } public ExecutionContextBuilder instrumentation(Instrumentation instrumentation) { @@ -216,6 +219,13 @@ public ExecutionContextBuilder resetErrors() { return this; } + @ExperimentalApi + public ExecutionContextBuilder propagapropagateErrorsOnNonNullContractFailureeErrors(boolean propagateErrorsOnNonNullContractFailure) { + this.propagateErrorsOnNonNullContractFailure = propagateErrorsOnNonNullContractFailure; + return this; + } + + public ExecutionContext build() { // preconditions assertNotNull(executionId, () -> "You must provide a query identifier"); diff --git a/src/main/java/graphql/execution/NonNullableFieldValidator.java b/src/main/java/graphql/execution/NonNullableFieldValidator.java index 3241fa247a..d7e14900a4 100644 --- a/src/main/java/graphql/execution/NonNullableFieldValidator.java +++ b/src/main/java/graphql/execution/NonNullableFieldValidator.java @@ -56,7 +56,9 @@ public T validate(ExecutionStrategyParameters parameters, T result) throws N } else { executionContext.addError(error, path); } - throw nonNullException; + if (executionContext.propagateErrorsOnNonNullContractFailure()) { + throw nonNullException; + } } } return result; diff --git a/src/main/java/graphql/schema/GraphQLSchema.java b/src/main/java/graphql/schema/GraphQLSchema.java index a24928869c..021932c1b7 100644 --- a/src/main/java/graphql/schema/GraphQLSchema.java +++ b/src/main/java/graphql/schema/GraphQLSchema.java @@ -847,16 +847,10 @@ private GraphQLSchema buildImpl() { // schemas built via the schema generator have the deprecated directive BUT we want it present for hand built // schemas - it's inherently part of the spec! - if (additionalDirectives.stream().noneMatch(d -> d.getName().equals(Directives.DeprecatedDirective.getName()))) { - additionalDirectives.add(Directives.DeprecatedDirective); - } - - if (additionalDirectives.stream().noneMatch(d -> d.getName().equals(Directives.SpecifiedByDirective.getName()))) { - additionalDirectives.add(Directives.SpecifiedByDirective); - } - if (additionalDirectives.stream().noneMatch(d -> d.getName().equals(Directives.OneOfDirective.getName()))) { - additionalDirectives.add(Directives.OneOfDirective); - } + addBuiltInDirective(Directives.DeprecatedDirective, additionalDirectives); + addBuiltInDirective(Directives.SpecifiedByDirective, additionalDirectives); + addBuiltInDirective(Directives.OneOfDirective, additionalDirectives); + addBuiltInDirective(Directives.ExperimentalDisableErrorPropagationDirective, additionalDirectives); // quick build - no traversing final GraphQLSchema partiallyBuiltSchema = new GraphQLSchema(this); @@ -879,6 +873,12 @@ private GraphQLSchema buildImpl() { return validateSchema(finalSchema); } + private void addBuiltInDirective(GraphQLDirective qlDirective, Set additionalDirectives1) { + if (additionalDirectives1.stream().noneMatch(d -> d.getName().equals(qlDirective.getName()))) { + additionalDirectives1.add(qlDirective); + } + } + private GraphQLSchema validateSchema(GraphQLSchema graphQLSchema) { Collection errors = new SchemaValidator().validateSchema(graphQLSchema); if (!errors.isEmpty()) { diff --git a/src/main/java/graphql/schema/idl/DirectiveInfo.java b/src/main/java/graphql/schema/idl/DirectiveInfo.java index 428a97aceb..d71e52cd40 100644 --- a/src/main/java/graphql/schema/idl/DirectiveInfo.java +++ b/src/main/java/graphql/schema/idl/DirectiveInfo.java @@ -34,7 +34,10 @@ public class DirectiveInfo { Directives.SkipDirective.getName(), Directives.SkipDirective, Directives.DeprecatedDirective.getName(), Directives.DeprecatedDirective, Directives.SpecifiedByDirective.getName(), Directives.SpecifiedByDirective, - Directives.OneOfDirective.getName(), Directives.OneOfDirective + Directives.OneOfDirective.getName(), Directives.OneOfDirective, + // technically this is NOT yet in spec - but it is added by default by graphql-java so we include it + // we should also do @defer at some future time soon + Directives.ExperimentalDisableErrorPropagationDirective.getName(), Directives.ExperimentalDisableErrorPropagationDirective ); /** diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java index 7a98b46078..e7d94dffdf 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java @@ -35,7 +35,7 @@ import static java.util.stream.Collectors.toMap; /** - * This contains helper code to build out appliedm directives on schema element + * This contains helper code to build out applied directives on schema element */ @Internal class SchemaGeneratorAppliedDirectiveHelper { diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java index 9fa7ea286f..e658c85d17 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorHelper.java @@ -56,7 +56,6 @@ import graphql.schema.GraphQLTypeReference; import graphql.schema.GraphQLUnionType; import graphql.schema.GraphqlTypeComparatorRegistry; -import graphql.schema.PropertyDataFetcher; import graphql.schema.SingletonPropertyDataFetcher; import graphql.schema.TypeResolver; import graphql.schema.TypeResolverProxy; diff --git a/src/test/groovy/graphql/Issue2141.groovy b/src/test/groovy/graphql/Issue2141.groovy index 4bcd6b6359..efa74969e3 100644 --- a/src/test/groovy/graphql/Issue2141.groovy +++ b/src/test/groovy/graphql/Issue2141.groovy @@ -30,6 +30,9 @@ directive @deprecated( reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." diff --git a/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy b/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy index 9b374bfbd3..89fc781138 100644 --- a/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy +++ b/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy @@ -430,6 +430,6 @@ class StarWarsIntrospectionTests extends Specification { schemaParts.get('mutationType').size() == 1 schemaParts.get('subscriptionType') == null schemaParts.get('types').size() == 17 - schemaParts.get('directives').size() == 5 + schemaParts.get('directives').size() == 6 } } diff --git a/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy b/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy new file mode 100644 index 0000000000..366c95426e --- /dev/null +++ b/src/test/groovy/graphql/execution/ExperimentalDisableErrorPropagationTest.groovy @@ -0,0 +1,114 @@ +package graphql.execution + +import graphql.Directives +import graphql.ExecutionInput +import graphql.TestUtil +import spock.lang.Specification + +class ExperimentalDisableErrorPropagationTest extends Specification { + + void setup() { + Directives.setExperimentalDisableErrorPropagationEnabled(true) + } + + def "with experimental_disableErrorPropagation, null is returned"() { + + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo @experimental_disableErrorPropagation { foo } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data != null + er.data.foo == null + er.errors[0].path.toList() == ["foo"] + } + + def "without experimental_disableErrorPropagation, error is propagated"() { + + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo { foo } + ''' + when: + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].message == "The field at path '/foo' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'Int' within parent type 'Query'" + er.errors[0].path.toList() == ["foo"] + } + + def "With experimental_disableErrorPropagation JVM disabled, error is propagated"() { + def sdl = ''' + type Query { + foo : Int! + } + directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + ''' + + def graphql = TestUtil.graphQL(sdl).build() + + def query = ''' + query GetFoo @experimental_disableErrorPropagation { foo } + ''' + when: + + Directives.setExperimentalDisableErrorPropagationEnabled(false) // JVM wide + + ExecutionInput ei = ExecutionInput.newExecutionInput(query).root( + [foo: null] + ).build() + + def er = graphql.execute(ei) + + then: + er.data == null + er.errors[0].message == "The field at path '/foo' was declared as a non null type, but the code involved in retrieving data has wrongly returned a null value. The graphql specification requires that the parent field be set to null, or if that is non nullable that it bubble up null to its parent and so on. The non-nullable type is 'Int' within parent type 'Query'" + er.errors[0].path.toList() == ["foo"] + } + + def "when @experimental_disableErrorPropagation is not added to the schema operation is gets added by schema code"() { + + def sdl = ''' + type Query { + foo : Int! + } + ''' + + when: + def graphql = TestUtil.graphQL(sdl).build() + + then: + graphql.getGraphQLSchema().getDirective(Directives.ExperimentalDisableErrorPropagationDirective.getName()) === Directives.ExperimentalDisableErrorPropagationDirective + } + +} diff --git a/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy b/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy index b288faff07..34a48affe7 100644 --- a/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy +++ b/src/test/groovy/graphql/execution/NonNullableFieldValidatorTest.groovy @@ -7,13 +7,15 @@ import static graphql.schema.GraphQLNonNull.nonNull class NonNullableFieldValidatorTest extends Specification { - ExecutionContext context = Mock(ExecutionContext) - def parameters = Mock(ExecutionStrategyParameters) { getPath() >> ResultPath.rootPath() } def "non nullable field throws exception"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> true + } + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(nonNull(GraphQLString)).build() NonNullableFieldValidator validator = new NonNullableFieldValidator(context, typeInfo) @@ -27,6 +29,10 @@ class NonNullableFieldValidatorTest extends Specification { } def "nullable field does not throw exception"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> true + } + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(GraphQLString).build() NonNullableFieldValidator validator = new NonNullableFieldValidator(context, typeInfo) @@ -37,4 +43,20 @@ class NonNullableFieldValidatorTest extends Specification { then: result == null } + + def "non nullable field returns null if errors are not propagated"() { + ExecutionContext context = Mock(ExecutionContext) { + propagateErrorsOnNonNullContractFailure() >> false + } + + ExecutionStepInfo typeInfo = ExecutionStepInfo.newExecutionStepInfo().type(nonNull(GraphQLString)).build() + + NonNullableFieldValidator validator = new NonNullableFieldValidator(context, typeInfo) + + when: + def result = validator.validate(parameters, null) + + then: + result == null + } } diff --git a/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy index 262770eb31..3f38717984 100644 --- a/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy +++ b/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy @@ -91,7 +91,8 @@ class IntrospectionWithDirectivesSupportTest extends Specification { schemaType["directives"] == [ [name: "include"], [name: "skip"], [name: "example"], [name: "secret"], - [name: "noDefault"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"] + [name: "noDefault"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"], + [name: "experimental_disableErrorPropagation"] ] schemaType["appliedDirectives"] == [[name: "example", args: [[name: "argName", value: '"onSchema"']]]] @@ -173,7 +174,9 @@ class IntrospectionWithDirectivesSupportTest extends Specification { def definedDirectives = er.data["__schema"]["directives"] // secret is filter out - definedDirectives == [[name: "include"], [name: "skip"], [name: "example"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"]] + definedDirectives == [[name: "include"], [name: "skip"], [name: "example"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"], + [name: "experimental_disableErrorPropagation"] + ] } def "can set prefixes onto the Applied types"() { diff --git a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy index f3eabc1eeb..0d75a9af46 100644 --- a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy @@ -155,22 +155,22 @@ class GraphQLSchemaTest extends Specification { when: "no additional directives have been specified" def schema = schemaBuilder.build() then: - schema.directives.size() == 5 + schema.directives.size() == 6 when: "clear directives is called" schema = schemaBuilder.clearDirectives().build() then: - schema.directives.size() == 3 // @deprecated and @specifiedBy and @oneOf is ALWAYS added if missing + schema.directives.size() == 4 // @deprecated and @specifiedBy and @oneOf et al is ALWAYS added if missing when: "clear directives is called with more directives" schema = schemaBuilder.clearDirectives().additionalDirective(Directives.SkipDirective).build() then: - schema.directives.size() == 4 + schema.directives.size() == 5 when: "the schema is transformed, things are copied" schema = schema.transform({ builder -> builder.additionalDirective(Directives.IncludeDirective) }) then: - schema.directives.size() == 5 + schema.directives.size() == 6 } def "clear additional types works as expected"() { diff --git a/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy b/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy index efa708dcf4..629d351661 100644 --- a/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy +++ b/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy @@ -38,10 +38,10 @@ class SchemaDiffingTest extends Specification { schemaGraph.getVerticesByType(SchemaGraph.ARGUMENT).size() == 9 schemaGraph.getVerticesByType(SchemaGraph.INPUT_FIELD).size() == 0 schemaGraph.getVerticesByType(SchemaGraph.INPUT_OBJECT).size() == 0 - schemaGraph.getVerticesByType(SchemaGraph.DIRECTIVE).size() == 5 + schemaGraph.getVerticesByType(SchemaGraph.DIRECTIVE).size() == 6 schemaGraph.getVerticesByType(SchemaGraph.APPLIED_ARGUMENT).size() == 0 schemaGraph.getVerticesByType(SchemaGraph.APPLIED_DIRECTIVE).size() == 0 - schemaGraph.size() == 93 + schemaGraph.size() == 94 } diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy index 824db92e15..944de75893 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy @@ -56,6 +56,7 @@ class SchemaGeneratorAppliedDirectiveHelperTest extends Specification { "bar", "complex", "deprecated", + "experimental_disableErrorPropagation", "foo", "include", "oneOf", @@ -106,6 +107,7 @@ class SchemaGeneratorAppliedDirectiveHelperTest extends Specification { "bar", "complex", "deprecated", + "experimental_disableErrorPropagation", "foo", "include", "oneOf", diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy index fd5d118f42..1eb98cc82e 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy @@ -2025,7 +2025,7 @@ class SchemaGeneratorTest extends Specification { directives = schema.getDirectives() then: - directives.size() == 8 // built in ones : include / skip and deprecated + directives.size() == 9 // built in ones : include / skip and deprecated def directiveNames = directives.collect { it.name } directiveNames.contains("include") directiveNames.contains("skip") @@ -2040,7 +2040,7 @@ class SchemaGeneratorTest extends Specification { directivesMap = schema.getDirectivesByName() then: - directivesMap.size() == 8 // built in ones + directivesMap.size() == 9 // built in ones directivesMap.containsKey("include") directivesMap.containsKey("skip") directivesMap.containsKey("deprecated") diff --git a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy index 0d82101be4..bb311d696a 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy @@ -975,6 +975,9 @@ directive @enumTypeDirective on ENUM directive @enumValueDirective on ENUM_VALUE +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + directive @fieldDirective1 on FIELD_DEFINITION directive @fieldDirective2(argBool: Boolean, argFloat: Float, argInt: Int, argStr: String) on FIELD_DEFINITION @@ -1147,6 +1150,9 @@ directive @deprecated( reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1245,6 +1251,9 @@ directive @deprecated( directive @example on FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1313,6 +1322,9 @@ directive @deprecated( directive @example on FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1408,6 +1420,9 @@ directive @deprecated( reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1494,6 +1509,9 @@ directive @deprecated( reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -1636,6 +1654,9 @@ directive @deprecated( directive @directive1 on SCALAR +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -2170,6 +2191,9 @@ directive @deprecated( reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + directive @foo on SCHEMA "Directs the executor to include this field or fragment only when the `if` argument is true" @@ -2396,6 +2420,9 @@ directive @include( if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" @@ -2522,6 +2549,9 @@ directive @deprecated( # custom directive 'example' comment 1 directive @example on ENUM_VALUE +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -2758,6 +2788,9 @@ directive @deprecated( " custom directive 'example' description 1" directive @example on ENUM_VALUE +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." @@ -2943,6 +2976,9 @@ directive @deprecated( reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive disables error propagation when a non nullable field returns null for the given operation." +directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION + "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." From 7f3326f84fe92611ed2d964d3176747b669616e6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 01:21:45 +0000 Subject: [PATCH 223/345] Add performance results for commit 233fcc4f8943e346ae4ff21e5561b85f426f535b --- ...943e346ae4ff21e5561b85f426f535b-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json diff --git a/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json b/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json new file mode 100644 index 0000000000..e6aa8705dc --- /dev/null +++ b/performance-results/2025-02-28T01:21:28Z-233fcc4f8943e346ae4ff21e5561b85f426f535b-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.425004188960926, + "scoreError" : 0.0174529961835408, + "scoreConfidence" : [ + 3.407551192777385, + 3.442457185144467 + ], + "scorePercentiles" : { + "0.0" : 3.4215569792394542, + "50.0" : 3.4251662860439884, + "90.0" : 3.4281272045162727, + "95.0" : 3.4281272045162727, + "99.0" : 3.4281272045162727, + "99.9" : 3.4281272045162727, + "99.99" : 3.4281272045162727, + "99.999" : 3.4281272045162727, + "99.9999" : 3.4281272045162727, + "100.0" : 3.4281272045162727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4215569792394542, + 3.4281272045162727 + ], + [ + 3.4248539784419494, + 3.425478593646028 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291184118820688, + "scoreError" : 0.004159502908174387, + "scoreConfidence" : [ + 1.7249589089738944, + 1.7332779147902433 + ], + "scorePercentiles" : { + "0.0" : 1.7284478976539939, + "50.0" : 1.7290384028345496, + "90.0" : 1.7299489442051819, + "95.0" : 1.7299489442051819, + "99.0" : 1.7299489442051819, + "99.9" : 1.7299489442051819, + "99.99" : 1.7299489442051819, + "99.999" : 1.7299489442051819, + "99.9999" : 1.7299489442051819, + "100.0" : 1.7299489442051819 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7288253003704586, + 1.7284478976539939 + ], + [ + 1.7292515052986406, + 1.7299489442051819 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8678256118833285, + "scoreError" : 0.006561550956313254, + "scoreConfidence" : [ + 0.8612640609270152, + 0.8743871628396418 + ], + "scorePercentiles" : { + "0.0" : 0.8668878985260587, + "50.0" : 0.8676384753786253, + "90.0" : 0.8691375982500048, + "95.0" : 0.8691375982500048, + "99.0" : 0.8691375982500048, + "99.9" : 0.8691375982500048, + "99.99" : 0.8691375982500048, + "99.999" : 0.8691375982500048, + "99.9999" : 0.8691375982500048, + "100.0" : 0.8691375982500048 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8691375982500048, + 0.8680980953764585 + ], + [ + 0.8671788553807921, + 0.8668878985260587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69300.6801932766, + "scoreError" : 2948.965995832353, + "scoreConfidence" : [ + 66351.71419744425, + 72249.64618910894 + ], + "scorePercentiles" : { + "0.0" : 66905.52137361391, + "50.0" : 70369.64562102163, + "90.0" : 70576.55566451224, + "95.0" : 70576.55566451224, + "99.0" : 70576.55566451224, + "99.9" : 70576.55566451224, + "99.99" : 70576.55566451224, + "99.999" : 70576.55566451224, + "99.9999" : 70576.55566451224, + "100.0" : 70576.55566451224 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70569.49827302896, + 70524.63925300592, + 70576.55566451224 + ], + [ + 70423.57707233248, + 70351.35599478213, + 70369.64562102163 + ], + [ + 66905.52137361391, + 67030.73245789492, + 66954.59602929726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.52049772404257, + "scoreError" : 7.200395101991134, + "scoreConfidence" : [ + 342.3201026220514, + 356.7208928260337 + ], + "scorePercentiles" : { + "0.0" : 344.4032078203839, + "50.0" : 350.22761457137, + "90.0" : 356.6250203740414, + "95.0" : 356.6250203740414, + "99.0" : 356.6250203740414, + "99.9" : 356.6250203740414, + "99.99" : 356.6250203740414, + "99.999" : 356.6250203740414, + "99.9999" : 356.6250203740414, + "100.0" : 356.6250203740414 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.53019390364983, + 350.22761457137, + 351.764415757937 + ], + [ + 356.6250203740414, + 353.5611755887331, + 351.5199872665624 + ], + [ + 344.98688408164884, + 345.0659801520564, + 344.4032078203839 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.37242796876829, + "scoreError" : 6.922906797014581, + "scoreConfidence" : [ + 97.44952117175372, + 111.29533476578287 + ], + "scorePercentiles" : { + "0.0" : 99.71513007956918, + "50.0" : 103.72256768038186, + "90.0" : 109.56034934265045, + "95.0" : 109.56034934265045, + "99.0" : 109.56034934265045, + "99.9" : 109.56034934265045, + "99.99" : 109.56034934265045, + "99.999" : 109.56034934265045, + "99.9999" : 109.56034934265045, + "100.0" : 109.56034934265045 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 99.71513007956918, + 100.2024660758994, + 100.0292213935468 + ], + [ + 109.56034934265045, + 109.26460933508037, + 109.43978481861957 + ], + [ + 103.66061563143764, + 103.75710736172933, + 103.72256768038186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014193070731641019, + "scoreError" : 1.3985027221844092E-4, + "scoreConfidence" : [ + 0.014053220459422578, + 0.01433292100385946 + ], + "scorePercentiles" : { + "0.0" : 0.014072886206629656, + "50.0" : 0.014221143006056711, + "90.0" : 0.014279952131259906, + "95.0" : 0.014279952131259906, + "99.0" : 0.014279952131259906, + "99.9" : 0.014279952131259906, + "99.99" : 0.014279952131259906, + "99.999" : 0.014279952131259906, + "99.9999" : 0.014279952131259906, + "100.0" : 0.014279952131259906 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014221143006056711, + 0.014226597827339501, + 0.01421779372490588 + ], + [ + 0.014279952131259906, + 0.014266136113009278, + 0.014266727080777242 + ], + [ + 0.014102687160922474, + 0.014083713333868507, + 0.014072886206629656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0134086142929557, + "scoreError" : 0.016656611892461523, + "scoreConfidence" : [ + 0.9967520024004942, + 1.0300652261854173 + ], + "scorePercentiles" : { + "0.0" : 0.9993761009293495, + "50.0" : 1.0191509573015387, + "90.0" : 1.0243929557467732, + "95.0" : 1.0243929557467732, + "99.0" : 1.0243929557467732, + "99.9" : 1.0243929557467732, + "99.99" : 1.0243929557467732, + "99.999" : 1.0243929557467732, + "99.9999" : 1.0243929557467732, + "100.0" : 1.0243929557467732 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.020094274479804, + 1.0235628798362333, + 1.0243929557467732 + ], + [ + 1.0194230865443425, + 1.0093312450545013, + 1.0191509573015387 + ], + [ + 1.0041463041470027, + 0.9993761009293495, + 1.0011997245970568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012999582896411559, + "scoreError" : 6.992813461278419E-4, + "scoreConfidence" : [ + 0.012300301550283717, + 0.0136988642425394 + ], + "scorePercentiles" : { + "0.0" : 0.01269426261526119, + "50.0" : 0.012976330358043518, + "90.0" : 0.013273546866330943, + "95.0" : 0.013273546866330943, + "99.0" : 0.013273546866330943, + "99.9" : 0.013273546866330943, + "99.99" : 0.013273546866330943, + "99.999" : 0.013273546866330943, + "99.9999" : 0.013273546866330943, + "100.0" : 0.013273546866330943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013119807961963936, + 0.013259157202067318, + 0.013273546866330943 + ], + [ + 0.01269426261526119, + 0.012817869978722859, + 0.0128328527541231 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.709114407689517, + "scoreError" : 0.05197450643726689, + "scoreConfidence" : [ + 3.65713990125225, + 3.7610889141267836 + ], + "scorePercentiles" : { + "0.0" : 3.6743841410727405, + "50.0" : 3.712563719022545, + "90.0" : 3.7299658426547353, + "95.0" : 3.7299658426547353, + "99.0" : 3.7299658426547353, + "99.9" : 3.7299658426547353, + "99.99" : 3.7299658426547353, + "99.999" : 3.7299658426547353, + "99.9999" : 3.7299658426547353, + "100.0" : 3.7299658426547353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6743841410727405, + 3.7137454847809948, + 3.716191622585438 + ], + [ + 3.711381953264095, + 3.7299658426547353, + 3.7090174017790956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.908876032349584, + "scoreError" : 0.06653523093807073, + "scoreConfidence" : [ + 2.8423408014115132, + 2.975411263287655 + ], + "scorePercentiles" : { + "0.0" : 2.859286373927959, + "50.0" : 2.9278416536885246, + "90.0" : 2.9591043917159765, + "95.0" : 2.9591043917159765, + "99.0" : 2.9591043917159765, + "99.9" : 2.9591043917159765, + "99.99" : 2.9591043917159765, + "99.999" : 2.9591043917159765, + "99.9999" : 2.9591043917159765, + "100.0" : 2.9591043917159765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.885501371609925, + 2.9278416536885246, + 2.932055654353562 + ], + [ + 2.859286373927959, + 2.8695159586800574, + 2.862702666571265 + ], + [ + 2.930786301201289, + 2.9591043917159765, + 2.953089919397697 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18940902420611713, + "scoreError" : 0.012623487496932687, + "scoreConfidence" : [ + 0.17678553670918445, + 0.2020325117030498 + ], + "scorePercentiles" : { + "0.0" : 0.17928718473233174, + "50.0" : 0.19351137820736097, + "90.0" : 0.19568663671408723, + "95.0" : 0.19568663671408723, + "99.0" : 0.19568663671408723, + "99.9" : 0.19568663671408723, + "99.99" : 0.19568663671408723, + "99.999" : 0.19568663671408723, + "99.9999" : 0.19568663671408723, + "100.0" : 0.19568663671408723 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19346425306635712, + 0.19351137820736097, + 0.19361049129736113 + ], + [ + 0.17968087045189113, + 0.1793736514501982, + 0.17928718473233174 + ], + [ + 0.19568663671408723, + 0.19518574770660108, + 0.19488100422886542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3257654980395767, + "scoreError" : 0.003647712937679187, + "scoreConfidence" : [ + 0.32211778510189754, + 0.3294132109772559 + ], + "scorePercentiles" : { + "0.0" : 0.32280374912037185, + "50.0" : 0.32625077087955107, + "90.0" : 0.3281728269943885, + "95.0" : 0.3281728269943885, + "99.0" : 0.3281728269943885, + "99.9" : 0.3281728269943885, + "99.99" : 0.3281728269943885, + "99.999" : 0.3281728269943885, + "99.9999" : 0.3281728269943885, + "100.0" : 0.3281728269943885 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32630149026005806, + 0.32592821641353237, + 0.32625077087955107 + ], + [ + 0.32797510793348855, + 0.3279792810665442, + 0.3281728269943885 + ], + [ + 0.32311754786907493, + 0.32280374912037185, + 0.32336049181918125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1664925346902736, + "scoreError" : 0.009505190969284327, + "scoreConfidence" : [ + 0.1569873437209893, + 0.17599772565955793 + ], + "scorePercentiles" : { + "0.0" : 0.1592184539071456, + "50.0" : 0.16805786182673724, + "90.0" : 0.1724910860888314, + "95.0" : 0.1724910860888314, + "99.0" : 0.1724910860888314, + "99.9" : 0.1724910860888314, + "99.99" : 0.1724910860888314, + "99.999" : 0.1724910860888314, + "99.9999" : 0.1724910860888314, + "100.0" : 0.1724910860888314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15938114037995665, + 0.1594989847523047, + 0.1592184539071456 + ], + [ + 0.1676237910793007, + 0.1681097820327472, + 0.16805786182673724 + ], + [ + 0.1724910860888314, + 0.172039499939787, + 0.17201221220565216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38993431325865663, + "scoreError" : 0.009461256488847478, + "scoreConfidence" : [ + 0.38047305676980914, + 0.3993955697475041 + ], + "scorePercentiles" : { + "0.0" : 0.3824617474280032, + "50.0" : 0.39044726392847384, + "90.0" : 0.3966692765856174, + "95.0" : 0.3966692765856174, + "99.0" : 0.3966692765856174, + "99.9" : 0.3966692765856174, + "99.99" : 0.3966692765856174, + "99.999" : 0.3966692765856174, + "99.9999" : 0.3966692765856174, + "100.0" : 0.3966692765856174 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3966692765856174, + 0.39627204069583133, + 0.39586610612778084 + ], + [ + 0.3852658757945833, + 0.38265304564934566, + 0.3824617474280032 + ], + [ + 0.39087826020168853, + 0.39044726392847384, + 0.38889520291658564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1580856687466588, + "scoreError" : 0.00260313401060033, + "scoreConfidence" : [ + 0.15548253473605847, + 0.16068880275725914 + ], + "scorePercentiles" : { + "0.0" : 0.1561233264484099, + "50.0" : 0.15758299941695555, + "90.0" : 0.16031973716273626, + "95.0" : 0.16031973716273626, + "99.0" : 0.16031973716273626, + "99.9" : 0.16031973716273626, + "99.99" : 0.16031973716273626, + "99.999" : 0.16031973716273626, + "99.9999" : 0.16031973716273626, + "100.0" : 0.16031973716273626 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1595882914159871, + 0.16031973716273626, + 0.1598122411666001 + ], + [ + 0.15758299941695555, + 0.15727130698581449, + 0.15731520293229298 + ], + [ + 0.15852091390980425, + 0.1561233264484099, + 0.15623699928132861 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04749293708460388, + "scoreError" : 8.250305964143997E-4, + "scoreConfidence" : [ + 0.04666790648818948, + 0.04831796768101828 + ], + "scorePercentiles" : { + "0.0" : 0.046976803193438374, + "50.0" : 0.0473359307863807, + "90.0" : 0.048134309229621426, + "95.0" : 0.048134309229621426, + "99.0" : 0.048134309229621426, + "99.9" : 0.048134309229621426, + "99.99" : 0.048134309229621426, + "99.999" : 0.048134309229621426, + "99.9999" : 0.048134309229621426, + "100.0" : 0.048134309229621426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04756417431092297, + 0.04726491346844633, + 0.0473359307863807 + ], + [ + 0.04698740704143291, + 0.046976803193438374, + 0.04701674583554701 + ], + [ + 0.04810798255151081, + 0.048134309229621426, + 0.048048167344134377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9524975.016775662, + "scoreError" : 289751.35326766694, + "scoreConfidence" : [ + 9235223.663507994, + 9814726.37004333 + ], + "scorePercentiles" : { + "0.0" : 9370765.244382022, + "50.0" : 9429927.322337417, + "90.0" : 9768079.684570312, + "95.0" : 9768079.684570312, + "99.0" : 9768079.684570312, + "99.9" : 9768079.684570312, + "99.99" : 9768079.684570312, + "99.999" : 9768079.684570312, + "99.9999" : 9768079.684570312, + "100.0" : 9768079.684570312 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9742250.733203506, + 9768079.684570312, + 9749335.159844054 + ], + [ + 9435293.098113207, + 9427336.44674835, + 9429927.322337417 + ], + [ + 9397928.663849765, + 9370765.244382022, + 9403858.79793233 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From c4d97538397d7068c9fa69de52e906902a8a4f05 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Fri, 28 Feb 2025 11:29:06 +1000 Subject: [PATCH 224/345] experimental API --- src/main/java/graphql/normalized/nf/NormalizedDirective.java | 5 ----- src/main/java/graphql/normalized/nf/NormalizedDocument.java | 2 ++ .../graphql/normalized/nf/NormalizedDocumentFactory.java | 3 +-- src/main/java/graphql/normalized/nf/NormalizedField.java | 4 ++-- src/main/java/graphql/normalized/nf/NormalizedOperation.java | 4 ++-- .../normalized/nf/NormalizedOperationToAstCompiler.java | 4 ++-- 6 files changed, 9 insertions(+), 13 deletions(-) delete mode 100644 src/main/java/graphql/normalized/nf/NormalizedDirective.java diff --git a/src/main/java/graphql/normalized/nf/NormalizedDirective.java b/src/main/java/graphql/normalized/nf/NormalizedDirective.java deleted file mode 100644 index 061cb1b28c..0000000000 --- a/src/main/java/graphql/normalized/nf/NormalizedDirective.java +++ /dev/null @@ -1,5 +0,0 @@ -package graphql.normalized.nf; - -public class NormalizedDirective { - -} diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocument.java b/src/main/java/graphql/normalized/nf/NormalizedDocument.java index d9332fea75..7252f1c507 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocument.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocument.java @@ -1,11 +1,13 @@ package graphql.normalized.nf; import graphql.Assert; +import graphql.ExperimentalApi; import org.jetbrains.annotations.Nullable; import java.util.List; import java.util.Map; +@ExperimentalApi public class NormalizedDocument { private final List normalizedOperations; diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java index a0844bf7de..69c72c2b7b 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -7,7 +7,6 @@ import graphql.Assert; import graphql.ExperimentalApi; import graphql.GraphQLContext; -import graphql.PublicApi; import graphql.collect.ImmutableKit; import graphql.execution.AbortExecutionException; import graphql.execution.MergedField; @@ -57,7 +56,7 @@ import static java.util.Collections.singleton; import static java.util.Collections.singletonList; -@PublicApi +@ExperimentalApi public class NormalizedDocumentFactory { public static class Options { diff --git a/src/main/java/graphql/normalized/nf/NormalizedField.java b/src/main/java/graphql/normalized/nf/NormalizedField.java index 38138ace39..7c5da741bc 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedField.java +++ b/src/main/java/graphql/normalized/nf/NormalizedField.java @@ -2,9 +2,9 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import graphql.ExperimentalApi; import graphql.Internal; import graphql.Mutable; -import graphql.PublicApi; import graphql.collect.ImmutableKit; import graphql.introspection.Introspection; import graphql.language.Argument; @@ -49,7 +49,7 @@ * This class is intentionally mutable for performance reasons since building immutable parent child * objects is too expensive. */ -@PublicApi +@ExperimentalApi @Mutable public class NormalizedField { private final String alias; diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperation.java b/src/main/java/graphql/normalized/nf/NormalizedOperation.java index 149e210d46..6d3c333d0b 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedOperation.java +++ b/src/main/java/graphql/normalized/nf/NormalizedOperation.java @@ -2,7 +2,7 @@ import com.google.common.collect.ImmutableListMultimap; import graphql.Assert; -import graphql.PublicApi; +import graphql.ExperimentalApi; import graphql.execution.MergedField; import graphql.execution.ResultPath; import graphql.execution.directives.QueryDirectives; @@ -22,7 +22,7 @@ *

    * An operation consists of a list of {@link NormalizedField}s in a parent child hierarchy */ -@PublicApi +@ExperimentalApi public class NormalizedOperation { private final OperationDefinition.Operation operation; private final String operationName; diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java index d25aebee93..6a9ce9f7aa 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java +++ b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java @@ -2,7 +2,7 @@ import com.google.common.collect.ImmutableList; import graphql.Assert; -import graphql.PublicApi; +import graphql.ExperimentalApi; import graphql.introspection.Introspection; import graphql.language.Argument; import graphql.language.Directive; @@ -45,7 +45,7 @@ * You could for example send that operation text onto to some other graphql server if it * has the same schema as the one provided. */ -@PublicApi +@ExperimentalApi public class NormalizedOperationToAstCompiler { /** From c79268bf057665b7fae42642618281d1d0da33ac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 05:11:11 +0000 Subject: [PATCH 225/345] Add performance results for commit 77adc96ca0deeb4098d1ff1450312cf30d18e6a4 --- ...0deeb4098d1ff1450312cf30d18e6a4-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json diff --git a/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json b/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json new file mode 100644 index 0000000000..d7a3282577 --- /dev/null +++ b/performance-results/2025-02-28T05:10:58Z-77adc96ca0deeb4098d1ff1450312cf30d18e6a4-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4155242671178643, + "scoreError" : 0.021366874756141404, + "scoreConfidence" : [ + 3.394157392361723, + 3.4368911418740056 + ], + "scorePercentiles" : { + "0.0" : 3.4126757505658514, + "50.0" : 3.414666030565734, + "90.0" : 3.420089256774136, + "95.0" : 3.420089256774136, + "99.0" : 3.420089256774136, + "99.9" : 3.420089256774136, + "99.99" : 3.420089256774136, + "99.999" : 3.420089256774136, + "99.9999" : 3.420089256774136, + "100.0" : 3.420089256774136 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4157554002096697, + 3.413576660921798 + ], + [ + 3.4126757505658514, + 3.420089256774136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7256630448941475, + "scoreError" : 0.011635721260581646, + "scoreConfidence" : [ + 1.714027323633566, + 1.737298766154729 + ], + "scorePercentiles" : { + "0.0" : 1.723193635282295, + "50.0" : 1.725973087245099, + "90.0" : 1.7275123698040975, + "95.0" : 1.7275123698040975, + "99.0" : 1.7275123698040975, + "99.9" : 1.7275123698040975, + "99.99" : 1.7275123698040975, + "99.999" : 1.7275123698040975, + "99.9999" : 1.7275123698040975, + "100.0" : 1.7275123698040975 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7260644171569068, + 1.7275123698040975 + ], + [ + 1.723193635282295, + 1.7258817573332907 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674451074711825, + "scoreError" : 0.004249137348369588, + "scoreConfidence" : [ + 0.8631959701228129, + 0.8716942448195522 + ], + "scorePercentiles" : { + "0.0" : 0.8665786884079261, + "50.0" : 0.8675735756317964, + "90.0" : 0.8680545902132113, + "95.0" : 0.8680545902132113, + "99.0" : 0.8680545902132113, + "99.9" : 0.8680545902132113, + "99.99" : 0.8680545902132113, + "99.999" : 0.8680545902132113, + "99.9999" : 0.8680545902132113, + "100.0" : 0.8680545902132113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673071258039897, + 0.8680545902132113 + ], + [ + 0.8665786884079261, + 0.8678400254596029 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70504.76307379914, + "scoreError" : 624.3060851188214, + "scoreConfidence" : [ + 69880.45698868032, + 71129.06915891796 + ], + "scorePercentiles" : { + "0.0" : 69782.18803539468, + "50.0" : 70549.373916216, + "90.0" : 70890.4395602008, + "95.0" : 70890.4395602008, + "99.0" : 70890.4395602008, + "99.9" : 70890.4395602008, + "99.99" : 70890.4395602008, + "99.999" : 70890.4395602008, + "99.9999" : 70890.4395602008, + "100.0" : 70890.4395602008 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70810.01885219604, + 70549.373916216, + 70502.1469169721 + ], + [ + 70244.23636788203, + 69782.18803539468, + 70180.44548991376 + ], + [ + 70797.86184337315, + 70786.15668204376, + 70890.4395602008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.1163493384629, + "scoreError" : 4.629038164553738, + "scoreConfidence" : [ + 339.4873111739092, + 348.7453875030166 + ], + "scorePercentiles" : { + "0.0" : 339.99341521153025, + "50.0" : 344.63463159856883, + "90.0" : 347.6493297625378, + "95.0" : 347.6493297625378, + "99.0" : 347.6493297625378, + "99.9" : 347.6493297625378, + "99.99" : 347.6493297625378, + "99.999" : 347.6493297625378, + "99.9999" : 347.6493297625378, + "100.0" : 347.6493297625378 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 342.65194830682475, + 343.2995607102032, + 339.99341521153025 + ], + [ + 345.1038421289899, + 347.6493297625378, + 346.38617001258297 + ], + [ + 344.63463159856883, + 340.37714261970393, + 346.9511036952247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.35398262068469, + "scoreError" : 3.698496186029317, + "scoreConfidence" : [ + 101.65548643465537, + 109.052478806714 + ], + "scorePercentiles" : { + "0.0" : 102.45147063371301, + "50.0" : 106.25917608524738, + "90.0" : 108.11542107904748, + "95.0" : 108.11542107904748, + "99.0" : 108.11542107904748, + "99.9" : 108.11542107904748, + "99.99" : 108.11542107904748, + "99.999" : 108.11542107904748, + "99.9999" : 108.11542107904748, + "100.0" : 108.11542107904748 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.66020454166096, + 102.45147063371301, + 102.92241228943182 + ], + [ + 106.7842668012313, + 107.62840877904392, + 108.11542107904748 + ], + [ + 104.88238605208642, + 106.25917608524738, + 106.48209732469995 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014213492598747074, + "scoreError" : 7.099203275016753E-5, + "scoreConfidence" : [ + 0.014142500565996906, + 0.014284484631497242 + ], + "scorePercentiles" : { + "0.0" : 0.014149042191943632, + "50.0" : 0.01422631078726077, + "90.0" : 0.014281189885095554, + "95.0" : 0.014281189885095554, + "99.0" : 0.014281189885095554, + "99.9" : 0.014281189885095554, + "99.99" : 0.014281189885095554, + "99.999" : 0.014281189885095554, + "99.9999" : 0.014281189885095554, + "100.0" : 0.014281189885095554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014203040847456905, + 0.014155791548526187, + 0.014197787038719717 + ], + [ + 0.014244770724807378, + 0.014281189885095554, + 0.014236574419438972 + ], + [ + 0.014149042191943632, + 0.01422692594547454, + 0.01422631078726077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0081913559861528, + "scoreError" : 0.016135465762877176, + "scoreConfidence" : [ + 0.9920558902232757, + 1.02432682174903 + ], + "scorePercentiles" : { + "0.0" : 0.9921777786486755, + "50.0" : 1.006073398390342, + "90.0" : 1.0239972782101168, + "95.0" : 1.0239972782101168, + "99.0" : 1.0239972782101168, + "99.9" : 1.0239972782101168, + "99.99" : 1.0239972782101168, + "99.999" : 1.0239972782101168, + "99.9999" : 1.0239972782101168, + "100.0" : 1.0239972782101168 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0142654561866127, + 1.01110784774037, + 1.0239972782101168 + ], + [ + 1.0051798572720876, + 1.004683809121961, + 1.0170640514593714 + ], + [ + 1.006073398390342, + 0.9921777786486755, + 0.9991727268458388 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01318987517952846, + "scoreError" : 8.277840973854652E-4, + "scoreConfidence" : [ + 0.012362091082142994, + 0.014017659276913926 + ], + "scorePercentiles" : { + "0.0" : 0.012867848170490049, + "50.0" : 0.013192078718330464, + "90.0" : 0.013497093532112692, + "95.0" : 0.013497093532112692, + "99.0" : 0.013497093532112692, + "99.9" : 0.013497093532112692, + "99.99" : 0.013497093532112692, + "99.999" : 0.013497093532112692, + "99.9999" : 0.013497093532112692, + "100.0" : 0.013497093532112692 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013497093532112692, + 0.01340318480504372, + 0.013467493731061882 + ], + [ + 0.012867848170490049, + 0.012922658206845218, + 0.012980972631617207 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6633665231890657, + "scoreError" : 0.06570786988662425, + "scoreConfidence" : [ + 3.5976586533024415, + 3.72907439307569 + ], + "scorePercentiles" : { + "0.0" : 3.635598972383721, + "50.0" : 3.6661064322808183, + "90.0" : 3.691381441328413, + "95.0" : 3.691381441328413, + "99.0" : 3.691381441328413, + "99.9" : 3.691381441328413, + "99.99" : 3.691381441328413, + "99.999" : 3.691381441328413, + "99.9999" : 3.691381441328413, + "100.0" : 3.691381441328413 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6367515265454546, + 3.6622488674963396, + 3.669963997065297 + ], + [ + 3.635598972383721, + 3.691381441328413, + 3.6842543343151695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8219502049935965, + "scoreError" : 0.04334966840170217, + "scoreConfidence" : [ + 2.7786005365918944, + 2.8652998733952986 + ], + "scorePercentiles" : { + "0.0" : 2.784729027561247, + "50.0" : 2.8237416016374928, + "90.0" : 2.8593693684962838, + "95.0" : 2.8593693684962838, + "99.0" : 2.8593693684962838, + "99.9" : 2.8593693684962838, + "99.99" : 2.8593693684962838, + "99.999" : 2.8593693684962838, + "99.9999" : 2.8593693684962838, + "100.0" : 2.8593693684962838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.787435985785953, + 2.784729027561247, + 2.8094674806179776 + ], + [ + 2.82518856299435, + 2.815962915259009, + 2.8237416016374928 + ], + [ + 2.8466063020210646, + 2.84505060056899, + 2.8593693684962838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.181212277502675, + "scoreError" : 0.015454213970487527, + "scoreConfidence" : [ + 0.16575806353218747, + 0.1966664914731625 + ], + "scorePercentiles" : { + "0.0" : 0.17226614054882775, + "50.0" : 0.17801267326485928, + "90.0" : 0.19332841403908985, + "95.0" : 0.19332841403908985, + "99.0" : 0.19332841403908985, + "99.9" : 0.19332841403908985, + "99.99" : 0.19332841403908985, + "99.999" : 0.19332841403908985, + "99.9999" : 0.19332841403908985, + "100.0" : 0.19332841403908985 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19299061562807573, + 0.1928803875248327, + 0.19332841403908985 + ], + [ + 0.1729473925495486, + 0.17255121123285308, + 0.17226614054882775 + ], + [ + 0.1783403926418661, + 0.17801267326485928, + 0.17759327009412182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33635890077558334, + "scoreError" : 0.020346260493578534, + "scoreConfidence" : [ + 0.3160126402820048, + 0.35670516126916185 + ], + "scorePercentiles" : { + "0.0" : 0.3262282423501011, + "50.0" : 0.329679224705766, + "90.0" : 0.3527149473405756, + "95.0" : 0.3527149473405756, + "99.0" : 0.3527149473405756, + "99.9" : 0.3527149473405756, + "99.99" : 0.3527149473405756, + "99.999" : 0.3527149473405756, + "99.9999" : 0.3527149473405756, + "100.0" : 0.3527149473405756 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3524606698269482, + 0.3519048874305018, + 0.3527149473405756 + ], + [ + 0.3262282423501011, + 0.3267454162255767, + 0.32682386309562717 + ], + [ + 0.3311071462437506, + 0.3295657097614026, + 0.329679224705766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17155921178043101, + "scoreError" : 0.005706412048826315, + "scoreConfidence" : [ + 0.1658527997316047, + 0.17726562382925734 + ], + "scorePercentiles" : { + "0.0" : 0.16605277506932567, + "50.0" : 0.17356418499748338, + "90.0" : 0.17465667584183317, + "95.0" : 0.17465667584183317, + "99.0" : 0.17465667584183317, + "99.9" : 0.17465667584183317, + "99.99" : 0.17465667584183317, + "99.999" : 0.17465667584183317, + "99.9999" : 0.17465667584183317, + "100.0" : 0.17465667584183317 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16605277506932567, + 0.16713794880665864, + 0.16820257048424805 + ], + [ + 0.17374464774050072, + 0.1729026097653751, + 0.17465667584183317 + ], + [ + 0.17356418499748338, + 0.17366743593484074, + 0.17410405738361365 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.40108385604350244, + "scoreError" : 0.004093280443088559, + "scoreConfidence" : [ + 0.3969905756004139, + 0.405177136486591 + ], + "scorePercentiles" : { + "0.0" : 0.39789512596984045, + "50.0" : 0.40023563443528376, + "90.0" : 0.40471912991217773, + "95.0" : 0.40471912991217773, + "99.0" : 0.40471912991217773, + "99.9" : 0.40471912991217773, + "99.99" : 0.40471912991217773, + "99.999" : 0.40471912991217773, + "99.9999" : 0.40471912991217773, + "100.0" : 0.40471912991217773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3998197200143931, + 0.40023563443528376, + 0.39970199716215676 + ], + [ + 0.40471912991217773, + 0.4044219175799733, + 0.40312262095376306 + ], + [ + 0.4008796912531067, + 0.3989588671108274, + 0.39789512596984045 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16044247923562138, + "scoreError" : 0.0020666140587943618, + "scoreConfidence" : [ + 0.15837586517682703, + 0.16250909329441574 + ], + "scorePercentiles" : { + "0.0" : 0.15859480142732535, + "50.0" : 0.16041678557564285, + "90.0" : 0.16204565700350013, + "95.0" : 0.16204565700350013, + "99.0" : 0.16204565700350013, + "99.9" : 0.16204565700350013, + "99.99" : 0.16204565700350013, + "99.999" : 0.16204565700350013, + "99.9999" : 0.16204565700350013, + "100.0" : 0.16204565700350013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16193803345532273, + 0.16144244192241253, + 0.16204565700350013 + ], + [ + 0.1603984048695987, + 0.16059771067465353, + 0.15952169556062468 + ], + [ + 0.16041678557564285, + 0.159026782631512, + 0.15859480142732535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04701046030973298, + "scoreError" : 3.8555797178145215E-4, + "scoreConfidence" : [ + 0.046624902337951524, + 0.047396018281514435 + ], + "scorePercentiles" : { + "0.0" : 0.046712751198161415, + "50.0" : 0.04703237564786335, + "90.0" : 0.047322644024645324, + "95.0" : 0.047322644024645324, + "99.0" : 0.047322644024645324, + "99.9" : 0.047322644024645324, + "99.99" : 0.047322644024645324, + "99.999" : 0.047322644024645324, + "99.9999" : 0.047322644024645324, + "100.0" : 0.047322644024645324 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047322644024645324, + 0.047222791438623, + 0.04703237564786335 + ], + [ + 0.04725773195720389, + 0.04681896056968426, + 0.046712751198161415 + ], + [ + 0.04707274059969874, + 0.046928389102410685, + 0.04672575824930613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9430758.342778, + "scoreError" : 263280.67197279376, + "scoreConfidence" : [ + 9167477.670805205, + 9694039.014750794 + ], + "scorePercentiles" : { + "0.0" : 9210703.829650093, + "50.0" : 9476646.130681818, + "90.0" : 9617267.366346154, + "95.0" : 9617267.366346154, + "99.0" : 9617267.366346154, + "99.9" : 9617267.366346154, + "99.99" : 9617267.366346154, + "99.999" : 9617267.366346154, + "99.9999" : 9617267.366346154, + "100.0" : 9617267.366346154 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9476646.130681818, + 9423476.688323917, + 9498627.851851853 + ], + [ + 9242939.773567468, + 9210703.829650093, + 9258214.512488436 + ], + [ + 9569795.895693779, + 9579153.036398467, + 9617267.366346154 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 6cc8044e2e417a2d276414f0e5ab2760aefeb751 Mon Sep 17 00:00:00 2001 From: bbaker Date: Fri, 28 Feb 2025 16:16:51 +1100 Subject: [PATCH 226/345] @defer is now auto included in the schema if missing --- .../java/graphql/schema/GraphQLSchema.java | 1 + .../graphql/schema/idl/DirectiveInfo.java | 15 +-- src/test/groovy/graphql/Issue2141.groovy | 8 ++ .../graphql/StarWarsIntrospectionTests.groovy | 2 +- ...rospectionWithDirectivesSupportTest.groovy | 4 +- .../graphql/schema/GraphQLSchemaTest.groovy | 8 +- .../schema/diffing/SchemaDiffingTest.groovy | 6 +- ...GeneratorAppliedDirectiveHelperTest.groovy | 2 + .../schema/idl/SchemaGeneratorTest.groovy | 6 +- .../schema/idl/SchemaPrinterTest.groovy | 106 +++++++++++++++++- 10 files changed, 131 insertions(+), 27 deletions(-) diff --git a/src/main/java/graphql/schema/GraphQLSchema.java b/src/main/java/graphql/schema/GraphQLSchema.java index 021932c1b7..80a17777d5 100644 --- a/src/main/java/graphql/schema/GraphQLSchema.java +++ b/src/main/java/graphql/schema/GraphQLSchema.java @@ -850,6 +850,7 @@ private GraphQLSchema buildImpl() { addBuiltInDirective(Directives.DeprecatedDirective, additionalDirectives); addBuiltInDirective(Directives.SpecifiedByDirective, additionalDirectives); addBuiltInDirective(Directives.OneOfDirective, additionalDirectives); + addBuiltInDirective(Directives.DeferDirective, additionalDirectives); addBuiltInDirective(Directives.ExperimentalDisableErrorPropagationDirective, additionalDirectives); // quick build - no traversing diff --git a/src/main/java/graphql/schema/idl/DirectiveInfo.java b/src/main/java/graphql/schema/idl/DirectiveInfo.java index d71e52cd40..9b8317f97e 100644 --- a/src/main/java/graphql/schema/idl/DirectiveInfo.java +++ b/src/main/java/graphql/schema/idl/DirectiveInfo.java @@ -15,16 +15,6 @@ @PublicApi public class DirectiveInfo { - /** - * A set of directives which provided by graphql specification - */ - public static final Set GRAPHQL_SPECIFICATION_DIRECTIVES = ImmutableSet.of( - Directives.IncludeDirective, - Directives.SkipDirective, - Directives.DeprecatedDirective, - Directives.SpecifiedByDirective, - Directives.OneOfDirective - ); /** * A map from directive name to directive which provided by specification @@ -37,8 +27,13 @@ public class DirectiveInfo { Directives.OneOfDirective.getName(), Directives.OneOfDirective, // technically this is NOT yet in spec - but it is added by default by graphql-java so we include it // we should also do @defer at some future time soon + Directives.DeferDirective.getName(), Directives.DeferDirective, Directives.ExperimentalDisableErrorPropagationDirective.getName(), Directives.ExperimentalDisableErrorPropagationDirective ); + /** + * A set of directives which provided by graphql specification + */ + public static final Set GRAPHQL_SPECIFICATION_DIRECTIVES =ImmutableSet.copyOf(GRAPHQL_SPECIFICATION_DIRECTIVE_MAP.values()); /** * Returns true if a directive with provided directiveName has been defined in graphql specification diff --git a/src/test/groovy/graphql/Issue2141.groovy b/src/test/groovy/graphql/Issue2141.groovy index efa74969e3..c3b00df8d6 100644 --- a/src/test/groovy/graphql/Issue2141.groovy +++ b/src/test/groovy/graphql/Issue2141.groovy @@ -24,6 +24,14 @@ class Issue2141 extends Specification { then: schemaStr == '''directive @auth(roles: [String!]) on FIELD_DEFINITION +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" diff --git a/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy b/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy index 89fc781138..75411f6af0 100644 --- a/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy +++ b/src/test/groovy/graphql/StarWarsIntrospectionTests.groovy @@ -430,6 +430,6 @@ class StarWarsIntrospectionTests extends Specification { schemaParts.get('mutationType').size() == 1 schemaParts.get('subscriptionType') == null schemaParts.get('types').size() == 17 - schemaParts.get('directives').size() == 6 + schemaParts.get('directives').size() == 7 } } diff --git a/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy index 3f38717984..591a44146e 100644 --- a/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy +++ b/src/test/groovy/graphql/introspection/IntrospectionWithDirectivesSupportTest.groovy @@ -92,7 +92,7 @@ class IntrospectionWithDirectivesSupportTest extends Specification { schemaType["directives"] == [ [name: "include"], [name: "skip"], [name: "example"], [name: "secret"], [name: "noDefault"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"], - [name: "experimental_disableErrorPropagation"] + [name: "defer"], [name: "experimental_disableErrorPropagation"] ] schemaType["appliedDirectives"] == [[name: "example", args: [[name: "argName", value: '"onSchema"']]]] @@ -175,7 +175,7 @@ class IntrospectionWithDirectivesSupportTest extends Specification { def definedDirectives = er.data["__schema"]["directives"] // secret is filter out definedDirectives == [[name: "include"], [name: "skip"], [name: "example"], [name: "deprecated"], [name: "specifiedBy"], [name: "oneOf"], - [name: "experimental_disableErrorPropagation"] + [name: "defer"], [name: "experimental_disableErrorPropagation"] ] } diff --git a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy index 0d75a9af46..73a04346f2 100644 --- a/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLSchemaTest.groovy @@ -155,22 +155,22 @@ class GraphQLSchemaTest extends Specification { when: "no additional directives have been specified" def schema = schemaBuilder.build() then: - schema.directives.size() == 6 + schema.directives.size() == 7 when: "clear directives is called" schema = schemaBuilder.clearDirectives().build() then: - schema.directives.size() == 4 // @deprecated and @specifiedBy and @oneOf et al is ALWAYS added if missing + schema.directives.size() == 5 // @deprecated and @specifiedBy and @oneOf et al is ALWAYS added if missing when: "clear directives is called with more directives" schema = schemaBuilder.clearDirectives().additionalDirective(Directives.SkipDirective).build() then: - schema.directives.size() == 5 + schema.directives.size() == 6 when: "the schema is transformed, things are copied" schema = schema.transform({ builder -> builder.additionalDirective(Directives.IncludeDirective) }) then: - schema.directives.size() == 6 + schema.directives.size() == 7 } def "clear additional types works as expected"() { diff --git a/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy b/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy index 629d351661..46481fa7a5 100644 --- a/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy +++ b/src/test/groovy/graphql/schema/diffing/SchemaDiffingTest.groovy @@ -35,13 +35,13 @@ class SchemaDiffingTest extends Specification { schemaGraph.getVerticesByType(SchemaGraph.UNION).size() == 0 schemaGraph.getVerticesByType(SchemaGraph.SCALAR).size() == 2 schemaGraph.getVerticesByType(SchemaGraph.FIELD).size() == 40 - schemaGraph.getVerticesByType(SchemaGraph.ARGUMENT).size() == 9 + schemaGraph.getVerticesByType(SchemaGraph.ARGUMENT).size() == 11 schemaGraph.getVerticesByType(SchemaGraph.INPUT_FIELD).size() == 0 schemaGraph.getVerticesByType(SchemaGraph.INPUT_OBJECT).size() == 0 - schemaGraph.getVerticesByType(SchemaGraph.DIRECTIVE).size() == 6 + schemaGraph.getVerticesByType(SchemaGraph.DIRECTIVE).size() == 7 schemaGraph.getVerticesByType(SchemaGraph.APPLIED_ARGUMENT).size() == 0 schemaGraph.getVerticesByType(SchemaGraph.APPLIED_DIRECTIVE).size() == 0 - schemaGraph.size() == 94 + schemaGraph.size() == 97 } diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy index 944de75893..f42cc49058 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelperTest.groovy @@ -55,6 +55,7 @@ class SchemaGeneratorAppliedDirectiveHelperTest extends Specification { schema.getDirectives().collect {it.name}.sort() == [ "bar", "complex", + "defer", "deprecated", "experimental_disableErrorPropagation", "foo", @@ -106,6 +107,7 @@ class SchemaGeneratorAppliedDirectiveHelperTest extends Specification { schema.getDirectives().collect {it.name}.sort() == [ "bar", "complex", + "defer", "deprecated", "experimental_disableErrorPropagation", "foo", diff --git a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy index 1eb98cc82e..9eeed6c018 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaGeneratorTest.groovy @@ -2025,10 +2025,11 @@ class SchemaGeneratorTest extends Specification { directives = schema.getDirectives() then: - directives.size() == 9 // built in ones : include / skip and deprecated + directives.size() == 10 // built in ones : include / skip and deprecated def directiveNames = directives.collect { it.name } directiveNames.contains("include") directiveNames.contains("skip") + directiveNames.contains("defer") directiveNames.contains("deprecated") directiveNames.contains("specifiedBy") directiveNames.contains("oneOf") @@ -2040,9 +2041,10 @@ class SchemaGeneratorTest extends Specification { directivesMap = schema.getDirectivesByName() then: - directivesMap.size() == 9 // built in ones + directivesMap.size() == 10 // built in ones directivesMap.containsKey("include") directivesMap.containsKey("skip") + directivesMap.containsKey("defer") directivesMap.containsKey("deprecated") directivesMap.containsKey("oneOf") directivesMap.containsKey("sd1") diff --git a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy index bb311d696a..2870244328 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy @@ -965,6 +965,14 @@ type Query { // args and directives are sorted like the rest of the schema printer result == '''directive @argDirective on ARGUMENT_DEFINITION +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" @@ -1144,7 +1152,15 @@ input SomeInput { then: // args and directives are sorted like the rest of the schema printer - result == '''"Marks the field, argument, input field or enum value as deprecated" + result == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" reason: String! = "No longer supported" @@ -1243,7 +1259,15 @@ type Query { def resultWithDirectives = new SchemaPrinter(defaultOptions().includeDirectives(true)).print(schema) then: - resultWithDirectives == '''"Marks the field, argument, input field or enum value as deprecated" + resultWithDirectives == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" reason: String! = "No longer supported" @@ -1314,7 +1338,15 @@ type Query { def resultWithDirectiveDefinitions = new SchemaPrinter(defaultOptions().includeDirectiveDefinitions(true)).print(schema) then: - resultWithDirectiveDefinitions == '''"Marks the field, argument, input field or enum value as deprecated" + resultWithDirectiveDefinitions == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" reason: String! = "No longer supported" @@ -1414,6 +1446,14 @@ extend schema { subscription: MySubscription } +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" @@ -1503,6 +1543,14 @@ schema @schemaDirective{ mutation: MyMutation } +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" @@ -1646,7 +1694,15 @@ type MyQuery { def result = new SchemaPrinter(printOptions).print(schema) then: - result == '''"Marks the field, argument, input field or enum value as deprecated" + result == '''"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" reason: String! = "No longer supported" @@ -2185,6 +2241,14 @@ type PrintMeType { query: MyQuery } +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" @@ -2429,6 +2493,14 @@ directive @deprecated( reason: String! = "No longer supported" ) on FIELD_DEFINITION | ARGUMENT_DEFINITION | ENUM_VALUE | INPUT_FIELD_DEFINITION +"This directive allows results to be deferred during execution" +directive @defer( + "A unique label that represents the fragment being deferred" + label: String, + "Deferred behaviour is controlled by this argument" + if: Boolean! = true + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + union ZUnion = XQuery | Query scalar ZScalar @@ -2539,6 +2611,14 @@ schema { mutation: Mutation } +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" @@ -2779,6 +2859,14 @@ schema { mutation: Mutation } +"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + "Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" @@ -2970,7 +3058,15 @@ input Input { expect: "has no skip definition" - result == """"Marks the field, argument, input field or enum value as deprecated" + result == """"This directive allows results to be deferred during execution" +directive @defer( + "Deferred behaviour is controlled by this argument" + if: Boolean! = true, + "A unique label that represents the fragment being deferred" + label: String + ) on FRAGMENT_SPREAD | INLINE_FRAGMENT + +"Marks the field, argument, input field or enum value as deprecated" directive @deprecated( "The reason for the deprecation" reason: String! = "No longer supported" From 9f737ab0b8189ab596dcf723e76c3a0e22e86417 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Mon, 3 Mar 2025 06:25:43 +1000 Subject: [PATCH 227/345] Update README.md Add JetBrains sponsor info --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 41d1b3ab5e..14f906c100 100644 --- a/README.md +++ b/README.md @@ -32,3 +32,6 @@ take the time to read it. ### License Copyright (c) 2015, Andreas Marek and [Contributors](https://github.com/graphql-java/graphql-java/graphs/contributors) + +### Powered by +[![IntelliJ IDEA logo](https://resources.jetbrains.com/storage/products/company/brand/logos/IntelliJ_IDEA.svg)](https://jb.gg/OpenSourceSupport) From 6dca307a2cdafcc183fc66b9c0cff9f640aa9ea1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 21:33:32 +0000 Subject: [PATCH 228/345] Add performance results for commit c046e6fc09f17d3c382657e747c6023ba7f252a9 --- ...9f17d3c382657e747c6023ba7f252a9-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json diff --git a/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json b/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json new file mode 100644 index 0000000000..f52aae0279 --- /dev/null +++ b/performance-results/2025-03-02T21:33:18Z-c046e6fc09f17d3c382657e747c6023ba7f252a9-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.41828965785467, + "scoreError" : 0.03630562611823795, + "scoreConfidence" : [ + 3.3819840317364323, + 3.4545952839729077 + ], + "scorePercentiles" : { + "0.0" : 3.4122457287978434, + "50.0" : 3.417858050147738, + "90.0" : 3.4251968023253596, + "95.0" : 3.4251968023253596, + "99.0" : 3.4251968023253596, + "99.9" : 3.4251968023253596, + "99.99" : 3.4251968023253596, + "99.999" : 3.4251968023253596, + "99.9999" : 3.4251968023253596, + "100.0" : 3.4251968023253596 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4201038015672776, + 3.4251968023253596 + ], + [ + 3.4122457287978434, + 3.415612298728198 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7263085250284311, + "scoreError" : 0.007038612914019544, + "scoreConfidence" : [ + 1.7192699121144115, + 1.7333471379424508 + ], + "scorePercentiles" : { + "0.0" : 1.72514416466237, + "50.0" : 1.7262999109653892, + "90.0" : 1.727490113520576, + "95.0" : 1.727490113520576, + "99.0" : 1.727490113520576, + "99.9" : 1.727490113520576, + "99.99" : 1.727490113520576, + "99.999" : 1.727490113520576, + "99.9999" : 1.727490113520576, + "100.0" : 1.727490113520576 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.72514416466237, + 1.7256645954268708 + ], + [ + 1.727490113520576, + 1.7269352265039075 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.86899198118607, + "scoreError" : 0.0011975356626304622, + "scoreConfidence" : [ + 0.8677944455234395, + 0.8701895168487005 + ], + "scorePercentiles" : { + "0.0" : 0.8688009019274694, + "50.0" : 0.8689987999936732, + "90.0" : 0.8691694228294644, + "95.0" : 0.8691694228294644, + "99.0" : 0.8691694228294644, + "99.9" : 0.8691694228294644, + "99.99" : 0.8691694228294644, + "99.999" : 0.8691694228294644, + "99.9999" : 0.8691694228294644, + "100.0" : 0.8691694228294644 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688666246158518, + 0.8691694228294644 + ], + [ + 0.8688009019274694, + 0.8691309753714946 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70232.01481354213, + "scoreError" : 1538.188912414745, + "scoreConfidence" : [ + 68693.82590112739, + 71770.20372595688 + ], + "scorePercentiles" : { + "0.0" : 68834.11719335812, + "50.0" : 70335.7912615769, + "90.0" : 71248.55268371207, + "95.0" : 71248.55268371207, + "99.0" : 71248.55268371207, + "99.9" : 71248.55268371207, + "99.99" : 71248.55268371207, + "99.999" : 71248.55268371207, + "99.9999" : 71248.55268371207, + "100.0" : 71248.55268371207 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70335.7912615769, + 70318.29869520647, + 70615.3482588539 + ], + [ + 68834.11719335812, + 69184.4699954476, + 69310.74272699936 + ], + [ + 71248.55268371207, + 71233.87557474103, + 71006.93693198367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 348.7358560146452, + "scoreError" : 9.45323495910323, + "scoreConfidence" : [ + 339.282621055542, + 358.1890909737484 + ], + "scorePercentiles" : { + "0.0" : 339.467589297965, + "50.0" : 351.0502196395492, + "90.0" : 355.2367532576896, + "95.0" : 355.2367532576896, + "99.0" : 355.2367532576896, + "99.9" : 355.2367532576896, + "99.99" : 355.2367532576896, + "99.999" : 355.2367532576896, + "99.9999" : 355.2367532576896, + "100.0" : 355.2367532576896 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 348.6266856905834, + 353.7210730850551, + 355.2367532576896 + ], + [ + 352.2086936648004, + 352.1941358313394, + 351.0502196395492 + ], + [ + 341.2831938162754, + 344.83435984855004, + 339.467589297965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.8976425616819, + "scoreError" : 4.5235077479722525, + "scoreConfidence" : [ + 104.37413481370966, + 113.42115030965415 + ], + "scorePercentiles" : { + "0.0" : 105.13588070683821, + "50.0" : 109.84674602291123, + "90.0" : 111.53991107410427, + "95.0" : 111.53991107410427, + "99.0" : 111.53991107410427, + "99.9" : 111.53991107410427, + "99.99" : 111.53991107410427, + "99.999" : 111.53991107410427, + "99.9999" : 111.53991107410427, + "100.0" : 111.53991107410427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.9271038747169, + 109.84674602291123, + 109.28821350660738 + ], + [ + 111.47146048588766, + 111.53978992907797, + 111.53991107410427 + ], + [ + 105.33613831237075, + 105.13588070683821, + 105.99353914262285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014151886837748762, + "scoreError" : 1.8201815515134884E-4, + "scoreConfidence" : [ + 0.013969868682597412, + 0.01433390499290011 + ], + "scorePercentiles" : { + "0.0" : 0.014046185393534612, + "50.0" : 0.014093099466441932, + "90.0" : 0.014298931872192083, + "95.0" : 0.014298931872192083, + "99.0" : 0.014298931872192083, + "99.9" : 0.014298931872192083, + "99.99" : 0.014298931872192083, + "99.999" : 0.014298931872192083, + "99.9999" : 0.014298931872192083, + "100.0" : 0.014298931872192083 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014065132065705843, + 0.014167577229310642, + 0.014048452400921006 + ], + [ + 0.014294062328473413, + 0.014270803594771241, + 0.014298931872192083 + ], + [ + 0.014093099466441932, + 0.01408273718838808, + 0.014046185393534612 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9825431540425588, + "scoreError" : 0.010821959248908594, + "scoreConfidence" : [ + 0.9717211947936502, + 0.9933651132914674 + ], + "scorePercentiles" : { + "0.0" : 0.9743582786438035, + "50.0" : 0.9813524897458542, + "90.0" : 0.993766748981417, + "95.0" : 0.993766748981417, + "99.0" : 0.993766748981417, + "99.9" : 0.993766748981417, + "99.99" : 0.993766748981417, + "99.999" : 0.993766748981417, + "99.9999" : 0.993766748981417, + "100.0" : 0.993766748981417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9828495155773955, + 0.978821331604189, + 0.9806014058638949 + ], + [ + 0.9832963547689282, + 0.9763275131309187, + 0.9813524897458542 + ], + [ + 0.9743582786438035, + 0.993766748981417, + 0.991514748066627 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01300260075448132, + "scoreError" : 8.023467513972726E-4, + "scoreConfidence" : [ + 0.012200254003084048, + 0.013804947505878594 + ], + "scorePercentiles" : { + "0.0" : 0.012720992199664173, + "50.0" : 0.012971484214673937, + "90.0" : 0.013335832962161846, + "95.0" : 0.013335832962161846, + "99.0" : 0.013335832962161846, + "99.9" : 0.013335832962161846, + "99.99" : 0.013335832962161846, + "99.999" : 0.013335832962161846, + "99.9999" : 0.013335832962161846, + "100.0" : 0.013335832962161846 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012720992199664173, + 0.012732649700408199, + 0.012790562874435309 + ], + [ + 0.013152405554912565, + 0.013283161235305837, + 0.013335832962161846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7915260479825292, + "scoreError" : 0.1983707891453185, + "scoreConfidence" : [ + 3.5931552588372107, + 3.989896837127848 + ], + "scorePercentiles" : { + "0.0" : 3.6699134086573735, + "50.0" : 3.7937304046584868, + "90.0" : 3.8893684937791604, + "95.0" : 3.8893684937791604, + "99.0" : 3.8893684937791604, + "99.9" : 3.8893684937791604, + "99.99" : 3.8893684937791604, + "99.999" : 3.8893684937791604, + "99.9999" : 3.8893684937791604, + "100.0" : 3.8893684937791604 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6699134086573735, + 3.7899163765151513, + 3.797544432801822 + ], + [ + 3.8893684937791604, + 3.7865034678274037, + 3.815910108314264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8929701553211618, + "scoreError" : 0.11108803922461892, + "scoreConfidence" : [ + 2.781882116096543, + 3.0040581945457805 + ], + "scorePercentiles" : { + "0.0" : 2.7998811998880178, + "50.0" : 2.9051692349695033, + "90.0" : 2.975505501636418, + "95.0" : 2.975505501636418, + "99.0" : 2.975505501636418, + "99.9" : 2.975505501636418, + "99.99" : 2.975505501636418, + "99.999" : 2.975505501636418, + "99.9999" : 2.975505501636418, + "100.0" : 2.975505501636418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.975505501636418, + 2.9466927030053034, + 2.966848873331356 + ], + [ + 2.827787556969183, + 2.7998811998880178, + 2.8193454034395264 + ], + [ + 2.9229998939216832, + 2.9051692349695033, + 2.872501030729466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17544947039487774, + "scoreError" : 0.0052488607290020655, + "scoreConfidence" : [ + 0.17020060966587566, + 0.1806983311238798 + ], + "scorePercentiles" : { + "0.0" : 0.17165985189508376, + "50.0" : 0.17549794610578778, + "90.0" : 0.179824128751506, + "95.0" : 0.179824128751506, + "99.0" : 0.179824128751506, + "99.9" : 0.179824128751506, + "99.99" : 0.179824128751506, + "99.999" : 0.179824128751506, + "99.9999" : 0.179824128751506, + "100.0" : 0.179824128751506 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17227370679942808, + 0.17183004900512044, + 0.17165985189508376 + ], + [ + 0.178551218915155, + 0.179824128751506, + 0.17882252447114783 + ], + [ + 0.17549794610578778, + 0.17569065722066057, + 0.17489515039001013 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3358209039887323, + "scoreError" : 0.015562757724852853, + "scoreConfidence" : [ + 0.3202581462638795, + 0.35138366171358515 + ], + "scorePercentiles" : { + "0.0" : 0.32385241021406136, + "50.0" : 0.3377909938186117, + "90.0" : 0.34700695846490165, + "95.0" : 0.34700695846490165, + "99.0" : 0.34700695846490165, + "99.9" : 0.34700695846490165, + "99.99" : 0.34700695846490165, + "99.999" : 0.34700695846490165, + "99.9999" : 0.34700695846490165, + "100.0" : 0.34700695846490165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32521056380487806, + 0.32385241021406136, + 0.32386125089060175 + ], + [ + 0.34700695846490165, + 0.34364055864059656, + 0.3447147407790417 + ], + [ + 0.3377909938186117, + 0.3400444924342888, + 0.336266166851609 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16134176687262286, + "scoreError" : 0.004812602207946651, + "scoreConfidence" : [ + 0.1565291646646762, + 0.16615436908056952 + ], + "scorePercentiles" : { + "0.0" : 0.1572061005313463, + "50.0" : 0.16288815610900265, + "90.0" : 0.16382506316962092, + "95.0" : 0.16382506316962092, + "99.0" : 0.16382506316962092, + "99.9" : 0.16382506316962092, + "99.99" : 0.16382506316962092, + "99.999" : 0.16382506316962092, + "99.9999" : 0.16382506316962092, + "100.0" : 0.16382506316962092 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15762173064859328, + 0.1578787331270425, + 0.1572061005313463 + ], + [ + 0.16345162815860875, + 0.16382506316962092, + 0.16329059359589823 + ], + [ + 0.1623845217751364, + 0.16352937473835688, + 0.16288815610900265 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39310674445864563, + "scoreError" : 0.010868598898243683, + "scoreConfidence" : [ + 0.3822381455604019, + 0.40397534335688934 + ], + "scorePercentiles" : { + "0.0" : 0.3862654843182696, + "50.0" : 0.3901732209129926, + "90.0" : 0.40193320541778865, + "95.0" : 0.40193320541778865, + "99.0" : 0.40193320541778865, + "99.9" : 0.40193320541778865, + "99.99" : 0.40193320541778865, + "99.999" : 0.40193320541778865, + "99.9999" : 0.40193320541778865, + "100.0" : 0.40193320541778865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3939431058893047, + 0.3866839318304849, + 0.3862654843182696 + ], + [ + 0.40193320541778865, + 0.4007557186022281, + 0.4009131120109044 + ], + [ + 0.3901732209129926, + 0.3883718215853043, + 0.38892109956053356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15737170175876328, + "scoreError" : 8.129918877386329E-4, + "scoreConfidence" : [ + 0.15655870987102463, + 0.15818469364650192 + ], + "scorePercentiles" : { + "0.0" : 0.15657145389071553, + "50.0" : 0.157625196081522, + "90.0" : 0.1578368545250797, + "95.0" : 0.1578368545250797, + "99.0" : 0.1578368545250797, + "99.9" : 0.1578368545250797, + "99.99" : 0.1578368545250797, + "99.999" : 0.1578368545250797, + "99.9999" : 0.1578368545250797, + "100.0" : 0.1578368545250797 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.156874781762279, + 0.15678063731284786, + 0.15657145389071553 + ], + [ + 0.1575724023540905, + 0.157625196081522, + 0.1578368545250797 + ], + [ + 0.15765837165379157, + 0.15771490363839955, + 0.15771071461014383 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04741806749151767, + "scoreError" : 0.0014343819370443356, + "scoreConfidence" : [ + 0.04598368555447333, + 0.048852449428562005 + ], + "scorePercentiles" : { + "0.0" : 0.04673769655968555, + "50.0" : 0.04698499036351762, + "90.0" : 0.04928052339557369, + "95.0" : 0.04928052339557369, + "99.0" : 0.04928052339557369, + "99.9" : 0.04928052339557369, + "99.99" : 0.04928052339557369, + "99.999" : 0.04928052339557369, + "99.9999" : 0.04928052339557369, + "100.0" : 0.04928052339557369 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04682732774065455, + 0.046959641036477706, + 0.04698499036351762 + ], + [ + 0.04928052339557369, + 0.04791430007809917, + 0.048122328429744905 + ], + [ + 0.04700595427325117, + 0.04673769655968555, + 0.04692984554665465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9288801.490699522, + "scoreError" : 154527.26504390594, + "scoreConfidence" : [ + 9134274.225655615, + 9443328.755743429 + ], + "scorePercentiles" : { + "0.0" : 9205640.332106715, + "50.0" : 9236812.06278855, + "90.0" : 9426756.017907634, + "95.0" : 9426756.017907634, + "99.0" : 9426756.017907634, + "99.9" : 9426756.017907634, + "99.99" : 9426756.017907634, + "99.999" : 9426756.017907634, + "99.9999" : 9426756.017907634, + "100.0" : 9426756.017907634 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9376145.139643861, + 9426756.017907634, + 9423155.61299435 + ], + [ + 9205640.332106715, + 9212345.915285451, + 9249796.383548982 + ], + [ + 9236065.98984303, + 9236812.06278855, + 9232495.962177122 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 78d2848edbf1cabe30a0421ae2ed35c5b4b606da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 09:36:43 +1100 Subject: [PATCH 229/345] Bump net.bytebuddy:byte-buddy-agent from 1.17.1 to 1.17.2 (#3846) Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.17.1 to 1.17.2. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.1...byte-buddy-1.17.2) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 4c42901054..3aa1fe8714 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.17.1") + implementation("net.bytebuddy:byte-buddy-agent:1.17.2") testImplementation 'org.junit.jupiter:junit-jupiter:5.12.0' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 80a8740e33b6b62854090dcd95a35cb720efce6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Mar 2025 09:37:01 +1100 Subject: [PATCH 230/345] Bump org.codehaus.groovy:groovy from 3.0.23 to 3.0.24 (#3845) Bumps [org.codehaus.groovy:groovy](https://github.com/apache/groovy) from 3.0.23 to 3.0.24. - [Commits](https://github.com/apache/groovy/commits) --- updated-dependencies: - dependency-name: org.codehaus.groovy:groovy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 889de44c32..85714c32ff 100644 --- a/build.gradle +++ b/build.gradle @@ -107,8 +107,8 @@ dependencies { implementation 'com.google.guava:guava:' + guavaVersion testImplementation group: 'junit', name: 'junit', version: '4.13.2' testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0' - testImplementation 'org.codehaus.groovy:groovy:3.0.23' - testImplementation 'org.codehaus.groovy:groovy-json:3.0.23' + testImplementation 'org.codehaus.groovy:groovy:3.0.24' + testImplementation 'org.codehaus.groovy:groovy-json:3.0.24' testImplementation 'com.google.code.gson:gson:2.12.1' testImplementation 'org.eclipse.jetty:jetty-server:11.0.24' testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.2' From 3b4dadc4d787e592d0651b7d82f8d6665b6ef737 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 22:37:39 +0000 Subject: [PATCH 231/345] Bump net.bytebuddy:byte-buddy from 1.17.1 to 1.17.2 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.17.1 to 1.17.2. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.1...byte-buddy-1.17.2) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index e837eae06c..46ebbdd8d5 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.17.1") + implementation("net.bytebuddy:byte-buddy:1.17.2") // graphql-java itself implementation(rootProject) } From 9679ef16290ddd5c9c7b919387e0ea471fe60a87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Mar 2025 22:37:53 +0000 Subject: [PATCH 232/345] Bump com.fasterxml.jackson.core:jackson-databind from 2.18.2 to 2.18.3 Bumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.18.2 to 2.18.3. - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 85714c32ff..e8ce26369b 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ dependencies { testImplementation 'org.codehaus.groovy:groovy-json:3.0.24' testImplementation 'com.google.code.gson:gson:2.12.1' testImplementation 'org.eclipse.jetty:jetty-server:11.0.24' - testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.2' + testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3' testImplementation 'org.awaitility:awaitility-groovy:4.2.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' From 0b7756c8a832984979ce7d658cdf9df31d8656ee Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 6 Mar 2025 09:08:19 +1000 Subject: [PATCH 233/345] allow to print NFs directly --- .../nf/NormalizedOperationToAstCompiler.java | 53 +++++++++++++--- ...ormalizedOperationToAstCompilerTest.groovy | 63 +++++++++++++++++++ 2 files changed, 107 insertions(+), 9 deletions(-) diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java index 6a9ce9f7aa..60eb38d6e3 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java +++ b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java @@ -70,16 +70,51 @@ public Map getVariables() { } } - public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, + public static CompilerResult compileToDocument(GraphQLSchema graphQLSchema, + GraphQLObjectType rootType, + List rootFields, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + + return compileToDocumentImpl(graphQLSchema, rootType, rootFields, operationName, operationKind); + } + + public static CompilerResult compileToDocument(GraphQLSchema graphQLSchema, + GraphQLObjectType rootType, + NormalizedField singleRootField, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + return compileToDocumentImpl(graphQLSchema, rootType, ImmutableList.of(singleRootField), operationName, operationKind); + + + } + + + public static CompilerResult compileToDocument(GraphQLSchema schema, NormalizedOperation normalizedOperation) { GraphQLObjectType operationType = getOperationType(schema, normalizedOperation.getOperation()); - List> selections = subSelectionsForNormalizedField(schema, operationType.getName(), normalizedOperation.getRootFields()); + return compileToDocumentImpl( + schema, + operationType, + normalizedOperation.getRootFields(), + normalizedOperation.getOperationName(), + normalizedOperation.getOperation() + ); + } + + private static CompilerResult compileToDocumentImpl(GraphQLSchema schema, + GraphQLObjectType rootType, + List rootFields, + @Nullable String operationName, + OperationDefinition.Operation operationKind) { + + List> selections = subSelectionsForNormalizedFields(schema, rootType.getName(), rootFields); SelectionSet selectionSet = new SelectionSet(selections); OperationDefinition.Builder definitionBuilder = OperationDefinition.newOperationDefinition() - .name(normalizedOperation.getOperationName()) - .operation(normalizedOperation.getOperation()) + .name(operationName) + .operation(operationKind) .selectionSet(selectionSet); // definitionBuilder.variableDefinitions(variableAccumulator.getVariableDefinitions()); @@ -92,9 +127,10 @@ public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, ); } - private static List> subSelectionsForNormalizedField(GraphQLSchema schema, - @NotNull String parentOutputType, - List normalizedFields + + private static List> subSelectionsForNormalizedFields(GraphQLSchema schema, + @NotNull String parentOutputType, + List normalizedFields ) { ImmutableList.Builder> selections = ImmutableList.builder(); @@ -155,7 +191,7 @@ private static Field selectionForNormalizedField(GraphQLSchema schema, GraphQLFieldDefinition fieldDef = getFieldDefinition(schema, objectTypeName, normalizedField); GraphQLUnmodifiedType fieldOutputType = unwrapAll(fieldDef.getType()); - subSelections = subSelectionsForNormalizedField( + subSelections = subSelectionsForNormalizedFields( schema, fieldOutputType.getName(), normalizedField.getChildren() @@ -195,7 +231,6 @@ private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, } - @Nullable private static GraphQLObjectType getOperationType(@NotNull GraphQLSchema schema, @NotNull OperationDefinition.Operation operationKind) { switch (operationKind) { diff --git a/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy index 49f9cc0a53..c797392fe3 100644 --- a/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy +++ b/src/test/groovy/graphql/normalized/nf/NormalizedOperationToAstCompilerTest.groovy @@ -4,6 +4,7 @@ import graphql.GraphQL import graphql.TestUtil import graphql.language.AstPrinter import graphql.language.AstSorter +import graphql.language.OperationDefinition import graphql.parser.Parser import graphql.schema.GraphQLSchema import spock.lang.Specification @@ -185,6 +186,68 @@ class NormalizedOperationToAstCompilerTest extends Specification { } + def "print one root field"() { + def sdl = """ + type Query { + foo: Foo + } + type Foo { + bar: String + } + """ + def query = ''' + { foo { bar } } + ''' + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + def rootField = normalizedOperation.getRootFields().get(0) + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, schema.getObjectType("Query"), rootField, "myOperation", OperationDefinition.Operation.QUERY) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''query myOperation { + foo { + bar + } +} +''' + } + + def "print list of root fields"() { + def sdl = """ + type Query { + foo: Foo + } + type Foo { + bar: String + } + """ + def query = ''' + { foo { bar } foo2: foo { bar } } + ''' + GraphQLSchema schema = TestUtil.schema(sdl) + assertValidQuery(schema, query) + def normalizedDocument = NormalizedDocumentFactory.createNormalizedDocument(schema, Parser.parse(query)) + def normalizedOperation = normalizedDocument.getSingleNormalizedOperation() + def rootFields = normalizedOperation.getRootFields() + when: + def result = NormalizedOperationToAstCompiler.compileToDocument(schema, schema.getObjectType("Query"), rootFields, "myOperation", OperationDefinition.Operation.QUERY) + def printed = AstPrinter.printAst(new AstSorter().sort(result.document)) + then: + printed == '''query myOperation { + foo { + bar + } + foo2: foo { + bar + } +} +''' + } + + private void assertValidQuery(GraphQLSchema graphQLSchema, String query, Map variables = [:]) { GraphQL graphQL = GraphQL.newGraphQL(graphQLSchema).build() assert graphQL.execute(newExecutionInput().query(query).variables(variables)).errors.isEmpty() From 218415c7a4cbbc7f79f0a8c723441674eacc586e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Mar 2025 06:12:36 +0000 Subject: [PATCH 234/345] Add performance results for commit 2e1e0ebf65b788790763a974ce9e8aea4e4e558d --- ...5b788790763a974ce9e8aea4e4e558d-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json diff --git a/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json b/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json new file mode 100644 index 0000000000..206936aaca --- /dev/null +++ b/performance-results/2025-03-06T06:12:18Z-2e1e0ebf65b788790763a974ce9e8aea4e4e558d-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4115082119150353, + "scoreError" : 0.02941825923097294, + "scoreConfidence" : [ + 3.3820899526840624, + 3.440926471146008 + ], + "scorePercentiles" : { + "0.0" : 3.4064825548916207, + "50.0" : 3.4113171297808074, + "90.0" : 3.4169160332069057, + "95.0" : 3.4169160332069057, + "99.0" : 3.4169160332069057, + "99.9" : 3.4169160332069057, + "99.99" : 3.4169160332069057, + "99.999" : 3.4169160332069057, + "99.9999" : 3.4169160332069057, + "100.0" : 3.4169160332069057 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4064825548916207, + 3.4093676160232755 + ], + [ + 3.413266643538339, + 3.4169160332069057 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7317113411285598, + "scoreError" : 0.012064473875984218, + "scoreConfidence" : [ + 1.7196468672525755, + 1.7437758150045441 + ], + "scorePercentiles" : { + "0.0" : 1.7292424938779714, + "50.0" : 1.7319358983574031, + "90.0" : 1.7337310739214618, + "95.0" : 1.7337310739214618, + "99.0" : 1.7337310739214618, + "99.9" : 1.7337310739214618, + "99.99" : 1.7337310739214618, + "99.999" : 1.7337310739214618, + "99.9999" : 1.7337310739214618, + "100.0" : 1.7337310739214618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7292424938779714, + 1.731634581684259 + ], + [ + 1.7322372150305472, + 1.7337310739214618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8690424200353214, + "scoreError" : 0.0036514138591921194, + "scoreConfidence" : [ + 0.8653910061761293, + 0.8726938338945135 + ], + "scorePercentiles" : { + "0.0" : 0.8685279670834416, + "50.0" : 0.8689007639611597, + "90.0" : 0.8698401851355247, + "95.0" : 0.8698401851355247, + "99.0" : 0.8698401851355247, + "99.9" : 0.8698401851355247, + "99.99" : 0.8698401851355247, + "99.999" : 0.8698401851355247, + "99.9999" : 0.8698401851355247, + "100.0" : 0.8698401851355247 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8688095069876479, + 0.8698401851355247 + ], + [ + 0.8685279670834416, + 0.8689920209346713 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71003.00198373497, + "scoreError" : 226.15950652706366, + "scoreConfidence" : [ + 70776.8424772079, + 71229.16149026203 + ], + "scorePercentiles" : { + "0.0" : 70857.99060334494, + "50.0" : 70923.80077840707, + "90.0" : 71184.9506282876, + "95.0" : 71184.9506282876, + "99.0" : 71184.9506282876, + "99.9" : 71184.9506282876, + "99.99" : 71184.9506282876, + "99.999" : 71184.9506282876, + "99.9999" : 71184.9506282876, + "100.0" : 71184.9506282876 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70973.6692035204, + 70923.80077840707, + 70903.17863630773 + ], + [ + 71184.9506282876, + 71184.3262835792, + 71164.54289466105 + ], + [ + 70857.99060334494, + 70916.85608232094, + 70917.70274318576 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.38226824513544, + "scoreError" : 7.476513158615815, + "scoreConfidence" : [ + 344.9057550865196, + 359.85878140375127 + ], + "scorePercentiles" : { + "0.0" : 346.3626408752838, + "50.0" : 353.1910462537864, + "90.0" : 360.13309044096724, + "95.0" : 360.13309044096724, + "99.0" : 360.13309044096724, + "99.9" : 360.13309044096724, + "99.99" : 360.13309044096724, + "99.999" : 360.13309044096724, + "99.9999" : 360.13309044096724, + "100.0" : 360.13309044096724 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 360.13309044096724, + 354.0114902596122, + 354.8992054315646 + ], + [ + 348.1853851621876, + 346.3626408752838, + 346.95881248467407 + ], + [ + 354.5816970955848, + 353.11704620255824, + 353.1910462537864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 109.10022468858686, + "scoreError" : 2.3501641962858777, + "scoreConfidence" : [ + 106.75006049230099, + 111.45038888487274 + ], + "scorePercentiles" : { + "0.0" : 107.70994138070586, + "50.0" : 108.52727320445477, + "90.0" : 111.38642304206356, + "95.0" : 111.38642304206356, + "99.0" : 111.38642304206356, + "99.9" : 111.38642304206356, + "99.99" : 111.38642304206356, + "99.999" : 111.38642304206356, + "99.9999" : 111.38642304206356, + "100.0" : 111.38642304206356 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.52727320445477, + 108.48393073097333, + 108.75781417072851 + ], + [ + 111.38642304206356, + 110.86333689582654, + 110.38348521770283 + ], + [ + 107.70994138070586, + 107.92321928833897, + 107.86659826648732 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014221039915220942, + "scoreError" : 2.626663013411908E-4, + "scoreConfidence" : [ + 0.01395837361387975, + 0.014483706216562134 + ], + "scorePercentiles" : { + "0.0" : 0.014024734535800536, + "50.0" : 0.014236648604823324, + "90.0" : 0.014412459617527056, + "95.0" : 0.014412459617527056, + "99.0" : 0.014412459617527056, + "99.9" : 0.014412459617527056, + "99.99" : 0.014412459617527056, + "99.999" : 0.014412459617527056, + "99.9999" : 0.014412459617527056, + "100.0" : 0.014412459617527056 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014412459617527056, + 0.014401516950372995, + 0.01437941576137362 + ], + [ + 0.014047371501014911, + 0.014042817105640093, + 0.014024734535800536 + ], + [ + 0.014236648604823324, + 0.014207094412131579, + 0.014237300748304356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9942440211101774, + "scoreError" : 0.02390461473886758, + "scoreConfidence" : [ + 0.9703394063713098, + 1.018148635849045 + ], + "scorePercentiles" : { + "0.0" : 0.9743954687713144, + "50.0" : 0.9901732647524752, + "90.0" : 1.0120957015484262, + "95.0" : 1.0120957015484262, + "99.0" : 1.0120957015484262, + "99.9" : 1.0120957015484262, + "99.99" : 1.0120957015484262, + "99.999" : 1.0120957015484262, + "99.9999" : 1.0120957015484262, + "100.0" : 1.0120957015484262 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.010028034036966, + 1.0106066732012935, + 1.0120957015484262 + ], + [ + 0.9972798716593538, + 0.9773831014464426, + 0.9743954687713144 + ], + [ + 0.9866703780584056, + 0.9901732647524752, + 0.9895636965169207 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012955598848475294, + "scoreError" : 2.3999670936960022E-4, + "scoreConfidence" : [ + 0.012715602139105693, + 0.013195595557844894 + ], + "scorePercentiles" : { + "0.0" : 0.012822485927646949, + "50.0" : 0.012942355418299141, + "90.0" : 0.013063587491149645, + "95.0" : 0.013063587491149645, + "99.0" : 0.013063587491149645, + "99.9" : 0.013063587491149645, + "99.99" : 0.013063587491149645, + "99.999" : 0.013063587491149645, + "99.9999" : 0.013063587491149645, + "100.0" : 0.013063587491149645 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012822485927646949, + 0.012943171870550899, + 0.012941538966047385 + ], + [ + 0.012928680997347095, + 0.013034127838109786, + 0.013063587491149645 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.638930492890097, + "scoreError" : 0.1003970316328303, + "scoreConfidence" : [ + 3.5385334612572668, + 3.739327524522927 + ], + "scorePercentiles" : { + "0.0" : 3.5787822303290415, + "50.0" : 3.6449954462283793, + "90.0" : 3.6791761544117647, + "95.0" : 3.6791761544117647, + "99.0" : 3.6791761544117647, + "99.9" : 3.6791761544117647, + "99.99" : 3.6791761544117647, + "99.999" : 3.6791761544117647, + "99.9999" : 3.6791761544117647, + "100.0" : 3.6791761544117647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5787822303290415, + 3.63090818287373, + 3.6245014231884056 + ], + [ + 3.661132256954612, + 3.6590827095830285, + 3.6791761544117647 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.847417907792545, + "scoreError" : 0.116819409513867, + "scoreConfidence" : [ + 2.7305984982786784, + 2.964237317306412 + ], + "scorePercentiles" : { + "0.0" : 2.7529092496559318, + "50.0" : 2.8777063679516686, + "90.0" : 2.921575672801636, + "95.0" : 2.921575672801636, + "99.0" : 2.921575672801636, + "99.9" : 2.921575672801636, + "99.99" : 2.921575672801636, + "99.999" : 2.921575672801636, + "99.9999" : 2.921575672801636, + "100.0" : 2.921575672801636 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8777063679516686, + 2.877371197065593, + 2.882502662536023 + ], + [ + 2.921575672801636, + 2.903710849303136, + 2.8941062572337963 + ], + [ + 2.7529092496559318, + 2.757577626964433, + 2.7593012866206896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1784711380749599, + "scoreError" : 0.006343286936357945, + "scoreConfidence" : [ + 0.17212785113860196, + 0.18481442501131784 + ], + "scorePercentiles" : { + "0.0" : 0.1745021115919521, + "50.0" : 0.17718292266123317, + "90.0" : 0.18330034890114927, + "95.0" : 0.18330034890114927, + "99.0" : 0.18330034890114927, + "99.9" : 0.18330034890114927, + "99.99" : 0.18330034890114927, + "99.999" : 0.18330034890114927, + "99.9999" : 0.18330034890114927, + "100.0" : 0.18330034890114927 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17538364753853977, + 0.17455278001396404, + 0.1745021115919521 + ], + [ + 0.17718292266123317, + 0.17657819980930184, + 0.17833551557735175 + ], + [ + 0.18330034890114927, + 0.18323100183227367, + 0.1831737147488735 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33533802084093994, + "scoreError" : 0.01194928814488877, + "scoreConfidence" : [ + 0.3233887326960512, + 0.3472873089858287 + ], + "scorePercentiles" : { + "0.0" : 0.32534111988418246, + "50.0" : 0.3390308479845408, + "90.0" : 0.3412313907732205, + "95.0" : 0.3412313907732205, + "99.0" : 0.3412313907732205, + "99.9" : 0.3412313907732205, + "99.99" : 0.3412313907732205, + "99.999" : 0.3412313907732205, + "99.9999" : 0.3412313907732205, + "100.0" : 0.3412313907732205 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.326667493417829, + 0.3258572763205057, + 0.32534111988418246 + ], + [ + 0.3390515225631463, + 0.3386837247942561, + 0.3390308479845408 + ], + [ + 0.3412313907732205, + 0.34111317256199475, + 0.34106563926878347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16927030043181046, + "scoreError" : 0.012463968221868946, + "scoreConfidence" : [ + 0.1568063322099415, + 0.18173426865367942 + ], + "scorePercentiles" : { + "0.0" : 0.1597120899798767, + "50.0" : 0.17153760280975008, + "90.0" : 0.17657531521700745, + "95.0" : 0.17657531521700745, + "99.0" : 0.17657531521700745, + "99.9" : 0.17657531521700745, + "99.99" : 0.17657531521700745, + "99.999" : 0.17657531521700745, + "99.9999" : 0.17657531521700745, + "100.0" : 0.17657531521700745 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15983509142345684, + 0.15978003380893796, + 0.1597120899798767 + ], + [ + 0.17657531521700745, + 0.17646659101095838, + 0.17618008565740562 + ], + [ + 0.17187182930015124, + 0.17147406467874965, + 0.17153760280975008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3963000690307283, + "scoreError" : 0.005716787708106384, + "scoreConfidence" : [ + 0.3905832813226219, + 0.4020168567388347 + ], + "scorePercentiles" : { + "0.0" : 0.3926168154764242, + "50.0" : 0.3953295221378874, + "90.0" : 0.40172962820873337, + "95.0" : 0.40172962820873337, + "99.0" : 0.40172962820873337, + "99.9" : 0.40172962820873337, + "99.99" : 0.40172962820873337, + "99.999" : 0.40172962820873337, + "99.9999" : 0.40172962820873337, + "100.0" : 0.40172962820873337 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39757093607378546, + 0.39651309218508385, + 0.3953295221378874 + ], + [ + 0.40152707986027464, + 0.3943262865817594, + 0.39405590286862635 + ], + [ + 0.40172962820873337, + 0.3930313578839805, + 0.3926168154764242 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15831173145313004, + "scoreError" : 0.0030272423283522493, + "scoreConfidence" : [ + 0.1552844891247778, + 0.1613389737814823 + ], + "scorePercentiles" : { + "0.0" : 0.15655079634615987, + "50.0" : 0.1574761917074784, + "90.0" : 0.16100002611369602, + "95.0" : 0.16100002611369602, + "99.0" : 0.16100002611369602, + "99.9" : 0.16100002611369602, + "99.99" : 0.16100002611369602, + "99.999" : 0.16100002611369602, + "99.9999" : 0.16100002611369602, + "100.0" : 0.16100002611369602 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16100002611369602, + 0.16037180656231959, + 0.16022089158054956 + ], + [ + 0.15656058518982388, + 0.15671883595047797, + 0.15655079634615987 + ], + [ + 0.1587234615262523, + 0.1574761917074784, + 0.15718298810141307 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04721208488681848, + "scoreError" : 7.293969171730858E-4, + "scoreConfidence" : [ + 0.04648268796964539, + 0.04794148180399157 + ], + "scorePercentiles" : { + "0.0" : 0.04670943996973264, + "50.0" : 0.046960116708147454, + "90.0" : 0.0477835956565367, + "95.0" : 0.0477835956565367, + "99.0" : 0.0477835956565367, + "99.9" : 0.0477835956565367, + "99.99" : 0.0477835956565367, + "99.999" : 0.0477835956565367, + "99.9999" : 0.0477835956565367, + "100.0" : 0.0477835956565367 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047395170383184436, + 0.046960116708147454, + 0.04689423038326088 + ], + [ + 0.0477835956565367, + 0.04766173785477683, + 0.047752969949478065 + ], + [ + 0.04694250115242526, + 0.046809001923824055, + 0.04670943996973264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9630622.948722191, + "scoreError" : 363748.3480624857, + "scoreConfidence" : [ + 9266874.600659706, + 9994371.296784677 + ], + "scorePercentiles" : { + "0.0" : 9355448.681308411, + "50.0" : 9637481.202312138, + "90.0" : 9925310.231150793, + "95.0" : 9925310.231150793, + "99.0" : 9925310.231150793, + "99.9" : 9925310.231150793, + "99.99" : 9925310.231150793, + "99.999" : 9925310.231150793, + "99.9999" : 9925310.231150793, + "100.0" : 9925310.231150793 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9925310.231150793, + 9853500.939901479, + 9846036.579724409 + ], + [ + 9630494.096246392, + 9637481.202312138, + 9645752.631629702 + ], + [ + 9411868.841956725, + 9369713.334269663, + 9355448.681308411 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 1e4ce71f69f2d7bb93336480c15d8e8a2692bb30 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 6 Mar 2025 16:28:13 +1000 Subject: [PATCH 235/345] migrate from jetbrains annotations to jspecify --- build.gradle | 2 +- src/main/java/graphql/GraphQLError.java | 2 +- .../java/graphql/GraphqlErrorBuilder.java | 2 +- src/main/java/graphql/ParseAndValidate.java | 14 ++-- .../MaxQueryComplexityInstrumentation.java | 2 +- .../MaxQueryDepthInstrumentation.java | 2 +- .../graphql/analysis/values/ValueVisitor.java | 2 +- src/main/java/graphql/execution/Async.java | 12 ++-- .../java/graphql/execution/Execution.java | 4 +- .../graphql/execution/ExecutionStrategy.java | 14 ++-- .../ExecutionStrategyParameters.java | 2 +- .../java/graphql/execution/MergedField.java | 2 +- .../graphql/execution/ValuesResolver.java | 18 +++--- .../execution/ValuesResolverConversion.java | 8 +-- .../ConditionalNodeDecisionEnvironment.java | 5 +- .../conditional/ConditionalNodes.java | 2 +- .../directives/QueryAppliedDirective.java | 6 +- .../QueryAppliedDirectiveArgument.java | 14 ++-- .../incremental/DeferredExecution.java | 2 +- .../incremental/IncrementalUtils.java | 2 +- .../ChainedInstrumentation.java | 18 +++--- .../ExecuteObjectInstrumentationContext.java | 5 +- ...ecutionStrategyInstrumentationContext.java | 5 +- .../FieldFetchingInstrumentationContext.java | 6 +- .../instrumentation/Instrumentation.java | 16 ++--- .../NoContextChainedInstrumentation.java | 2 +- .../SimpleInstrumentationContext.java | 6 +- .../SimplePerformantInstrumentation.java | 17 +++-- .../FieldValidationInstrumentation.java | 2 +- .../threadpools/ExecutorInstrumentation.java | 4 +- .../tracing/TracingInstrumentation.java | 6 +- ...ompletionStageMappingOrderedPublisher.java | 4 +- .../CompletionStageMappingPublisher.java | 4 +- .../reactive/CompletionStageSubscriber.java | 4 +- .../reactive/NonBlockingMutexExecutor.java | 6 +- .../execution/values/InputInterceptor.java | 10 +-- .../LegacyCoercingInputInterceptor.java | 6 +- .../extensions/DefaultExtensionsMerger.java | 8 +-- .../graphql/extensions/ExtensionsBuilder.java | 8 +-- .../graphql/extensions/ExtensionsMerger.java | 6 +- .../graphql/incremental/DeferPayload.java | 2 +- .../DelayedIncrementalPartialResult.java | 2 +- .../IncrementalExecutionResult.java | 2 +- .../IncrementalExecutionResultImpl.java | 2 +- .../incremental/IncrementalPayload.java | 2 +- .../graphql/incremental/StreamPayload.java | 2 +- .../graphql/introspection/Introspection.java | 6 +- .../IntrospectionWithDirectivesSupport.java | 6 +- .../normalized/ExecutableNormalizedField.java | 8 +-- .../ExecutableNormalizedOperationFactory.java | 2 +- ...tableNormalizedOperationToAstCompiler.java | 64 +++++++++---------- .../ValueToVariableValueCompiler.java | 8 +-- .../normalized/VariableAccumulator.java | 2 +- .../NormalizedDeferredExecution.java | 2 +- .../normalized/nf/NormalizedDocument.java | 2 +- .../nf/NormalizedDocumentFactory.java | 2 +- .../normalized/nf/NormalizedField.java | 10 +-- .../nf/NormalizedOperationToAstCompiler.java | 14 ++-- .../parser/GraphqlAntlrToLanguage.java | 2 +- src/main/java/graphql/parser/Parser.java | 10 +-- .../java/graphql/parser/SafeTokenReader.java | 8 +-- .../InvalidUnicodeSyntaxException.java | 4 +- .../exceptions/MoreTokensSyntaxException.java | 6 +- .../exceptions/ParseCancelledException.java | 6 +- .../ParseCancelledTooDeepException.java | 6 +- .../ParseCancelledTooManyCharsException.java | 4 +- .../scalar/GraphqlBooleanCoercing.java | 34 +++++----- .../graphql/scalar/GraphqlFloatCoercing.java | 34 +++++----- .../graphql/scalar/GraphqlIDCoercing.java | 35 +++++----- .../graphql/scalar/GraphqlIntCoercing.java | 32 +++++----- .../graphql/scalar/GraphqlStringCoercing.java | 26 ++++---- src/main/java/graphql/schema/Coercing.java | 20 +++--- .../schema/DataFetchingEnvironment.java | 6 +- .../schema/DataFetchingEnvironmentImpl.java | 6 +- .../DelegatingDataFetchingEnvironment.java | 6 +- .../GraphQLAppliedDirectiveArgument.java | 10 +-- .../java/graphql/schema/GraphQLArgument.java | 12 ++-- .../java/graphql/schema/GraphQLEnumType.java | 4 +- .../schema/GraphQLInputObjectField.java | 4 +- .../schema/GraphQLNamedSchemaElement.java | 6 +- .../java/graphql/schema/GraphQLSchema.java | 6 +- .../graphql/schema/InputValueWithState.java | 8 +-- .../graphql/schema/diffing/SchemaGraph.java | 3 +- .../schema/usage/SchemaUsageSupport.java | 1 - .../GraphQLSchemaVisitorEnvironmentImpl.java | 9 ++- src/main/java/graphql/util/Interning.java | 4 +- .../InstrumentationTest.groovy | 2 - ...sherRandomCompleteTckVerificationTest.java | 5 +- ...sherRandomCompleteTckVerificationTest.java | 4 +- .../readme/InstrumentationExamples.java | 8 +-- .../SubscriptionReproduction.java | 4 +- 91 files changed, 363 insertions(+), 370 deletions(-) diff --git a/build.gradle b/build.gradle index e8ce26369b..1a379c317a 100644 --- a/build.gradle +++ b/build.gradle @@ -99,10 +99,10 @@ jar { } dependencies { - compileOnly 'org.jetbrains:annotations:26.0.2' implementation 'org.antlr:antlr4-runtime:' + antlrVersion api 'com.graphql-java:java-dataloader:3.4.0' api 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion + api "org.jspecify:jspecify:1.0.0" antlr 'org.antlr:antlr4:' + antlrVersion implementation 'com.google.guava:guava:' + guavaVersion testImplementation group: 'junit', name: 'junit', version: '4.13.2' diff --git a/src/main/java/graphql/GraphQLError.java b/src/main/java/graphql/GraphQLError.java index 7079d7579a..90c3527b50 100644 --- a/src/main/java/graphql/GraphQLError.java +++ b/src/main/java/graphql/GraphQLError.java @@ -3,7 +3,7 @@ import graphql.execution.ResultPath; import graphql.language.SourceLocation; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.io.Serializable; import java.util.List; diff --git a/src/main/java/graphql/GraphqlErrorBuilder.java b/src/main/java/graphql/GraphqlErrorBuilder.java index db71eb20e0..eccaadb44d 100644 --- a/src/main/java/graphql/GraphqlErrorBuilder.java +++ b/src/main/java/graphql/GraphqlErrorBuilder.java @@ -4,7 +4,7 @@ import graphql.execution.ResultPath; import graphql.language.SourceLocation; import graphql.schema.DataFetchingEnvironment; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/graphql/ParseAndValidate.java b/src/main/java/graphql/ParseAndValidate.java index 9410a5ec1b..0ecb17947d 100644 --- a/src/main/java/graphql/ParseAndValidate.java +++ b/src/main/java/graphql/ParseAndValidate.java @@ -8,7 +8,7 @@ import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; import graphql.validation.Validator; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.List; import java.util.Locale; @@ -42,7 +42,7 @@ public class ParseAndValidate { * * @return a result object that indicates how this operation went */ - public static ParseAndValidateResult parseAndValidate(@NotNull GraphQLSchema graphQLSchema, @NotNull ExecutionInput executionInput) { + public static ParseAndValidateResult parseAndValidate(@NonNull GraphQLSchema graphQLSchema, @NonNull ExecutionInput executionInput) { ParseAndValidateResult result = parse(executionInput); if (!result.isFailure()) { List errors = validate(graphQLSchema, result.getDocument(), executionInput.getLocale()); @@ -58,7 +58,7 @@ public static ParseAndValidateResult parseAndValidate(@NotNull GraphQLSchema gra * * @return a result object that indicates how this operation went */ - public static ParseAndValidateResult parse(@NotNull ExecutionInput executionInput) { + public static ParseAndValidateResult parse(@NonNull ExecutionInput executionInput) { try { // // we allow the caller to specify new parser options by context @@ -87,7 +87,7 @@ public static ParseAndValidateResult parse(@NotNull ExecutionInput executionInpu * * @return a result object that indicates how this operation went */ - public static List validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Locale locale) { + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Locale locale) { return validate(graphQLSchema, parsedDocument, ruleClass -> true, locale); } @@ -99,7 +99,7 @@ public static List validate(@NotNull GraphQLSchema graphQLSchem * * @return a result object that indicates how this operation went */ - public static List validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument) { + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument) { return validate(graphQLSchema, parsedDocument, ruleClass -> true, Locale.getDefault()); } @@ -113,7 +113,7 @@ public static List validate(@NotNull GraphQLSchema graphQLSchem * * @return a result object that indicates how this operation went */ - public static List validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Predicate> rulePredicate, @NotNull Locale locale) { + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Predicate> rulePredicate, @NonNull Locale locale) { Validator validator = new Validator(); return validator.validateDocument(graphQLSchema, parsedDocument, rulePredicate, locale); } @@ -127,7 +127,7 @@ public static List validate(@NotNull GraphQLSchema graphQLSchem * * @return a result object that indicates how this operation went */ - public static List validate(@NotNull GraphQLSchema graphQLSchema, @NotNull Document parsedDocument, @NotNull Predicate> rulePredicate) { + public static List validate(@NonNull GraphQLSchema graphQLSchema, @NonNull Document parsedDocument, @NonNull Predicate> rulePredicate) { Validator validator = new Validator(); return validator.validateDocument(graphQLSchema, parsedDocument, rulePredicate, Locale.getDefault()); } diff --git a/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java b/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java index 6e47e92bb0..64a79612d6 100644 --- a/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java +++ b/src/main/java/graphql/analysis/MaxQueryComplexityInstrumentation.java @@ -11,7 +11,7 @@ import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.validation.ValidationError; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java b/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java index f1cee88228..f7c44160d4 100644 --- a/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java +++ b/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java @@ -8,7 +8,7 @@ import graphql.execution.instrumentation.InstrumentationState; import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/graphql/analysis/values/ValueVisitor.java b/src/main/java/graphql/analysis/values/ValueVisitor.java index 21ae97c0a1..b8ea0a221b 100644 --- a/src/main/java/graphql/analysis/values/ValueVisitor.java +++ b/src/main/java/graphql/analysis/values/ValueVisitor.java @@ -10,7 +10,7 @@ import graphql.schema.GraphQLInputValueDefinition; import graphql.schema.GraphQLList; import graphql.schema.GraphQLScalarType; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Map; diff --git a/src/main/java/graphql/execution/Async.java b/src/main/java/graphql/execution/Async.java index aa05f6ee4d..aefe805951 100644 --- a/src/main/java/graphql/execution/Async.java +++ b/src/main/java/graphql/execution/Async.java @@ -2,8 +2,8 @@ import graphql.Assert; import graphql.Internal; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Arrays; @@ -230,7 +230,7 @@ public CompletableFuture> await() { } @SuppressWarnings("unchecked") - @NotNull + @NonNull private CompletableFuture[] copyOnlyCFsToArray() { if (cfCount == array.length) { // if it's all CFs - make a type safe copy via C code @@ -258,7 +258,7 @@ public Object awaitPolymorphic() { } } - @NotNull + @NonNull private List materialisedList(Object[] array) { List results = new ArrayList<>(array.length); for (Object object : array) { @@ -405,7 +405,7 @@ public static CompletableFuture exceptionallyCompletedFuture(Throwable ex * * @return the completableFuture if it's not null or one that always resoles to null */ - public static @NotNull CompletableFuture orNullCompletedFuture(@Nullable CompletableFuture completableFuture) { + public static @NonNull CompletableFuture orNullCompletedFuture(@Nullable CompletableFuture completableFuture) { return completableFuture != null ? completableFuture : CompletableFuture.completedFuture(null); } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index ddc384d468..ed0b5786b9 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -29,7 +29,7 @@ import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.impl.SchemaUtil; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import java.util.Collections; @@ -118,7 +118,7 @@ public CompletableFuture execute(Document document, GraphQLSche return executeOperation(executionContext, executionInput.getRoot(), executionContext.getOperationDefinition()); } - private static @NotNull CoercedVariables coerceVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, OperationDefinition operationDefinition) { + private static @NonNull CoercedVariables coerceVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, OperationDefinition operationDefinition) { RawVariables inputVariables = executionInput.getRawVariables(); List variableDefinitions = operationDefinition.getVariableDefinitions(); return ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 31a0ed71c8..463866d2fd 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -48,7 +48,7 @@ import graphql.schema.GraphQLType; import graphql.schema.LightDataFetcher; import graphql.util.FpKit; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.Collections; @@ -266,8 +266,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat } } - @NotNull - private static Async.CombinedBuilder fieldValuesCombinedBuilder(List completeValueInfos) { + private static Async.@NonNull CombinedBuilder fieldValuesCombinedBuilder(List completeValueInfos) { Async.CombinedBuilder resultFutures = Async.ofExpectedSize(completeValueInfos.size()); for (FieldValueInfo completeValueInfo : completeValueInfos) { resultFutures.addObject(completeValueInfo.getFieldValueObject()); @@ -286,7 +285,7 @@ private BiConsumer, Throwable> buildFieldValueMap(List fiel }; } - @NotNull + @NonNull private static Map buildFieldValueMap(List fieldNames, List results) { Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); int ix = 0; @@ -312,8 +311,7 @@ DeferredExecutionSupport createDeferredExecutionSupport(ExecutionContext executi } - @NotNull - Async.CombinedBuilder getAsyncFieldValueInfo( + Async.@NonNull CombinedBuilder getAsyncFieldValueInfo( ExecutionContext executionContext, ExecutionStrategyParameters parameters, DeferredExecutionSupport deferredExecutionSupport @@ -1007,6 +1005,7 @@ private void handleTypeMismatchProblem(ExecutionContext context, ExecutionStrate * if max nodes were exceeded for this request. * * @param executionContext the execution context in play + * * @return true if max nodes were exceeded */ private boolean incrementAndCheckMaxNodesExceeded(ExecutionContext executionContext) { @@ -1059,6 +1058,7 @@ protected GraphQLFieldDefinition getFieldDef(GraphQLSchema schema, GraphQLObject * * @param e this indicates that a null value was returned for a non null field, which needs to cause the parent field * to become null OR continue on as an exception + * * @throws NonNullableFieldWasNullException if a non null field resolves to a null value */ protected void assertNonNullFieldPrecondition(NonNullableFieldWasNullException e) throws NonNullableFieldWasNullException { @@ -1136,7 +1136,7 @@ protected ExecutionStepInfo createExecutionStepInfo(ExecutionContext executionCo .build(); } - @NotNull + @NonNull private static Supplier> getArgumentValues(ExecutionContext executionContext, List fieldArgDefs, List fieldArgs) { diff --git a/src/main/java/graphql/execution/ExecutionStrategyParameters.java b/src/main/java/graphql/execution/ExecutionStrategyParameters.java index f74336bad1..c2e46b9a67 100644 --- a/src/main/java/graphql/execution/ExecutionStrategyParameters.java +++ b/src/main/java/graphql/execution/ExecutionStrategyParameters.java @@ -2,7 +2,7 @@ import graphql.PublicApi; import graphql.execution.incremental.DeferredCallContext; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.function.Consumer; diff --git a/src/main/java/graphql/execution/MergedField.java b/src/main/java/graphql/execution/MergedField.java index f7e6545052..64eb43361c 100644 --- a/src/main/java/graphql/execution/MergedField.java +++ b/src/main/java/graphql/execution/MergedField.java @@ -6,7 +6,7 @@ import graphql.execution.incremental.DeferredExecution; import graphql.language.Argument; import graphql.language.Field; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Objects; diff --git a/src/main/java/graphql/execution/ValuesResolver.java b/src/main/java/graphql/execution/ValuesResolver.java index 94073cbe6d..f223c4cc34 100644 --- a/src/main/java/graphql/execution/ValuesResolver.java +++ b/src/main/java/graphql/execution/ValuesResolver.java @@ -27,8 +27,8 @@ import graphql.schema.GraphQLType; import graphql.schema.InputValueWithState; import graphql.schema.visibility.GraphqlFieldVisibility; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -198,7 +198,7 @@ public static Map getNormalizedArgumentValues( return result; } - @NotNull + @NonNull public static Map getArgumentValues( GraphQLCodeRegistry codeRegistry, List argumentTypes, @@ -225,9 +225,9 @@ public static Map getArgumentValues( * @return a value converted to a literal */ public static Value valueToLiteral( - @NotNull GraphqlFieldVisibility fieldVisibility, - @NotNull InputValueWithState inputValueWithState, - @NotNull GraphQLType type, + @NonNull GraphqlFieldVisibility fieldVisibility, + @NonNull InputValueWithState inputValueWithState, + @NonNull GraphQLType type, GraphQLContext graphqlContext, Locale locale ) { @@ -241,8 +241,8 @@ public static Value valueToLiteral( } public static Value valueToLiteral( - @NotNull InputValueWithState inputValueWithState, - @NotNull GraphQLType type, + @NonNull InputValueWithState inputValueWithState, + @NonNull GraphQLType type, GraphQLContext graphqlContext, Locale locale ) { @@ -318,7 +318,7 @@ public static T getInputValueImpl( } - @NotNull + @NonNull private static Map getArgumentValuesImpl( InputInterceptor inputInterceptor, GraphqlFieldVisibility fieldVisibility, diff --git a/src/main/java/graphql/execution/ValuesResolverConversion.java b/src/main/java/graphql/execution/ValuesResolverConversion.java index f068e7f23f..c53eeb64e8 100644 --- a/src/main/java/graphql/execution/ValuesResolverConversion.java +++ b/src/main/java/graphql/execution/ValuesResolverConversion.java @@ -26,8 +26,8 @@ import graphql.schema.visibility.DefaultGraphqlFieldVisibility; import graphql.schema.visibility.GraphqlFieldVisibility; import graphql.util.FpKit; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; @@ -220,7 +220,7 @@ private static Value externalValueToLiteralForScalar( GraphQLScalarType scalarType, Object value, GraphQLContext graphqlContext, - @NotNull Locale locale + @NonNull Locale locale ) { return scalarType.getCoercing().valueToLiteral(value, graphqlContext, locale); @@ -714,7 +714,7 @@ private static Object literalToInternalValueForScalar( GraphQLScalarType scalarType, CoercedVariables coercedVariables, GraphQLContext graphqlContext, - @NotNull Locale locale + @NonNull Locale locale ) { // the CoercingParseLiteralException exception that could happen here has been validated earlier via ValidationUtil return scalarType.getCoercing().parseLiteral( diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java b/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java index e0e116a1b4..8851e2df4a 100644 --- a/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java +++ b/src/main/java/graphql/execution/conditional/ConditionalNodeDecisionEnvironment.java @@ -5,7 +5,7 @@ import graphql.language.Directive; import graphql.language.DirectivesContainer; import graphql.schema.GraphQLSchema; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; @@ -39,7 +39,8 @@ default List getDirectives() { /** * @return the {@link GraphQLSchema} in question - this can be null for certain call paths */ - @Nullable GraphQLSchema getGraphQlSchema(); + @Nullable + GraphQLSchema getGraphQlSchema(); /** * @return a graphql context diff --git a/src/main/java/graphql/execution/conditional/ConditionalNodes.java b/src/main/java/graphql/execution/conditional/ConditionalNodes.java index 48efec5f1c..e922eeb427 100644 --- a/src/main/java/graphql/execution/conditional/ConditionalNodes.java +++ b/src/main/java/graphql/execution/conditional/ConditionalNodes.java @@ -11,7 +11,7 @@ import graphql.language.NodeUtil; import graphql.language.VariableReference; import graphql.schema.GraphQLSchema; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Map; diff --git a/src/main/java/graphql/execution/directives/QueryAppliedDirective.java b/src/main/java/graphql/execution/directives/QueryAppliedDirective.java index d2e0e66891..18e4e7be69 100644 --- a/src/main/java/graphql/execution/directives/QueryAppliedDirective.java +++ b/src/main/java/graphql/execution/directives/QueryAppliedDirective.java @@ -7,9 +7,9 @@ import graphql.schema.GraphQLArgument; import graphql.schema.GraphQLDirective; import graphql.schema.GraphqlTypeBuilder; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; @@ -47,7 +47,7 @@ private QueryAppliedDirective(String name, Directive definition, Collection value) { + public Builder valueLiteral(@NonNull Value value) { this.value = InputValueWithState.newLiteralValue(value); return this; } @@ -181,7 +181,7 @@ public Builder valueProgrammatic(@Nullable Object value) { return this; } - public Builder inputValueWithState(@NotNull InputValueWithState value) { + public Builder inputValueWithState(@NonNull InputValueWithState value) { this.value = Assert.assertNotNull(value); return this; } diff --git a/src/main/java/graphql/execution/incremental/DeferredExecution.java b/src/main/java/graphql/execution/incremental/DeferredExecution.java index 6bc05973c2..321ecc1603 100644 --- a/src/main/java/graphql/execution/incremental/DeferredExecution.java +++ b/src/main/java/graphql/execution/incremental/DeferredExecution.java @@ -2,7 +2,7 @@ import graphql.ExperimentalApi; import graphql.normalized.incremental.NormalizedDeferredExecution; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; /** * Represents details about the defer execution that can be associated with a {@link graphql.execution.MergedField}. diff --git a/src/main/java/graphql/execution/incremental/IncrementalUtils.java b/src/main/java/graphql/execution/incremental/IncrementalUtils.java index 77473c8cb1..5dc1ac171c 100644 --- a/src/main/java/graphql/execution/incremental/IncrementalUtils.java +++ b/src/main/java/graphql/execution/incremental/IncrementalUtils.java @@ -7,7 +7,7 @@ import graphql.execution.ValuesResolver; import graphql.language.Directive; import graphql.language.NodeUtil; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; diff --git a/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java b/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java index f0577aeab0..daca12293f 100644 --- a/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/ChainedInstrumentation.java @@ -20,8 +20,8 @@ import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.AbstractMap; import java.util.Arrays; @@ -111,7 +111,7 @@ protected void chainedConsume(InstrumentationState state, BiConsumer createStateAsync(InstrumentationCreateStateParameters parameters) { + public @NonNull CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { return ChainedInstrumentationState.combineAll(instrumentations, parameters); } @@ -212,41 +212,41 @@ public FieldFetchingInstrumentationContext beginFieldFetching(InstrumentationFie return chainedCtx(state, (instrumentation, specificState) -> instrumentation.beginFieldListCompletion(parameters, specificState)); } - @NotNull + @NonNull @Override public ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { return chainedInstrument(state, executionInput, (instrumentation, specificState, accumulator) -> instrumentation.instrumentExecutionInput(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { return chainedInstrument(state, documentAndVariables, (instrumentation, specificState, accumulator) -> instrumentation.instrumentDocumentAndVariables(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { return chainedInstrument(state, schema, (instrumentation, specificState, accumulator) -> instrumentation.instrumentSchema(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { return chainedInstrument(state, executionContext, (instrumentation, specificState, accumulator) -> instrumentation.instrumentExecutionContext(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return chainedInstrument(state, dataFetcher, (Instrumentation instrumentation, InstrumentationState specificState, DataFetcher accumulator) -> instrumentation.instrumentDataFetcher(accumulator, parameters, specificState)); } - @NotNull + @NonNull @Override public CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { ImmutableList> entries = chainedMapAndDropNulls(state, AbstractMap.SimpleEntry::new); diff --git a/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java index 4e100238df..a9d8417756 100644 --- a/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/ExecuteObjectInstrumentationContext.java @@ -3,11 +3,10 @@ import graphql.Internal; import graphql.PublicSpi; import graphql.execution.FieldValueInfo; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.List; import java.util.Map; -import java.util.concurrent.CompletableFuture; @PublicSpi public interface ExecuteObjectInstrumentationContext extends InstrumentationContext> { @@ -30,7 +29,7 @@ public void onCompleted(Map result, Throwable t) { * * @return a non null {@link InstrumentationContext} that maybe a no-op */ - @NotNull + @NonNull @Internal static ExecuteObjectInstrumentationContext nonNullCtx(ExecuteObjectInstrumentationContext nullableContext) { return nullableContext == null ? NOOP : nullableContext; diff --git a/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java index 7fc0a3e0d3..5b9abac713 100644 --- a/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/ExecutionStrategyInstrumentationContext.java @@ -4,10 +4,9 @@ import graphql.Internal; import graphql.PublicSpi; import graphql.execution.FieldValueInfo; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.List; -import java.util.concurrent.CompletableFuture; @PublicSpi public interface ExecutionStrategyInstrumentationContext extends InstrumentationContext { @@ -27,7 +26,7 @@ default void onFieldValuesException() { * * @return a non null {@link InstrumentationContext} that maybe a no-op */ - @NotNull + @NonNull @Internal static ExecutionStrategyInstrumentationContext nonNullCtx(ExecutionStrategyInstrumentationContext nullableContext) { return nullableContext == null ? NOOP : nullableContext; diff --git a/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java index c64ea80ba5..38984c6f92 100644 --- a/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/FieldFetchingInstrumentationContext.java @@ -3,8 +3,8 @@ import graphql.Internal; import graphql.PublicSpi; import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; /** * FieldFetchingInstrumentationContext is returned back from the {@link Instrumentation#beginFieldFetching(InstrumentationFieldFetchParameters, InstrumentationState)} @@ -43,7 +43,7 @@ public void onCompleted(Object result, Throwable t) { * @param nullableContext a {@link InstrumentationContext} that can be null * @return a non-null {@link InstrumentationContext} that maybe a no-op */ - @NotNull + @NonNull @Internal static FieldFetchingInstrumentationContext nonNullCtx(FieldFetchingInstrumentationContext nullableContext) { return nullableContext == null ? NOOP : nullableContext; diff --git a/src/main/java/graphql/execution/instrumentation/Instrumentation.java b/src/main/java/graphql/execution/instrumentation/Instrumentation.java index 4f7767a767..714f96fe3c 100644 --- a/src/main/java/graphql/execution/instrumentation/Instrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/Instrumentation.java @@ -17,8 +17,8 @@ import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -262,7 +262,7 @@ default InstrumentationContext beginFieldListCompletion(InstrumentationF * * @return a non-null instrumented ExecutionInput, the default is to return to the same object */ - @NotNull + @NonNull default ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionInput; } @@ -276,7 +276,7 @@ default ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, I * * @return a non-null instrumented DocumentAndVariables, the default is to return to the same objects */ - @NotNull + @NonNull default DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { return documentAndVariables; } @@ -291,7 +291,7 @@ default DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables * * @return a non-null instrumented GraphQLSchema, the default is to return to the same object */ - @NotNull + @NonNull default GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { return schema; } @@ -306,7 +306,7 @@ default GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExec * * @return a non-null instrumented ExecutionContext, the default is to return to the same object */ - @NotNull + @NonNull default ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionContext; } @@ -323,7 +323,7 @@ default ExecutionContext instrumentExecutionContext(ExecutionContext executionCo * * @return a non-null instrumented DataFetcher, the default is to return to the same object */ - @NotNull + @NonNull default DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return dataFetcher; } @@ -337,7 +337,7 @@ default DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, Instrum * * @return a new execution result completable future */ - @NotNull + @NonNull default CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { return CompletableFuture.completedFuture(executionResult); } diff --git a/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java b/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java index 8d8d3cd956..89e91b6e50 100644 --- a/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/NoContextChainedInstrumentation.java @@ -11,7 +11,7 @@ import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.language.Document; import graphql.validation.ValidationError; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.function.BiConsumer; diff --git a/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java b/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java index 68c70b214e..0abfc744d6 100644 --- a/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java +++ b/src/main/java/graphql/execution/instrumentation/SimpleInstrumentationContext.java @@ -1,11 +1,9 @@ package graphql.execution.instrumentation; import graphql.PublicApi; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; -import java.util.concurrent.CompletableFuture; import java.util.function.BiConsumer; -import java.util.function.Consumer; /** * A simple implementation of {@link InstrumentationContext} @@ -43,7 +41,7 @@ public static InstrumentationContext noOp() { * * @return a non null {@link InstrumentationContext} that maybe a no-op */ - @NotNull + @NonNull public static InstrumentationContext nonNullCtx(InstrumentationContext nullableContext) { return nullableContext == null ? noOp() : nullableContext; } diff --git a/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java b/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java index b46cedf9c7..26f30714fa 100644 --- a/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/SimplePerformantInstrumentation.java @@ -16,13 +16,12 @@ import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; import graphql.validation.ValidationError; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.concurrent.CompletableFuture; -import static graphql.Assert.assertShouldNeverHappen; import static graphql.execution.instrumentation.SimpleInstrumentationContext.noOp; /** @@ -113,32 +112,32 @@ public class SimplePerformantInstrumentation implements Instrumentation { } @Override - public @NotNull ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionInput; } @Override - public @NotNull DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull DocumentAndVariables instrumentDocumentAndVariables(DocumentAndVariables documentAndVariables, InstrumentationExecutionParameters parameters, InstrumentationState state) { return documentAndVariables; } @Override - public @NotNull GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull GraphQLSchema instrumentSchema(GraphQLSchema schema, InstrumentationExecutionParameters parameters, InstrumentationState state) { return schema; } @Override - public @NotNull ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull ExecutionContext instrumentExecutionContext(ExecutionContext executionContext, InstrumentationExecutionParameters parameters, InstrumentationState state) { return executionContext; } @Override - public @NotNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + public @NonNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { return dataFetcher; } @Override - public @NotNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { return CompletableFuture.completedFuture(executionResult); } } diff --git a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java index d1f30fbfbd..408fd261be 100644 --- a/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/fieldvalidation/FieldValidationInstrumentation.java @@ -8,7 +8,7 @@ import graphql.execution.instrumentation.InstrumentationState; import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; diff --git a/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java b/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java index af210df041..9727801305 100644 --- a/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java @@ -10,7 +10,7 @@ import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; @@ -108,7 +108,7 @@ public ExecutorInstrumentation build() { } @Override - public @NotNull DataFetcher instrumentDataFetcher(DataFetcher originalDataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + public @NonNull DataFetcher instrumentDataFetcher(DataFetcher originalDataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { if (originalDataFetcher instanceof TrivialDataFetcher) { return originalDataFetcher; } diff --git a/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java b/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java index daa67d4ea7..ed18f68ab8 100644 --- a/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java +++ b/src/main/java/graphql/execution/instrumentation/tracing/TracingInstrumentation.java @@ -14,8 +14,8 @@ import graphql.execution.instrumentation.parameters.InstrumentationValidationParameters; import graphql.language.Document; import graphql.validation.ValidationError; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.LinkedHashMap; import java.util.List; @@ -77,7 +77,7 @@ public TracingInstrumentation(Options options) { } @Override - public @NotNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState rawState) { + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState rawState) { Map currentExt = executionResult.getExtensions(); TracingSupport tracingSupport = ofState(rawState); diff --git a/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java b/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java index 4f4e651ca3..91915c450e 100644 --- a/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java +++ b/src/main/java/graphql/execution/reactive/CompletionStageMappingOrderedPublisher.java @@ -1,7 +1,7 @@ package graphql.execution.reactive; import graphql.Internal; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; @@ -30,7 +30,7 @@ public CompletionStageMappingOrderedPublisher(Publisher upstreamPublisher, Fu } @Override - protected @NotNull Subscriber createSubscriber(Subscriber downstreamSubscriber) { + protected @NonNull Subscriber createSubscriber(Subscriber downstreamSubscriber) { return new CompletionStageOrderedSubscriber<>(mapper, downstreamSubscriber); } } diff --git a/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java b/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java index 3e913c62a2..824e9e0840 100644 --- a/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java +++ b/src/main/java/graphql/execution/reactive/CompletionStageMappingPublisher.java @@ -1,7 +1,7 @@ package graphql.execution.reactive; import graphql.Internal; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; @@ -39,7 +39,7 @@ public void subscribe(Subscriber downstreamSubscriber) { upstreamPublisher.subscribe(createSubscriber(downstreamSubscriber)); } - @NotNull + @NonNull protected Subscriber createSubscriber(Subscriber downstreamSubscriber) { return new CompletionStageSubscriber<>(mapper, downstreamSubscriber); } diff --git a/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java b/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java index c9db2ae9e6..b185ce9bba 100644 --- a/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java +++ b/src/main/java/graphql/execution/reactive/CompletionStageSubscriber.java @@ -2,7 +2,7 @@ import graphql.Internal; import graphql.util.LockKit; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; @@ -69,7 +69,7 @@ public void onNext(U u) { } } - @NotNull + @NonNull private BiConsumer whenComplete(CompletionStage completionStage) { return (d, throwable) -> { if (isTerminal()) { diff --git a/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java b/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java index a9da42d410..4c2b44f387 100644 --- a/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java +++ b/src/main/java/graphql/execution/reactive/NonBlockingMutexExecutor.java @@ -2,7 +2,7 @@ import graphql.Internal; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicReference; @@ -37,7 +37,7 @@ class NonBlockingMutexExecutor implements Executor { private final AtomicReference last = new AtomicReference<>(); @Override - public void execute(final @NotNull Runnable command) { + public void execute(final @NonNull Runnable command) { final RunNode newNode = new RunNode(assertNotNull(command, () -> "Runnable must not be null")); final RunNode prevLast = last.getAndSet(newNode); if (prevLast != null) { @@ -93,4 +93,4 @@ private RunNode(final Runnable runnable) { } } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/execution/values/InputInterceptor.java b/src/main/java/graphql/execution/values/InputInterceptor.java index b5420e5035..0fb7534d59 100644 --- a/src/main/java/graphql/execution/values/InputInterceptor.java +++ b/src/main/java/graphql/execution/values/InputInterceptor.java @@ -3,8 +3,8 @@ import graphql.GraphQLContext; import graphql.Internal; import graphql.schema.GraphQLInputType; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Locale; @@ -36,7 +36,7 @@ public interface InputInterceptor { * @return a value that may differ from the original value */ Object intercept(@Nullable Object value, - @NotNull GraphQLInputType graphQLType, - @NotNull GraphQLContext graphqlContext, - @NotNull Locale locale); + @NonNull GraphQLInputType graphQLType, + @NonNull GraphQLContext graphqlContext, + @NonNull Locale locale); } diff --git a/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java b/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java index e6f9f5d363..6ac9041be4 100644 --- a/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java +++ b/src/main/java/graphql/execution/values/legacycoercing/LegacyCoercingInputInterceptor.java @@ -5,8 +5,8 @@ import graphql.execution.values.InputInterceptor; import graphql.scalar.CoercingUtil; import graphql.schema.GraphQLInputType; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.util.Locale; @@ -77,7 +77,7 @@ private LegacyCoercingInputInterceptor(BiFunction merge(@NotNull Map leftMap, @NotNull Map rightMap) { + @NonNull + public Map merge(@NonNull Map leftMap, @NonNull Map rightMap) { if (leftMap.isEmpty()) { return mapCast(rightMap); } @@ -55,7 +55,7 @@ private Object mergeObjects(Object leftVal, Object rightVal) { } } - @NotNull + @NonNull private List appendLists(Object leftVal, Object rightVal) { List target = new ArrayList<>(listCast(leftVal)); target.addAll(listCast(rightVal)); diff --git a/src/main/java/graphql/extensions/ExtensionsBuilder.java b/src/main/java/graphql/extensions/ExtensionsBuilder.java index fe37c64743..69bd85c473 100644 --- a/src/main/java/graphql/extensions/ExtensionsBuilder.java +++ b/src/main/java/graphql/extensions/ExtensionsBuilder.java @@ -3,8 +3,8 @@ import com.google.common.collect.ImmutableMap; import graphql.ExecutionResult; import graphql.PublicApi; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Collections; import java.util.LinkedHashMap; @@ -69,7 +69,7 @@ public int getChangeCount() { * * @return this builder for fluent style reasons */ - public ExtensionsBuilder addValues(@NotNull Map newValues) { + public ExtensionsBuilder addValues(@NonNull Map newValues) { assertNotNull(newValues); if (!newValues.isEmpty()) { changes.add(newValues); @@ -85,7 +85,7 @@ public ExtensionsBuilder addValues(@NotNull Map newValues) { * * @return this builder for fluent style reasons */ - public ExtensionsBuilder addValue(@NotNull Object key, @Nullable Object value) { + public ExtensionsBuilder addValue(@NonNull Object key, @Nullable Object value) { assertNotNull(key); return addValues(Collections.singletonMap(key, value)); } diff --git a/src/main/java/graphql/extensions/ExtensionsMerger.java b/src/main/java/graphql/extensions/ExtensionsMerger.java index 7ad57461c0..9e4199ff3a 100644 --- a/src/main/java/graphql/extensions/ExtensionsMerger.java +++ b/src/main/java/graphql/extensions/ExtensionsMerger.java @@ -1,7 +1,7 @@ package graphql.extensions; import graphql.PublicSpi; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.Map; @@ -40,6 +40,6 @@ public interface ExtensionsMerger { * * @return a non null merged map */ - @NotNull - Map merge(@NotNull Map leftMap, @NotNull Map rightMap); + @NonNull + Map merge(@NonNull Map leftMap, @NonNull Map rightMap); } diff --git a/src/main/java/graphql/incremental/DeferPayload.java b/src/main/java/graphql/incremental/DeferPayload.java index 6f7460dd0a..ddec3d531b 100644 --- a/src/main/java/graphql/incremental/DeferPayload.java +++ b/src/main/java/graphql/incremental/DeferPayload.java @@ -3,7 +3,7 @@ import graphql.ExecutionResult; import graphql.ExperimentalApi; import graphql.GraphQLError; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.LinkedHashMap; import java.util.List; diff --git a/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java b/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java index e1edaafe03..5992e3c83a 100644 --- a/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java +++ b/src/main/java/graphql/incremental/DelayedIncrementalPartialResult.java @@ -1,7 +1,7 @@ package graphql.incremental; import graphql.ExperimentalApi; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Map; diff --git a/src/main/java/graphql/incremental/IncrementalExecutionResult.java b/src/main/java/graphql/incremental/IncrementalExecutionResult.java index a0bc40c32f..7d59fbe958 100644 --- a/src/main/java/graphql/incremental/IncrementalExecutionResult.java +++ b/src/main/java/graphql/incremental/IncrementalExecutionResult.java @@ -2,7 +2,7 @@ import graphql.ExecutionResult; import graphql.ExperimentalApi; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; import java.util.List; diff --git a/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java b/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java index 704d1b67cc..8bd8e62a01 100644 --- a/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java +++ b/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java @@ -3,7 +3,7 @@ import graphql.ExecutionResult; import graphql.ExecutionResultImpl; import graphql.ExperimentalApi; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import org.reactivestreams.Publisher; import java.util.LinkedHashMap; diff --git a/src/main/java/graphql/incremental/IncrementalPayload.java b/src/main/java/graphql/incremental/IncrementalPayload.java index fd2b6883f8..efeba39290 100644 --- a/src/main/java/graphql/incremental/IncrementalPayload.java +++ b/src/main/java/graphql/incremental/IncrementalPayload.java @@ -3,7 +3,7 @@ import graphql.ExperimentalApi; import graphql.GraphQLError; import graphql.execution.ResultPath; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/src/main/java/graphql/incremental/StreamPayload.java b/src/main/java/graphql/incremental/StreamPayload.java index 663d833b0c..c8b0f652e8 100644 --- a/src/main/java/graphql/incremental/StreamPayload.java +++ b/src/main/java/graphql/incremental/StreamPayload.java @@ -2,7 +2,7 @@ import graphql.ExperimentalApi; import graphql.GraphQLError; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.LinkedHashMap; import java.util.List; diff --git a/src/main/java/graphql/introspection/Introspection.java b/src/main/java/graphql/introspection/Introspection.java index 4aea32bda4..f9a80f3e80 100644 --- a/src/main/java/graphql/introspection/Introspection.java +++ b/src/main/java/graphql/introspection/Introspection.java @@ -36,7 +36,7 @@ import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLUnionType; import graphql.schema.InputValueWithState; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.HashSet; @@ -134,7 +134,7 @@ public static Optional isIntrospectionSensible(MergedSelectionS return Optional.empty(); } - @NotNull + @NonNull private static Optional mkDisabledError(MergedField schemaField) { IntrospectionDisabledError error = new IntrospectionDisabledError(schemaField.getSingleField().getSourceLocation()); return Optional.of(ExecutionResult.newExecutionResult().addError(error).build()); @@ -845,4 +845,4 @@ private static GraphQLFieldDefinition getSystemFieldDef(GraphQLSchema schema, Gr } return null; } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java b/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java index a533dd1e2d..ba939f51d5 100644 --- a/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java +++ b/src/main/java/graphql/introspection/IntrospectionWithDirectivesSupport.java @@ -8,8 +8,8 @@ import graphql.language.AstPrinter; import graphql.language.Node; import graphql.schema.DataFetcher; -import graphql.schema.GraphQLAppliedDirectiveArgument; import graphql.schema.GraphQLAppliedDirective; +import graphql.schema.GraphQLAppliedDirectiveArgument; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLDirectiveContainer; @@ -23,7 +23,7 @@ import graphql.schema.SchemaTransformer; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.List; import java.util.Set; @@ -238,7 +238,7 @@ private List filterAppliedDirectives(GraphQLSchema sche }).collect(toList()); } - @NotNull + @NonNull private DirectivePredicateEnvironment buildDirectivePredicateEnv(GraphQLSchema schema, boolean isDefinedDirective, GraphQLDirectiveContainer container, String directiveName) { return new DirectivePredicateEnvironment() { @Override diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedField.java b/src/main/java/graphql/normalized/ExecutableNormalizedField.java index f9db04b00a..963c2ae5a9 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedField.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedField.java @@ -19,8 +19,8 @@ import graphql.schema.GraphQLUnionType; import graphql.util.FpKit; import graphql.util.MutableRef; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -136,7 +136,7 @@ private ExecutableNormalizedField(Builder builder) { * * @return true if the field is conditional */ - public boolean isConditional(@NotNull GraphQLSchema schema) { + public boolean isConditional(@NonNull GraphQLSchema schema) { if (parent == null) { return false; } @@ -655,7 +655,7 @@ public Builder resolvedArguments(@Nullable Map arguments) { return this; } - public Builder astArguments(@NotNull List astArguments) { + public Builder astArguments(@NonNull List astArguments) { this.astArguments = ImmutableList.copyOf(astArguments); return this; } diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java index 56781bb447..a070fb9850 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationFactory.java @@ -42,7 +42,7 @@ import graphql.schema.GraphQLUnionType; import graphql.schema.GraphQLUnmodifiedType; import graphql.schema.impl.SchemaUtil; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java index 877decb767..bd7b0d9c40 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java @@ -29,8 +29,8 @@ import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLUnmodifiedType; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -100,10 +100,10 @@ public Map getVariables() { * * @return a {@link CompilerResult} object */ - public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + public static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, + @NonNull List topLevelFields, @Nullable VariablePredicate variablePredicate) { return compileToDocument(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); } @@ -123,11 +123,11 @@ public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, * * @return a {@link CompilerResult} object */ - public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + public static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, @Nullable VariablePredicate variablePredicate) { return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate, false); } @@ -150,10 +150,10 @@ public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, * @see ExecutableNormalizedOperationToAstCompiler#compileToDocument(GraphQLSchema, OperationDefinition.Operation, String, List, VariablePredicate) */ @ExperimentalApi - public static CompilerResult compileToDocumentWithDeferSupport(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + public static CompilerResult compileToDocumentWithDeferSupport(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, + @NonNull List topLevelFields, @Nullable VariablePredicate variablePredicate ) { return compileToDocumentWithDeferSupport(schema, operationKind, operationName, topLevelFields, Map.of(), variablePredicate); @@ -177,21 +177,21 @@ public static CompilerResult compileToDocumentWithDeferSupport(@NotNull GraphQLS * @see ExecutableNormalizedOperationToAstCompiler#compileToDocument(GraphQLSchema, OperationDefinition.Operation, String, List, Map, VariablePredicate) */ @ExperimentalApi - public static CompilerResult compileToDocumentWithDeferSupport(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + public static CompilerResult compileToDocumentWithDeferSupport(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, @Nullable VariablePredicate variablePredicate ) { return compileToDocument(schema, operationKind, operationName, topLevelFields, normalizedFieldToQueryDirectives, variablePredicate, true); } - private static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind, + private static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind, @Nullable String operationName, - @NotNull List topLevelFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull List topLevelFields, + @NonNull Map normalizedFieldToQueryDirectives, @Nullable VariablePredicate variablePredicate, boolean deferSupport) { GraphQLObjectType operationType = getOperationType(schema, operationKind); @@ -216,9 +216,9 @@ private static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, } private static List> subselectionsForNormalizedField(GraphQLSchema schema, - @NotNull String parentOutputType, + @NonNull String parentOutputType, List executableNormalizedFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator, boolean deferSupport) { if (deferSupport) { @@ -229,9 +229,9 @@ private static List> subselectionsForNormalizedField(GraphQLSchema } private static List> subselectionsForNormalizedFieldNoDeferSupport(GraphQLSchema schema, - @NotNull String parentOutputType, + @NonNull String parentOutputType, List executableNormalizedFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator) { ImmutableList.Builder> selections = ImmutableList.builder(); @@ -265,9 +265,9 @@ private static List> subselectionsForNormalizedFieldNoDeferSupport( private static List> subselectionsForNormalizedFieldWithDeferSupport(GraphQLSchema schema, - @NotNull String parentOutputType, + @NonNull String parentOutputType, List executableNormalizedFields, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator) { ImmutableList.Builder> selections = ImmutableList.builder(); @@ -339,7 +339,7 @@ private static List> subselectionsForNormalizedFieldWithDeferSuppor */ private static Map selectionForNormalizedField(GraphQLSchema schema, ExecutableNormalizedField executableNormalizedField, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator, boolean deferSupport) { Map groupedFields = new LinkedHashMap<>(); @@ -357,7 +357,7 @@ private static Map selectionForNormalizedField(GraphQLSchema sche private static Field selectionForNormalizedField(GraphQLSchema schema, String objectTypeName, ExecutableNormalizedField executableNormalizedField, - @NotNull Map normalizedFieldToQueryDirectives, + @NonNull Map normalizedFieldToQueryDirectives, VariableAccumulator variableAccumulator, boolean deferSupport) { final List> subSelections; @@ -448,7 +448,7 @@ private static Value argValue(ExecutableNormalizedField executableNormalizedF return (Value) value; } - @NotNull + @NonNull private static Value argValue(ExecutableNormalizedField executableNormalizedField, String argName, NormalizedInputValue normalizedInputValue, @@ -461,7 +461,7 @@ private static Value argValue(ExecutableNormalizedField executableNormalizedF } } - @NotNull + @NonNull private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, String parentType, ExecutableNormalizedField nf) { @@ -470,8 +470,8 @@ private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, @Nullable - private static GraphQLObjectType getOperationType(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind) { + private static GraphQLObjectType getOperationType(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind) { switch (operationKind) { case QUERY: return schema.getQueryType(); diff --git a/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java b/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java index a120c8e707..87144dcc42 100644 --- a/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java +++ b/src/main/java/graphql/normalized/ValueToVariableValueCompiler.java @@ -15,8 +15,8 @@ import graphql.language.VariableDefinition; import graphql.language.VariableReference; import graphql.parser.Parser; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.LinkedHashMap; import java.util.List; @@ -76,7 +76,7 @@ private static List normalisedValueToVariableValues(List arrayVa .collect(toList()); } - @NotNull + @NonNull private static Map normalisedValueToVariableValues(Map objectMap) { Map output = new LinkedHashMap<>(); objectMap.forEach((k, v) -> { @@ -97,7 +97,7 @@ private static Map toVariableValue(ObjectValue objectValue) { return map; } - @NotNull + @NonNull private static List toVariableValues(List arrayValues) { // some values can be null (NullValue) and hence we can use Immutable Lists return arrayValues.stream() diff --git a/src/main/java/graphql/normalized/VariableAccumulator.java b/src/main/java/graphql/normalized/VariableAccumulator.java index ccf1d43e12..e1c42bb049 100644 --- a/src/main/java/graphql/normalized/VariableAccumulator.java +++ b/src/main/java/graphql/normalized/VariableAccumulator.java @@ -2,7 +2,7 @@ import graphql.Internal; import graphql.language.VariableDefinition; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java b/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java index 2f13c4c88e..2eab7b5044 100644 --- a/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java +++ b/src/main/java/graphql/normalized/incremental/NormalizedDeferredExecution.java @@ -2,7 +2,7 @@ import graphql.ExperimentalApi; import graphql.schema.GraphQLObjectType; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.Set; diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocument.java b/src/main/java/graphql/normalized/nf/NormalizedDocument.java index 7252f1c507..6bb306fa50 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocument.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocument.java @@ -2,7 +2,7 @@ import graphql.Assert; import graphql.ExperimentalApi; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Map; diff --git a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java index 69c72c2b7b..0d5c5c77b1 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java +++ b/src/main/java/graphql/normalized/nf/NormalizedDocumentFactory.java @@ -34,7 +34,7 @@ import graphql.schema.GraphQLUnionType; import graphql.schema.GraphQLUnmodifiedType; import graphql.schema.impl.SchemaUtil; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/graphql/normalized/nf/NormalizedField.java b/src/main/java/graphql/normalized/nf/NormalizedField.java index 7c5da741bc..3b8aa08bdd 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedField.java +++ b/src/main/java/graphql/normalized/nf/NormalizedField.java @@ -20,8 +20,8 @@ import graphql.schema.GraphQLUnionType; import graphql.util.FpKit; import graphql.util.MutableRef; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -135,7 +135,7 @@ private NormalizedField(Builder builder) { * @param schema - the graphql schema in play * @return true if the field is conditional */ - public boolean isConditional(@NotNull GraphQLSchema schema) { + public boolean isConditional(@NonNull GraphQLSchema schema) { if (parent == null) { return false; } @@ -637,12 +637,12 @@ public Builder resolvedArguments(@Nullable Map arguments) { return this; } - public Builder astArguments(@NotNull List astArguments) { + public Builder astArguments(@NonNull List astArguments) { this.astArguments = ImmutableList.copyOf(astArguments); return this; } - public Builder astDirectives(@NotNull List astDirectives) { + public Builder astDirectives(@NonNull List astDirectives) { this.astDirectives = astDirectives; return this; } diff --git a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java index 6a9ce9f7aa..92471206b0 100644 --- a/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java +++ b/src/main/java/graphql/normalized/nf/NormalizedOperationToAstCompiler.java @@ -18,8 +18,8 @@ import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLUnmodifiedType; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -70,7 +70,7 @@ public Map getVariables() { } } - public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, + public static CompilerResult compileToDocument(@NonNull GraphQLSchema schema, NormalizedOperation normalizedOperation) { GraphQLObjectType operationType = getOperationType(schema, normalizedOperation.getOperation()); @@ -93,7 +93,7 @@ public static CompilerResult compileToDocument(@NotNull GraphQLSchema schema, } private static List> subSelectionsForNormalizedField(GraphQLSchema schema, - @NotNull String parentOutputType, + @NonNull String parentOutputType, List normalizedFields ) { ImmutableList.Builder> selections = ImmutableList.builder(); @@ -187,7 +187,7 @@ private static SelectionSet selectionSet(List fields) { } - @NotNull + @NonNull private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, String parentType, NormalizedField nf) { @@ -196,8 +196,8 @@ private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, @Nullable - private static GraphQLObjectType getOperationType(@NotNull GraphQLSchema schema, - @NotNull OperationDefinition.Operation operationKind) { + private static GraphQLObjectType getOperationType(@NonNull GraphQLSchema schema, + OperationDefinition.@NonNull Operation operationKind) { switch (operationKind) { case QUERY: return schema.getQueryType(); diff --git a/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java b/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java index 006499f4ff..125e184d19 100644 --- a/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java +++ b/src/main/java/graphql/parser/GraphqlAntlrToLanguage.java @@ -67,7 +67,7 @@ import org.antlr.v4.runtime.ParserRuleContext; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.tree.TerminalNode; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.math.BigInteger; diff --git a/src/main/java/graphql/parser/Parser.java b/src/main/java/graphql/parser/Parser.java index 433442b7fb..53cdab37b7 100644 --- a/src/main/java/graphql/parser/Parser.java +++ b/src/main/java/graphql/parser/Parser.java @@ -25,7 +25,7 @@ import org.antlr.v4.runtime.atn.PredictionMode; import org.antlr.v4.runtime.tree.ParseTreeListener; import org.antlr.v4.runtime.tree.TerminalNode; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.io.IOException; import java.io.Reader; @@ -270,7 +270,7 @@ private static MultiSourceReader setupMultiSourceReader(ParserEnvironment enviro return multiSourceReader; } - @NotNull + @NonNull private static SafeTokenReader setupSafeTokenReader(ParserEnvironment environment, ParserOptions parserOptions, MultiSourceReader multiSourceReader) { int maxCharacters = parserOptions.getMaxCharacters(); Consumer onTooManyCharacters = it -> { @@ -279,7 +279,7 @@ private static SafeTokenReader setupSafeTokenReader(ParserEnvironment environmen return new SafeTokenReader(multiSourceReader, maxCharacters, onTooManyCharacters); } - @NotNull + @NonNull private static CodePointCharStream setupCharStream(SafeTokenReader safeTokenReader) { CodePointCharStream charStream; try { @@ -290,7 +290,7 @@ private static CodePointCharStream setupCharStream(SafeTokenReader safeTokenRead return charStream; } - @NotNull + @NonNull private static GraphqlLexer setupGraphqlLexer(ParserEnvironment environment, MultiSourceReader multiSourceReader, CodePointCharStream charStream) { GraphqlLexer lexer = new GraphqlLexer(charStream); lexer.removeErrorListeners(); @@ -315,7 +315,7 @@ public void syntaxError(Recognizer recognizer, Object offendingSymbol, int return lexer; } - @NotNull + @NonNull private SafeTokenSource getSafeTokenSource(ParserEnvironment environment, ParserOptions parserOptions, MultiSourceReader multiSourceReader, GraphqlLexer lexer) { int maxTokens = parserOptions.getMaxTokens(); int maxWhitespaceTokens = parserOptions.getMaxWhitespaceTokens(); diff --git a/src/main/java/graphql/parser/SafeTokenReader.java b/src/main/java/graphql/parser/SafeTokenReader.java index be102be0d2..8c655d9426 100644 --- a/src/main/java/graphql/parser/SafeTokenReader.java +++ b/src/main/java/graphql/parser/SafeTokenReader.java @@ -1,7 +1,7 @@ package graphql.parser; import graphql.Internal; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.io.IOException; import java.io.Reader; @@ -40,7 +40,7 @@ private int checkHowMany(int read, int howMany) { } @Override - public int read(char @NotNull [] buff, int off, int len) throws IOException { + public int read(char @NonNull [] buff, int off, int len) throws IOException { int howMany = delegate.read(buff, off, len); return checkHowMany(howMany, howMany); } @@ -52,13 +52,13 @@ public int read() throws IOException { } @Override - public int read(@NotNull CharBuffer target) throws IOException { + public int read(@NonNull CharBuffer target) throws IOException { int howMany = delegate.read(target); return checkHowMany(howMany, howMany); } @Override - public int read( char @NotNull [] buff) throws IOException { + public int read(char @NonNull [] buff) throws IOException { int howMany = delegate.read(buff); return checkHowMany(howMany, howMany); } diff --git a/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java b/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java index be75127047..46b7ad37b3 100644 --- a/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java +++ b/src/main/java/graphql/parser/exceptions/InvalidUnicodeSyntaxException.java @@ -4,12 +4,12 @@ import graphql.i18n.I18n; import graphql.language.SourceLocation; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @Internal public class InvalidUnicodeSyntaxException extends InvalidSyntaxException { - public InvalidUnicodeSyntaxException(@NotNull I18n i18N, @NotNull String msgKey, @NotNull SourceLocation sourceLocation, @NotNull String offendingToken) { + public InvalidUnicodeSyntaxException(@NonNull I18n i18N, @NonNull String msgKey, @NonNull SourceLocation sourceLocation, @NonNull String offendingToken) { super(i18N.msg(msgKey, offendingToken, sourceLocation.getLine(), sourceLocation.getColumn()), sourceLocation, offendingToken, null, null); } diff --git a/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java b/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java index a1378b2c85..2956f3f95a 100644 --- a/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java +++ b/src/main/java/graphql/parser/exceptions/MoreTokensSyntaxException.java @@ -4,19 +4,19 @@ import graphql.i18n.I18n; import graphql.language.SourceLocation; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @Internal public class MoreTokensSyntaxException extends InvalidSyntaxException { @Internal - public MoreTokensSyntaxException(@NotNull I18n i18N, @NotNull SourceLocation sourceLocation, @NotNull String offendingToken, @NotNull String sourcePreview) { + public MoreTokensSyntaxException(@NonNull I18n i18N, @NonNull SourceLocation sourceLocation, @NonNull String offendingToken, @NonNull String sourcePreview) { super(i18N.msg("InvalidSyntaxMoreTokens.full", offendingToken, sourceLocation.getLine(), sourceLocation.getColumn()), sourceLocation, offendingToken, sourcePreview, null); } @Internal - public MoreTokensSyntaxException(@NotNull I18n i18N, @NotNull SourceLocation sourceLocation) { + public MoreTokensSyntaxException(@NonNull I18n i18N, @NonNull SourceLocation sourceLocation) { super(i18N.msg("InvalidSyntaxMoreTokens.noMessage", sourceLocation.getLine(), sourceLocation.getColumn()), sourceLocation, null, null, null); } diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledException.java index ab183367f3..4fe9541522 100644 --- a/src/main/java/graphql/parser/exceptions/ParseCancelledException.java +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledException.java @@ -4,14 +4,14 @@ import graphql.i18n.I18n; import graphql.language.SourceLocation; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; @Internal public class ParseCancelledException extends InvalidSyntaxException { @Internal - public ParseCancelledException(@NotNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NotNull String tokenType) { + public ParseCancelledException(@NonNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NonNull String tokenType) { super(i18N.msg("ParseCancelled.full", maxTokens, tokenType), sourceLocation, offendingToken, null, null); } diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java index c5f9499ec4..fe8717bedf 100644 --- a/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledTooDeepException.java @@ -4,14 +4,14 @@ import graphql.i18n.I18n; import graphql.language.SourceLocation; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; @Internal public class ParseCancelledTooDeepException extends InvalidSyntaxException { @Internal - public ParseCancelledTooDeepException(@NotNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NotNull String tokenType) { + public ParseCancelledTooDeepException(@NonNull I18n i18N, @Nullable SourceLocation sourceLocation, @Nullable String offendingToken, int maxTokens, @NonNull String tokenType) { super(i18N.msg("ParseCancelled.tooDeep", maxTokens, tokenType), sourceLocation, offendingToken, null, null); } diff --git a/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java b/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java index 1c84189f65..b861c78cfe 100644 --- a/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java +++ b/src/main/java/graphql/parser/exceptions/ParseCancelledTooManyCharsException.java @@ -3,13 +3,13 @@ import graphql.Internal; import graphql.i18n.I18n; import graphql.parser.InvalidSyntaxException; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; @Internal public class ParseCancelledTooManyCharsException extends InvalidSyntaxException { @Internal - public ParseCancelledTooManyCharsException(@NotNull I18n i18N, int maxCharacters) { + public ParseCancelledTooManyCharsException(@NonNull I18n i18N, int maxCharacters) { super(i18N.msg("ParseCancelled.tooManyChars", maxCharacters), null, null, null, null); } diff --git a/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java b/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java index 8c06b874e6..cea304a65b 100644 --- a/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlBooleanCoercing.java @@ -9,8 +9,8 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.util.Locale; @@ -54,8 +54,8 @@ private Boolean convertImpl(Object input) { } - @NotNull - private Boolean serializeImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private Boolean serializeImpl(@NonNull Object input, @NonNull Locale locale) { Boolean result = convertImpl(input); if (result == null) { throw new CoercingSerializeException( @@ -65,8 +65,8 @@ private Boolean serializeImpl(@NotNull Object input, @NotNull Locale locale) { return result; } - @NotNull - private Boolean parseValueImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private Boolean parseValueImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof Boolean)) { throw new CoercingParseValueException( i18nMsg(locale, "Boolean.unexpectedRawValueType", typeName(input)) @@ -75,7 +75,7 @@ private Boolean parseValueImpl(@NotNull Object input, @NotNull Locale locale) { return (Boolean) input; } - private static boolean parseLiteralImpl(@NotNull Object input, @NotNull Locale locale) { + private static boolean parseLiteralImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof BooleanValue)) { throw new CoercingParseLiteralException( i18nMsg(locale, "Boolean.unexpectedAstType", typeName(input)) @@ -84,8 +84,8 @@ private static boolean parseLiteralImpl(@NotNull Object input, @NotNull Locale l return ((BooleanValue) input).isValue(); } - @NotNull - private BooleanValue valueToLiteralImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private BooleanValue valueToLiteralImpl(@NonNull Object input, @NonNull Locale locale) { Boolean result = convertImpl(input); if (result == null) { assertShouldNeverHappen(i18nMsg(locale, "Boolean.notBoolean", typeName(input))); @@ -95,45 +95,45 @@ private BooleanValue valueToLiteralImpl(@NotNull Object input, @NotNull Locale l @Override @Deprecated - public Boolean serialize(@NotNull Object dataFetcherResult) { + public Boolean serialize(@NonNull Object dataFetcherResult) { return serializeImpl(dataFetcherResult, Locale.getDefault()); } @Override - public @Nullable Boolean serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable Boolean serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return serializeImpl(dataFetcherResult, locale); } @Override @Deprecated - public Boolean parseValue(@NotNull Object input) { + public Boolean parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public Boolean parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public Boolean parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public Boolean parseLiteral(@NotNull Object input) { + public Boolean parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable Boolean parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable Boolean parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public @NotNull Value valueToLiteral(@NotNull Object input) { + public @NonNull Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input, Locale.getDefault()); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input, locale); } } diff --git a/src/main/java/graphql/scalar/GraphqlFloatCoercing.java b/src/main/java/graphql/scalar/GraphqlFloatCoercing.java index 7efa270274..d1863ed450 100644 --- a/src/main/java/graphql/scalar/GraphqlFloatCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlFloatCoercing.java @@ -10,8 +10,8 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.util.Locale; @@ -52,8 +52,8 @@ private Double convertImpl(Object input) { return doubleInput; } - @NotNull - private Double serialiseImpl(Object input, @NotNull Locale locale) { + @NonNull + private Double serialiseImpl(Object input, @NonNull Locale locale) { Double result = convertImpl(input); if (result == null) { throw new CoercingSerializeException( @@ -63,8 +63,8 @@ private Double serialiseImpl(Object input, @NotNull Locale locale) { return result; } - @NotNull - private Double parseValueImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private Double parseValueImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof Number)) { throw new CoercingParseValueException( i18nMsg(locale, "Float.unexpectedRawValueType", typeName(input)) @@ -81,7 +81,7 @@ private Double parseValueImpl(@NotNull Object input, @NotNull Locale locale) { return result; } - private static double parseLiteralImpl(@NotNull Object input, @NotNull Locale locale) { + private static double parseLiteralImpl(@NonNull Object input, @NonNull Locale locale) { if (input instanceof IntValue) { return ((IntValue) input).getValue().doubleValue(); } else if (input instanceof FloatValue) { @@ -93,8 +93,8 @@ private static double parseLiteralImpl(@NotNull Object input, @NotNull Locale lo } } - @NotNull - private FloatValue valueToLiteralImpl(Object input, @NotNull Locale locale) { + @NonNull + private FloatValue valueToLiteralImpl(Object input, @NonNull Locale locale) { Double result = convertImpl(input); if (result == null) { assertShouldNeverHappen(i18nMsg(locale, "Float.notFloat", typeName(input))); @@ -104,45 +104,45 @@ private FloatValue valueToLiteralImpl(Object input, @NotNull Locale locale) { @Override @Deprecated - public Double serialize(@NotNull Object dataFetcherResult) { + public Double serialize(@NonNull Object dataFetcherResult) { return serialiseImpl(dataFetcherResult, Locale.getDefault()); } @Override - public @Nullable Double serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable Double serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return serialiseImpl(dataFetcherResult, locale); } @Override @Deprecated - public @NotNull Double parseValue(@NotNull Object input) { + public @NonNull Double parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public Double parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public Double parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public Double parseLiteral(@NotNull Object input) { + public Double parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable Double parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable Double parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public Value valueToLiteral(@NotNull Object input) { + public Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input, Locale.getDefault()); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input, locale); } } diff --git a/src/main/java/graphql/scalar/GraphqlIDCoercing.java b/src/main/java/graphql/scalar/GraphqlIDCoercing.java index 4631c93c5d..7c8c6336cf 100644 --- a/src/main/java/graphql/scalar/GraphqlIDCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlIDCoercing.java @@ -10,14 +10,13 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigInteger; import java.util.Locale; import java.util.UUID; -import static graphql.Assert.assertNotNull; import static graphql.Assert.assertShouldNeverHappen; import static graphql.scalar.CoercingUtil.i18nMsg; import static graphql.scalar.CoercingUtil.typeName; @@ -49,8 +48,8 @@ private String convertImpl(Object input) { } - @NotNull - private String serializeImpl(Object input, @NotNull Locale locale) { + @NonNull + private String serializeImpl(Object input, @NonNull Locale locale) { String result = String.valueOf(input); if (result == null) { throw new CoercingSerializeException( @@ -60,8 +59,8 @@ private String serializeImpl(Object input, @NotNull Locale locale) { return result; } - @NotNull - private String parseValueImpl(Object input, @NotNull Locale locale) { + @NonNull + private String parseValueImpl(Object input, @NonNull Locale locale) { String result = convertImpl(input); if (result == null) { throw new CoercingParseValueException( @@ -71,7 +70,7 @@ private String parseValueImpl(Object input, @NotNull Locale locale) { return result; } - private String parseLiteralImpl(Object input, @NotNull Locale locale) { + private String parseLiteralImpl(Object input, @NonNull Locale locale) { if (input instanceof StringValue) { return ((StringValue) input).getValue(); } @@ -83,8 +82,8 @@ private String parseLiteralImpl(Object input, @NotNull Locale locale) { ); } - @NotNull - private StringValue valueToLiteralImpl(Object input, @NotNull Locale locale) { + @NonNull + private StringValue valueToLiteralImpl(Object input, @NonNull Locale locale) { String result = convertImpl(input); if (result == null) { assertShouldNeverHappen(i18nMsg(locale, "ID.notId", typeName(input))); @@ -94,45 +93,45 @@ private StringValue valueToLiteralImpl(Object input, @NotNull Locale locale) { @Override @Deprecated - public String serialize(@NotNull Object dataFetcherResult) { + public String serialize(@NonNull Object dataFetcherResult) { return serializeImpl(dataFetcherResult, Locale.getDefault()); } @Override - public @Nullable Object serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable Object serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return serializeImpl(dataFetcherResult, locale); } @Override @Deprecated - public String parseValue(@NotNull Object input) { + public String parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public Object parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public Object parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public String parseLiteral(@NotNull Object input) { + public String parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable Object parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable Object parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public Value valueToLiteral(@NotNull Object input) { + public Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input, Locale.getDefault()); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input, locale); } } diff --git a/src/main/java/graphql/scalar/GraphqlIntCoercing.java b/src/main/java/graphql/scalar/GraphqlIntCoercing.java index cf428fc8cf..bac8822f13 100644 --- a/src/main/java/graphql/scalar/GraphqlIntCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlIntCoercing.java @@ -9,8 +9,8 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.math.BigDecimal; import java.math.BigInteger; @@ -51,8 +51,8 @@ private Integer convertImpl(Object input) { } } - @NotNull - private Integer serialiseImpl(Object input, @NotNull Locale locale) { + @NonNull + private Integer serialiseImpl(Object input, @NonNull Locale locale) { Integer result = convertImpl(input); if (result == null) { throw new CoercingSerializeException( @@ -62,8 +62,8 @@ private Integer serialiseImpl(Object input, @NotNull Locale locale) { return result; } - @NotNull - private Integer parseValueImpl(@NotNull Object input, @NotNull Locale locale) { + @NonNull + private Integer parseValueImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof Number)) { throw new CoercingParseValueException( i18nMsg(locale, "Int.notInt", typeName(input)) @@ -104,7 +104,7 @@ private BigInteger convertParseValueImpl(Object input) { } } - private static int parseLiteralImpl(Object input, @NotNull Locale locale) { + private static int parseLiteralImpl(Object input, @NonNull Locale locale) { if (!(input instanceof IntValue)) { throw new CoercingParseLiteralException( i18nMsg(locale, "Scalar.unexpectedAstType", "IntValue", typeName(input)) @@ -119,7 +119,7 @@ private static int parseLiteralImpl(Object input, @NotNull Locale locale) { return value.intValue(); } - private IntValue valueToLiteralImpl(Object input, @NotNull Locale locale) { + private IntValue valueToLiteralImpl(Object input, @NonNull Locale locale) { Integer result = convertImpl(input); if (result == null) { assertShouldNeverHappen(i18nMsg(locale, "Int.notInt", typeName(input))); @@ -130,45 +130,45 @@ private IntValue valueToLiteralImpl(Object input, @NotNull Locale locale) { @Override @Deprecated - public Integer serialize(@NotNull Object dataFetcherResult) { + public Integer serialize(@NonNull Object dataFetcherResult) { return serialiseImpl(dataFetcherResult, Locale.getDefault()); } @Override - public @Nullable Integer serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable Integer serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return serialiseImpl(dataFetcherResult, locale); } @Override @Deprecated - public Integer parseValue(@NotNull Object input) { + public Integer parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public Integer parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public Integer parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public Integer parseLiteral(@NotNull Object input) { + public Integer parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable Integer parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable Integer parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public @NotNull Value valueToLiteral(@NotNull Object input) { + public @NonNull Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input, Locale.getDefault()); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input, locale); } } diff --git a/src/main/java/graphql/scalar/GraphqlStringCoercing.java b/src/main/java/graphql/scalar/GraphqlStringCoercing.java index 9040cc03f8..64ab93a911 100644 --- a/src/main/java/graphql/scalar/GraphqlStringCoercing.java +++ b/src/main/java/graphql/scalar/GraphqlStringCoercing.java @@ -9,8 +9,8 @@ import graphql.schema.CoercingParseLiteralException; import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Locale; @@ -28,7 +28,7 @@ private String toStringImpl(Object input) { return String.valueOf(input); } - private String parseValueImpl(@NotNull Object input, @NotNull Locale locale) { + private String parseValueImpl(@NonNull Object input, @NonNull Locale locale) { if (!(input instanceof String)) { throw new CoercingParseValueException( i18nMsg(locale, "String.unexpectedRawValueType", typeName(input)) @@ -37,7 +37,7 @@ private String parseValueImpl(@NotNull Object input, @NotNull Locale locale) { return (String) input; } - private String parseLiteralImpl(@NotNull Object input, Locale locale) { + private String parseLiteralImpl(@NonNull Object input, Locale locale) { if (!(input instanceof StringValue)) { throw new CoercingParseLiteralException( i18nMsg(locale, "Scalar.unexpectedAstType", "StringValue", typeName(input)) @@ -46,51 +46,51 @@ private String parseLiteralImpl(@NotNull Object input, Locale locale) { return ((StringValue) input).getValue(); } - private StringValue valueToLiteralImpl(@NotNull Object input) { + private StringValue valueToLiteralImpl(@NonNull Object input) { return StringValue.newStringValue(input.toString()).build(); } @Override @Deprecated - public String serialize(@NotNull Object dataFetcherResult) { + public String serialize(@NonNull Object dataFetcherResult) { return toStringImpl(dataFetcherResult); } @Override - public @Nullable String serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + public @Nullable String serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { return toStringImpl(dataFetcherResult); } @Override @Deprecated - public String parseValue(@NotNull Object input) { + public String parseValue(@NonNull Object input) { return parseValueImpl(input, Locale.getDefault()); } @Override - public String parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + public String parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { return parseValueImpl(input, locale); } @Override @Deprecated - public String parseLiteral(@NotNull Object input) { + public String parseLiteral(@NonNull Object input) { return parseLiteralImpl(input, Locale.getDefault()); } @Override - public @Nullable String parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + public @Nullable String parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { return parseLiteralImpl(input, locale); } @Override @Deprecated - public @NotNull Value valueToLiteral(@NotNull Object input) { + public @NonNull Value valueToLiteral(@NonNull Object input) { return valueToLiteralImpl(input); } @Override - public @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + public @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { return valueToLiteralImpl(input); } } diff --git a/src/main/java/graphql/schema/Coercing.java b/src/main/java/graphql/schema/Coercing.java index cf8de535a5..3f580776aa 100644 --- a/src/main/java/graphql/schema/Coercing.java +++ b/src/main/java/graphql/schema/Coercing.java @@ -5,8 +5,8 @@ import graphql.PublicSpi; import graphql.execution.CoercedVariables; import graphql.language.Value; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.Locale; import java.util.Map; @@ -54,7 +54,7 @@ public interface Coercing { * @throws graphql.schema.CoercingSerializeException if value input can't be serialized */ @Deprecated(since = "2022-08-22") - default @Nullable O serialize(@NotNull Object dataFetcherResult) throws CoercingSerializeException { + default @Nullable O serialize(@NonNull Object dataFetcherResult) throws CoercingSerializeException { throw new UnsupportedOperationException("The non deprecated version of serialize has not been implemented by this scalar : " + this.getClass()); } @@ -75,7 +75,7 @@ public interface Coercing { * * @throws graphql.schema.CoercingSerializeException if value input can't be serialized */ - default @Nullable O serialize(@NotNull Object dataFetcherResult, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingSerializeException { + default @Nullable O serialize(@NonNull Object dataFetcherResult, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingSerializeException { assertNotNull(dataFetcherResult); assertNotNull(graphQLContext); return serialize(dataFetcherResult); @@ -98,7 +98,7 @@ public interface Coercing { * @throws graphql.schema.CoercingParseValueException if value input can't be parsed */ @Deprecated(since = "2022-08-22") - default @Nullable I parseValue(@NotNull Object input) throws CoercingParseValueException { + default @Nullable I parseValue(@NonNull Object input) throws CoercingParseValueException { throw new UnsupportedOperationException("The non deprecated version of parseValue has not been implemented by this scalar : " + this.getClass()); } @@ -119,7 +119,7 @@ public interface Coercing { * @throws graphql.schema.CoercingParseValueException if value input can't be parsed */ @Nullable - default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseValueException { + default I parseValue(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseValueException { assertNotNull(input); assertNotNull(graphQLContext); assertNotNull(locale); @@ -144,7 +144,7 @@ default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLConte * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed */ @Deprecated(since = "2022-08-22") - default @Nullable I parseLiteral(@NotNull Object input) throws CoercingParseLiteralException { + default @Nullable I parseLiteral(@NonNull Object input) throws CoercingParseLiteralException { throw new UnsupportedOperationException("The non deprecated version of parseLiteral has not been implemented by this scalar : " + this.getClass()); } @@ -198,7 +198,7 @@ default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLConte * * @throws graphql.schema.CoercingParseLiteralException if input literal can't be parsed */ - default @Nullable I parseLiteral(@NotNull Value input, @NotNull CoercedVariables variables, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) throws CoercingParseLiteralException { + default @Nullable I parseLiteral(@NonNull Value input, @NonNull CoercedVariables variables, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) throws CoercingParseLiteralException { assertNotNull(input); assertNotNull(graphQLContext); assertNotNull(locale); @@ -218,7 +218,7 @@ default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLConte * @return The literal matching the external input value. */ @Deprecated(since = "2022-08-22") - default @NotNull Value valueToLiteral(@NotNull Object input) { + default @NonNull Value valueToLiteral(@NonNull Object input) { throw new UnsupportedOperationException("The non deprecated version of valueToLiteral has not been implemented by this scalar : " + this.getClass()); } @@ -233,7 +233,7 @@ default I parseValue(@NotNull Object input, @NotNull GraphQLContext graphQLConte * * @return The literal matching the external input value. */ - default @NotNull Value valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + default @NonNull Value valueToLiteral(@NonNull Object input, @NonNull GraphQLContext graphQLContext, @NonNull Locale locale) { assertNotNull(input); assertNotNull(graphQLContext); assertNotNull(locale); diff --git a/src/main/java/graphql/schema/DataFetchingEnvironment.java b/src/main/java/graphql/schema/DataFetchingEnvironment.java index 3c19f03329..cc38ec0cc1 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironment.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironment.java @@ -13,8 +13,8 @@ import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -101,7 +101,7 @@ public interface DataFetchingEnvironment extends IntrospectionDataFetchingEnviro * * @return can NOT be null */ - @NotNull + @NonNull GraphQLContext getGraphQlContext(); /** diff --git a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java index 440ec86159..356988055f 100644 --- a/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java +++ b/src/main/java/graphql/schema/DataFetchingEnvironmentImpl.java @@ -17,8 +17,8 @@ import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -131,7 +131,7 @@ public T getContext() { } @Override - public @NotNull GraphQLContext getGraphQlContext() { + public @NonNull GraphQLContext getGraphQlContext() { return graphQLContext; } diff --git a/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java b/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java index 0509684647..b39d8a40b0 100644 --- a/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java +++ b/src/main/java/graphql/schema/DelegatingDataFetchingEnvironment.java @@ -12,8 +12,8 @@ import graphql.language.OperationDefinition; import org.dataloader.DataLoader; import org.dataloader.DataLoaderRegistry; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Locale; @@ -72,7 +72,7 @@ public T getContext() { } @Override - public @NotNull GraphQLContext getGraphQlContext() { + public @NonNull GraphQLContext getGraphQlContext() { return delegateEnvironment.getGraphQlContext(); } diff --git a/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java b/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java index 6f19bbd126..4446894ec9 100644 --- a/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java +++ b/src/main/java/graphql/schema/GraphQLAppliedDirectiveArgument.java @@ -8,8 +8,8 @@ import graphql.language.Value; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -70,7 +70,7 @@ public boolean hasSetValue() { /** * @return an input value with state for an applied directive argument */ - public @NotNull InputValueWithState getArgumentValue() { + public @NonNull InputValueWithState getArgumentValue() { return value; } @@ -218,7 +218,7 @@ public Builder definition(Argument definition) { * * @return this builder */ - public Builder valueLiteral(@NotNull Value value) { + public Builder valueLiteral(@NonNull Value value) { this.value = InputValueWithState.newLiteralValue(value); return this; } @@ -233,7 +233,7 @@ public Builder valueProgrammatic(@Nullable Object value) { return this; } - public Builder inputValueWithState(@NotNull InputValueWithState value) { + public Builder inputValueWithState(@NonNull InputValueWithState value) { this.value = Assert.assertNotNull(value); return this; } diff --git a/src/main/java/graphql/schema/GraphQLArgument.java b/src/main/java/graphql/schema/GraphQLArgument.java index 5f52f294cb..55d22dcff2 100644 --- a/src/main/java/graphql/schema/GraphQLArgument.java +++ b/src/main/java/graphql/schema/GraphQLArgument.java @@ -8,8 +8,8 @@ import graphql.language.Value; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.List; @@ -104,7 +104,7 @@ public GraphQLInputType getType() { * * @return a {@link InputValueWithState} that represents the arguments default value */ - public @NotNull InputValueWithState getArgumentDefaultValue() { + public @NonNull InputValueWithState getArgumentDefaultValue() { return defaultValue; } @@ -125,7 +125,7 @@ public boolean hasSetValue() { * @deprecated use {@link GraphQLAppliedDirectiveArgument} instead */ @Deprecated(since = "2022-02-24") - public @NotNull InputValueWithState getArgumentValue() { + public @NonNull InputValueWithState getArgumentValue() { return value; } @@ -382,7 +382,7 @@ public Builder defaultValue(Object defaultValue) { * * @return this builder */ - public Builder defaultValueLiteral(@NotNull Value defaultValue) { + public Builder defaultValueLiteral(@NonNull Value defaultValue) { this.defaultValue = InputValueWithState.newLiteralValue(defaultValue); return this; } @@ -432,7 +432,7 @@ public Builder value(@Nullable Object value) { * @deprecated use {@link GraphQLAppliedDirectiveArgument} methods instead */ @Deprecated(since = "2022-02-24") - public Builder valueLiteral(@NotNull Value value) { + public Builder valueLiteral(@NonNull Value value) { this.value = InputValueWithState.newLiteralValue(value); return this; } diff --git a/src/main/java/graphql/schema/GraphQLEnumType.java b/src/main/java/graphql/schema/GraphQLEnumType.java index 78d08fa900..856907315d 100644 --- a/src/main/java/graphql/schema/GraphQLEnumType.java +++ b/src/main/java/graphql/schema/GraphQLEnumType.java @@ -13,7 +13,7 @@ import graphql.util.FpKit; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -150,7 +150,7 @@ private ImmutableMap buildMap(List assertShouldNeverHappen("Duplicated definition for field '%s' in type '%s'", fld1.getName(), this.name))); } - private Object getValueByName(@NotNull Object value, GraphQLContext graphQLContext, Locale locale) { + private Object getValueByName(@NonNull Object value, GraphQLContext graphQLContext, Locale locale) { GraphQLEnumValueDefinition enumValueDefinition = valueDefinitionMap.get(value.toString()); if (enumValueDefinition != null) { return enumValueDefinition.getValue(); diff --git a/src/main/java/graphql/schema/GraphQLInputObjectField.java b/src/main/java/graphql/schema/GraphQLInputObjectField.java index 60e680fb30..14ce1cf591 100644 --- a/src/main/java/graphql/schema/GraphQLInputObjectField.java +++ b/src/main/java/graphql/schema/GraphQLInputObjectField.java @@ -8,7 +8,7 @@ import graphql.language.Value; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.List; @@ -87,7 +87,7 @@ public GraphQLInputType getType() { * * @return a input value with captured state */ - public @NotNull InputValueWithState getInputFieldDefaultValue() { + public @NonNull InputValueWithState getInputFieldDefaultValue() { return defaultValue; } diff --git a/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java b/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java index 4c0801b078..704bc99623 100644 --- a/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java +++ b/src/main/java/graphql/schema/GraphQLNamedSchemaElement.java @@ -2,8 +2,8 @@ import graphql.PublicApi; import graphql.language.Node; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; /** * A Schema element which has a name and also a description and AST Node which it is based on. @@ -14,7 +14,7 @@ public interface GraphQLNamedSchemaElement extends GraphQLSchemaElement { /** * @return the name of this element. This cant be null */ - @NotNull + @NonNull String getName(); /** diff --git a/src/main/java/graphql/schema/GraphQLSchema.java b/src/main/java/graphql/schema/GraphQLSchema.java index 021932c1b7..498010f7f0 100644 --- a/src/main/java/graphql/schema/GraphQLSchema.java +++ b/src/main/java/graphql/schema/GraphQLSchema.java @@ -18,8 +18,8 @@ import graphql.schema.validation.InvalidSchemaException; import graphql.schema.validation.SchemaValidationError; import graphql.schema.validation.SchemaValidator; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -230,7 +230,7 @@ public Set getAdditionalTypes() { * * @return the type */ - public @Nullable GraphQLType getType(@NotNull String typeName) { + public @Nullable GraphQLType getType(@NonNull String typeName) { return typeMap.get(typeName); } diff --git a/src/main/java/graphql/schema/InputValueWithState.java b/src/main/java/graphql/schema/InputValueWithState.java index 33ef45d062..1d489a117e 100644 --- a/src/main/java/graphql/schema/InputValueWithState.java +++ b/src/main/java/graphql/schema/InputValueWithState.java @@ -2,8 +2,8 @@ import graphql.PublicApi; import graphql.language.Value; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import static graphql.Assert.assertNotNull; @@ -44,7 +44,7 @@ private InputValueWithState(State state, Object value) { public static final InputValueWithState NOT_SET = new InputValueWithState(State.NOT_SET, null); - public static InputValueWithState newLiteralValue(@NotNull Value value) { + public static InputValueWithState newLiteralValue(@NonNull Value value) { assertNotNull(value, () -> "value literal can't be null"); return new InputValueWithState(State.LITERAL, value); } @@ -88,4 +88,4 @@ public String toString() { ", value=" + value + '}'; } -} \ No newline at end of file +} diff --git a/src/main/java/graphql/schema/diffing/SchemaGraph.java b/src/main/java/graphql/schema/diffing/SchemaGraph.java index 02b07ca6b9..a89c35cdbe 100644 --- a/src/main/java/graphql/schema/diffing/SchemaGraph.java +++ b/src/main/java/graphql/schema/diffing/SchemaGraph.java @@ -7,7 +7,7 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Table; import graphql.ExperimentalApi; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.Collection; @@ -18,7 +18,6 @@ import java.util.function.Predicate; import static graphql.Assert.assertTrue; -import static java.lang.String.format; @ExperimentalApi public class SchemaGraph { diff --git a/src/main/java/graphql/schema/usage/SchemaUsageSupport.java b/src/main/java/graphql/schema/usage/SchemaUsageSupport.java index 2f86da5c76..f51bb0429d 100644 --- a/src/main/java/graphql/schema/usage/SchemaUsageSupport.java +++ b/src/main/java/graphql/schema/usage/SchemaUsageSupport.java @@ -22,7 +22,6 @@ import graphql.schema.SchemaTraverser; import graphql.util.TraversalControl; import graphql.util.TraverserContext; -import org.jetbrains.annotations.Nullable; import java.util.HashSet; import java.util.List; diff --git a/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java index 08880c0d49..41bb7edffc 100644 --- a/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java +++ b/src/main/java/graphql/schema/visitor/GraphQLSchemaVisitorEnvironmentImpl.java @@ -6,13 +6,16 @@ import graphql.schema.GraphQLSchema; import graphql.schema.GraphQLSchemaElement; import graphql.util.TraverserContext; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; -import static graphql.schema.visitor.GraphQLSchemaTraversalControl.*; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.CONTINUE; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.Control; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.DELETE; +import static graphql.schema.visitor.GraphQLSchemaTraversalControl.QUIT; @Internal class GraphQLSchemaVisitorEnvironmentImpl implements GraphQLSchemaVisitorEnvironment { @@ -50,7 +53,7 @@ public List getUnwrappedLeadingElements() { return buildParentsImpl(schemaElement -> !(schemaElement instanceof GraphQLModifiedType)); } - @NotNull + @NonNull private List buildParentsImpl(Predicate predicate) { List list = new ArrayList<>(); TraverserContext parentContext = context.getParentContext(); diff --git a/src/main/java/graphql/util/Interning.java b/src/main/java/graphql/util/Interning.java index bc51b3ebff..acbb54fdaf 100644 --- a/src/main/java/graphql/util/Interning.java +++ b/src/main/java/graphql/util/Interning.java @@ -3,7 +3,7 @@ import com.google.common.collect.Interner; import com.google.common.collect.Interners; import graphql.Internal; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; /** * Interner allowing object-identity comparison of key entities like field names. This is useful on hotspot @@ -18,7 +18,7 @@ private Interning() { private static final Interner INTERNER = Interners.newWeakInterner(); - public static @NotNull String intern(@NotNull String name) { + public static @NonNull String intern(@NonNull String name) { return INTERNER.intern(name); } diff --git a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy index a98cf833e2..6695038a6a 100644 --- a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy @@ -13,8 +13,6 @@ import graphql.language.AstPrinter import graphql.parser.Parser import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment -import graphql.schema.LightDataFetcher -import graphql.schema.PropertyDataFetcher import graphql.schema.SingletonPropertyDataFetcher import graphql.schema.StaticDataFetcher import org.awaitility.Awaitility diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java index aaaa46c9d3..19ebffc466 100644 --- a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingOrderedPublisherRandomCompleteTckVerificationTest.java @@ -1,9 +1,8 @@ package graphql.execution.reactive.tck; import graphql.execution.reactive.CompletionStageMappingOrderedPublisher; -import graphql.execution.reactive.CompletionStageMappingPublisher; import io.reactivex.Flowable; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import org.reactivestreams.tck.PublisherVerification; import org.reactivestreams.tck.TestEnvironment; @@ -48,7 +47,7 @@ public boolean skipStochasticTests() { return true; } - @NotNull + @NonNull private static Function> mapperFunc() { return i -> CompletableFuture.supplyAsync(() -> { int ms = rand(0, 5); diff --git a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java index 2455b3ee44..889b18eeeb 100644 --- a/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java +++ b/src/test/groovy/graphql/execution/reactive/tck/CompletionStageMappingPublisherRandomCompleteTckVerificationTest.java @@ -2,7 +2,7 @@ import graphql.execution.reactive.CompletionStageMappingPublisher; import io.reactivex.Flowable; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import org.reactivestreams.tck.PublisherVerification; import org.reactivestreams.tck.TestEnvironment; @@ -47,7 +47,7 @@ public boolean skipStochasticTests() { return true; } - @NotNull + @NonNull private static Function> mapperFunc() { return i -> CompletableFuture.supplyAsync(() -> { int ms = rand(0, 5); diff --git a/src/test/groovy/readme/InstrumentationExamples.java b/src/test/groovy/readme/InstrumentationExamples.java index 60ad4dc4dc..142cd4f240 100644 --- a/src/test/groovy/readme/InstrumentationExamples.java +++ b/src/test/groovy/readme/InstrumentationExamples.java @@ -21,8 +21,8 @@ import graphql.execution.instrumentation.tracing.TracingInstrumentation; import graphql.schema.DataFetcher; import graphql.schema.GraphQLSchema; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.ArrayList; import java.util.HashMap; @@ -86,7 +86,7 @@ public void onCompleted(ExecutionResult result, Throwable t) { } @Override - public @NotNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { + public @NonNull DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { // // this allows you to intercept the data fetcher used to fetch a field and provide another one, perhaps // that enforces certain behaviours or has certain side effects on the data @@ -95,7 +95,7 @@ public void onCompleted(ExecutionResult result, Throwable t) { } @Override - public @NotNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + public @NonNull CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { // // this allows you to instrument the execution result somehow. For example the Tracing support uses this to put // the `extensions` map of data in place diff --git a/src/test/java/reproductions/SubscriptionReproduction.java b/src/test/java/reproductions/SubscriptionReproduction.java index 07be4d000b..47bde26e74 100644 --- a/src/test/java/reproductions/SubscriptionReproduction.java +++ b/src/test/java/reproductions/SubscriptionReproduction.java @@ -9,7 +9,7 @@ import graphql.schema.idl.RuntimeWiring; import graphql.schema.idl.SchemaGenerator; import graphql.schema.idl.SchemaParser; -import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; @@ -134,7 +134,7 @@ private static Integer getCounter(Map video) { return counter; } - private @NotNull Object mkValue(Integer counter) { + private @NonNull Object mkValue(Integer counter) { // name and isFavorite are future values via DFs return Map.of( "counter", counter, From d8089ac4e3834c76fea252f673ca92bebf878cfa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 12 Mar 2025 01:40:28 +0000 Subject: [PATCH 236/345] Add performance results for commit 11a2be59907cdbd3bb9943a941861930807555de --- ...07cdbd3bb9943a941861930807555de-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json diff --git a/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json b/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json new file mode 100644 index 0000000000..5dedbbda14 --- /dev/null +++ b/performance-results/2025-03-12T01:40:12Z-11a2be59907cdbd3bb9943a941861930807555de-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4076702946979935, + "scoreError" : 0.03121695051498341, + "scoreConfidence" : [ + 3.3764533441830102, + 3.438887245212977 + ], + "scorePercentiles" : { + "0.0" : 3.4023668922631765, + "50.0" : 3.407716749267827, + "90.0" : 3.4128807879931413, + "95.0" : 3.4128807879931413, + "99.0" : 3.4128807879931413, + "99.9" : 3.4128807879931413, + "99.99" : 3.4128807879931413, + "99.999" : 3.4128807879931413, + "99.9999" : 3.4128807879931413, + "100.0" : 3.4128807879931413 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4023668922631765, + 3.410430779758213 + ], + [ + 3.4050027187774417, + 3.4128807879931413 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7203584625512023, + "scoreError" : 0.016926372222672525, + "scoreConfidence" : [ + 1.7034320903285298, + 1.7372848347738747 + ], + "scorePercentiles" : { + "0.0" : 1.7179994830077605, + "50.0" : 1.7197199204007574, + "90.0" : 1.7239945263955332, + "95.0" : 1.7239945263955332, + "99.0" : 1.7239945263955332, + "99.9" : 1.7239945263955332, + "99.99" : 1.7239945263955332, + "99.999" : 1.7239945263955332, + "99.9999" : 1.7239945263955332, + "100.0" : 1.7239945263955332 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.720420690227677, + 1.7239945263955332 + ], + [ + 1.7179994830077605, + 1.7190191505738377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8648697545079026, + "scoreError" : 0.0075160983778016855, + "scoreConfidence" : [ + 0.857353656130101, + 0.8723858528857042 + ], + "scorePercentiles" : { + "0.0" : 0.863427883815053, + "50.0" : 0.8649943438233192, + "90.0" : 0.8660624465699193, + "95.0" : 0.8660624465699193, + "99.0" : 0.8660624465699193, + "99.9" : 0.8660624465699193, + "99.99" : 0.8660624465699193, + "99.999" : 0.8660624465699193, + "99.9999" : 0.8660624465699193, + "100.0" : 0.8660624465699193 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8644814960543413, + 0.8655071915922969 + ], + [ + 0.863427883815053, + 0.8660624465699193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69389.95500863831, + "scoreError" : 1755.8886125589615, + "scoreConfidence" : [ + 67634.06639607935, + 71145.84362119727 + ], + "scorePercentiles" : { + "0.0" : 68185.71876777064, + "50.0" : 69278.7096608454, + "90.0" : 70722.78777504961, + "95.0" : 70722.78777504961, + "99.0" : 70722.78777504961, + "99.9" : 70722.78777504961, + "99.99" : 70722.78777504961, + "99.999" : 70722.78777504961, + "99.9999" : 70722.78777504961, + "100.0" : 70722.78777504961 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69364.0209108631, + 69204.40314517489, + 69278.7096608454 + ], + [ + 70609.4285342994, + 70601.79215979534, + 70722.78777504961 + ], + [ + 68185.71876777064, + 68237.46553567571, + 68305.26858827074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 340.8338008020541, + "scoreError" : 2.893493166734086, + "scoreConfidence" : [ + 337.94030763532004, + 343.72729396878816 + ], + "scorePercentiles" : { + "0.0" : 337.51858191131913, + "50.0" : 341.0045137233911, + "90.0" : 343.1466067997579, + "95.0" : 343.1466067997579, + "99.0" : 343.1466067997579, + "99.9" : 343.1466067997579, + "99.99" : 343.1466067997579, + "99.999" : 343.1466067997579, + "99.9999" : 343.1466067997579, + "100.0" : 343.1466067997579 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 341.79525643351167, + 340.68463968792423, + 339.4671920234933 + ], + [ + 339.7021322573094, + 341.88583929366797, + 342.2994450881126 + ], + [ + 343.1466067997579, + 341.0045137233911, + 337.51858191131913 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 101.9505095823736, + "scoreError" : 3.70236669542828, + "scoreConfidence" : [ + 98.24814288694532, + 105.65287627780188 + ], + "scorePercentiles" : { + "0.0" : 98.95005773885293, + "50.0" : 101.69121875987764, + "90.0" : 104.79007731231022, + "95.0" : 104.79007731231022, + "99.0" : 104.79007731231022, + "99.9" : 104.79007731231022, + "99.99" : 104.79007731231022, + "99.999" : 104.79007731231022, + "99.9999" : 104.79007731231022, + "100.0" : 104.79007731231022 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.69121875987764, + 100.87319417929982, + 102.02589744799347 + ], + [ + 100.31006870314435, + 98.95005773885293, + 99.839171786519 + ], + [ + 104.51878795064138, + 104.79007731231022, + 104.55611236272352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014207907244656271, + "scoreError" : 1.406139052230887E-4, + "scoreConfidence" : [ + 0.014067293339433183, + 0.01434852114987936 + ], + "scorePercentiles" : { + "0.0" : 0.014080431946664038, + "50.0" : 0.014222649451795088, + "90.0" : 0.01430348100952599, + "95.0" : 0.01430348100952599, + "99.0" : 0.01430348100952599, + "99.9" : 0.01430348100952599, + "99.99" : 0.01430348100952599, + "99.999" : 0.01430348100952599, + "99.9999" : 0.01430348100952599, + "100.0" : 0.01430348100952599 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01410771311237201, + 0.014080431946664038, + 0.014127782222950578 + ], + [ + 0.014288505505292396, + 0.01430348100952599, + 0.014290552535683052 + ], + [ + 0.014220443325151943, + 0.014229606092471352, + 0.014222649451795088 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9899931875389658, + "scoreError" : 0.019138091109985326, + "scoreConfidence" : [ + 0.9708550964289805, + 1.0091312786489512 + ], + "scorePercentiles" : { + "0.0" : 0.9765089769553754, + "50.0" : 0.9884470899476129, + "90.0" : 1.0120053324225866, + "95.0" : 1.0120053324225866, + "99.0" : 1.0120053324225866, + "99.9" : 1.0120053324225866, + "99.99" : 1.0120053324225866, + "99.999" : 1.0120053324225866, + "99.9999" : 1.0120053324225866, + "100.0" : 1.0120053324225866 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9765089769553754, + 0.9884470899476129, + 0.9902420496088722 + ], + [ + 0.98586842636041, + 0.9818955948944527, + 0.9790268553108175 + ], + [ + 1.0120053324225866, + 1.0023681029367546, + 0.9935762594138102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013177577224591489, + "scoreError" : 4.270440246067902E-4, + "scoreConfidence" : [ + 0.012750533199984699, + 0.013604621249198279 + ], + "scorePercentiles" : { + "0.0" : 0.012983986930667359, + "50.0" : 0.013193273216565243, + "90.0" : 0.013348885971492874, + "95.0" : 0.013348885971492874, + "99.0" : 0.013348885971492874, + "99.9" : 0.013348885971492874, + "99.99" : 0.013348885971492874, + "99.999" : 0.013348885971492874, + "99.9999" : 0.013348885971492874, + "100.0" : 0.013348885971492874 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013293016413664762, + 0.013348885971492874, + 0.013292778899067935 + ], + [ + 0.012983986930667359, + 0.01309376753406255, + 0.013053027598593442 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8965855004740657, + "scoreError" : 0.13698940967062448, + "scoreConfidence" : [ + 3.7595960908034414, + 4.03357491014469 + ], + "scorePercentiles" : { + "0.0" : 3.8204210718105425, + "50.0" : 3.8998276071221425, + "90.0" : 3.9658294631245044, + "95.0" : 3.9658294631245044, + "99.0" : 3.9658294631245044, + "99.9" : 3.9658294631245044, + "99.99" : 3.9658294631245044, + "99.999" : 3.9658294631245044, + "99.9999" : 3.9658294631245044, + "100.0" : 3.9658294631245044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9658294631245044, + 3.885656021756022, + 3.9181803915426783 + ], + [ + 3.8204210718105425, + 3.913999192488263, + 3.875426862122386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.953343152087654, + "scoreError" : 0.1008413095317884, + "scoreConfidence" : [ + 2.8525018425558653, + 3.0541844616194425 + ], + "scorePercentiles" : { + "0.0" : 2.8928908501590973, + "50.0" : 2.9422236131215063, + "90.0" : 3.05081770347773, + "95.0" : 3.05081770347773, + "99.0" : 3.05081770347773, + "99.9" : 3.05081770347773, + "99.99" : 3.05081770347773, + "99.999" : 3.05081770347773, + "99.9999" : 3.05081770347773, + "100.0" : 3.05081770347773 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9494852205838984, + 2.9129140305765873, + 2.8928908501590973 + ], + [ + 3.033292042462845, + 2.997000550494456, + 3.05081770347773 + ], + [ + 2.9422236131215063, + 2.895923255356109, + 2.9055411025566533 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1740608663647572, + "scoreError" : 0.0031797824390332624, + "scoreConfidence" : [ + 0.17088108392572393, + 0.17724064880379048 + ], + "scorePercentiles" : { + "0.0" : 0.1714743284349869, + "50.0" : 0.17423779480433496, + "90.0" : 0.17657913986544949, + "95.0" : 0.17657913986544949, + "99.0" : 0.17657913986544949, + "99.9" : 0.17657913986544949, + "99.99" : 0.17657913986544949, + "99.999" : 0.17657913986544949, + "99.9999" : 0.17657913986544949, + "100.0" : 0.17657913986544949 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17490636216878006, + 0.17413062688490336, + 0.17423779480433496 + ], + [ + 0.17180489303691995, + 0.17198642027689398, + 0.1714743284349869 + ], + [ + 0.17657913986544949, + 0.17574860689618813, + 0.17567962491435798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3220899653280465, + "scoreError" : 0.011797543311675193, + "scoreConfidence" : [ + 0.3102924220163713, + 0.3338875086397217 + ], + "scorePercentiles" : { + "0.0" : 0.3133007488329835, + "50.0" : 0.32191402085948817, + "90.0" : 0.33121310459378, + "95.0" : 0.33121310459378, + "99.0" : 0.33121310459378, + "99.9" : 0.33121310459378, + "99.99" : 0.33121310459378, + "99.999" : 0.33121310459378, + "99.9999" : 0.33121310459378, + "100.0" : 0.33121310459378 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32191402085948817, + 0.32146066157703557, + 0.32222403992266796 + ], + [ + 0.33121310459378, + 0.3296149954843601, + 0.33000252455121437 + ], + [ + 0.3147955884852682, + 0.3133007488329835, + 0.31428400364562054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16434010627076526, + "scoreError" : 0.006922172642315291, + "scoreConfidence" : [ + 0.15741793362844997, + 0.17126227891308055 + ], + "scorePercentiles" : { + "0.0" : 0.158946975888103, + "50.0" : 0.16548735592182562, + "90.0" : 0.16844729587144372, + "95.0" : 0.16844729587144372, + "99.0" : 0.16844729587144372, + "99.9" : 0.16844729587144372, + "99.99" : 0.16844729587144372, + "99.999" : 0.16844729587144372, + "99.9999" : 0.16844729587144372, + "100.0" : 0.16844729587144372 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16844729587144372, + 0.16825600417262557, + 0.16784994932693276 + ], + [ + 0.16515502999124704, + 0.16548735592182562, + 0.1666896035204107 + ], + [ + 0.15900905450700417, + 0.1592196872372946, + 0.158946975888103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38842922644034866, + "scoreError" : 0.0067031864482287465, + "scoreConfidence" : [ + 0.3817260399921199, + 0.3951324128885774 + ], + "scorePercentiles" : { + "0.0" : 0.3846055533633322, + "50.0" : 0.38798181970902035, + "90.0" : 0.3976954414618627, + "95.0" : 0.3976954414618627, + "99.0" : 0.3976954414618627, + "99.9" : 0.3976954414618627, + "99.99" : 0.3976954414618627, + "99.999" : 0.3976954414618627, + "99.9999" : 0.3976954414618627, + "100.0" : 0.3976954414618627 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3976954414618627, + 0.3865560140316969, + 0.3859009754572818 + ], + [ + 0.39057186982502734, + 0.38881781959564543, + 0.38798181970902035 + ], + [ + 0.3887489937801275, + 0.38498455073914384, + 0.3846055533633322 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15897312984427683, + "scoreError" : 0.007362010999413564, + "scoreConfidence" : [ + 0.15161111884486328, + 0.1663351408436904 + ], + "scorePercentiles" : { + "0.0" : 0.15367977617101058, + "50.0" : 0.15898293027137883, + "90.0" : 0.1647780857321755, + "95.0" : 0.1647780857321755, + "99.0" : 0.1647780857321755, + "99.9" : 0.1647780857321755, + "99.99" : 0.1647780857321755, + "99.999" : 0.1647780857321755, + "99.9999" : 0.1647780857321755, + "100.0" : 0.1647780857321755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15948752983955855, + 0.15898293027137883, + 0.15867462969074783 + ], + [ + 0.1647780857321755, + 0.16382083167878908, + 0.163306469478738 + ], + [ + 0.15408670708782743, + 0.15394120864826588, + 0.15367977617101058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047710108860097446, + "scoreError" : 6.500947272283788E-4, + "scoreConfidence" : [ + 0.04706001413286907, + 0.048360203587325824 + ], + "scorePercentiles" : { + "0.0" : 0.0472659968237763, + "50.0" : 0.04773794186079817, + "90.0" : 0.04823766706864117, + "95.0" : 0.04823766706864117, + "99.0" : 0.04823766706864117, + "99.9" : 0.04823766706864117, + "99.99" : 0.04823766706864117, + "99.999" : 0.04823766706864117, + "99.9999" : 0.04823766706864117, + "100.0" : 0.04823766706864117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04823766706864117, + 0.04728105270822301, + 0.0472659968237763 + ], + [ + 0.047403124687144485, + 0.04773794186079817, + 0.04735863134240711 + ], + [ + 0.04801767788341496, + 0.0480227627954552, + 0.04806612457101658 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9545103.75383263, + "scoreError" : 383788.9358783984, + "scoreConfidence" : [ + 9161314.817954233, + 9928892.689711029 + ], + "scorePercentiles" : { + "0.0" : 9173861.760769935, + "50.0" : 9645109.1195757, + "90.0" : 9782659.88172043, + "95.0" : 9782659.88172043, + "99.0" : 9782659.88172043, + "99.9" : 9782659.88172043, + "99.99" : 9782659.88172043, + "99.999" : 9782659.88172043, + "99.9999" : 9782659.88172043, + "100.0" : 9782659.88172043 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9722427.170068027, + 9638300.232177263, + 9645109.1195757 + ], + [ + 9782659.88172043, + 9661711.056949807, + 9705344.597478177 + ], + [ + 9317311.997206705, + 9173861.760769935, + 9259207.96854764 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 2d799ff19a93b0033f4386c5f73692f03905ad99 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Mar 2025 01:14:51 +0000 Subject: [PATCH 237/345] Add performance results for commit 753555fd9ff1dae369f13fde1198ecf0ccdbe3f3 --- ...ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json diff --git a/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json b/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json new file mode 100644 index 0000000000..9a95fb387f --- /dev/null +++ b/performance-results/2025-03-13T01:14:36Z-753555fd9ff1dae369f13fde1198ecf0ccdbe3f3-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4235289471012904, + "scoreError" : 0.025315012152433914, + "scoreConfidence" : [ + 3.3982139349488567, + 3.448843959253724 + ], + "scorePercentiles" : { + "0.0" : 3.418973543921273, + "50.0" : 3.423959070120495, + "90.0" : 3.4272241042428986, + "95.0" : 3.4272241042428986, + "99.0" : 3.4272241042428986, + "99.9" : 3.4272241042428986, + "99.99" : 3.4272241042428986, + "99.999" : 3.4272241042428986, + "99.9999" : 3.4272241042428986, + "100.0" : 3.4272241042428986 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4215857667884384, + 3.4272241042428986 + ], + [ + 3.418973543921273, + 3.4263323734525515 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.731466065401667, + "scoreError" : 0.01621103250787632, + "scoreConfidence" : [ + 1.7152550328937906, + 1.7476770979095433 + ], + "scorePercentiles" : { + "0.0" : 1.7288700515575068, + "50.0" : 1.7310567913839625, + "90.0" : 1.7348806272812356, + "95.0" : 1.7348806272812356, + "99.0" : 1.7348806272812356, + "99.9" : 1.7348806272812356, + "99.99" : 1.7348806272812356, + "99.999" : 1.7348806272812356, + "99.9999" : 1.7348806272812356, + "100.0" : 1.7348806272812356 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7288700515575068, + 1.7313277369538398 + ], + [ + 1.7307858458140855, + 1.7348806272812356 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8697984954948363, + "scoreError" : 0.008861407151655697, + "scoreConfidence" : [ + 0.8609370883431806, + 0.8786599026464921 + ], + "scorePercentiles" : { + "0.0" : 0.8679124538019363, + "50.0" : 0.8700474146575718, + "90.0" : 0.8711866988622655, + "95.0" : 0.8711866988622655, + "99.0" : 0.8711866988622655, + "99.9" : 0.8711866988622655, + "99.99" : 0.8711866988622655, + "99.999" : 0.8711866988622655, + "99.9999" : 0.8711866988622655, + "100.0" : 0.8711866988622655 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8679124538019363, + 0.8699183582693664 + ], + [ + 0.8711866988622655, + 0.8701764710457774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70820.79388702071, + "scoreError" : 231.68668855776454, + "scoreConfidence" : [ + 70589.10719846295, + 71052.48057557848 + ], + "scorePercentiles" : { + "0.0" : 70629.0793607269, + "50.0" : 70911.01076174284, + "90.0" : 70941.7424562172, + "95.0" : 70941.7424562172, + "99.0" : 70941.7424562172, + "99.9" : 70941.7424562172, + "99.99" : 70941.7424562172, + "99.999" : 70941.7424562172, + "99.9999" : 70941.7424562172, + "100.0" : 70941.7424562172 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70643.28992633008, + 70629.0793607269, + 70657.4130445598 + ], + [ + 70920.59943604424, + 70921.67177006771, + 70939.99468918028 + ], + [ + 70911.01076174284, + 70822.34353831736, + 70941.7424562172 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.2295935097646, + "scoreError" : 11.639809665349746, + "scoreConfidence" : [ + 338.58978384441485, + 361.8694031751143 + ], + "scorePercentiles" : { + "0.0" : 340.89493260237515, + "50.0" : 353.68886615744447, + "90.0" : 355.99957632871315, + "95.0" : 355.99957632871315, + "99.0" : 355.99957632871315, + "99.9" : 355.99957632871315, + "99.99" : 355.99957632871315, + "99.999" : 355.99957632871315, + "99.9999" : 355.99957632871315, + "100.0" : 355.99957632871315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 340.89493260237515, + 341.42435224510996, + 341.26510021738767 + ], + [ + 355.6708203390944, + 355.8300028298273, + 355.99957632871315 + ], + [ + 351.49926625063017, + 353.68886615744447, + 355.79342461729897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.65109974016178, + "scoreError" : 2.5522442534017724, + "scoreConfidence" : [ + 106.09885548676002, + 111.20334399356355 + ], + "scorePercentiles" : { + "0.0" : 107.03049434345812, + "50.0" : 108.17258660022053, + "90.0" : 110.61737269420547, + "95.0" : 110.61737269420547, + "99.0" : 110.61737269420547, + "99.9" : 110.61737269420547, + "99.99" : 110.61737269420547, + "99.999" : 110.61737269420547, + "99.9999" : 110.61737269420547, + "100.0" : 110.61737269420547 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.82145896771539, + 108.17258660022053, + 108.24703418493814 + ], + [ + 110.58815235947327, + 110.61737269420547, + 110.60165244657608 + ], + [ + 107.66093902870458, + 107.03049434345812, + 107.12020703616446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014279243473265146, + "scoreError" : 4.394936204422015E-4, + "scoreConfidence" : [ + 0.013839749852822944, + 0.014718737093707348 + ], + "scorePercentiles" : { + "0.0" : 0.014042465096456565, + "50.0" : 0.014159224540681671, + "90.0" : 0.014676226498498639, + "95.0" : 0.014676226498498639, + "99.0" : 0.014676226498498639, + "99.9" : 0.014676226498498639, + "99.99" : 0.014676226498498639, + "99.999" : 0.014676226498498639, + "99.9999" : 0.014676226498498639, + "100.0" : 0.014676226498498639 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014202651352641087, + 0.014158744326676936, + 0.014159224540681671 + ], + [ + 0.014591742794315707, + 0.014676226498498639, + 0.01458607336714348 + ], + [ + 0.014043656603105857, + 0.014052406679866392, + 0.014042465096456565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710502426780204, + "scoreError" : 0.014764440975773075, + "scoreConfidence" : [ + 0.9562858017022473, + 0.9858146836537935 + ], + "scorePercentiles" : { + "0.0" : 0.9562935803212851, + "50.0" : 0.9705228318128882, + "90.0" : 0.984122220035426, + "95.0" : 0.984122220035426, + "99.0" : 0.984122220035426, + "99.9" : 0.984122220035426, + "99.99" : 0.984122220035426, + "99.999" : 0.984122220035426, + "99.9999" : 0.984122220035426, + "100.0" : 0.984122220035426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9703851923151562, + 0.9705228318128882, + 0.984122220035426 + ], + [ + 0.9797588517683943, + 0.9756658378536586, + 0.9748855913433417 + ], + [ + 0.9665884706166634, + 0.9562935803212851, + 0.961229608035371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01294115826408152, + "scoreError" : 0.001014437164646088, + "scoreConfidence" : [ + 0.011926721099435432, + 0.013955595428727608 + ], + "scorePercentiles" : { + "0.0" : 0.012536907865737619, + "50.0" : 0.012912209069093654, + "90.0" : 0.013316694295522761, + "95.0" : 0.013316694295522761, + "99.0" : 0.013316694295522761, + "99.9" : 0.013316694295522761, + "99.99" : 0.013316694295522761, + "99.999" : 0.013316694295522761, + "99.9999" : 0.013316694295522761, + "100.0" : 0.013316694295522761 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013166219852067968, + 0.013316694295522761, + 0.013312663393594078 + ], + [ + 0.012536907865737619, + 0.01265626589144736, + 0.012658198286119339 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.659688428674198, + "scoreError" : 0.35262658295588856, + "scoreConfidence" : [ + 3.3070618457183096, + 4.012315011630086 + ], + "scorePercentiles" : { + "0.0" : 3.5062078731604767, + "50.0" : 3.6768514411668174, + "90.0" : 3.774024763773585, + "95.0" : 3.774024763773585, + "99.0" : 3.774024763773585, + "99.9" : 3.774024763773585, + "99.99" : 3.774024763773585, + "99.999" : 3.774024763773585, + "99.9999" : 3.774024763773585, + "100.0" : 3.774024763773585 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5062078731604767, + 3.551304622159091, + 3.5838853209169055 + ], + [ + 3.774024763773585, + 3.7698175614167293, + 3.7728904306184012 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8300064842002626, + "scoreError" : 0.045503109266854615, + "scoreConfidence" : [ + 2.784503374933408, + 2.8755095934671173 + ], + "scorePercentiles" : { + "0.0" : 2.8048665698261357, + "50.0" : 2.817010330140845, + "90.0" : 2.8728336325768455, + "95.0" : 2.8728336325768455, + "99.0" : 2.8728336325768455, + "99.9" : 2.8728336325768455, + "99.99" : 2.8728336325768455, + "99.999" : 2.8728336325768455, + "99.9999" : 2.8728336325768455, + "100.0" : 2.8728336325768455 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.817010330140845, + 2.8212701472496473, + 2.807157726915521 + ], + [ + 2.8048665698261357, + 2.809550511516854, + 2.8145303981429377 + ], + [ + 2.862065851788269, + 2.860773189645309, + 2.8728336325768455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1831706552485558, + "scoreError" : 0.01373850570445273, + "scoreConfidence" : [ + 0.16943214954410307, + 0.19690916095300853 + ], + "scorePercentiles" : { + "0.0" : 0.1770023762257071, + "50.0" : 0.17780909203250297, + "90.0" : 0.19403957457748802, + "95.0" : 0.19403957457748802, + "99.0" : 0.19403957457748802, + "99.9" : 0.19403957457748802, + "99.99" : 0.19403957457748802, + "99.999" : 0.19403957457748802, + "99.9999" : 0.19403957457748802, + "100.0" : 0.19403957457748802 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17979130297909063, + 0.17780909203250297, + 0.17764850200739005 + ], + [ + 0.1771452058563027, + 0.1770023762257071, + 0.17709491752851172 + ], + [ + 0.1940173466232078, + 0.19403957457748802, + 0.19398757940680103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3325174605480197, + "scoreError" : 0.01808023901793655, + "scoreConfidence" : [ + 0.3144372215300832, + 0.35059769956595627 + ], + "scorePercentiles" : { + "0.0" : 0.3243598086990367, + "50.0" : 0.32611440247839557, + "90.0" : 0.34748987869627157, + "95.0" : 0.34748987869627157, + "99.0" : 0.34748987869627157, + "99.9" : 0.34748987869627157, + "99.99" : 0.34748987869627157, + "99.999" : 0.34748987869627157, + "99.9999" : 0.34748987869627157, + "100.0" : 0.34748987869627157 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32611440247839557, + 0.32569432595101616, + 0.3270104821621268 + ], + [ + 0.34748987869627157, + 0.34672240551972816, + 0.34622278749480684 + ], + [ + 0.324573349680309, + 0.3243598086990367, + 0.3244697042504867 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1563755353557113, + "scoreError" : 0.008218591647864093, + "scoreConfidence" : [ + 0.1481569437078472, + 0.1645941270035754 + ], + "scorePercentiles" : { + "0.0" : 0.15114627648801426, + "50.0" : 0.15527347374386685, + "90.0" : 0.1627050920731509, + "95.0" : 0.1627050920731509, + "99.0" : 0.1627050920731509, + "99.9" : 0.1627050920731509, + "99.99" : 0.1627050920731509, + "99.999" : 0.1627050920731509, + "99.9999" : 0.1627050920731509, + "100.0" : 0.1627050920731509 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1627050920731509, + 0.16256147183705316, + 0.16222034130357202 + ], + [ + 0.1551279640884835, + 0.15535810315524554, + 0.15527347374386685 + ], + [ + 0.15164503142012284, + 0.1513420640918928, + 0.15114627648801426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3909588769316857, + "scoreError" : 0.007017556895511356, + "scoreConfidence" : [ + 0.3839413200361743, + 0.39797643382719705 + ], + "scorePercentiles" : { + "0.0" : 0.38759703340955776, + "50.0" : 0.3903544967797338, + "90.0" : 0.39986755376064614, + "95.0" : 0.39986755376064614, + "99.0" : 0.39986755376064614, + "99.9" : 0.39986755376064614, + "99.99" : 0.39986755376064614, + "99.999" : 0.39986755376064614, + "99.9999" : 0.39986755376064614, + "100.0" : 0.39986755376064614 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.390763948382307, + 0.39082237861497576, + 0.3903544967797338 + ], + [ + 0.39986755376064614, + 0.3884779611918266, + 0.38759703340955776 + ], + [ + 0.3954614829167985, + 0.3876213509050738, + 0.3876636864242518 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15722552517859067, + "scoreError" : 0.0011511582869311112, + "scoreConfidence" : [ + 0.15607436689165957, + 0.15837668346552178 + ], + "scorePercentiles" : { + "0.0" : 0.1562580664864527, + "50.0" : 0.15734629136509534, + "90.0" : 0.15837414240691763, + "95.0" : 0.15837414240691763, + "99.0" : 0.15837414240691763, + "99.9" : 0.15837414240691763, + "99.99" : 0.15837414240691763, + "99.999" : 0.15837414240691763, + "99.9999" : 0.15837414240691763, + "100.0" : 0.15837414240691763 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15734629136509534, + 0.15751020181448755, + 0.15674231195924765 + ], + [ + 0.15837414240691763, + 0.15780906814057347, + 0.156918052864473 + ], + [ + 0.15761143390754778, + 0.15646015766252053, + 0.1562580664864527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04698808880000418, + "scoreError" : 8.233100908406212E-4, + "scoreConfidence" : [ + 0.04616477870916356, + 0.0478113988908448 + ], + "scorePercentiles" : { + "0.0" : 0.04632947766947111, + "50.0" : 0.046950707557091347, + "90.0" : 0.04777402328470013, + "95.0" : 0.04777402328470013, + "99.0" : 0.04777402328470013, + "99.9" : 0.04777402328470013, + "99.99" : 0.04777402328470013, + "99.999" : 0.04777402328470013, + "99.9999" : 0.04777402328470013, + "100.0" : 0.04777402328470013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04702555390236677, + 0.04694176933151202, + 0.046950707557091347 + ], + [ + 0.0475525959219386, + 0.04777402328470013, + 0.04725548325284239 + ], + [ + 0.04670036606984412, + 0.046362822210271076, + 0.04632947766947111 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9317046.219681531, + "scoreError" : 207195.67907354757, + "scoreConfidence" : [ + 9109850.540607983, + 9524241.89875508 + ], + "scorePercentiles" : { + "0.0" : 9157390.381518755, + "50.0" : 9319772.534948742, + "90.0" : 9506483.568441065, + "95.0" : 9506483.568441065, + "99.0" : 9506483.568441065, + "99.9" : 9506483.568441065, + "99.99" : 9506483.568441065, + "99.999" : 9506483.568441065, + "99.9999" : 9506483.568441065, + "100.0" : 9506483.568441065 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9304948.350697674, + 9321557.7166822, + 9319772.534948742 + ], + [ + 9210019.607734807, + 9168707.978001833, + 9157390.381518755 + ], + [ + 9506483.568441065, + 9437706.294339623, + 9426829.544769086 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 08f602a59cadbffd27d30ebd1c564afce61d1d56 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Mar 2025 21:52:17 +0000 Subject: [PATCH 238/345] Add performance results for commit 2d799ff19a93b0033f4386c5f73692f03905ad99 --- ...a93b0033f4386c5f73692f03905ad99-jdk17.json | 1074 +++++++++++++++++ ...a93b0033f4386c5f73692f03905ad99-jdk17.json | 1074 +++++++++++++++++ 2 files changed, 2148 insertions(+) create mode 100644 performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json create mode 100644 performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json diff --git a/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..e193b1af7c --- /dev/null +++ b/performance-results/2025-03-15T11:47:41Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4231252386576827, + "scoreError" : 0.018002418557553388, + "scoreConfidence" : [ + 3.405122820100129, + 3.4411276572152363 + ], + "scorePercentiles" : { + "0.0" : 3.4206360868600725, + "50.0" : 3.4227234889032605, + "90.0" : 3.426417889964138, + "95.0" : 3.426417889964138, + "99.0" : 3.426417889964138, + "99.9" : 3.426417889964138, + "99.99" : 3.426417889964138, + "99.999" : 3.426417889964138, + "99.9999" : 3.426417889964138, + "100.0" : 3.426417889964138 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4206360868600725, + 3.426417889964138 + ], + [ + 3.4210025321286244, + 3.4244444456778966 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7292023782063795, + "scoreError" : 0.008901727040554206, + "scoreConfidence" : [ + 1.7203006511658252, + 1.7381041052469337 + ], + "scorePercentiles" : { + "0.0" : 1.727258983952786, + "50.0" : 1.7295273432478537, + "90.0" : 1.7304958423770247, + "95.0" : 1.7304958423770247, + "99.0" : 1.7304958423770247, + "99.9" : 1.7304958423770247, + "99.99" : 1.7304958423770247, + "99.999" : 1.7304958423770247, + "99.9999" : 1.7304958423770247, + "100.0" : 1.7304958423770247 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.727258983952786, + 1.729653664527176 + ], + [ + 1.7294010219685314, + 1.7304958423770247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.869712827685915, + "scoreError" : 0.004324516237681346, + "scoreConfidence" : [ + 0.8653883114482336, + 0.8740373439235963 + ], + "scorePercentiles" : { + "0.0" : 0.8688162079164902, + "50.0" : 0.8698652531758249, + "90.0" : 0.8703045964755199, + "95.0" : 0.8703045964755199, + "99.0" : 0.8703045964755199, + "99.9" : 0.8703045964755199, + "99.99" : 0.8703045964755199, + "99.999" : 0.8703045964755199, + "99.9999" : 0.8703045964755199, + "100.0" : 0.8703045964755199 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8695978615068914, + 0.8703045964755199 + ], + [ + 0.8688162079164902, + 0.8701326448447583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69653.97322970562, + "scoreError" : 1241.7114519240731, + "scoreConfidence" : [ + 68412.26177778155, + 70895.68468162969 + ], + "scorePercentiles" : { + "0.0" : 68917.9239635008, + "50.0" : 69422.69087159562, + "90.0" : 70623.12588344632, + "95.0" : 70623.12588344632, + "99.0" : 70623.12588344632, + "99.9" : 70623.12588344632, + "99.99" : 70623.12588344632, + "99.999" : 70623.12588344632, + "99.9999" : 70623.12588344632, + "100.0" : 70623.12588344632 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69422.69087159562, + 69447.65361598988, + 69400.19164738775 + ], + [ + 68940.63600147932, + 68961.39448861738, + 68917.9239635008 + ], + [ + 70600.79825836433, + 70571.34433696925, + 70623.12588344632 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.88093484304494, + "scoreError" : 7.331351454553499, + "scoreConfidence" : [ + 347.54958338849144, + 362.21228629759844 + ], + "scorePercentiles" : { + "0.0" : 350.8325447951137, + "50.0" : 353.1650809438877, + "90.0" : 361.5314151767399, + "95.0" : 361.5314151767399, + "99.0" : 361.5314151767399, + "99.9" : 361.5314151767399, + "99.99" : 361.5314151767399, + "99.999" : 361.5314151767399, + "99.9999" : 361.5314151767399, + "100.0" : 361.5314151767399 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.55160168006574, + 350.8325447951137, + 351.18421384816645 + ], + [ + 361.5314151767399, + 360.32258091010436, + 359.8482269083232 + ], + [ + 353.1650809438877, + 353.2751303140137, + 352.217619010989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.31040747128041, + "scoreError" : 1.5707935883293318, + "scoreConfidence" : [ + 103.73961388295108, + 106.88120105960975 + ], + "scorePercentiles" : { + "0.0" : 103.84489219491039, + "50.0" : 105.45124511244312, + "90.0" : 106.35534837676299, + "95.0" : 106.35534837676299, + "99.0" : 106.35534837676299, + "99.9" : 106.35534837676299, + "99.99" : 106.35534837676299, + "99.999" : 106.35534837676299, + "99.9999" : 106.35534837676299, + "100.0" : 106.35534837676299 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.26255275762055, + 106.35534837676299, + 106.22838730121315 + ], + [ + 104.56216360600726, + 103.84489219491039, + 104.14140128934277 + ], + [ + 105.44628502972814, + 105.45124511244312, + 105.50139157349538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014266009260685645, + "scoreError" : 2.4840351995337605E-4, + "scoreConfidence" : [ + 0.014017605740732268, + 0.014514412780639021 + ], + "scorePercentiles" : { + "0.0" : 0.01415508872730258, + "50.0" : 0.014178914767305513, + "90.0" : 0.014487416443321521, + "95.0" : 0.014487416443321521, + "99.0" : 0.014487416443321521, + "99.9" : 0.014487416443321521, + "99.99" : 0.014487416443321521, + "99.999" : 0.014487416443321521, + "99.9999" : 0.014487416443321521, + "100.0" : 0.014487416443321521 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014487416443321521, + 0.014444846733189272, + 0.014454177195923972 + ], + [ + 0.01415580208738833, + 0.01415508872730258, + 0.014162183566676203 + ], + [ + 0.014173912294303573, + 0.014178914767305513, + 0.014181741530759849 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9737795573950387, + "scoreError" : 0.023019476479558414, + "scoreConfidence" : [ + 0.9507600809154804, + 0.9967990338745971 + ], + "scorePercentiles" : { + "0.0" : 0.9530193546788641, + "50.0" : 0.9795748023312764, + "90.0" : 0.9933472102701629, + "95.0" : 0.9933472102701629, + "99.0" : 0.9933472102701629, + "99.9" : 0.9933472102701629, + "99.99" : 0.9933472102701629, + "99.999" : 0.9933472102701629, + "99.9999" : 0.9933472102701629, + "100.0" : 0.9933472102701629 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9583253188003066, + 0.9530193546788641, + 0.9583518679444178 + ], + [ + 0.9933472102701629, + 0.9791489124730761, + 0.9805528812628689 + ], + [ + 0.9819098810996564, + 0.9797857876947194, + 0.9795748023312764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013001308170039402, + "scoreError" : 2.976310973814306E-4, + "scoreConfidence" : [ + 0.012703677072657972, + 0.013298939267420833 + ], + "scorePercentiles" : { + "0.0" : 0.01288314263629407, + "50.0" : 0.013002860792589627, + "90.0" : 0.013110911374780397, + "95.0" : 0.013110911374780397, + "99.0" : 0.013110911374780397, + "99.9" : 0.013110911374780397, + "99.99" : 0.013110911374780397, + "99.999" : 0.013110911374780397, + "99.9999" : 0.013110911374780397, + "100.0" : 0.013110911374780397 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01288314263629407, + 0.012924590065370965, + 0.01290896248228287 + ], + [ + 0.013081131519808288, + 0.013099110941699807, + 0.013110911374780397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6469265221099043, + "scoreError" : 0.233983938982243, + "scoreConfidence" : [ + 3.4129425831276614, + 3.880910461092147 + ], + "scorePercentiles" : { + "0.0" : 3.550249164655784, + "50.0" : 3.6518308336198055, + "90.0" : 3.725429276247208, + "95.0" : 3.725429276247208, + "99.0" : 3.725429276247208, + "99.9" : 3.725429276247208, + "99.99" : 3.725429276247208, + "99.999" : 3.725429276247208, + "99.9999" : 3.725429276247208, + "100.0" : 3.725429276247208 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.71911931598513, + 3.72239825, + 3.725429276247208 + ], + [ + 3.550249164655784, + 3.5798207745168216, + 3.5845423512544805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8297739018441317, + "scoreError" : 0.055082385306873205, + "scoreConfidence" : [ + 2.7746915165372585, + 2.884856287151005 + ], + "scorePercentiles" : { + "0.0" : 2.776723303442532, + "50.0" : 2.849999239954403, + "90.0" : 2.857089768637532, + "95.0" : 2.857089768637532, + "99.0" : 2.857089768637532, + "99.9" : 2.857089768637532, + "99.99" : 2.857089768637532, + "99.999" : 2.857089768637532, + "99.9999" : 2.857089768637532, + "100.0" : 2.857089768637532 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.857089768637532, + 2.846963235980643, + 2.8502645807922486 + ], + [ + 2.849999239954403, + 2.8532497991440797, + 2.850531029353092 + ], + [ + 2.7937917039106144, + 2.7893524553820415, + 2.776723303442532 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17399340825190943, + "scoreError" : 0.002415189799166387, + "scoreConfidence" : [ + 0.17157821845274304, + 0.1764085980510758 + ], + "scorePercentiles" : { + "0.0" : 0.17195098658802896, + "50.0" : 0.17425089607945635, + "90.0" : 0.17574364637446838, + "95.0" : 0.17574364637446838, + "99.0" : 0.17574364637446838, + "99.9" : 0.17574364637446838, + "99.99" : 0.17574364637446838, + "99.999" : 0.17574364637446838, + "99.9999" : 0.17574364637446838, + "100.0" : 0.17574364637446838 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17527287233371308, + 0.1742294504242382, + 0.17425089607945635 + ], + [ + 0.17256591154443485, + 0.17195098658802896, + 0.17207340420882372 + ], + [ + 0.17574364637446838, + 0.17510702307867412, + 0.17474648363534695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3288146853420742, + "scoreError" : 0.00961866055753691, + "scoreConfidence" : [ + 0.3191960247845373, + 0.3384333458996111 + ], + "scorePercentiles" : { + "0.0" : 0.3229496437267883, + "50.0" : 0.32701093767371897, + "90.0" : 0.33675235816271554, + "95.0" : 0.33675235816271554, + "99.0" : 0.33675235816271554, + "99.9" : 0.33675235816271554, + "99.99" : 0.33675235816271554, + "99.999" : 0.33675235816271554, + "99.9999" : 0.33675235816271554, + "100.0" : 0.33675235816271554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3237096521865795, + 0.3234401143633365, + 0.3229496437267883 + ], + [ + 0.3271919762792828, + 0.32659347181580667, + 0.32701093767371897 + ], + [ + 0.33675235816271554, + 0.33555434001073753, + 0.3361296738597022 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16611211253103553, + "scoreError" : 0.012610331553940314, + "scoreConfidence" : [ + 0.15350178097709521, + 0.17872244408497584 + ], + "scorePercentiles" : { + "0.0" : 0.15637186147206455, + "50.0" : 0.16811454968479447, + "90.0" : 0.17377661910471623, + "95.0" : 0.17377661910471623, + "99.0" : 0.17377661910471623, + "99.9" : 0.17377661910471623, + "99.99" : 0.17377661910471623, + "99.999" : 0.17377661910471623, + "99.9999" : 0.17377661910471623, + "100.0" : 0.17377661910471623 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16811454968479447, + 0.16761891483405966, + 0.168381385940394 + ], + [ + 0.1568560021488848, + 0.15637186147206455, + 0.1567233963923019 + ], + [ + 0.1736130055380983, + 0.17377661910471623, + 0.17355327766400555 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3944184633266344, + "scoreError" : 0.009038540290119374, + "scoreConfidence" : [ + 0.385379923036515, + 0.40345700361675374 + ], + "scorePercentiles" : { + "0.0" : 0.3866889062294575, + "50.0" : 0.3934567140103081, + "90.0" : 0.4031605217899617, + "95.0" : 0.4031605217899617, + "99.0" : 0.4031605217899617, + "99.9" : 0.4031605217899617, + "99.99" : 0.4031605217899617, + "99.999" : 0.4031605217899617, + "99.9999" : 0.4031605217899617, + "100.0" : 0.4031605217899617 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3925430768566494, + 0.3866889062294575, + 0.38754908797085724 + ], + [ + 0.4031605217899617, + 0.3982964957384101, + 0.39914906773369524 + ], + [ + 0.39622482324973257, + 0.3934567140103081, + 0.39269747636063773 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15571468225916585, + "scoreError" : 0.0021395399956352862, + "scoreConfidence" : [ + 0.15357514226353056, + 0.15785422225480114 + ], + "scorePercentiles" : { + "0.0" : 0.15414635183044317, + "50.0" : 0.15539449561798802, + "90.0" : 0.15795597009951035, + "95.0" : 0.15795597009951035, + "99.0" : 0.15795597009951035, + "99.9" : 0.15795597009951035, + "99.99" : 0.15795597009951035, + "99.999" : 0.15795597009951035, + "99.9999" : 0.15795597009951035, + "100.0" : 0.15795597009951035 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1554432936860758, + 0.1543657783489241, + 0.15414635183044317 + ], + [ + 0.15795597009951035, + 0.15723632378930819, + 0.1565063382214849 + ], + [ + 0.15517247261273004, + 0.15539449561798802, + 0.15521111612602825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048346727576037835, + "scoreError" : 7.806057457140025E-4, + "scoreConfidence" : [ + 0.04756612183032383, + 0.049127333321751836 + ], + "scorePercentiles" : { + "0.0" : 0.04790786884931756, + "50.0" : 0.04807760585096154, + "90.0" : 0.0491959880701133, + "95.0" : 0.0491959880701133, + "99.0" : 0.0491959880701133, + "99.9" : 0.0491959880701133, + "99.99" : 0.0491959880701133, + "99.999" : 0.0491959880701133, + "99.9999" : 0.0491959880701133, + "100.0" : 0.0491959880701133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04790786884931756, + 0.048031901780996936, + 0.04796132565802095 + ], + [ + 0.04867936401871206, + 0.04863606014726767, + 0.048699932351881255 + ], + [ + 0.0491959880701133, + 0.04793050145706918, + 0.04807760585096154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9389509.542990893, + "scoreError" : 168809.23465839543, + "scoreConfidence" : [ + 9220700.308332497, + 9558318.777649289 + ], + "scorePercentiles" : { + "0.0" : 9245023.112754159, + "50.0" : 9440439.841509433, + "90.0" : 9504771.950617284, + "95.0" : 9504771.950617284, + "99.0" : 9504771.950617284, + "99.9" : 9504771.950617284, + "99.99" : 9504771.950617284, + "99.999" : 9504771.950617284, + "99.9999" : 9504771.950617284, + "100.0" : 9504771.950617284 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9447608.750708215, + 9440439.841509433, + 9409778.511759171 + ], + [ + 9458990.512287335, + 9504771.950617284, + 9461597.62630085 + ], + [ + 9290695.124419684, + 9245023.112754159, + 9246680.456561923 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..44fbbec310 --- /dev/null +++ b/performance-results/2025-03-15T21:51:58Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.419081479349856, + "scoreError" : 0.02181667824030549, + "scoreConfidence" : [ + 3.3972648011095505, + 3.4408981575901616 + ], + "scorePercentiles" : { + "0.0" : 3.4151876582998333, + "50.0" : 3.418878719276705, + "90.0" : 3.4233808205461798, + "95.0" : 3.4233808205461798, + "99.0" : 3.4233808205461798, + "99.9" : 3.4233808205461798, + "99.99" : 3.4233808205461798, + "99.999" : 3.4233808205461798, + "99.9999" : 3.4233808205461798, + "100.0" : 3.4233808205461798 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4183955684003458, + 3.4233808205461798 + ], + [ + 3.4151876582998333, + 3.4193618701530646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7278052370461388, + "scoreError" : 0.015468518360417289, + "scoreConfidence" : [ + 1.7123367186857215, + 1.743273755406556 + ], + "scorePercentiles" : { + "0.0" : 1.725058425680371, + "50.0" : 1.7276601761908168, + "90.0" : 1.7308421701225511, + "95.0" : 1.7308421701225511, + "99.0" : 1.7308421701225511, + "99.9" : 1.7308421701225511, + "99.99" : 1.7308421701225511, + "99.999" : 1.7308421701225511, + "99.9999" : 1.7308421701225511, + "100.0" : 1.7308421701225511 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725058425680371, + 1.7272240633541005 + ], + [ + 1.7280962890275329, + 1.7308421701225511 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8685942360123592, + "scoreError" : 0.0032093629192022875, + "scoreConfidence" : [ + 0.8653848730931569, + 0.8718035989315615 + ], + "scorePercentiles" : { + "0.0" : 0.8680596600008403, + "50.0" : 0.8685323243645763, + "90.0" : 0.8692526353194442, + "95.0" : 0.8692526353194442, + "99.0" : 0.8692526353194442, + "99.9" : 0.8692526353194442, + "99.99" : 0.8692526353194442, + "99.999" : 0.8692526353194442, + "99.9999" : 0.8692526353194442, + "100.0" : 0.8692526353194442 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8684515043579376, + 0.8692526353194442 + ], + [ + 0.8680596600008403, + 0.868613144371215 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70219.63258531665, + "scoreError" : 2456.2624530759686, + "scoreConfidence" : [ + 67763.37013224069, + 72675.89503839261 + ], + "scorePercentiles" : { + "0.0" : 68262.69827508756, + "50.0" : 71070.91574665892, + "90.0" : 71360.62796599019, + "95.0" : 71360.62796599019, + "99.0" : 71360.62796599019, + "99.9" : 71360.62796599019, + "99.99" : 71360.62796599019, + "99.999" : 71360.62796599019, + "99.9999" : 71360.62796599019, + "100.0" : 71360.62796599019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71090.84115154805, + 71070.91574665892, + 71068.11668011114 + ], + [ + 71326.00567174528, + 71360.62796599019, + 71232.73593615185 + ], + [ + 68263.9148079727, + 68262.69827508756, + 68300.83703258426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.62506314566724, + "scoreError" : 5.912882195955713, + "scoreConfidence" : [ + 346.7121809497115, + 358.53794534162296 + ], + "scorePercentiles" : { + "0.0" : 348.5994939203698, + "50.0" : 351.2596406536745, + "90.0" : 357.8709892240457, + "95.0" : 357.8709892240457, + "99.0" : 357.8709892240457, + "99.9" : 357.8709892240457, + "99.99" : 357.8709892240457, + "99.999" : 357.8709892240457, + "99.9999" : 357.8709892240457, + "100.0" : 357.8709892240457 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.6002990284403, + 357.8709892240457, + 355.992835288197 + ], + [ + 355.0809382965137, + 351.2596406536745, + 350.96968106293775 + ], + [ + 348.5994939203698, + 349.08160018811935, + 349.1700906487072 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.6838769084973, + "scoreError" : 2.183117097066455, + "scoreConfidence" : [ + 105.50075981143084, + 109.86699400556375 + ], + "scorePercentiles" : { + "0.0" : 106.1920201263132, + "50.0" : 107.28988932269989, + "90.0" : 109.68039857724867, + "95.0" : 109.68039857724867, + "99.0" : 109.68039857724867, + "99.9" : 109.68039857724867, + "99.99" : 109.68039857724867, + "99.999" : 109.68039857724867, + "99.9999" : 109.68039857724867, + "100.0" : 109.68039857724867 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.1920201263132, + 106.3107103466616, + 106.51494550464022 + ], + [ + 109.68039857724867, + 108.93303271007677, + 109.1345679005366 + ], + [ + 107.85149666900807, + 107.24783101929074, + 107.28988932269989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01424904469711514, + "scoreError" : 2.8712049885863054E-4, + "scoreConfidence" : [ + 0.01396192419825651, + 0.01453616519597377 + ], + "scorePercentiles" : { + "0.0" : 0.014081548691345716, + "50.0" : 0.014197285943467211, + "90.0" : 0.014469735555761344, + "95.0" : 0.014469735555761344, + "99.0" : 0.014469735555761344, + "99.9" : 0.014469735555761344, + "99.99" : 0.014469735555761344, + "99.999" : 0.014469735555761344, + "99.9999" : 0.014469735555761344, + "100.0" : 0.014469735555761344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014469735555761344, + 0.014466371526486872, + 0.014465053651656951 + ], + [ + 0.014084542436261102, + 0.014081548691345716, + 0.014082558140615627 + ], + [ + 0.014202345880946092, + 0.014197285943467211, + 0.014191960447495364 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9605920681254805, + "scoreError" : 0.0156261620457851, + "scoreConfidence" : [ + 0.9449659060796953, + 0.9762182301712656 + ], + "scorePercentiles" : { + "0.0" : 0.9515725629876308, + "50.0" : 0.9594482724743356, + "90.0" : 0.9813261324698264, + "95.0" : 0.9813261324698264, + "99.0" : 0.9813261324698264, + "99.9" : 0.9813261324698264, + "99.99" : 0.9813261324698264, + "99.999" : 0.9813261324698264, + "99.9999" : 0.9813261324698264, + "100.0" : 0.9813261324698264 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9632121626697486, + 0.9640522833317265, + 0.9634844487475915 + ], + [ + 0.9523479509570517, + 0.9517655204149614, + 0.9515725629876308 + ], + [ + 0.9581192790764514, + 0.9594482724743356, + 0.9813261324698264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012935286805918217, + "scoreError" : 2.0065649442416766E-4, + "scoreConfidence" : [ + 0.01273463031149405, + 0.013135943300342384 + ], + "scorePercentiles" : { + "0.0" : 0.01282056484627199, + "50.0" : 0.012957244368985167, + "90.0" : 0.01300262296676349, + "95.0" : 0.01300262296676349, + "99.0" : 0.01300262296676349, + "99.9" : 0.01300262296676349, + "99.99" : 0.01300262296676349, + "99.999" : 0.01300262296676349, + "99.9999" : 0.01300262296676349, + "100.0" : 0.01300262296676349 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012886497260394009, + 0.012987495216820997, + 0.012987547024109466 + ], + [ + 0.01282056484627199, + 0.012926993521149337, + 0.01300262296676349 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6640448498751206, + "scoreError" : 0.10001425229743845, + "scoreConfidence" : [ + 3.5640305975776823, + 3.764059102172559 + ], + "scorePercentiles" : { + "0.0" : 3.6288989746008706, + "50.0" : 3.664207595317245, + "90.0" : 3.697876677014043, + "95.0" : 3.697876677014043, + "99.0" : 3.697876677014043, + "99.9" : 3.697876677014043, + "99.99" : 3.697876677014043, + "99.999" : 3.697876677014043, + "99.9999" : 3.697876677014043, + "100.0" : 3.697876677014043 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.697876677014043, + 3.6976350059127863, + 3.6941182392909897 + ], + [ + 3.6288989746008706, + 3.6342969513435004, + 3.631443251088534 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.796145889648464, + "scoreError" : 0.10606264859186876, + "scoreConfidence" : [ + 2.690083241056595, + 2.9022085382403326 + ], + "scorePercentiles" : { + "0.0" : 2.735265740153173, + "50.0" : 2.7747582746947836, + "90.0" : 2.8826144273775216, + "95.0" : 2.8826144273775216, + "99.0" : 2.8826144273775216, + "99.9" : 2.8826144273775216, + "99.99" : 2.8826144273775216, + "99.999" : 2.8826144273775216, + "99.9999" : 2.8826144273775216, + "100.0" : 2.8826144273775216 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.77613158340272, + 2.7747582746947836, + 2.759658219646799 + ], + [ + 2.7483473440505635, + 2.735265740153173, + 2.7371980117679255 + ], + [ + 2.86899744205393, + 2.8823419636887606, + 2.8826144273775216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18386029216491354, + "scoreError" : 0.015936383371688425, + "scoreConfidence" : [ + 0.1679239087932251, + 0.19979667553660196 + ], + "scorePercentiles" : { + "0.0" : 0.17637173245149912, + "50.0" : 0.1786052278401886, + "90.0" : 0.1967785992325856, + "95.0" : 0.1967785992325856, + "99.0" : 0.1967785992325856, + "99.9" : 0.1967785992325856, + "99.99" : 0.1967785992325856, + "99.999" : 0.1967785992325856, + "99.9999" : 0.1967785992325856, + "100.0" : 0.1967785992325856 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17676752035423257, + 0.17639937312800974, + 0.17637173245149912 + ], + [ + 0.1965152944112561, + 0.19603218908905573, + 0.1967785992325856 + ], + [ + 0.17880823137303986, + 0.17846446160435442, + 0.1786052278401886 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3268686979876325, + "scoreError" : 0.009509582095350317, + "scoreConfidence" : [ + 0.3173591158922822, + 0.3363782800829828 + ], + "scorePercentiles" : { + "0.0" : 0.32142813943173054, + "50.0" : 0.3239967884011016, + "90.0" : 0.3350558973766208, + "95.0" : 0.3350558973766208, + "99.0" : 0.3350558973766208, + "99.9" : 0.3350558973766208, + "99.99" : 0.3350558973766208, + "99.999" : 0.3350558973766208, + "99.9999" : 0.3350558973766208, + "100.0" : 0.3350558973766208 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32486509677419356, + 0.3239967884011016, + 0.32357341784766713 + ], + [ + 0.33470154652252493, + 0.33304827188863356, + 0.3350558973766208 + ], + [ + 0.3226825007905521, + 0.32142813943173054, + 0.3224666228556688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16040518763688932, + "scoreError" : 0.005985603649017898, + "scoreConfidence" : [ + 0.15441958398787142, + 0.16639079128590722 + ], + "scorePercentiles" : { + "0.0" : 0.15520278784163394, + "50.0" : 0.16224452822168503, + "90.0" : 0.1633454222407344, + "95.0" : 0.1633454222407344, + "99.0" : 0.1633454222407344, + "99.9" : 0.1633454222407344, + "99.99" : 0.1633454222407344, + "99.999" : 0.1633454222407344, + "99.9999" : 0.1633454222407344, + "100.0" : 0.1633454222407344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16206104194013646, + 0.16235918097835794, + 0.16224452822168503 + ], + [ + 0.15520278784163394, + 0.15584427127228526, + 0.15607415878763287 + ], + [ + 0.1633454222407344, + 0.16317626146691686, + 0.1633390359826212 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39186170392434727, + "scoreError" : 0.008382766232144253, + "scoreConfidence" : [ + 0.38347893769220304, + 0.4002444701564915 + ], + "scorePercentiles" : { + "0.0" : 0.3852108789723046, + "50.0" : 0.39403914370148546, + "90.0" : 0.39714948530579824, + "95.0" : 0.39714948530579824, + "99.0" : 0.39714948530579824, + "99.9" : 0.39714948530579824, + "99.99" : 0.39714948530579824, + "99.999" : 0.39714948530579824, + "99.9999" : 0.39714948530579824, + "100.0" : 0.39714948530579824 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38585839105606357, + 0.38531843093284013, + 0.3852108789723046 + ], + [ + 0.3969191444334193, + 0.39403914370148546, + 0.3927082935794227 + ], + [ + 0.39714948530579824, + 0.394844230031192, + 0.3947073373065993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15617891534733674, + "scoreError" : 0.0027246898703879286, + "scoreConfidence" : [ + 0.1534542254769488, + 0.15890360521772467 + ], + "scorePercentiles" : { + "0.0" : 0.15406912377709647, + "50.0" : 0.1558871378020265, + "90.0" : 0.15838028224133288, + "95.0" : 0.15838028224133288, + "99.0" : 0.15838028224133288, + "99.9" : 0.15838028224133288, + "99.99" : 0.15838028224133288, + "99.999" : 0.15838028224133288, + "99.9999" : 0.15838028224133288, + "100.0" : 0.15838028224133288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15838028224133288, + 0.15824253888757023, + 0.1577863723847392 + ], + [ + 0.15528550955760181, + 0.15422730028839776, + 0.15406912377709647 + ], + [ + 0.1558871378020265, + 0.155819362336003, + 0.15591261085126287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046892479422411135, + "scoreError" : 7.27228595279716E-4, + "scoreConfidence" : [ + 0.04616525082713142, + 0.04761970801769085 + ], + "scorePercentiles" : { + "0.0" : 0.04646620786848378, + "50.0" : 0.04681246217834389, + "90.0" : 0.04745806077877702, + "95.0" : 0.04745806077877702, + "99.0" : 0.04745806077877702, + "99.9" : 0.04745806077877702, + "99.99" : 0.04745806077877702, + "99.999" : 0.04745806077877702, + "99.9999" : 0.04745806077877702, + "100.0" : 0.04745806077877702 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04697078824430134, + 0.04647115450996794, + 0.04646620786848378 + ], + [ + 0.04681246217834389, + 0.04654221015349387, + 0.04649830915304675 + ], + [ + 0.04740479233190489, + 0.04740832958338074, + 0.04745806077877702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9153374.794718103, + "scoreError" : 35141.224373571386, + "scoreConfidence" : [ + 9118233.570344532, + 9188516.019091675 + ], + "scorePercentiles" : { + "0.0" : 9121060.185050137, + "50.0" : 9156568.882891126, + "90.0" : 9189768.824609734, + "95.0" : 9189768.824609734, + "99.0" : 9189768.824609734, + "99.9" : 9189768.824609734, + "99.99" : 9189768.824609734, + "99.999" : 9189768.824609734, + "99.9999" : 9189768.824609734, + "100.0" : 9189768.824609734 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9138728.467579909, + 9135038.461187216, + 9121060.185050137 + ], + [ + 9144502.108775137, + 9156568.882891126, + 9157744.234432235 + ], + [ + 9189768.824609734, + 9171180.827681027, + 9165781.16025641 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 8aa04f61a9db133e98d5e991d3a91abeb65d7748 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 15 Mar 2025 22:05:21 +0000 Subject: [PATCH 239/345] Add performance results for commit 2d799ff19a93b0033f4386c5f73692f03905ad99 --- ...a93b0033f4386c5f73692f03905ad99-jdk17.json | 1074 +++++++++++++++++ 1 file changed, 1074 insertions(+) create mode 100644 performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json diff --git a/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json b/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json new file mode 100644 index 0000000000..662bfc4c3b --- /dev/null +++ b/performance-results/2025-03-15T22:05:06Z-2d799ff19a93b0033f4386c5f73692f03905ad99-jdk17.json @@ -0,0 +1,1074 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.419640407240273, + "scoreError" : 0.033845851587922124, + "scoreConfidence" : [ + 3.3857945556523505, + 3.453486258828195 + ], + "scorePercentiles" : { + "0.0" : 3.4146699284177893, + "50.0" : 3.4184445363788676, + "90.0" : 3.427002627785568, + "95.0" : 3.427002627785568, + "99.0" : 3.427002627785568, + "99.9" : 3.427002627785568, + "99.99" : 3.427002627785568, + "99.999" : 3.427002627785568, + "99.9999" : 3.427002627785568, + "100.0" : 3.427002627785568 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418960193365409, + 3.427002627785568 + ], + [ + 3.4146699284177893, + 3.417928879392327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.728259570626513, + "scoreError" : 0.009225737494153523, + "scoreConfidence" : [ + 1.7190338331323594, + 1.7374853081206665 + ], + "scorePercentiles" : { + "0.0" : 1.726468041428064, + "50.0" : 1.7283038272179163, + "90.0" : 1.7299625866421546, + "95.0" : 1.7299625866421546, + "99.0" : 1.7299625866421546, + "99.9" : 1.7299625866421546, + "99.99" : 1.7299625866421546, + "99.999" : 1.7299625866421546, + "99.9999" : 1.7299625866421546, + "100.0" : 1.7299625866421546 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282796925630504, + 1.7299625866421546 + ], + [ + 1.726468041428064, + 1.7283279618727825 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8681979109233867, + "scoreError" : 0.006028616842983343, + "scoreConfidence" : [ + 0.8621692940804033, + 0.8742265277663701 + ], + "scorePercentiles" : { + "0.0" : 0.8668273030701195, + "50.0" : 0.8685266393427444, + "90.0" : 0.8689110619379388, + "95.0" : 0.8689110619379388, + "99.0" : 0.8689110619379388, + "99.9" : 0.8689110619379388, + "99.99" : 0.8689110619379388, + "99.999" : 0.8689110619379388, + "99.9999" : 0.8689110619379388, + "100.0" : 0.8689110619379388 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8685892047662458, + 0.8689110619379388 + ], + [ + 0.8668273030701195, + 0.8684640739192432 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69648.01861478564, + "scoreError" : 2087.607519878574, + "scoreConfidence" : [ + 67560.41109490707, + 71735.62613466421 + ], + "scorePercentiles" : { + "0.0" : 68001.28467819697, + "50.0" : 69992.90089804973, + "90.0" : 71029.82538555992, + "95.0" : 71029.82538555992, + "99.0" : 71029.82538555992, + "99.9" : 71029.82538555992, + "99.99" : 71029.82538555992, + "99.999" : 71029.82538555992, + "99.9999" : 71029.82538555992, + "100.0" : 71029.82538555992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68001.28467819697, + 70138.72785998843, + 69992.90089804973 + ], + [ + 71001.67829047698, + 71024.5754757033, + 71029.82538555992 + ], + [ + 68613.0120961982, + 68517.5283816697, + 68512.63446722752 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.553845841135, + "scoreError" : 7.0370841367788906, + "scoreConfidence" : [ + 339.5167617043561, + 353.5909299779139 + ], + "scorePercentiles" : { + "0.0" : 338.8824915344101, + "50.0" : 345.86361663474355, + "90.0" : 352.82648521467127, + "95.0" : 352.82648521467127, + "99.0" : 352.82648521467127, + "99.9" : 352.82648521467127, + "99.99" : 352.82648521467127, + "99.999" : 352.82648521467127, + "99.9999" : 352.82648521467127, + "100.0" : 352.82648521467127 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.78276083942797, + 343.2203107307122, + 338.8824915344101 + ], + [ + 349.6999294135891, + 350.7825466039242, + 352.82648521467127 + ], + [ + 345.07844612419234, + 345.84802547454444, + 345.86361663474355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.93576515773535, + "scoreError" : 4.531444666535601, + "scoreConfidence" : [ + 103.40432049119974, + 112.46720982427095 + ], + "scorePercentiles" : { + "0.0" : 104.48158965432441, + "50.0" : 107.8583918780271, + "90.0" : 111.14908882675743, + "95.0" : 111.14908882675743, + "99.0" : 111.14908882675743, + "99.9" : 111.14908882675743, + "99.99" : 111.14908882675743, + "99.999" : 111.14908882675743, + "99.9999" : 111.14908882675743, + "100.0" : 111.14908882675743 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 111.14908882675743, + 110.92489527140685, + 111.13665039776886 + ], + [ + 107.64938815573633, + 107.8583918780271, + 108.09974628464035 + ], + [ + 105.27645600496199, + 104.48158965432441, + 104.84567994599468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014182477074290387, + "scoreError" : 4.544045452456582E-5, + "scoreConfidence" : [ + 0.01413703661976582, + 0.014227917528814953 + ], + "scorePercentiles" : { + "0.0" : 0.014150026652705457, + "50.0" : 0.01417108860798957, + "90.0" : 0.014222776878592986, + "95.0" : 0.014222776878592986, + "99.0" : 0.014222776878592986, + "99.9" : 0.014222776878592986, + "99.99" : 0.014222776878592986, + "99.999" : 0.014222776878592986, + "99.9999" : 0.014222776878592986, + "100.0" : 0.014222776878592986 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014193744343859291, + 0.014196946813177453, + 0.01417108860798957 + ], + [ + 0.014150026652705457, + 0.014220712166243843, + 0.014222776878592986 + ], + [ + 0.01416372353148631, + 0.014158148562610167, + 0.014165126111948418 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9717049067434507, + "scoreError" : 0.006816987246318855, + "scoreConfidence" : [ + 0.9648879194971318, + 0.9785218939897695 + ], + "scorePercentiles" : { + "0.0" : 0.9666643270178831, + "50.0" : 0.9739816991624465, + "90.0" : 0.9758728205503513, + "95.0" : 0.9758728205503513, + "99.0" : 0.9758728205503513, + "99.9" : 0.9758728205503513, + "99.99" : 0.9758728205503513, + "99.999" : 0.9758728205503513, + "99.9999" : 0.9758728205503513, + "100.0" : 0.9758728205503513 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9676304501209483, + 0.9666643270178831, + 0.9755419225441421 + ], + [ + 0.9683314082106894, + 0.9673373230798994, + 0.9753787322734809 + ], + [ + 0.9739816991624465, + 0.9758728205503513, + 0.9746054777312153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013071837844191544, + "scoreError" : 2.2574804378363924E-4, + "scoreConfidence" : [ + 0.012846089800407905, + 0.013297585887975184 + ], + "scorePercentiles" : { + "0.0" : 0.012941054920453339, + "50.0" : 0.013066141899765456, + "90.0" : 0.013166056665429086, + "95.0" : 0.013166056665429086, + "99.0" : 0.013166056665429086, + "99.9" : 0.013166056665429086, + "99.99" : 0.013166056665429086, + "99.999" : 0.013166056665429086, + "99.9999" : 0.013166056665429086, + "100.0" : 0.013166056665429086 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012941054920453339, + 0.013062482853298849, + 0.013044916436211845 + ], + [ + 0.013069800946232063, + 0.01314671524352408, + 0.013166056665429086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.714277948000932, + "scoreError" : 0.21064436555544172, + "scoreConfidence" : [ + 3.5036335824454903, + 3.9249223135563738 + ], + "scorePercentiles" : { + "0.0" : 3.6397042852983987, + "50.0" : 3.7140892108414008, + "90.0" : 3.7856188084784255, + "95.0" : 3.7856188084784255, + "99.0" : 3.7856188084784255, + "99.9" : 3.7856188084784255, + "99.99" : 3.7856188084784255, + "99.999" : 3.7856188084784255, + "99.9999" : 3.7856188084784255, + "100.0" : 3.7856188084784255 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.650553775912409, + 3.6397042852983987, + 3.647226038657914 + ], + [ + 3.7776246457703926, + 3.7856188084784255, + 3.7849401338880484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8470397521263693, + "scoreError" : 0.025566746262419202, + "scoreConfidence" : [ + 2.82147300586395, + 2.8726064983887887 + ], + "scorePercentiles" : { + "0.0" : 2.8274614687588353, + "50.0" : 2.8499350316329437, + "90.0" : 2.8701827578192254, + "95.0" : 2.8701827578192254, + "99.0" : 2.8701827578192254, + "99.9" : 2.8701827578192254, + "99.99" : 2.8701827578192254, + "99.999" : 2.8701827578192254, + "99.9999" : 2.8701827578192254, + "100.0" : 2.8701827578192254 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8701827578192254, + 2.8599932299113524, + 2.8499350316329437 + ], + [ + 2.860579891590389, + 2.8513845940706957, + 2.841021331534091 + ], + [ + 2.835212614512472, + 2.8274614687588353, + 2.8275868493073224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1745005195505932, + "scoreError" : 0.0020275178639915406, + "scoreConfidence" : [ + 0.17247300168660165, + 0.17652803741458475 + ], + "scorePercentiles" : { + "0.0" : 0.17309754439867064, + "50.0" : 0.1741435452329125, + "90.0" : 0.1760333223960992, + "95.0" : 0.1760333223960992, + "99.0" : 0.1760333223960992, + "99.9" : 0.1760333223960992, + "99.99" : 0.1760333223960992, + "99.999" : 0.1760333223960992, + "99.9999" : 0.1760333223960992, + "100.0" : 0.1760333223960992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17357218840906724, + 0.1732631288875028, + 0.17309754439867064 + ], + [ + 0.17473068384819682, + 0.1737637954162395, + 0.1741435452329125 + ], + [ + 0.1760333223960992, + 0.17601621082831698, + 0.175884256538333 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3228836238631105, + "scoreError" : 0.0025800955935671417, + "scoreConfidence" : [ + 0.32030352826954334, + 0.3254637194566776 + ], + "scorePercentiles" : { + "0.0" : 0.3206341434800731, + "50.0" : 0.32319999993536086, + "90.0" : 0.3249434223883022, + "95.0" : 0.3249434223883022, + "99.0" : 0.3249434223883022, + "99.9" : 0.3249434223883022, + "99.99" : 0.3249434223883022, + "99.999" : 0.3249434223883022, + "99.9999" : 0.3249434223883022, + "100.0" : 0.3249434223883022 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3206341434800731, + 0.32145425224211643, + 0.3210235518923951 + ], + [ + 0.3242084933700762, + 0.32319999993536086, + 0.32265440853068333 + ], + [ + 0.3249434223883022, + 0.3239831920173648, + 0.3238511509116228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16591044519258213, + "scoreError" : 0.0067544336253027755, + "scoreConfidence" : [ + 0.15915601156727935, + 0.17266487881788492 + ], + "scorePercentiles" : { + "0.0" : 0.1618345934814623, + "50.0" : 0.16472899033060437, + "90.0" : 0.17116194415062044, + "95.0" : 0.17116194415062044, + "99.0" : 0.17116194415062044, + "99.9" : 0.17116194415062044, + "99.99" : 0.17116194415062044, + "99.999" : 0.17116194415062044, + "99.9999" : 0.17116194415062044, + "100.0" : 0.17116194415062044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16472899033060437, + 0.16473938853104458, + 0.1646474898167509 + ], + [ + 0.17080365469358474, + 0.17116194415062044, + 0.17112831592997588 + ], + [ + 0.16229985615749157, + 0.1618345934814623, + 0.16184977364170455 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3956644356033628, + "scoreError" : 0.008307636951365563, + "scoreConfidence" : [ + 0.38735679865199724, + 0.40397207255472833 + ], + "scorePercentiles" : { + "0.0" : 0.390096359625512, + "50.0" : 0.3933824678808859, + "90.0" : 0.405691865030426, + "95.0" : 0.405691865030426, + "99.0" : 0.405691865030426, + "99.9" : 0.405691865030426, + "99.99" : 0.405691865030426, + "99.999" : 0.405691865030426, + "99.9999" : 0.405691865030426, + "100.0" : 0.405691865030426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39496456504739336, + 0.3915411707842293, + 0.390096359625512 + ], + [ + 0.405691865030426, + 0.39975288051646946, + 0.3991692626831118 + ], + [ + 0.39332322076696163, + 0.3930581280952755, + 0.3933824678808859 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1572647709808916, + "scoreError" : 0.0037341884184379057, + "scoreConfidence" : [ + 0.1535305825624537, + 0.16099895939932948 + ], + "scorePercentiles" : { + "0.0" : 0.15498375, + "50.0" : 0.15638225283437848, + "90.0" : 0.16048965336778417, + "95.0" : 0.16048965336778417, + "99.0" : 0.16048965336778417, + "99.9" : 0.16048965336778417, + "99.99" : 0.16048965336778417, + "99.999" : 0.16048965336778417, + "99.9999" : 0.16048965336778417, + "100.0" : 0.16048965336778417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1560176270184252, + 0.15642328273111217, + 0.15638225283437848 + ], + [ + 0.1554366101715991, + 0.15567427536660544, + 0.15498375 + ], + [ + 0.16048965336778417, + 0.16026842540506755, + 0.15970706193305226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.0472223516947196, + "scoreError" : 0.0011805643716068521, + "scoreConfidence" : [ + 0.046041787323112746, + 0.04840291606632645 + ], + "scorePercentiles" : { + "0.0" : 0.04637169603342422, + "50.0" : 0.0471845359800318, + "90.0" : 0.04845031826065892, + "95.0" : 0.04845031826065892, + "99.0" : 0.04845031826065892, + "99.9" : 0.04845031826065892, + "99.99" : 0.04845031826065892, + "99.999" : 0.04845031826065892, + "99.9999" : 0.04845031826065892, + "100.0" : 0.04845031826065892 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046576301418225004, + 0.04637169603342422, + 0.046407148343055496 + ], + [ + 0.04845031826065892, + 0.047919916816813936, + 0.04754857862529361 + ], + [ + 0.047405010376817366, + 0.04713765939815601, + 0.0471845359800318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9322508.960505482, + "scoreError" : 254291.34908198053, + "scoreConfidence" : [ + 9068217.611423502, + 9576800.309587462 + ], + "scorePercentiles" : { + "0.0" : 9170753.268560953, + "50.0" : 9282116.878478665, + "90.0" : 9531735.557142857, + "95.0" : 9531735.557142857, + "99.0" : 9531735.557142857, + "99.9" : 9531735.557142857, + "99.99" : 9531735.557142857, + "99.999" : 9531735.557142857, + "99.9999" : 9531735.557142857, + "100.0" : 9531735.557142857 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9250168.812384473, + 9284957.720779222, + 9282116.878478665 + ], + [ + 9193211.326286765, + 9170753.268560953, + 9173660.361136572 + ], + [ + 9493256.503795067, + 9522720.215984777, + 9531735.557142857 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From c7d118560170011f3e1537750f55e2cca049ed68 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Mar 2025 18:08:13 +1100 Subject: [PATCH 240/345] Add tests to lock in client language taking precedence --- .../rules/ArgumentsOfCorrectTypeTest.groovy | 19 +++++++++++ ...iableDefaultValuesOfCorrectTypeTest.groovy | 34 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy index 7445420949..7e8210955e 100644 --- a/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/ArgumentsOfCorrectTypeTest.groovy @@ -44,6 +44,25 @@ class ArgumentsOfCorrectTypeTest extends Specification { i18n.getLocale() >> Locale.ENGLISH } + def "error message uses locale of client (German), not server (English)"() { + def query = """ + query getDog { + dog @objectArgumentDirective(myObject: { id: "1" }) { + name + } + } + """ + def document = new Parser().parseDocument(query) + + when: + def validationErrors = new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.GERMAN) + + then: + validationErrors.size() == 1 + validationErrors.get(0).getValidationErrorType() == ValidationErrorType.WrongType + validationErrors.get(0).message == "Validierungsfehler (WrongType@[dog]) : Argument 'myObject' mit Wert 'ObjectValue{objectFields=[ObjectField{name='id', value=StringValue{value='1'}}]}' fehlen Pflichtfelder '[name]'" + } + def "valid type results in no error"() { given: def variableReference = new VariableReference("ref") diff --git a/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy b/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy index ab1c2950f0..29f132d411 100644 --- a/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/VariableDefaultValuesOfCorrectTypeTest.groovy @@ -73,4 +73,38 @@ class VariableDefaultValuesOfCorrectTypeTest extends Specification { validationErrors[0].getValidationErrorType() == ValidationErrorType.BadValueForDefaultArg validationErrors[0].message == "Validation error (BadValueForDefaultArg) : Bad default value 'StringValue{value='NotANumber'}' for type 'Int'" } + + def "default value has wrong type with error message of client (German), not server (English)"() { + setup: + def schema = ''' + type User { + id: String + } + + type Query { + getUsers(howMany: Int) : [User] + } + ''' + + def query = ''' + query($howMany: Int = "NotANumber") { + getUsers(howMany: $howMany) { + id + } + } + ''' + + def graphQlSchema = TestUtil.schema(schema) + def document = TestUtil.parseQuery(query) + def validator = new Validator() + + when: + def validationErrors = validator.validateDocument(graphQlSchema, document, Locale.GERMAN) + + then: + !validationErrors.empty + validationErrors.size() == 1 + validationErrors[0].getValidationErrorType() == ValidationErrorType.BadValueForDefaultArg + validationErrors[0].message == "Validierungsfehler (BadValueForDefaultArg) : Ungültiger Standardwert 'StringValue{value='NotANumber'}' für Typ 'Int'" + } } \ No newline at end of file From 39d451cf1a9fd787b65a8ab35d4fd107640f4190 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Mar 2025 19:21:15 +1100 Subject: [PATCH 241/345] Remove extra add directives, put behaviour in original builders --- ...GraphqlDirectivesContainerTypeBuilder.java | 32 +------------------ 1 file changed, 1 insertion(+), 31 deletions(-) diff --git a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java index fb740fadc9..0cff9706a1 100644 --- a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java +++ b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java @@ -13,7 +13,6 @@ public abstract class GraphqlDirectivesContainerTypeBuilder appliedDirectives = new ArrayList<>(); protected final List directives = new ArrayList<>(); - public B replaceAppliedDirectives(List directives) { assertNotNull(directives, () -> "directive can't be null"); this.appliedDirectives.clear(); @@ -21,36 +20,13 @@ public B replaceAppliedDirectives(List directives) { return (B) this; } - public B addAppliedDirectives(GraphQLAppliedDirective... directives) { - assertNotNull(directives, () -> "directives can't be null"); - for (GraphQLAppliedDirective directive : directives) { - addAppliedDirective(directive); - } - return (B) this; - } - - public B addAppliedDirective(GraphQLAppliedDirective directive) { - assertNotNull(directive, () -> "directive can't be null"); - this.appliedDirectives.add(directive); - return (B) this; - } - - public B addAppliedDirective(GraphQLAppliedDirective.Builder builder) { - return addAppliedDirective(builder.build()); - } - /** * @param directives the variable args of directives * * @return this builder - * - * @deprecated - use {@link #replaceAppliedDirectives(List)} to clear and replace directives, - * or {@link #addAppliedDirectives(GraphQLAppliedDirective...)} to add directives without clearing the existing ones */ - @Deprecated(since = "2025-02-16", forRemoval = true) public B withAppliedDirectives(GraphQLAppliedDirective... directives) { assertNotNull(directives, () -> "directives can't be null"); - this.appliedDirectives.clear(); for (GraphQLAppliedDirective directive : directives) { withAppliedDirective(directive); } @@ -61,10 +37,7 @@ public B withAppliedDirectives(GraphQLAppliedDirective... directives) { * @param directive the directive to add * * @return this builder - * - * @deprecated - use {@link #addAppliedDirective(GraphQLAppliedDirective)} instead */ - @Deprecated(since = "2025-02-16", forRemoval = true) public B withAppliedDirective(GraphQLAppliedDirective directive) { assertNotNull(directive, () -> "directive can't be null"); this.appliedDirectives.add(directive); @@ -75,12 +48,9 @@ public B withAppliedDirective(GraphQLAppliedDirective directive) { * @param builder the directive builder * * @return this builder - * - * @deprecated - use {@link #addAppliedDirective(GraphQLAppliedDirective.Builder)} instead */ - @Deprecated(since = "2025-02-16", forRemoval = true) public B withAppliedDirective(GraphQLAppliedDirective.Builder builder) { - return withAppliedDirectives(builder.build()); + return withAppliedDirective(builder.build()); } /** From 276cdea20c97cdcc842efb8747c280305518d964 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Mar 2025 19:28:43 +1100 Subject: [PATCH 242/345] Change tests back --- ...SchemaGeneratorAppliedDirectiveHelper.java | 2 +- .../execution/ValuesResolverTest.groovy | 25 +++++++++---------- .../graphql/schema/SchemaTraverserTest.groovy | 10 ++++---- .../schema/idl/SchemaPrinterTest.groovy | 4 +-- ...dVisibilitySchemaTransformationTest.groovy | 6 ++--- .../AppliedDirectivesAreValidTest.groovy | 4 +-- .../validation/SpecValidationSchema.java | 2 +- .../validation/ValidationUtilTest.groovy | 4 +-- 8 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java index 40531f8edd..e7d94dffdf 100644 --- a/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java +++ b/src/main/java/graphql/schema/idl/SchemaGeneratorAppliedDirectiveHelper.java @@ -50,7 +50,7 @@ static void buildAppliedDirectives(SchemaGeneratorHelper.BuildContext buildCtx, } } for (GraphQLAppliedDirective appliedDirective : appliedDirectives.second) { - builder.addAppliedDirective(appliedDirective); + builder.withAppliedDirective(appliedDirective); } } diff --git a/src/test/groovy/graphql/execution/ValuesResolverTest.groovy b/src/test/groovy/graphql/execution/ValuesResolverTest.groovy index 24a784b665..b9256f1304 100644 --- a/src/test/groovy/graphql/execution/ValuesResolverTest.groovy +++ b/src/test/groovy/graphql/execution/ValuesResolverTest.groovy @@ -2,7 +2,6 @@ package graphql.execution import graphql.Directives import graphql.ErrorType -import graphql.ExecutionInput import graphql.GraphQLContext import graphql.GraphQLException import graphql.TestUtil @@ -100,7 +99,7 @@ class ValuesResolverTest extends Specification { .type(GraphQLString) def inputType = newInputObject() .name("Person") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(aField) .field(bField) .build() @@ -418,7 +417,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -498,7 +497,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def oneOfObjectType = newInputObject() .name("OneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -588,7 +587,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def oneOfObjectType = newInputObject() .name("OneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -636,7 +635,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -677,7 +676,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -738,7 +737,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -792,7 +791,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -853,7 +852,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -914,7 +913,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -962,7 +961,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) @@ -1010,7 +1009,7 @@ class ValuesResolverTest extends Specification { given: "schema defining input object" def inputObjectType = newInputObject() .name("oneOfInputObject") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(newInputObjectField() .name("a") .type(GraphQLString) diff --git a/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy b/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy index 342684101c..f4f567752a 100644 --- a/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy @@ -203,7 +203,7 @@ class SchemaTraverserTest extends Specification { .name("foo") .coercing(coercing) .withDirective(mkDirective("bar", DirectiveLocation.SCALAR)) - .addAppliedDirective(GraphQLAppliedDirective.newDirective() + .withAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, scalarType) @@ -219,7 +219,7 @@ class SchemaTraverserTest extends Specification { def objectType = GraphQLObjectType.newObject() .name("foo") .withDirective(mkDirective("bar", DirectiveLocation.OBJECT)) - .addAppliedDirective(GraphQLAppliedDirective.newDirective() + .withAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, objectType) @@ -253,7 +253,7 @@ class SchemaTraverserTest extends Specification { .name("foo") .type(Scalars.GraphQLString) .withDirective(mkDirective("bar", DirectiveLocation.FIELD_DEFINITION)) - .addAppliedDirective(GraphQLAppliedDirective.newDirective() + .withAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, fieldDefinition) @@ -270,7 +270,7 @@ class SchemaTraverserTest extends Specification { .name("foo") .type(Scalars.GraphQLString) .withDirective(mkDirective("bar", DirectiveLocation.ARGUMENT_DEFINITION)) - .addAppliedDirective(GraphQLAppliedDirective.newDirective() + .withAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, argument) @@ -286,7 +286,7 @@ class SchemaTraverserTest extends Specification { def interfaceType = GraphQLInterfaceType.newInterface() .name("foo") .withDirective(mkDirective("bar", DirectiveLocation.INTERFACE)) - .addAppliedDirective(GraphQLAppliedDirective.newDirective() + .withAppliedDirective(GraphQLAppliedDirective.newDirective() .name("barApplied")) .build() new SchemaTraverser().depthFirst(visitor, interfaceType) diff --git a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy index 2da37126f7..2870244328 100644 --- a/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy +++ b/src/test/groovy/graphql/schema/idl/SchemaPrinterTest.groovy @@ -2393,7 +2393,7 @@ type Query { .build() objType = newObject().name("obj").field({ - it.name("f").type(GraphQLString).addAppliedDirective(newAppliedDirective) + it.name("f").type(GraphQLString).withAppliedDirective(newAppliedDirective) }).build() result = new SchemaPrinter().print(objType) @@ -2414,7 +2414,7 @@ type Query { .build() GraphQLInputObjectType type = GraphQLInputObjectType.newInputObject().name("Person") - .field({ it.name("thisMustBeAPercentageSign").type(GraphQLString).addAppliedDirective(constraintAppliedDirective) }) + .field({ it.name("thisMustBeAPercentageSign").type(GraphQLString).withAppliedDirective(constraintAppliedDirective) }) .build() when: diff --git a/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy b/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy index f12e6326b8..00b7edd505 100644 --- a/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy +++ b/src/test/groovy/graphql/schema/transform/FieldVisibilitySchemaTransformationTest.groovy @@ -945,7 +945,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("SuperSecretCustomerData")).addAppliedDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("SuperSecretCustomerData")).withAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() @@ -994,7 +994,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).addAppliedDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).withAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() @@ -1042,7 +1042,7 @@ class FieldVisibilitySchemaTransformationTest extends Specification { def account = newObject() .name("Account") .field(newFieldDefinition().name("name").type(Scalars.GraphQLString).build()) - .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).addAppliedDirective(privateDirective).build()) + .field(newFieldDefinition().name("billingStatus").type(typeRef("BillingStatus")).withAppliedDirective(privateDirective).build()) .build() def billingStatus = newObject() diff --git a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy index 0e524dc2ae..fd1491bea3 100644 --- a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy +++ b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy @@ -66,8 +66,8 @@ class AppliedDirectivesAreValidTest extends Specification { def field = newFieldDefinition() .name("hello") .type(GraphQLString) - .addAppliedDirectives(directive1.toAppliedDirective()) - .addAppliedDirectives(directive2.toAppliedDirective()) + .withAppliedDirectives(directive1.toAppliedDirective()) + .withAppliedDirectives(directive2.toAppliedDirective()) .build() when: diff --git a/src/test/groovy/graphql/validation/SpecValidationSchema.java b/src/test/groovy/graphql/validation/SpecValidationSchema.java index 0ad7d0a2df..060a2399cd 100644 --- a/src/test/groovy/graphql/validation/SpecValidationSchema.java +++ b/src/test/groovy/graphql/validation/SpecValidationSchema.java @@ -190,7 +190,7 @@ public class SpecValidationSchema { public static final GraphQLInputObjectType oneOfInputType = GraphQLInputObjectType.newInputObject() .name("oneOfInputType") - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .field(GraphQLInputObjectField.newInputObjectField() .name("a") .type(GraphQLString)) diff --git a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy index 96d8646c52..251362b09a 100644 --- a/src/test/groovy/graphql/validation/ValidationUtilTest.groovy +++ b/src/test/groovy/graphql/validation/ValidationUtilTest.groovy @@ -211,7 +211,7 @@ class ValidationUtilTest extends Specification { given: def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") - .addAppliedDirective(newDirective().name(OneOfDirective.getName())) + .withAppliedDirective(newDirective().name(OneOfDirective.getName())) .field(GraphQLInputObjectField.newInputObjectField() .name("f1") .type(GraphQLString)) @@ -231,7 +231,7 @@ class ValidationUtilTest extends Specification { given: def inputObjectType = GraphQLInputObjectType.newInputObject() .name("inputObjectType") - .addAppliedDirective(newDirective().name(OneOfDirective.getName())) + .withAppliedDirective(newDirective().name(OneOfDirective.getName())) .field(GraphQLInputObjectField.newInputObjectField() .name("f1") .type(GraphQLString)) From 1be0a4a2615e6300a6187e433d403d7ade54c34c Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Mar 2025 19:34:01 +1100 Subject: [PATCH 243/345] More tidying up --- .../graphql/schema/GraphQLArgumentTest.groovy | 2 +- .../schema/GraphQLInputObjectTypeTest.groovy | 2 +- .../SchemaPrinterComparatorsTest.groovy | 135 ++++++++---------- .../graphql/schema/SchemaTraverserTest.groovy | 17 --- 4 files changed, 61 insertions(+), 95 deletions(-) diff --git a/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy b/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy index 5e2d446c61..a957b25425 100644 --- a/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLArgumentTest.groovy @@ -231,7 +231,7 @@ class GraphQLArgumentTest extends Specification { def field = newFieldDefinition() .name("hello") .type(GraphQLString) - .addAppliedDirective(directive.toAppliedDirective()) + .withAppliedDirective(directive.toAppliedDirective()) .build() when: newSchema() diff --git a/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy b/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy index 009ae99bd9..9ad43412bf 100644 --- a/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy +++ b/src/test/groovy/graphql/schema/GraphQLInputObjectTypeTest.groovy @@ -103,7 +103,7 @@ class GraphQLInputObjectTypeTest extends Specification { when: inputObjectType = newInputObject().name("TestInputObjectType") .field(newInputObjectField().name("NAME").type(GraphQLInt)) - .addAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) + .withAppliedDirective(Directives.OneOfDirective.toAppliedDirective()) .build() then: inputObjectType.isOneOf() diff --git a/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy b/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy index 6898f71faa..35ef8ab026 100644 --- a/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaPrinterComparatorsTest.groovy @@ -25,27 +25,10 @@ import static graphql.schema.idl.SchemaPrinter.Options.defaultOptions class SchemaPrinterComparatorsTest extends Specification { - def "scalarPrinter default comparator legacy test"() { - given: - // Remove this test when the legacy withAppliedDirectives is removed - GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .build() - - when: - def options = defaultOptions().includeScalarTypes(true) - def result = new SchemaPrinter(options).print(scalarType) - - then: - result == '''"TestScalar" -scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) -''' - } - def "scalarPrinter default comparator"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -61,9 +44,9 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) def "enumPrinter default comparator"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: @@ -81,7 +64,7 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) def "unionPrinter default comparator"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() @@ -99,15 +82,15 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -128,15 +111,15 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a").build(), newInterface().name("bb").build()) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -156,13 +139,13 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -206,7 +189,7 @@ scalar TestScalar @a(a : 0, bb : 0) @bb(a : 0, bb : 0) def "scalarPrinter uses most specific registered comparators"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -227,7 +210,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "scalarPrinter uses least specific registered comparators"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -248,9 +231,9 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "enumPrinter uses most specific registered comparators"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: @@ -275,9 +258,9 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "enumPrinter uses least specific registered comparators"() { given: GraphQLEnumType enumType = newEnum().name("TestEnum") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(1).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(1).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() when: @@ -301,7 +284,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "unionPrinter uses most specific registered comparators"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() @@ -324,7 +307,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "unionPrinter uses least specific registered comparators"() { given: GraphQLUnionType unionType = newUnionType().name("TestUnion") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() @@ -348,15 +331,15 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -384,15 +367,15 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInterfaceType interfaceType = newInterface().name("TypeA") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -420,14 +403,14 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) - .type(GraphQLString).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -456,14 +439,14 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) // @formatter:off GraphQLObjectType objectType = newObject().name("TypeA") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) - .type(GraphQLString).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -490,13 +473,13 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -522,13 +505,13 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLInputObjectType inputObjectType = newInputObject().name("TypeA") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -585,7 +568,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: def field = newFieldDefinition().name("field") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -604,7 +587,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: def field = newFieldDefinition().name("field") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() when: @@ -624,53 +607,53 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) given: // @formatter:off GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .build() GraphQLUnionType unionType = newUnionType().name("TestUnion") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .possibleType(newObject().name("a").build()) .possibleType(newObject().name("bb").build()) .build() GraphQLEnumType enumType = newEnum().name("TestEnum") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) - .value(newEnumValueDefinition().name("a").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) - .value(newEnumValueDefinition().name("bb").value(0).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .value(newEnumValueDefinition().name("a").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .value(newEnumValueDefinition().name("bb").value(0).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLObjectType objectType = newObject().name("TestObjectType") .withInterfaces(newInterface().name("a") .build(), newInterface().name("bb").build()) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) - .type(GraphQLString).addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .type(GraphQLString).withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLInterfaceType interfaceType = newInterface().name("TestInterfaceType") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newFieldDefinition().name("a") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newFieldDefinition().name("bb") .arguments(mockArguments("a", "bb")) .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() GraphQLInputObjectType inputObjectType = newInputObject().name("TestInputObjectType") - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")) .field(newInputObjectField().name("a") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .field(newInputObjectField().name("bb") .type(GraphQLString) - .addAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) + .withAppliedDirectives(mockDirectivesWithArguments("a", "bb")).build()) .build() // @formatter:on @@ -755,7 +738,7 @@ scalar TestScalar @bb(bb : 0, a : 0) @a(bb : 0, a : 0) def "directive string when argument has no value"() { given: GraphQLScalarType scalarType = newScalar(mockScalar("TestScalar")) - .addAppliedDirectives(mockDirectivesWithNoValueArguments("a", "bb")) + .withAppliedDirectives(mockDirectivesWithNoValueArguments("a", "bb")) .build() when: diff --git a/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy b/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy index f4f567752a..f7a6fc8a9c 100644 --- a/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy +++ b/src/test/groovy/graphql/schema/SchemaTraverserTest.groovy @@ -229,23 +229,6 @@ class SchemaTraverserTest extends Specification { ] } - def "reachable object directive legacy test"() { - // Delete this test when we remove the legacy withAppliedDirective method - when: - def visitor = new GraphQLTestingVisitor() - def objectType = GraphQLObjectType.newObject() - .name("foo") - .withDirective(mkDirective("bar", DirectiveLocation.OBJECT)) - .withAppliedDirective(GraphQLAppliedDirective.newDirective() - .name("barApplied")) - .build() - new SchemaTraverser().depthFirst(visitor, objectType) - then: - visitor.getStack() == [ - "object: foo", "fallback: foo", "directive: bar", "fallback: bar", "appliedDirective: barApplied", "fallback: barApplied" - ] - } - def "reachable field definition directive"() { when: def visitor = new GraphQLTestingVisitor() From df2738b4e59322c8e78133eb608ff7882292dbac Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Mar 2025 19:40:49 +1100 Subject: [PATCH 244/345] Lock in behaviour with tests --- .../validation/AppliedDirectivesAreValidTest.groovy | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy index fd1491bea3..6aca9fa59c 100644 --- a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy +++ b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy @@ -59,7 +59,7 @@ class AppliedDirectivesAreValidTest extends Specification { hasError(schemaProblem, "The directive 'directiveA' on the 'GraphQLInputObjectField' called 'inputFieldA' is a non repeatable directive but has been applied 2 times") } - def "add applied directive builders do not clear any existing applied directives"(){ + def "applied directive builders do not clear any existing applied directives"() { given: def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) @@ -89,16 +89,15 @@ class AppliedDirectivesAreValidTest extends Specification { fieldAppliedDirectives.any { it.name == "myDirectiveName2" } } - def "with applied directive builders do clear and replace existing applied directives"(){ - // Retain for test coverage. Delete after deprecated methods are removed + def "replace applied directive builders do clear and replace existing applied directives"(){ given: def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) def field = newFieldDefinition() .name("hello") .type(GraphQLString) - .withAppliedDirectives(directive1.toAppliedDirective()) - .withAppliedDirectives(directive2.toAppliedDirective()) + .withAppliedDirective(directive1.toAppliedDirective()) + .replaceAppliedDirectives(List.of(directive2.toAppliedDirective())) .build() when: From 91c9b749507379bea26618e636083e79a81efb2e Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Mar 2025 19:43:05 +1100 Subject: [PATCH 245/345] Remove clear from non-applied directive builder --- .../graphql/schema/GraphqlDirectivesContainerTypeBuilder.java | 1 - .../schema/validation/AppliedDirectivesAreValidTest.groovy | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java index 0cff9706a1..34187889fb 100644 --- a/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java +++ b/src/main/java/graphql/schema/GraphqlDirectivesContainerTypeBuilder.java @@ -78,7 +78,6 @@ public B replaceDirectives(List directives) { @Deprecated(since = "2022-02-24") public B withDirectives(GraphQLDirective... directives) { assertNotNull(directives, () -> "directives can't be null"); - this.directives.clear(); for (GraphQLDirective directive : directives) { withDirective(directive); } diff --git a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy index 6aca9fa59c..0ac4c9624f 100644 --- a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy +++ b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy @@ -89,7 +89,7 @@ class AppliedDirectivesAreValidTest extends Specification { fieldAppliedDirectives.any { it.name == "myDirectiveName2" } } - def "replace applied directive builders do clear and replace existing applied directives"(){ + def "replace applied directive builder does clear and replace existing applied directives"(){ given: def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) From 12eaa8626b37149489c057e71b81cd40ccaa5af5 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 16 Mar 2025 19:55:13 +1100 Subject: [PATCH 246/345] Tidy up --- .../schema/validation/AppliedDirectivesAreValidTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy index 0ac4c9624f..f5a2136bba 100644 --- a/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy +++ b/src/test/groovy/graphql/schema/validation/AppliedDirectivesAreValidTest.groovy @@ -89,7 +89,7 @@ class AppliedDirectivesAreValidTest extends Specification { fieldAppliedDirectives.any { it.name == "myDirectiveName2" } } - def "replace applied directive builder does clear and replace existing applied directives"(){ + def "replace applied directive builder does clear and replace existing applied directives"() { given: def directive1 = mkDirective("myDirectiveName1", FIELD_DEFINITION) def directive2 = mkDirective("myDirectiveName2", FIELD_DEFINITION) From 55062e46f3fd71a941bf78b2fe40fb2ee4dadff5 Mon Sep 17 00:00:00 2001 From: Tim Ward Date: Tue, 18 Mar 2025 00:11:55 -0700 Subject: [PATCH 247/345] Move DFSelectionSetBenchmark to performance suite --- .../DFSelectionSetPerformance.java} | 28 ++++++------------- 1 file changed, 8 insertions(+), 20 deletions(-) rename src/test/java/{benchmark/DFSelectionSetBenchmark.java => performance/DFSelectionSetPerformance.java} (73%) diff --git a/src/test/java/benchmark/DFSelectionSetBenchmark.java b/src/test/java/performance/DFSelectionSetPerformance.java similarity index 73% rename from src/test/java/benchmark/DFSelectionSetBenchmark.java rename to src/test/java/performance/DFSelectionSetPerformance.java index 01081cf51c..7029f9ef4a 100644 --- a/src/test/java/benchmark/DFSelectionSetBenchmark.java +++ b/src/test/java/performance/DFSelectionSetPerformance.java @@ -1,27 +1,15 @@ -package benchmark; +package performance; +import benchmark.BenchmarkUtils; import graphql.execution.CoercedVariables; import graphql.language.Document; import graphql.normalized.ExecutableNormalizedField; import graphql.normalized.ExecutableNormalizedOperation; import graphql.normalized.ExecutableNormalizedOperationFactory; import graphql.parser.Parser; -import graphql.schema.DataFetchingFieldSelectionSet; -import graphql.schema.DataFetchingFieldSelectionSetImpl; -import graphql.schema.GraphQLOutputType; -import graphql.schema.GraphQLSchema; -import graphql.schema.SelectedField; +import graphql.schema.*; import graphql.schema.idl.SchemaGenerator; -import org.openjdk.jmh.annotations.Benchmark; -import org.openjdk.jmh.annotations.BenchmarkMode; -import org.openjdk.jmh.annotations.Fork; -import org.openjdk.jmh.annotations.Measurement; -import org.openjdk.jmh.annotations.Mode; -import org.openjdk.jmh.annotations.OutputTimeUnit; -import org.openjdk.jmh.annotations.Scope; -import org.openjdk.jmh.annotations.Setup; -import org.openjdk.jmh.annotations.State; -import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.annotations.*; import org.openjdk.jmh.infra.Blackhole; import java.util.List; @@ -31,7 +19,7 @@ @Warmup(iterations = 2, time = 5) @Measurement(iterations = 3) @Fork(3) -public class DFSelectionSetBenchmark { +public class DFSelectionSetPerformance { @State(Scope.Benchmark) public static class MyState { @@ -44,10 +32,10 @@ public static class MyState { @Setup public void setup() { try { - String schemaString = BenchmarkUtils.loadResource("large-schema-2.graphqls"); + String schemaString = PerformanceTestingUtils.loadResource("large-schema-2.graphqls"); schema = SchemaGenerator.createdMockedSchema(schemaString); - String query = BenchmarkUtils.loadResource("large-schema-2-query.graphql"); + String query = PerformanceTestingUtils.loadResource("large-schema-2-query.graphql"); document = Parser.parse(query); ExecutableNormalizedOperation executableNormalizedOperation = ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(schema, document, null, CoercedVariables.emptyVariables()); @@ -89,7 +77,7 @@ public static void mainX(String[] args) throws InterruptedException { myState.setup(); while (true) { - List selectedFields = new DFSelectionSetBenchmark().getSelectedFields(myState); + List selectedFields = new DFSelectionSetPerformance().getSelectedFields(myState); Thread.sleep(500); } } From 90dee30d2d3f8168a9f17ba2ee6bc0fa228af37e Mon Sep 17 00:00:00 2001 From: Tim Ward Date: Tue, 18 Mar 2025 00:12:32 -0700 Subject: [PATCH 248/345] Add performance benchmarks for DataFetchingFieldSelectionSet.getImmediateFields --- .../DFSelectionSetPerformance.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/test/java/performance/DFSelectionSetPerformance.java b/src/test/java/performance/DFSelectionSetPerformance.java index 7029f9ef4a..3566ca4647 100644 --- a/src/test/java/performance/DFSelectionSetPerformance.java +++ b/src/test/java/performance/DFSelectionSetPerformance.java @@ -67,11 +67,32 @@ public void benchMarkThroughput(MyState myState, Blackhole blackhole) { blackhole.consume(fields); } + @Benchmark + @BenchmarkMode(Mode.AverageTime) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkAvgTime_getImmediateFields(MyState myState, Blackhole blackhole) { + List fields = getImmediateFields(myState); + blackhole.consume(fields); + } + + @Benchmark + @BenchmarkMode(Mode.Throughput) + @OutputTimeUnit(TimeUnit.MILLISECONDS) + public void benchMarkThroughput_getImmediateFields(MyState myState, Blackhole blackhole) { + List fields = getImmediateFields(myState); + blackhole.consume(fields); + } + private List getSelectedFields(MyState myState) { DataFetchingFieldSelectionSet dataFetchingFieldSelectionSet = DataFetchingFieldSelectionSetImpl.newCollector(myState.schema, myState.outputFieldType, () -> myState.normalisedField); return dataFetchingFieldSelectionSet.getFields("wontBeFound"); } + private List getImmediateFields(MyState myState) { + DataFetchingFieldSelectionSet dataFetchingFieldSelectionSet = DataFetchingFieldSelectionSetImpl.newCollector(myState.schema, myState.outputFieldType, () -> myState.normalisedField); + return dataFetchingFieldSelectionSet.getImmediateFields(); + } + public static void mainX(String[] args) throws InterruptedException { MyState myState = new MyState(); myState.setup(); From f267e9d2eebe0cdcc2c59e45f693571861a893d8 Mon Sep 17 00:00:00 2001 From: Tim Ward Date: Tue, 18 Mar 2025 07:22:18 -0700 Subject: [PATCH 249/345] Revert import auto-format. --- .../performance/DFSelectionSetPerformance.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/test/java/performance/DFSelectionSetPerformance.java b/src/test/java/performance/DFSelectionSetPerformance.java index 3566ca4647..12a71fbe8e 100644 --- a/src/test/java/performance/DFSelectionSetPerformance.java +++ b/src/test/java/performance/DFSelectionSetPerformance.java @@ -1,15 +1,27 @@ package performance; -import benchmark.BenchmarkUtils; import graphql.execution.CoercedVariables; import graphql.language.Document; import graphql.normalized.ExecutableNormalizedField; import graphql.normalized.ExecutableNormalizedOperation; import graphql.normalized.ExecutableNormalizedOperationFactory; import graphql.parser.Parser; -import graphql.schema.*; +import graphql.schema.DataFetchingFieldSelectionSet; +import graphql.schema.DataFetchingFieldSelectionSetImpl; +import graphql.schema.GraphQLOutputType; +import graphql.schema.GraphQLSchema; +import graphql.schema.SelectedField; import graphql.schema.idl.SchemaGenerator; -import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; import org.openjdk.jmh.infra.Blackhole; import java.util.List; From a1efdb89045fc099bc7378c758c98456df2d4a18 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Mar 2025 23:42:22 +0000 Subject: [PATCH 250/345] Add performance results for commit 3d7dce5e49dfbe92d656629ae4fdbab979bba8be --- ...9dfbe92d656629ae4fdbab979bba8be-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json diff --git a/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json b/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json new file mode 100644 index 0000000000..01af99efd7 --- /dev/null +++ b/performance-results/2025-03-18T23:42:07Z-3d7dce5e49dfbe92d656629ae4fdbab979bba8be-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4030341962375994, + "scoreError" : 0.02905720653413424, + "scoreConfidence" : [ + 3.3739769897034653, + 3.4320914027717335 + ], + "scorePercentiles" : { + "0.0" : 3.3984726801583083, + "50.0" : 3.40222251416189, + "90.0" : 3.40921907646831, + "95.0" : 3.40921907646831, + "99.0" : 3.40921907646831, + "99.9" : 3.40921907646831, + "99.99" : 3.40921907646831, + "99.999" : 3.40921907646831, + "99.9999" : 3.40921907646831, + "100.0" : 3.40921907646831 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3984726801583083, + 3.40921907646831 + ], + [ + 3.401847449089267, + 3.402597579234513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7177090587738857, + "scoreError" : 0.011729170580772197, + "scoreConfidence" : [ + 1.7059798881931134, + 1.729438229354658 + ], + "scorePercentiles" : { + "0.0" : 1.7161540986078148, + "50.0" : 1.7174972498814143, + "90.0" : 1.7196876367249, + "95.0" : 1.7196876367249, + "99.0" : 1.7196876367249, + "99.9" : 1.7196876367249, + "99.99" : 1.7196876367249, + "99.999" : 1.7196876367249, + "99.9999" : 1.7196876367249, + "100.0" : 1.7196876367249 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7161816911797099, + 1.7188128085831187 + ], + [ + 1.7161540986078148, + 1.7196876367249 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8648592999960828, + "scoreError" : 0.005526498918160724, + "scoreConfidence" : [ + 0.8593328010779221, + 0.8703857989142435 + ], + "scorePercentiles" : { + "0.0" : 0.8639429699495912, + "50.0" : 0.8649398593777518, + "90.0" : 0.8656145112792367, + "95.0" : 0.8656145112792367, + "99.0" : 0.8656145112792367, + "99.9" : 0.8656145112792367, + "99.99" : 0.8656145112792367, + "99.999" : 0.8656145112792367, + "99.9999" : 0.8656145112792367, + "100.0" : 0.8656145112792367 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.864318860199225, + 0.8639429699495912 + ], + [ + 0.8655608585562785, + 0.8656145112792367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.894285209058118, + "scoreError" : 0.22100514707279106, + "scoreConfidence" : [ + 15.673280061985327, + 16.11529035613091 + ], + "scorePercentiles" : { + "0.0" : 15.675229525482061, + "50.0" : 15.907164710763897, + "90.0" : 16.06855890412849, + "95.0" : 16.06855890412849, + "99.0" : 16.06855890412849, + "99.9" : 16.06855890412849, + "99.99" : 16.06855890412849, + "99.999" : 16.06855890412849, + "99.9999" : 16.06855890412849, + "100.0" : 16.06855890412849 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.06855890412849, + 15.954200891572873, + 15.889569229430252 + ], + [ + 15.907164710763897, + 16.00879970270076, + 15.99190467327713 + ], + [ + 15.830796895625069, + 15.675229525482061, + 15.72234234854253 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 23.84258595407435, + "scoreError" : 0.16971826450224373, + "scoreConfidence" : [ + 23.672867689572108, + 24.012304218576595 + ], + "scorePercentiles" : { + "0.0" : 23.73385673723001, + "50.0" : 23.823719230321753, + "90.0" : 24.079442391385157, + "95.0" : 24.079442391385157, + "99.0" : 24.079442391385157, + "99.9" : 24.079442391385157, + "99.99" : 24.079442391385157, + "99.999" : 24.079442391385157, + "99.9999" : 24.079442391385157, + "100.0" : 24.079442391385157 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 23.899958603431326, + 23.796039927842227, + 23.790688365773097 + ], + [ + 23.849380733110003, + 24.079442391385157, + 23.823719230321753 + ], + [ + 23.839112614729608, + 23.73385673723001, + 23.771074982845974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70190.75403769573, + "scoreError" : 401.50400495191934, + "scoreConfidence" : [ + 69789.25003274382, + 70592.25804264765 + ], + "scorePercentiles" : { + "0.0" : 69854.4041312379, + "50.0" : 70190.65239873884, + "90.0" : 70493.13169380104, + "95.0" : 70493.13169380104, + "99.0" : 70493.13169380104, + "99.9" : 70493.13169380104, + "99.99" : 70493.13169380104, + "99.999" : 70493.13169380104, + "99.9999" : 70493.13169380104, + "100.0" : 70493.13169380104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70482.36880103988, + 70493.13169380104, + 70329.6963337318 + ], + [ + 69983.17063049234, + 70365.16553246543, + 70190.65239873884 + ], + [ + 70073.43951918474, + 69854.4041312379, + 69944.75729856959 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.33117298479885, + "scoreError" : 16.396151264190877, + "scoreConfidence" : [ + 307.935021720608, + 340.7273242489897 + ], + "scorePercentiles" : { + "0.0" : 311.7536298897916, + "50.0" : 320.7394310847248, + "90.0" : 341.3502382353502, + "95.0" : 341.3502382353502, + "99.0" : 341.3502382353502, + "99.9" : 341.3502382353502, + "99.99" : 341.3502382353502, + "99.999" : 341.3502382353502, + "99.9999" : 341.3502382353502, + "100.0" : 341.3502382353502 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 320.6566368654864, + 323.2717383562003, + 320.0584633567249 + ], + [ + 334.0350009976469, + 341.3502382353502, + 332.8480453159042 + ], + [ + 314.2673727613599, + 311.7536298897916, + 320.7394310847248 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 98.82877677960663, + "scoreError" : 2.213364397678412, + "scoreConfidence" : [ + 96.61541238192821, + 101.04214117728505 + ], + "scorePercentiles" : { + "0.0" : 96.7095691352346, + "50.0" : 98.54617145982048, + "90.0" : 100.73049767909293, + "95.0" : 100.73049767909293, + "99.0" : 100.73049767909293, + "99.9" : 100.73049767909293, + "99.99" : 100.73049767909293, + "99.999" : 100.73049767909293, + "99.9999" : 100.73049767909293, + "100.0" : 100.73049767909293 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 98.54617145982048, + 98.33512677300635, + 97.41535629373469 + ], + [ + 100.49777592353054, + 98.52742877499989, + 99.21958486804665 + ], + [ + 99.47748010899346, + 100.73049767909293, + 96.7095691352346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06274013284017438, + "scoreError" : 7.00780518209212E-4, + "scoreConfidence" : [ + 0.06203935232196517, + 0.06344091335838359 + ], + "scorePercentiles" : { + "0.0" : 0.06218591576394503, + "50.0" : 0.06281513064070351, + "90.0" : 0.06342166454841226, + "95.0" : 0.06342166454841226, + "99.0" : 0.06342166454841226, + "99.9" : 0.06342166454841226, + "99.99" : 0.06342166454841226, + "99.999" : 0.06342166454841226, + "99.9999" : 0.06342166454841226, + "100.0" : 0.06342166454841226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06298900028974552, + 0.06281513064070351, + 0.06218591576394503 + ], + [ + 0.06310182017466368, + 0.06285766694114098, + 0.06342166454841226 + ], + [ + 0.06224469643779682, + 0.062339103487828444, + 0.06270619727733327 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.041783924753189074, + "scoreError" : 3.37840812015335E-4, + "scoreConfidence" : [ + 0.04144608394117374, + 0.04212176556520441 + ], + "scorePercentiles" : { + "0.0" : 0.04141958317973782, + "50.0" : 0.04176708066375415, + "90.0" : 0.04209846797618948, + "95.0" : 0.04209846797618948, + "99.0" : 0.04209846797618948, + "99.9" : 0.04209846797618948, + "99.99" : 0.04209846797618948, + "99.999" : 0.04209846797618948, + "99.9999" : 0.04209846797618948, + "100.0" : 0.04209846797618948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04191370691440092, + 0.04174531906358145, + 0.04141958317973782 + ], + [ + 0.04176708066375415, + 0.04170001375666671, + 0.04209846797618948 + ], + [ + 0.04160955372753638, + 0.041965154257729884, + 0.041836443239104876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014174588031238746, + "scoreError" : 1.2015869779662313E-4, + "scoreConfidence" : [ + 0.014054429333442123, + 0.014294746729035369 + ], + "scorePercentiles" : { + "0.0" : 0.0140440420136085, + "50.0" : 0.01417231512733663, + "90.0" : 0.014274561368398815, + "95.0" : 0.014274561368398815, + "99.0" : 0.014274561368398815, + "99.9" : 0.014274561368398815, + "99.99" : 0.014274561368398815, + "99.999" : 0.014274561368398815, + "99.9999" : 0.014274561368398815, + "100.0" : 0.014274561368398815 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014137954149789701, + 0.014109782593543162, + 0.0140440420136085 + ], + [ + 0.014237063277154677, + 0.014236445661644117, + 0.014274561368398815 + ], + [ + 0.014163128768233044, + 0.01417231512733663, + 0.01419599932144008 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.983950143153562, + "scoreError" : 0.01789666233502451, + "scoreConfidence" : [ + 0.9660534808185375, + 1.0018468054885865 + ], + "scorePercentiles" : { + "0.0" : 0.9690377924418605, + "50.0" : 0.9826584856047951, + "90.0" : 1.0008194397518015, + "95.0" : 1.0008194397518015, + "99.0" : 1.0008194397518015, + "99.9" : 1.0008194397518015, + "99.99" : 1.0008194397518015, + "99.999" : 1.0008194397518015, + "99.9999" : 1.0008194397518015, + "100.0" : 1.0008194397518015 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9766162767578125, + 0.9759815764614034, + 0.977302323463305 + ], + [ + 0.9921559711309523, + 1.0008194397518015, + 0.9969865728242449 + ], + [ + 0.9690377924418605, + 0.9826584856047951, + 0.9839928499458821 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013046854808199082, + "scoreError" : 7.155498045868686E-4, + "scoreConfidence" : [ + 0.012331305003612214, + 0.013762404612785951 + ], + "scorePercentiles" : { + "0.0" : 0.012759913740041137, + "50.0" : 0.013023311519173332, + "90.0" : 0.013313933373629036, + "95.0" : 0.013313933373629036, + "99.0" : 0.013313933373629036, + "99.9" : 0.013313933373629036, + "99.99" : 0.013313933373629036, + "99.999" : 0.013313933373629036, + "99.9999" : 0.013313933373629036, + "100.0" : 0.013313933373629036 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013197641879604188, + 0.013312456124516436, + 0.013313933373629036 + ], + [ + 0.012759913740041137, + 0.012848981158742476, + 0.012848202572661234 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9100372274851996, + "scoreError" : 0.09267811388781177, + "scoreConfidence" : [ + 3.8173591135973877, + 4.002715341373011 + ], + "scorePercentiles" : { + "0.0" : 3.8678984586233565, + "50.0" : 3.906645754355439, + "90.0" : 3.9560345450949366, + "95.0" : 3.9560345450949366, + "99.0" : 3.9560345450949366, + "99.9" : 3.9560345450949366, + "99.99" : 3.9560345450949366, + "99.999" : 3.9560345450949366, + "99.9999" : 3.9560345450949366, + "100.0" : 3.9560345450949366 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8678984586233565, + 3.8990089734996105, + 3.914282535211268 + ], + [ + 3.8847961304347827, + 3.938202722047244, + 3.9560345450949366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.074877921242732, + "scoreError" : 0.14285652352037062, + "scoreConfidence" : [ + 2.9320213977223615, + 3.217734444763103 + ], + "scorePercentiles" : { + "0.0" : 2.9614455812851643, + "50.0" : 3.079247117302956, + "90.0" : 3.1787071652892562, + "95.0" : 3.1787071652892562, + "99.0" : 3.1787071652892562, + "99.9" : 3.1787071652892562, + "99.99" : 3.1787071652892562, + "99.999" : 3.1787071652892562, + "99.9999" : 3.1787071652892562, + "100.0" : 3.1787071652892562 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.079247117302956, + 3.1787071652892562, + 3.1742028940019043 + ], + [ + 2.9614455812851643, + 3.001099893189319, + 2.99687381810009 + ], + [ + 3.162621833649589, + 3.011864800361337, + 3.107838188004972 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1792216150867655, + "scoreError" : 0.0028134776583006605, + "scoreConfidence" : [ + 0.17640813742846484, + 0.18203509274506618 + ], + "scorePercentiles" : { + "0.0" : 0.1767819975958139, + "50.0" : 0.1795381048653501, + "90.0" : 0.1817618339270784, + "95.0" : 0.1817618339270784, + "99.0" : 0.1817618339270784, + "99.9" : 0.1817618339270784, + "99.99" : 0.1817618339270784, + "99.999" : 0.1817618339270784, + "99.9999" : 0.1817618339270784, + "100.0" : 0.1817618339270784 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18049263225340673, + 0.1804214153210529, + 0.1795381048653501 + ], + [ + 0.1817618339270784, + 0.17952781720912697, + 0.17965059216743015 + ], + [ + 0.1772999119373083, + 0.1775202305043225, + 0.1767819975958139 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33466733956572775, + "scoreError" : 0.004866797587081008, + "scoreConfidence" : [ + 0.3298005419786467, + 0.3395341371528088 + ], + "scorePercentiles" : { + "0.0" : 0.3300852951544758, + "50.0" : 0.3358559937533584, + "90.0" : 0.33746668143623665, + "95.0" : 0.33746668143623665, + "99.0" : 0.33746668143623665, + "99.9" : 0.33746668143623665, + "99.99" : 0.33746668143623665, + "99.999" : 0.33746668143623665, + "99.9999" : 0.33746668143623665, + "100.0" : 0.33746668143623665 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3300852951544758, + 0.3314083194034797, + 0.33132537756352914 + ], + [ + 0.33537929941645983, + 0.33673772668193147, + 0.3358559937533584 + ], + [ + 0.337392372537112, + 0.33746668143623665, + 0.33635499014496656 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17101508461082024, + "scoreError" : 0.010519194639942204, + "scoreConfidence" : [ + 0.16049588997087805, + 0.18153427925076243 + ], + "scorePercentiles" : { + "0.0" : 0.16516208604743343, + "50.0" : 0.16813719979487524, + "90.0" : 0.17961573141030246, + "95.0" : 0.17961573141030246, + "99.0" : 0.17961573141030246, + "99.9" : 0.17961573141030246, + "99.99" : 0.17961573141030246, + "99.999" : 0.17961573141030246, + "99.9999" : 0.17961573141030246, + "100.0" : 0.17961573141030246 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17919520307852202, + 0.17888246420649684, + 0.17961573141030246 + ], + [ + 0.16516208604743343, + 0.16615715744786907, + 0.16587774737505598 + ], + [ + 0.16861689849598704, + 0.16749127364084013, + 0.16813719979487524 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39043772821823275, + "scoreError" : 0.0047876565689028575, + "scoreConfidence" : [ + 0.3856500716493299, + 0.3952253847871356 + ], + "scorePercentiles" : { + "0.0" : 0.38742203788788593, + "50.0" : 0.38943609887456676, + "90.0" : 0.39498915905679755, + "95.0" : 0.39498915905679755, + "99.0" : 0.39498915905679755, + "99.9" : 0.39498915905679755, + "99.99" : 0.39498915905679755, + "99.999" : 0.39498915905679755, + "99.9999" : 0.39498915905679755, + "100.0" : 0.39498915905679755 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39472534043812907, + 0.39137307032717594, + 0.38897682500291725 + ], + [ + 0.39498915905679755, + 0.3910808260529506, + 0.38943609887456676 + ], + [ + 0.388212455628882, + 0.38742203788788593, + 0.3877237406947891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15861643109426515, + "scoreError" : 0.003487971523721404, + "scoreConfidence" : [ + 0.15512845957054375, + 0.16210440261798656 + ], + "scorePercentiles" : { + "0.0" : 0.15579235488946705, + "50.0" : 0.1587464442257322, + "90.0" : 0.1619693449677691, + "95.0" : 0.1619693449677691, + "99.0" : 0.1619693449677691, + "99.9" : 0.1619693449677691, + "99.99" : 0.1619693449677691, + "99.999" : 0.1619693449677691, + "99.9999" : 0.1619693449677691, + "100.0" : 0.1619693449677691 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.158881436433542, + 0.1587464442257322, + 0.1579010665382429 + ], + [ + 0.1573456464535213, + 0.1560672353767401, + 0.15579235488946705 + ], + [ + 0.1619693449677691, + 0.16050901377140747, + 0.16033533719196422 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04797686652872106, + "scoreError" : 0.0022187213778125004, + "scoreConfidence" : [ + 0.04575814515090856, + 0.05019558790653356 + ], + "scorePercentiles" : { + "0.0" : 0.04637634170569958, + "50.0" : 0.04768700323789723, + "90.0" : 0.04974361433389377, + "95.0" : 0.04974361433389377, + "99.0" : 0.04974361433389377, + "99.9" : 0.04974361433389377, + "99.99" : 0.04974361433389377, + "99.999" : 0.04974361433389377, + "99.9999" : 0.04974361433389377, + "100.0" : 0.04974361433389377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04974361433389377, + 0.049498889757855345, + 0.04956484810095212 + ], + [ + 0.04768409821807484, + 0.047797690581116346, + 0.04768700323789723 + ], + [ + 0.04654392197026818, + 0.04637634170569958, + 0.04689539085273208 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0102506343115807E7, + "scoreError" : 414058.2334989545, + "scoreConfidence" : [ + 9688448.109616851, + 1.0516564576614762E7 + ], + "scorePercentiles" : { + "0.0" : 9719042.463556852, + "50.0" : 1.0038881575727182E7, + "90.0" : 1.0483148298742138E7, + "95.0" : 1.0483148298742138E7, + "99.0" : 1.0483148298742138E7, + "99.9" : 1.0483148298742138E7, + "99.99" : 1.0483148298742138E7, + "99.999" : 1.0483148298742138E7, + "99.9999" : 1.0483148298742138E7, + "100.0" : 1.0483148298742138E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9950572.298507463, + 9989488.596806386, + 9719042.463556852 + ], + [ + 1.014154786828774E7, + 1.0462304284518829E7, + 1.0483148298742138E7 + ], + [ + 1.0038881575727182E7, + 9967271.066733068, + 1.0170300635162601E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From b7c294825ff19db8f282da3706ec03844ee1d9aa Mon Sep 17 00:00:00 2001 From: Tim Ward Date: Mon, 17 Mar 2025 12:20:01 -0700 Subject: [PATCH 251/345] Add test case for calling getImmediateFields --- ...taFetchingFieldSelectionSetImplTest.groovy | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy b/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy index 531e40a860..ff80ad9b32 100644 --- a/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy +++ b/src/test/groovy/graphql/schema/DataFetchingFieldSelectionSetImplTest.groovy @@ -348,6 +348,54 @@ class DataFetchingFieldSelectionSetImplTest extends Specification { fields.collect({ field -> field.qualifiedName }) == expectedFieldName } + + def "immediate fields followed by fields are computed"() { + + when: + def ei = ExecutionInput.newExecutionInput(relayQuery).build() + def er = relayGraphql.execute(ei) + + then: + er.getErrors().isEmpty() + + then: + List immediateFields = selectionSet.getImmediateFields() + + then: + def expectedImmediateFieldName = [ + "nodes", + "edges", + "totalCount" + ] + + immediateFields.collect({ field -> field.qualifiedName }) == expectedImmediateFieldName + + then: + List fieldsGlob = selectionSet.getFields("**") + List fields = selectionSet.getFields() + + def expectedFieldName = [ + "nodes", + "nodes/key", + "nodes/summary", + "nodes/status", + "nodes/status/name", + "nodes/stuff", + "nodes/stuff/name", + "edges", + "edges/cursor", + "edges/node", + "edges/node/description", + "edges/node/status", + "edges/node/status/name", + "totalCount" + ] + + then: + fieldsGlob.collect({ field -> field.qualifiedName }) == expectedFieldName + fields.collect({ field -> field.qualifiedName }) == expectedFieldName + } + def petSDL = ''' type Query { petUnion : PetUnion From 08684736affb9078d40f4ed4f4a8387a9bade485 Mon Sep 17 00:00:00 2001 From: Tim Ward Date: Mon, 17 Mar 2025 12:16:49 -0700 Subject: [PATCH 252/345] Optimize DataFetchingSelectionSet.getImmediateFields() to avoid traversing descendants --- .../DataFetchingFieldSelectionSetImpl.java | 47 +++++++++++++------ 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java index da71043740..4800a0dfcf 100644 --- a/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java +++ b/src/main/java/graphql/schema/DataFetchingFieldSelectionSetImpl.java @@ -90,7 +90,10 @@ public static DataFetchingFieldSelectionSet newCollector(GraphQLSchema schema, G private final Supplier normalizedFieldSupplier; - private LockKit.ComputedOnce computedOnce = new LockKit.ComputedOnce(); + private final LockKit.ReentrantLock lock = new LockKit.ReentrantLock(); + private volatile boolean computedValues; + private volatile boolean computedImmediateValues; + // we have multiple entries in this map so that we can do glob matching in multiple ways // however it needs to be normalised back to a set of unique fields when give back out to // the caller. @@ -109,7 +112,7 @@ public boolean contains(String fieldGlobPattern) { if (fieldGlobPattern == null || fieldGlobPattern.isEmpty()) { return false; } - computeValuesLazily(); + computeValuesLazily(false); fieldGlobPattern = removeLeadingSlash(fieldGlobPattern); PathMatcher globMatcher = globMatcher(fieldGlobPattern); for (String flattenedField : flattenedFieldsForGlobSearching) { @@ -159,7 +162,7 @@ public List getFields(String fieldGlobPattern, String... fieldGlo if (fieldGlobPattern == null || fieldGlobPattern.isEmpty()) { return emptyList(); } - computeValuesLazily(); + computeValuesLazily(false); List targetNames = new ArrayList<>(); for (String flattenedField : flattenedFieldsForGlobSearching) { @@ -178,7 +181,7 @@ public List getFields(String fieldGlobPattern, String... fieldGlo @Override public List getFields() { - computeValuesLazily(); + computeValuesLazily(false); return toSetSemanticsList(normalisedSelectionSetFields.values().stream() .flatMap(Collection::stream)); } @@ -190,7 +193,7 @@ private List toSetSemanticsList(Stream stream) { @Override public List getImmediateFields() { - computeValuesLazily(); + computeValuesLazily(true); return immediateFields; } @@ -204,24 +207,40 @@ public Map> getFieldsGroupedByResultKey(String field return getFields(fieldGlobPattern, fieldGlobPatterns).stream().collect(Collectors.groupingBy(SelectedField::getResultKey)); } - private void computeValuesLazily() { - if (computedOnce.hasBeenComputed()) { + private void computeValuesLazily(boolean immediate) { + if (computedValues) { + return; + } + + // Avoid recomputing the immediate fields if they have already been computed. + if (immediate && computedImmediateValues) { return; } + // this supplier is a once only thread synced call - so do it outside this lock // if only to have only 1 lock in action at a time ExecutableNormalizedField currentNormalisedField = normalizedFieldSupplier.get(); - computedOnce.runOnce(() -> { + + lock.runLocked(() -> { + if (computedValues) { + return; + } + + if (computedImmediateValues && immediate) { + return; + } + flattenedFieldsForGlobSearching = new LinkedHashSet<>(); normalisedSelectionSetFields = new LinkedHashMap<>(); ImmutableList.Builder immediateFieldsBuilder = ImmutableList.builder(); - traverseSubSelectedFields(currentNormalisedField, immediateFieldsBuilder, "", "", true); + traverseSubSelectedFields(currentNormalisedField, immediateFieldsBuilder, "", "", true, immediate); immediateFields = immediateFieldsBuilder.build(); + computedImmediateValues = true; + computedValues = !immediate; }); } - - private void traverseSubSelectedFields(ExecutableNormalizedField currentNormalisedField, ImmutableList.Builder immediateFieldsBuilder, String qualifiedFieldPrefix, String simpleFieldPrefix, boolean firstLevel) { + private void traverseSubSelectedFields(ExecutableNormalizedField currentNormalisedField, ImmutableList.Builder immediateFieldsBuilder, String qualifiedFieldPrefix, String simpleFieldPrefix, boolean firstLevel, boolean immediate) { List children = currentNormalisedField.getChildren(); for (ExecutableNormalizedField normalizedSubSelectedField : children) { String typeQualifiedName = mkTypeQualifiedName(normalizedSubSelectedField); @@ -241,8 +260,8 @@ private void traverseSubSelectedFields(ExecutableNormalizedField currentNormalis normalisedSelectionSetFields.computeIfAbsent(globQualifiedName, newList()).add(selectedField); normalisedSelectionSetFields.computeIfAbsent(globSimpleName, newList()).add(selectedField); - if (normalizedSubSelectedField.hasChildren()) { - traverseSubSelectedFields(normalizedSubSelectedField, immediateFieldsBuilder, globQualifiedName, globSimpleName, false); + if (normalizedSubSelectedField.hasChildren() && !immediate) { + traverseSubSelectedFields(normalizedSubSelectedField, immediateFieldsBuilder, globQualifiedName, globSimpleName, false, false); } } } @@ -276,7 +295,7 @@ private List mkIterable(String fieldGlobPattern, String[] fieldGlobPatte @Override public String toString() { - if (!computedOnce.hasBeenComputed()) { + if (!computedValues) { return "notComputed"; } return String.join("\n", flattenedFieldsForGlobSearching); From 053aac4a70e6b4aa000b6f08b58aebd8f006d52f Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 20 Mar 2025 13:57:05 +1100 Subject: [PATCH 253/345] Merged in master --- .../java/graphql/execution/Execution.java | 3 +- .../directives/QueryDirectivesImpl.java | 1 - .../graphql/normalized/ArgumentMaker.java | 6 +- ...tableNormalizedOperationToAstCompiler.java | 57 +------------------ 4 files changed, 6 insertions(+), 61 deletions(-) diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index 56cabbf29f..634837f987 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -31,7 +31,6 @@ import graphql.schema.impl.SchemaUtil; import org.jspecify.annotations.NonNull; import graphql.util.FpKit; -import org.jetbrains.annotations.NotNull; import org.reactivestreams.Publisher; import java.util.Collections; @@ -129,7 +128,7 @@ public CompletableFuture execute(Document document, GraphQLSche return ValuesResolver.coerceVariableValues(graphQLSchema, variableDefinitions, inputVariables, executionInput.getGraphQLContext(), executionInput.getLocale()); } - private static @NotNull Supplier normalizedVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, NodeUtil.GetOperationResult getOperationResult) { + private static @NonNull Supplier normalizedVariableValues(GraphQLSchema graphQLSchema, ExecutionInput executionInput, NodeUtil.GetOperationResult getOperationResult) { Supplier normalizedVariableValues; RawVariables inputVariables = executionInput.getRawVariables(); List variableDefinitions = getOperationResult.operationDefinition.getVariableDefinitions(); diff --git a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java index 5bb7bf6964..4b3fde5f4a 100644 --- a/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java +++ b/src/main/java/graphql/execution/directives/QueryDirectivesImpl.java @@ -18,7 +18,6 @@ import graphql.schema.GraphQLDirective; import graphql.schema.GraphQLSchema; import graphql.util.LockKit; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/src/main/java/graphql/normalized/ArgumentMaker.java b/src/main/java/graphql/normalized/ArgumentMaker.java index 29d6a0ae8b..c6ad4868ba 100644 --- a/src/main/java/graphql/normalized/ArgumentMaker.java +++ b/src/main/java/graphql/normalized/ArgumentMaker.java @@ -12,8 +12,8 @@ import graphql.language.ObjectField; import graphql.language.ObjectValue; import graphql.language.Value; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import java.util.List; import java.util.Map; @@ -94,7 +94,7 @@ private static Value argValue(ExecutableNormalizedField executableNormalizedF return (Value) value; } - @NotNull + @NonNull private static Value argValue(ExecutableNormalizedField executableNormalizedField, QueryAppliedDirective queryAppliedDirective, String argName, diff --git a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java index 1e53f24302..9509d9554b 100644 --- a/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java +++ b/src/main/java/graphql/normalized/ExecutableNormalizedOperationToAstCompiler.java @@ -389,7 +389,7 @@ private static Field selectionForNormalizedField(GraphQLSchema schema, .build(); } - private static @NotNull List buildDirectives(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, VariableAccumulator variableAccumulator) { + private static @NonNull List buildDirectives(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, VariableAccumulator variableAccumulator) { if (queryDirectives == null || queryDirectives.getImmediateAppliedDirectivesByField().isEmpty()) { return emptyList(); } @@ -401,7 +401,7 @@ private static Field selectionForNormalizedField(GraphQLSchema schema, private static Directive buildDirective(ExecutableNormalizedField executableNormalizedField, QueryDirectives queryDirectives, QueryAppliedDirective queryAppliedDirective, VariableAccumulator variableAccumulator) { - List arguments = ArgumentMaker.createDirectiveArguments(executableNormalizedField,queryDirectives,queryAppliedDirective, variableAccumulator); + List arguments = ArgumentMaker.createDirectiveArguments(executableNormalizedField, queryDirectives, queryAppliedDirective, variableAccumulator); return Directive.newDirective() .name(queryAppliedDirective.getName()) .arguments(arguments).build(); @@ -416,59 +416,6 @@ private static SelectionSet selectionSet(List fields) { return newSelectionSet().selections(fields).build(); } - private static List createArguments(ExecutableNormalizedField executableNormalizedField, - VariableAccumulator variableAccumulator) { - ImmutableList.Builder result = ImmutableList.builder(); - ImmutableMap normalizedArguments = executableNormalizedField.getNormalizedArguments(); - for (String argName : normalizedArguments.keySet()) { - NormalizedInputValue normalizedInputValue = normalizedArguments.get(argName); - Value value = argValue(executableNormalizedField, argName, normalizedInputValue, variableAccumulator); - Argument argument = newArgument() - .name(argName) - .value(value) - .build(); - result.add(argument); - } - return result.build(); - } - - @SuppressWarnings("unchecked") - private static Value argValue(ExecutableNormalizedField executableNormalizedField, - String argName, - @Nullable Object value, - VariableAccumulator variableAccumulator) { - if (value instanceof List) { - ArrayValue.Builder arrayValue = ArrayValue.newArrayValue(); - arrayValue.values(map((List) value, val -> argValue(executableNormalizedField, argName, val, variableAccumulator))); - return arrayValue.build(); - } - if (value instanceof Map) { - ObjectValue.Builder objectValue = ObjectValue.newObjectValue(); - Map map = (Map) value; - for (String fieldName : map.keySet()) { - Value fieldValue = argValue(executableNormalizedField, argName, (NormalizedInputValue) map.get(fieldName), variableAccumulator); - objectValue.objectField(ObjectField.newObjectField().name(fieldName).value(fieldValue).build()); - } - return objectValue.build(); - } - if (value == null) { - return NullValue.newNullValue().build(); - } - return (Value) value; - } - - @NonNull - private static Value argValue(ExecutableNormalizedField executableNormalizedField, - String argName, - NormalizedInputValue normalizedInputValue, - VariableAccumulator variableAccumulator) { - if (variableAccumulator.shouldMakeVariable(executableNormalizedField, argName, normalizedInputValue)) { - VariableValueWithDefinition variableWithDefinition = variableAccumulator.accumulateVariable(normalizedInputValue); - return variableWithDefinition.getVariableReference(); - } else { - return argValue(executableNormalizedField, argName, normalizedInputValue.getValue(), variableAccumulator); - } - } @NonNull private static GraphQLFieldDefinition getFieldDefinition(GraphQLSchema schema, From 0f046651a463036b67f4b76c45fad0d9db29cf11 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Mar 2025 04:24:45 +0000 Subject: [PATCH 254/345] Add performance results for commit 9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1 --- ...d8e2ee49ea48c98ca86c2901f2343b1-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json diff --git a/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json b/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json new file mode 100644 index 0000000000..f2de5b21a6 --- /dev/null +++ b/performance-results/2025-03-20T04:24:26Z-9a931ba6ad8e2ee49ea48c98ca86c2901f2343b1-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424254609168787, + "scoreError" : 0.02613921724586001, + "scoreConfidence" : [ + 3.3981153919229268, + 3.450393826414647 + ], + "scorePercentiles" : { + "0.0" : 3.419489493150746, + "50.0" : 3.424232606853354, + "90.0" : 3.429063729817694, + "95.0" : 3.429063729817694, + "99.0" : 3.429063729817694, + "99.9" : 3.429063729817694, + "99.99" : 3.429063729817694, + "99.999" : 3.429063729817694, + "99.9999" : 3.429063729817694, + "100.0" : 3.429063729817694 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.422957283038915, + 3.4255079306677936 + ], + [ + 3.419489493150746, + 3.429063729817694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7283881755988588, + "scoreError" : 0.0075711935811060855, + "scoreConfidence" : [ + 1.7208169820177528, + 1.7359593691799649 + ], + "scorePercentiles" : { + "0.0" : 1.7272608832354859, + "50.0" : 1.7281327281107284, + "90.0" : 1.7300263629384918, + "95.0" : 1.7300263629384918, + "99.0" : 1.7300263629384918, + "99.9" : 1.7300263629384918, + "99.99" : 1.7300263629384918, + "99.999" : 1.7300263629384918, + "99.9999" : 1.7300263629384918, + "100.0" : 1.7300263629384918 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282618455510002, + 1.7272608832354859 + ], + [ + 1.7280036106704566, + 1.7300263629384918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8682027175699097, + "scoreError" : 0.004935973252822849, + "scoreConfidence" : [ + 0.8632667443170869, + 0.8731386908227325 + ], + "scorePercentiles" : { + "0.0" : 0.8675676336105674, + "50.0" : 0.8679655469663551, + "90.0" : 0.8693121427363618, + "95.0" : 0.8693121427363618, + "99.0" : 0.8693121427363618, + "99.9" : 0.8693121427363618, + "99.99" : 0.8693121427363618, + "99.999" : 0.8693121427363618, + "99.9999" : 0.8693121427363618, + "100.0" : 0.8693121427363618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675676336105674, + 0.867922346385138 + ], + [ + 0.8680087475475722, + 0.8693121427363618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.36869394908749, + "scoreError" : 0.04032602783381367, + "scoreConfidence" : [ + 16.328367921253676, + 16.409019976921304 + ], + "scorePercentiles" : { + "0.0" : 16.330608886150326, + "50.0" : 16.36573210114837, + "90.0" : 16.3997056798874, + "95.0" : 16.3997056798874, + "99.0" : 16.3997056798874, + "99.9" : 16.3997056798874, + "99.99" : 16.3997056798874, + "99.999" : 16.3997056798874, + "99.9999" : 16.3997056798874, + "100.0" : 16.3997056798874 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.36573210114837, + 16.39567738769027, + 16.3997056798874 + ], + [ + 16.354154879020427, + 16.35331486739305, + 16.330608886150326 + ], + [ + 16.38900046883599, + 16.348132670430132, + 16.38191860123142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2755.2645435237955, + "scoreError" : 142.15005863441795, + "scoreConfidence" : [ + 2613.1144848893778, + 2897.4146021582133 + ], + "scorePercentiles" : { + "0.0" : 2645.769653967194, + "50.0" : 2777.358790668434, + "90.0" : 2844.082898480718, + "95.0" : 2844.082898480718, + "99.0" : 2844.082898480718, + "99.9" : 2844.082898480718, + "99.99" : 2844.082898480718, + "99.999" : 2844.082898480718, + "99.9999" : 2844.082898480718, + "100.0" : 2844.082898480718 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2645.769653967194, + 2650.136785283063, + 2651.473877519024 + ], + [ + 2780.1082222295813, + 2769.131638137327, + 2777.358790668434 + ], + [ + 2844.082898480718, + 2840.1765737310034, + 2839.1424516978195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69686.99595380232, + "scoreError" : 1940.033884888202, + "scoreConfidence" : [ + 67746.96206891412, + 71627.02983869053 + ], + "scorePercentiles" : { + "0.0" : 68658.18447808478, + "50.0" : 69182.69094993896, + "90.0" : 71219.67727831232, + "95.0" : 71219.67727831232, + "99.0" : 71219.67727831232, + "99.9" : 71219.67727831232, + "99.99" : 71219.67727831232, + "99.999" : 71219.67727831232, + "99.9999" : 71219.67727831232, + "100.0" : 71219.67727831232 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71197.47410218067, + 71180.94216999353, + 71219.67727831232 + ], + [ + 69167.24550293588, + 69182.69094993896, + 69185.52767427432 + ], + [ + 68700.10055066991, + 68658.18447808478, + 68691.12087783056 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.88994514661977, + "scoreError" : 8.60461783150149, + "scoreConfidence" : [ + 345.28532731511825, + 362.4945629781213 + ], + "scorePercentiles" : { + "0.0" : 347.80532224376645, + "50.0" : 353.0663168731576, + "90.0" : 360.1943821922987, + "95.0" : 360.1943821922987, + "99.0" : 360.1943821922987, + "99.9" : 360.1943821922987, + "99.99" : 360.1943821922987, + "99.999" : 360.1943821922987, + "99.9999" : 360.1943821922987, + "100.0" : 360.1943821922987 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.3096151632722, + 360.1943821922987, + 359.9042966967716 + ], + [ + 348.9299003319532, + 348.06675704900783, + 347.80532224376645 + ], + [ + 353.0663168731576, + 351.83558769978185, + 355.8973280695685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.22422695181898, + "scoreError" : 2.300054928270859, + "scoreConfidence" : [ + 104.92417202354812, + 109.52428188008983 + ], + "scorePercentiles" : { + "0.0" : 105.11702222043792, + "50.0" : 107.60099849482508, + "90.0" : 108.64394817524074, + "95.0" : 108.64394817524074, + "99.0" : 108.64394817524074, + "99.9" : 108.64394817524074, + "99.99" : 108.64394817524074, + "99.999" : 108.64394817524074, + "99.9999" : 108.64394817524074, + "100.0" : 108.64394817524074 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.10524767429007, + 105.47579180802381, + 105.11702222043792 + ], + [ + 108.61995646598682, + 108.56537197809733, + 108.64394817524074 + ], + [ + 107.10120847440774, + 107.60099849482508, + 107.78849727506135 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0612988109620845, + "scoreError" : 8.652535687359045E-4, + "scoreConfidence" : [ + 0.060433557393348596, + 0.0621640645308204 + ], + "scorePercentiles" : { + "0.0" : 0.06061360878156405, + "50.0" : 0.06131260160268791, + "90.0" : 0.061910864993035136, + "95.0" : 0.061910864993035136, + "99.0" : 0.061910864993035136, + "99.9" : 0.061910864993035136, + "99.99" : 0.061910864993035136, + "99.999" : 0.061910864993035136, + "99.9999" : 0.061910864993035136, + "100.0" : 0.061910864993035136 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061816245462750045, + 0.061910864993035136, + 0.061907721375817945 + ], + [ + 0.06070640137194196, + 0.06061360878156405, + 0.06077460113646723 + ], + [ + 0.06124887921308744, + 0.06131260160268791, + 0.0613983747214087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.83704055702058E-4, + "scoreError" : 1.8341314884139816E-5, + "scoreConfidence" : [ + 3.653627408179182E-4, + 4.020453705861978E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7188639856197784E-4, + "50.0" : 3.7950586013066773E-4, + "90.0" : 3.981731629629329E-4, + "95.0" : 3.981731629629329E-4, + "99.0" : 3.981731629629329E-4, + "99.9" : 3.981731629629329E-4, + "99.99" : 3.981731629629329E-4, + "99.999" : 3.981731629629329E-4, + "99.9999" : 3.981731629629329E-4, + "100.0" : 3.981731629629329E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.974309778124687E-4, + 3.981731629629329E-4, + 3.978541673612461E-4 + ], + [ + 3.7925996341091464E-4, + 3.7981703252567807E-4, + 3.7950586013066773E-4 + ], + [ + 3.7188639856197784E-4, + 3.7403482801825057E-4, + 3.7537411053438545E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014271994702376285, + "scoreError" : 5.216322474734358E-4, + "scoreConfidence" : [ + 0.01375036245490285, + 0.01479362694984972 + ], + "scorePercentiles" : { + "0.0" : 0.01395132297181729, + "50.0" : 0.014194895541158969, + "90.0" : 0.014695156501421738, + "95.0" : 0.014695156501421738, + "99.0" : 0.014695156501421738, + "99.9" : 0.014695156501421738, + "99.99" : 0.014695156501421738, + "99.999" : 0.014695156501421738, + "99.9999" : 0.014695156501421738, + "100.0" : 0.014695156501421738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014645885331614907, + 0.014695156501421738, + 0.01464714127276136 + ], + [ + 0.013970092754773178, + 0.013957995058929938, + 0.01395132297181729 + ], + [ + 0.014183137027334836, + 0.014194895541158969, + 0.014202325861574338 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710519168134688, + "scoreError" : 0.011208694685730868, + "scoreConfidence" : [ + 0.959843222127738, + 0.9822606114991996 + ], + "scorePercentiles" : { + "0.0" : 0.9630646993451464, + "50.0" : 0.9684868110594615, + "90.0" : 0.9809538926924963, + "95.0" : 0.9809538926924963, + "99.0" : 0.9809538926924963, + "99.9" : 0.9809538926924963, + "99.99" : 0.9809538926924963, + "99.999" : 0.9809538926924963, + "99.9999" : 0.9809538926924963, + "100.0" : 0.9809538926924963 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9668159646171693, + 0.9671069353060633, + 0.9724057801439129 + ], + [ + 0.9751261756045242, + 0.9808086011180855, + 0.9809538926924963 + ], + [ + 0.964698391434359, + 0.9684868110594615, + 0.9630646993451464 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013268263113495505, + "scoreError" : 4.465237350273874E-4, + "scoreConfidence" : [ + 0.012821739378468118, + 0.013714786848522892 + ], + "scorePercentiles" : { + "0.0" : 0.013099557043340206, + "50.0" : 0.013270168813548271, + "90.0" : 0.01348281547845361, + "95.0" : 0.01348281547845361, + "99.0" : 0.01348281547845361, + "99.9" : 0.01348281547845361, + "99.99" : 0.01348281547845361, + "99.999" : 0.01348281547845361, + "99.9999" : 0.01348281547845361, + "100.0" : 0.01348281547845361 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013351823428725543, + 0.013380745552344251, + 0.01348281547845361 + ], + [ + 0.013099557043340206, + 0.013188514198370999, + 0.013106122979738408 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8236215956341684, + "scoreError" : 0.11204404869949024, + "scoreConfidence" : [ + 3.711577546934678, + 3.9356656443336586 + ], + "scorePercentiles" : { + "0.0" : 3.7785576442598185, + "50.0" : 3.8263314364495367, + "90.0" : 3.8664696870170014, + "95.0" : 3.8664696870170014, + "99.0" : 3.8664696870170014, + "99.9" : 3.8664696870170014, + "99.99" : 3.8664696870170014, + "99.999" : 3.8664696870170014, + "99.9999" : 3.8664696870170014, + "100.0" : 3.8664696870170014 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.784792498487141, + 3.800600712006079, + 3.7785576442598185 + ], + [ + 3.859246871141975, + 3.8520621608929946, + 3.8664696870170014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8760393545398433, + "scoreError" : 0.03561405209144057, + "scoreConfidence" : [ + 2.8404253024484025, + 2.911653406631284 + ], + "scorePercentiles" : { + "0.0" : 2.8550628495575223, + "50.0" : 2.867487625860092, + "90.0" : 2.9119395694323145, + "95.0" : 2.9119395694323145, + "99.0" : 2.9119395694323145, + "99.9" : 2.9119395694323145, + "99.99" : 2.9119395694323145, + "99.999" : 2.9119395694323145, + "99.9999" : 2.9119395694323145, + "100.0" : 2.9119395694323145 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9119395694323145, + 2.896368578048074, + 2.9009854074825987 + ], + [ + 2.8569692313624677, + 2.8603496425507577, + 2.8550628495575223 + ], + [ + 2.868876608146873, + 2.867487625860092, + 2.8663146784178846 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17666360171690498, + "scoreError" : 0.007018650315553071, + "scoreConfidence" : [ + 0.1696449514013519, + 0.18368225203245805 + ], + "scorePercentiles" : { + "0.0" : 0.171930377965752, + "50.0" : 0.17588338716428936, + "90.0" : 0.18198961034777703, + "95.0" : 0.18198961034777703, + "99.0" : 0.18198961034777703, + "99.9" : 0.18198961034777703, + "99.99" : 0.18198961034777703, + "99.999" : 0.18198961034777703, + "99.9999" : 0.18198961034777703, + "100.0" : 0.18198961034777703 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17230693078553336, + 0.171930377965752, + 0.17222718737944337 + ], + [ + 0.18198961034777703, + 0.18161404623794564, + 0.18156196546778264 + ], + [ + 0.17679468235980483, + 0.17588338716428936, + 0.17566422774381676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.328427280265929, + "scoreError" : 0.009007381611096744, + "scoreConfidence" : [ + 0.3194198986548322, + 0.33743466187702575 + ], + "scorePercentiles" : { + "0.0" : 0.32402172724621714, + "50.0" : 0.32554089566717664, + "90.0" : 0.3365099610000673, + "95.0" : 0.3365099610000673, + "99.0" : 0.3365099610000673, + "99.9" : 0.3365099610000673, + "99.99" : 0.3365099610000673, + "99.999" : 0.3365099610000673, + "99.9999" : 0.3365099610000673, + "100.0" : 0.3365099610000673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32554089566717664, + 0.3255366924379049, + 0.3257196699889258 + ], + [ + 0.32449776503991173, + 0.32402172724621714, + 0.3240274855161688 + ], + [ + 0.3365099610000673, + 0.33505243635876303, + 0.33493888913822556 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1671680197141367, + "scoreError" : 0.0031650202498782714, + "scoreConfidence" : [ + 0.16400299946425842, + 0.17033303996401497 + ], + "scorePercentiles" : { + "0.0" : 0.16575822910658047, + "50.0" : 0.1660215798718332, + "90.0" : 0.16990446979170207, + "95.0" : 0.16990446979170207, + "99.0" : 0.16990446979170207, + "99.9" : 0.16990446979170207, + "99.99" : 0.16990446979170207, + "99.999" : 0.16990446979170207, + "99.9999" : 0.16990446979170207, + "100.0" : 0.16990446979170207 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16575822910658047, + 0.16582184809391945, + 0.16580947611546815 + ], + [ + 0.16954085197680727, + 0.16956868575982637, + 0.16990446979170207 + ], + [ + 0.16597716160727624, + 0.1660215798718332, + 0.16610987510381714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3920398294957659, + "scoreError" : 0.008199953086242167, + "scoreConfidence" : [ + 0.3838398764095237, + 0.40023978258200804 + ], + "scorePercentiles" : { + "0.0" : 0.3855065223777033, + "50.0" : 0.39384232234562067, + "90.0" : 0.3974420058421429, + "95.0" : 0.3974420058421429, + "99.0" : 0.3974420058421429, + "99.9" : 0.3974420058421429, + "99.99" : 0.3974420058421429, + "99.999" : 0.3974420058421429, + "99.9999" : 0.3974420058421429, + "100.0" : 0.3974420058421429 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3960158337161413, + 0.39384232234562067, + 0.3934183516660766 + ], + [ + 0.3974420058421429, + 0.3958316693714376, + 0.3945936228149785 + ], + [ + 0.38551056595990746, + 0.3855065223777033, + 0.38619757136788446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15782436732750707, + "scoreError" : 0.002616382192165471, + "scoreConfidence" : [ + 0.1552079851353416, + 0.16044074951967255 + ], + "scorePercentiles" : { + "0.0" : 0.15603131695557879, + "50.0" : 0.15772105887548302, + "90.0" : 0.1594922870972887, + "95.0" : 0.1594922870972887, + "99.0" : 0.1594922870972887, + "99.9" : 0.1594922870972887, + "99.99" : 0.1594922870972887, + "99.999" : 0.1594922870972887, + "99.9999" : 0.1594922870972887, + "100.0" : 0.1594922870972887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15940837378455064, + 0.15939634857662022, + 0.15924676244088093 + ], + [ + 0.1594922870972887, + 0.15603131695557879, + 0.15647512279960568 + ], + [ + 0.15772105887548302, + 0.15649656486697966, + 0.15615147055057618 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047281600662263244, + "scoreError" : 6.838695510515516E-4, + "scoreConfidence" : [ + 0.046597731111211696, + 0.04796547021331479 + ], + "scorePercentiles" : { + "0.0" : 0.04668713239804851, + "50.0" : 0.04720676570665181, + "90.0" : 0.04785155874401267, + "95.0" : 0.04785155874401267, + "99.0" : 0.04785155874401267, + "99.9" : 0.04785155874401267, + "99.99" : 0.04785155874401267, + "99.999" : 0.04785155874401267, + "99.9999" : 0.04785155874401267, + "100.0" : 0.04785155874401267 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04781449074800138, + 0.047079504446610076, + 0.046953820972119184 + ], + [ + 0.046992236287851735, + 0.04668713239804851, + 0.04720676570665181 + ], + [ + 0.04785155874401267, + 0.047633694671760235, + 0.0473152019853136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9135012.469143517, + "scoreError" : 253053.52971484294, + "scoreConfidence" : [ + 8881958.939428674, + 9388065.99885836 + ], + "scorePercentiles" : { + "0.0" : 8947247.978533095, + "50.0" : 9055753.752941176, + "90.0" : 9349670.872897197, + "95.0" : 9349670.872897197, + "99.0" : 9349670.872897197, + "99.9" : 9349670.872897197, + "99.99" : 9349670.872897197, + "99.999" : 9349670.872897197, + "99.9999" : 9349670.872897197, + "100.0" : 9349670.872897197 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9320103.47530289, + 9349670.872897197, + 9313670.555865921 + ], + [ + 8947247.978533095, + 9036093.97289973, + 9037422.124661246 + ], + [ + 9106851.006369427, + 9048298.482820977, + 9055753.752941176 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 51e0cd08260cd2b3509e3275a12259504fb3fca2 Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Mon, 17 Mar 2025 17:08:37 -0700 Subject: [PATCH 255/345] Add method to AstPrinter to allow supplying Appendable Add printAstTo to AstPrinter, which allows the caller to supply their own target Appendable. This can be useful for reusing StringBuilders for instance. --- .../java/graphql/language/AstPrinter.java | 37 +++++++++++++++--- .../graphql/language/AstPrinterTest.groovy | 39 +++++++++++++++++++ 2 files changed, 71 insertions(+), 5 deletions(-) diff --git a/src/main/java/graphql/language/AstPrinter.java b/src/main/java/graphql/language/AstPrinter.java index fcc082ee7d..fe7a848d8d 100644 --- a/src/main/java/graphql/language/AstPrinter.java +++ b/src/main/java/graphql/language/AstPrinter.java @@ -3,7 +3,8 @@ import graphql.PublicApi; import graphql.collect.ImmutableKit; -import java.io.PrintWriter; +import java.io.IOException; +import java.io.UncheckedIOException; import java.io.Writer; import java.util.Iterator; import java.util.LinkedHashMap; @@ -745,10 +746,33 @@ String wrap(String start, Node maybeNode, String end) { */ public static String printAst(Node node) { StringBuilder builder = new StringBuilder(); - printImpl(builder, node, false); + printAstTo(node, builder); return builder.toString(); } + /** + * This will pretty print the AST node in graphql language format to the given Appendable + * + * @param node the AST node to print + * @param appendable the Appendable to write the output to + * + */ + public static void printAstTo(Node node, Appendable appendable) { + if (appendable instanceof StringBuilder) { + printImpl((StringBuilder) appendable, node, false); + } else if (appendable instanceof Writer) { + printAst((Writer) appendable, node); + } else { + StringBuilder builder = new StringBuilder(); + printImpl(builder, node, false); + try { + appendable.append(builder); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + } + /** * This will pretty print the AST node in graphql language format * @@ -757,8 +781,11 @@ public static String printAst(Node node) { */ public static void printAst(Writer writer, Node node) { String ast = printAst(node); - PrintWriter printer = new PrintWriter(writer); - printer.write(ast); + try { + writer.write(ast); + } catch (IOException e) { + throw new UncheckedIOException(e); + } } /** @@ -775,7 +802,7 @@ public static String printAstCompact(Node node) { return builder.toString(); } - private static void printImpl(StringBuilder writer, Node node, boolean compactMode) { + private static void printImpl(StringBuilder writer, Node node, boolean compactMode) { AstPrinter astPrinter = new AstPrinter(compactMode); NodePrinter printer = astPrinter._findPrinter(node); printer.print(writer, node); diff --git a/src/test/groovy/graphql/language/AstPrinterTest.groovy b/src/test/groovy/graphql/language/AstPrinterTest.groovy index e0d57aad67..84c2de667a 100644 --- a/src/test/groovy/graphql/language/AstPrinterTest.groovy +++ b/src/test/groovy/graphql/language/AstPrinterTest.groovy @@ -3,6 +3,8 @@ package graphql.language import graphql.parser.Parser import spock.lang.Specification +import java.nio.CharBuffer + class AstPrinterTest extends Specification { Document parse(String input) { @@ -769,4 +771,41 @@ extend input Input @directive { then: output == "foo" } + + def "printAstTo writes to a StringBuilder instance"() { + def document = parse(starWarsSchema) + def output = new StringBuilder() + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } + + def "printAstTo writes to a Writer instance"() { + def document = parse(starWarsSchema) + def output = new StringWriter() + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } + + def "printAstTo writes to an Appendable instance"() { + def document = parse(starWarsSchema) + def output = CharBuffer.allocate(100) + AstPrinter.printAstTo(document.getDefinitions().get(0), output) + output.flip() + + expect: + output.toString() == """schema { + query: QueryType + mutation: Mutation +}""" + } } From 51bbb1ab0de92a1b0c458fcdc9dcb98df2dea17a Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 22 Mar 2025 08:27:42 +1100 Subject: [PATCH 256/345] Add forthcoming Java Dataloader version --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1a379c317a..1b70ab8b33 100644 --- a/build.gradle +++ b/build.gradle @@ -100,7 +100,7 @@ jar { dependencies { implementation 'org.antlr:antlr4-runtime:' + antlrVersion - api 'com.graphql-java:java-dataloader:3.4.0' + api 'com.graphql-java:java-dataloader:4.0.0' api 'org.reactivestreams:reactive-streams:' + reactiveStreamsVersion api "org.jspecify:jspecify:1.0.0" antlr 'org.antlr:antlr4:' + antlrVersion From a086041fa37bce630e8c7e574e57cd82a7053935 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 22 Mar 2025 12:07:36 +1100 Subject: [PATCH 257/345] Reinstate tests, revised validation logic will handle this case --- .../execution/ExecutionStepInfoTest.groovy | 6 ++--- ...eferExecutionSupportIntegrationTest.groovy | 24 ++++++++++--------- ...eCompaniesAndProductsDataLoaderTest.groovy | 5 ++-- 3 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy b/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy index 8dc7da1828..9fc34114a5 100644 --- a/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStepInfoTest.groovy @@ -160,10 +160,8 @@ class ExecutionStepInfoTest extends Specification { def runtimeWiring = newRuntimeWiring() .type(newTypeWiring("Query").dataFetcher("hero", samwiseDF)) - .type(newTypeWiring("User") - .dataFetcher("friends", friendsDF) - .dataFetcher("mates", friendsDF) - ) + .type(newTypeWiring("User").dataFetcher("friends", friendsDF)) + .type(newTypeWiring("User").dataFetcher("mates", friendsDF)) .build() def graphQL = TestUtil.graphQL(spec, runtimeWiring).build() diff --git a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy index c7a0893923..9a8c381017 100644 --- a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy @@ -162,17 +162,19 @@ class DeferExecutionSupportIntegrationTest extends Specification { .dataFetcher("hello", resolve("world")) .dataFetcher("item", resolveItem()) ) - .type(newTypeWiring("Post") - .dataFetcher("summary", resolve("A summary", 10)) - .dataFetcher("text", resolve("The full text", 100)) - .dataFetcher("wordCount", resolve(45999, 10, true)) - .dataFetcher("latestComment", resolve([title: "Comment title"], 10)) - .dataFetcher("dataFetcherError", resolveWithException()) - .dataFetcher("dataAndError", resolveWithDataAndError("data")) - .dataFetcher("coercionError", resolve("Not a number", 10)) - .dataFetcher("typeMismatchError", resolve([a: "A Map instead of a List"], 10)) - .dataFetcher("nonNullableError", resolve(null)) - ) + .type(newTypeWiring("Post").dataFetcher("summary", resolve("A summary", 10))) + .type(newTypeWiring("Post").dataFetcher("text", resolve("The full text", 100))) + .type(newTypeWiring("Post").dataFetcher("wordCount", resolve(45999, 10, true))) + .type(newTypeWiring("Post").dataFetcher("latestComment", resolve([title: "Comment title"], 10))) + .type(newTypeWiring("Post").dataFetcher("dataFetcherError", resolveWithException())) + .type(newTypeWiring("Post").dataFetcher("dataAndError", resolveWithDataAndError("data"))) + .type(newTypeWiring("Post").dataFetcher("coercionError", resolve("Not a number", 10))) + .type(newTypeWiring("Post").dataFetcher("typeMismatchError", resolve([a: "A Map instead of a List"], 10))) + .type(newTypeWiring("Post").dataFetcher("nonNullableError", resolve(null))) + .type(newTypeWiring("Page").dataFetcher("summary", resolve("A page summary", 10))) + .type(newTypeWiring("Page").dataFetcher("text", resolve("The page full text", 100))) + .type(newTypeWiring("Comment").dataFetcher("content", resolve("Full content", 100))) + .type(newTypeWiring("Comment").dataFetcher("author", resolve([name: "Author name"], 10))) .type(newTypeWiring("Page") .dataFetcher("summary", resolve("A page summary", 10)) .dataFetcher("text", resolve("The page full text", 100)) diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy index aa52cb6d14..70bad946b0 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/PeopleCompaniesAndProductsDataLoaderTest.groovy @@ -133,9 +133,8 @@ class PeopleCompaniesAndProductsDataLoaderTest extends Specification { RuntimeWiring runtimeWiring = newRuntimeWiring() .type("QueryType", { builder -> builder.dataFetcher("products", productsDF) }) - .type("Product", { builder -> builder - .dataFetcher("suppliedBy", suppliedByDF) - .dataFetcher("madeBy", madeByDF) }) + .type("Product", { builder -> builder.dataFetcher("suppliedBy", suppliedByDF) }) + .type("Product", { builder -> builder.dataFetcher("madeBy", madeByDF) }) .type("Person", { builder -> builder.dataFetcher("company", companyDF) }) .build() From 2042ea4d3bb7a59366057d2ddfe6ae25e4436757 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 22 Mar 2025 12:11:04 +1100 Subject: [PATCH 258/345] Update deprecated date --- src/main/java/graphql/schema/idl/RuntimeWiring.java | 2 +- src/main/java/graphql/schema/idl/TypeRuntimeWiring.java | 2 +- .../DeferExecutionSupportIntegrationTest.groovy | 8 -------- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/graphql/schema/idl/RuntimeWiring.java b/src/main/java/graphql/schema/idl/RuntimeWiring.java index 3e8ee84cfa..5ec7a9236f 100644 --- a/src/main/java/graphql/schema/idl/RuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/RuntimeWiring.java @@ -209,7 +209,7 @@ public Builder strictMode(boolean strictMode) { * * @deprecated strictMode default value changed to true, use {@link #strictMode(boolean)} instead */ - @Deprecated(since = "2025-02-15", forRemoval = true) + @Deprecated(since = "2025-03-22", forRemoval = true) public Builder strictMode() { this.strictMode = true; return this; diff --git a/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java b/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java index bd6b3df609..d628737cfd 100644 --- a/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/TypeRuntimeWiring.java @@ -139,7 +139,7 @@ public Builder strictMode(boolean strictMode) { * * @deprecated use {@link #strictMode(boolean)} instead */ - @Deprecated(since = "2025-02-15", forRemoval = true) + @Deprecated(since = "2025-03-22", forRemoval = true) public Builder strictMode() { this.strictMode = true; return this; diff --git a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy index 9a8c381017..3f149a8ad5 100644 --- a/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/DeferExecutionSupportIntegrationTest.groovy @@ -175,14 +175,6 @@ class DeferExecutionSupportIntegrationTest extends Specification { .type(newTypeWiring("Page").dataFetcher("text", resolve("The page full text", 100))) .type(newTypeWiring("Comment").dataFetcher("content", resolve("Full content", 100))) .type(newTypeWiring("Comment").dataFetcher("author", resolve([name: "Author name"], 10))) - .type(newTypeWiring("Page") - .dataFetcher("summary", resolve("A page summary", 10)) - .dataFetcher("text", resolve("The page full text", 100)) - ) - .type(newTypeWiring("Comment") - .dataFetcher("content", resolve("Full content", 100)) - .dataFetcher("author", resolve([name: "Author name"], 10)) - ) .type(newTypeWiring("Person").dataFetcher("avatar", resolve("Avatar image", 100))) .type(newTypeWiring("Mutation") .dataFetcher("addPost", resolve([id: "1001"])) From ee9570a5af23f390d23701ef6513d19e8544fd16 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 22 Mar 2025 12:28:43 +1100 Subject: [PATCH 259/345] Adjust tests to allow child datafetchers to be added again for the same type as long as they are not overlapping --- .../schema/idl/RuntimeWiringTest.groovy | 61 ++++++++++++++++++- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy index 9a609194b7..679281b7ac 100644 --- a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy +++ b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy @@ -202,8 +202,7 @@ class RuntimeWiringTest extends Specification { when: RuntimeWiring.newRuntimeWiring() .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) - .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF1)) - + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) // Cannot redefine the same field's datafetcher then: def e1 = thrown(StrictModeWiringException) @@ -243,6 +242,62 @@ class RuntimeWiringTest extends Specification { e5.message == "The type Foo has already has a default data fetcher defined" } + def "strict mode, on by default, permits a type to be defined more than once as long as elements are not overlapping"() { + DataFetcher DF1 = env -> "x" + DataFetcher DF2 = env -> "x" + TypeResolver TR1 = env -> null + EnumValuesProvider EVP1 = name -> null + + when: + // Permit type wiring to be defined more than once, if child DataFetchers are for distinct fields + def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF2)) + + then: + noExceptionThrown() + runtimeWiring1.getDataFetchers().get("Foo").get("foo") == DF1 + runtimeWiring1.getDataFetchers().get("Foo").get("bar") == DF2 + + when: + // Only one type wiring is allowed per type, do not allow redefinition + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").typeResolver(TR1)) + + then: + def e2 = thrown(StrictModeWiringException) + e2.message == "The type Foo already has a type resolver defined" + + when: + // Only one enum values provider is allowed per type, do not allow redefinition + RuntimeWiring.newRuntimeWiring() + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").enumValues(EVP1)) + + then: + def e3 = thrown(StrictModeWiringException) + e3.message == "The type Foo already has a enum provider defined" + + when: + // Only one scalar wiring is allowed per scalar + RuntimeWiring.newRuntimeWiring() + .scalar(Scalars.GraphQLString) + then: + def e4 = thrown(StrictModeWiringException) + e4.message == "The scalar String is already defined" + + when: + // Only one default data fetcher is allowed, do not allow redefinition + TypeRuntimeWiring.newTypeWiring("Foo") + .defaultDataFetcher(DF1) + .defaultDataFetcher(DF2) + + then: + def e5 = thrown(StrictModeWiringException) + e5.message == "The type Foo has already has a default data fetcher defined" + } + def "strict mode, if set to off, won't stop certain redefinitions"() { DataFetcher DF1 = env -> "x" DataFetcher DF2 = env -> "x" @@ -253,7 +308,7 @@ class RuntimeWiringTest extends Specification { def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() .strictMode(false) .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) - .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF1)) + .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF2)) .build() then: From 8d5436afbdc7663af98cfb2b9772e53d99d1af24 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 22 Mar 2025 12:52:06 +1100 Subject: [PATCH 260/345] Allow more than 1 type runtime wiring if it is for a datafetcher for a non-overlapping child field --- src/main/java/graphql/schema/idl/RuntimeWiring.java | 11 +++++++++-- .../graphql/schema/idl/RuntimeWiringTest.groovy | 5 +++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/graphql/schema/idl/RuntimeWiring.java b/src/main/java/graphql/schema/idl/RuntimeWiring.java index 5ec7a9236f..a01343f225 100644 --- a/src/main/java/graphql/schema/idl/RuntimeWiring.java +++ b/src/main/java/graphql/schema/idl/RuntimeWiring.java @@ -313,10 +313,17 @@ public Builder type(String typeName, UnaryOperator bu public Builder type(TypeRuntimeWiring typeRuntimeWiring) { String typeName = typeRuntimeWiring.getTypeName(); Map typeDataFetchers = dataFetchers.computeIfAbsent(typeName, k -> new LinkedHashMap<>()); + + Map additionalFieldDataFetchers = typeRuntimeWiring.getFieldDataFetchers(); if (strictMode && !typeDataFetchers.isEmpty()) { - throw new StrictModeWiringException(format("The type %s has already been defined", typeName)); + // Check if the existing type wiring contains overlapping DataFetcher definitions + for (String fieldName : additionalFieldDataFetchers.keySet()) { + if (typeDataFetchers.containsKey(fieldName)) { + throw new StrictModeWiringException(format("The field %s on type %s has already been defined", fieldName, typeName)); + } + } } - typeDataFetchers.putAll(typeRuntimeWiring.getFieldDataFetchers()); + typeDataFetchers.putAll(additionalFieldDataFetchers); DataFetcher defaultDataFetcher = typeRuntimeWiring.getDefaultDataFetcher(); if (defaultDataFetcher != null) { diff --git a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy index 679281b7ac..beb518ae2f 100644 --- a/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy +++ b/src/test/groovy/graphql/schema/idl/RuntimeWiringTest.groovy @@ -206,7 +206,7 @@ class RuntimeWiringTest extends Specification { then: def e1 = thrown(StrictModeWiringException) - e1.message == "The type Foo has already been defined" + e1.message == "The field foo on type Foo has already been defined" when: RuntimeWiring.newRuntimeWiring() @@ -253,6 +253,7 @@ class RuntimeWiringTest extends Specification { def runtimeWiring1 = RuntimeWiring.newRuntimeWiring() .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("foo", DF1)) .type(TypeRuntimeWiring.newTypeWiring("Foo").dataFetcher("bar", DF2)) + .build() then: noExceptionThrown() @@ -313,7 +314,7 @@ class RuntimeWiringTest extends Specification { then: noExceptionThrown() - runtimeWiring1.getDataFetchers().get("Foo").get("bar") == DF1 + runtimeWiring1.getDataFetchers().get("Foo").get("foo") == DF2 when: def runtimeWiring2 = RuntimeWiring.newRuntimeWiring() From 4b7cdef707cc23a95d22d3eaa0f05ded1d551bfd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:22:53 +0000 Subject: [PATCH 261/345] Add performance results for commit c46c07a77f81d0493fc0e7c93d9de49e97118281 --- ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ 2 files changed, 2620 insertions(+) create mode 100644 performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json create mode 100644 performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json diff --git a/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..a51d44b83f --- /dev/null +++ b/performance-results/2025-03-24T00:22:41Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4176518241718075, + "scoreError" : 0.03280658276993444, + "scoreConfidence" : [ + 3.384845241401873, + 3.450458406941742 + ], + "scorePercentiles" : { + "0.0" : 3.4124960763887926, + "50.0" : 3.4167311543305194, + "90.0" : 3.424648911637398, + "95.0" : 3.424648911637398, + "99.0" : 3.424648911637398, + "99.9" : 3.424648911637398, + "99.99" : 3.424648911637398, + "99.999" : 3.424648911637398, + "99.9999" : 3.424648911637398, + "100.0" : 3.424648911637398 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4124960763887926, + 3.4169398837072293 + ], + [ + 3.416522424953809, + 3.424648911637398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7270621320703794, + "scoreError" : 0.008373270312183335, + "scoreConfidence" : [ + 1.7186888617581961, + 1.7354354023825627 + ], + "scorePercentiles" : { + "0.0" : 1.7254785768184715, + "50.0" : 1.7272053680709314, + "90.0" : 1.728359215321183, + "95.0" : 1.728359215321183, + "99.0" : 1.728359215321183, + "99.9" : 1.728359215321183, + "99.99" : 1.728359215321183, + "99.999" : 1.728359215321183, + "99.9999" : 1.728359215321183, + "100.0" : 1.728359215321183 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278401816392681, + 1.728359215321183 + ], + [ + 1.7254785768184715, + 1.7265705545025947 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.868071044762071, + "scoreError" : 0.004228217601595203, + "scoreConfidence" : [ + 0.8638428271604758, + 0.8722992623636662 + ], + "scorePercentiles" : { + "0.0" : 0.8675660430469083, + "50.0" : 0.8678863787909559, + "90.0" : 0.8689453784194636, + "95.0" : 0.8689453784194636, + "99.0" : 0.8689453784194636, + "99.9" : 0.8689453784194636, + "99.99" : 0.8689453784194636, + "99.999" : 0.8689453784194636, + "99.9999" : 0.8689453784194636, + "100.0" : 0.8689453784194636 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8675727546647017, + 0.8682000029172099 + ], + [ + 0.8675660430469083, + 0.8689453784194636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.21024972688744, + "scoreError" : 0.07558240245151955, + "scoreConfidence" : [ + 16.13466732443592, + 16.28583212933896 + ], + "scorePercentiles" : { + "0.0" : 16.13359353840349, + "50.0" : 16.236806302152885, + "90.0" : 16.25798250721321, + "95.0" : 16.25798250721321, + "99.0" : 16.25798250721321, + "99.9" : 16.25798250721321, + "99.99" : 16.25798250721321, + "99.999" : 16.25798250721321, + "99.9999" : 16.25798250721321, + "100.0" : 16.25798250721321 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.203181117707555, + 16.16988292740664, + 16.13359353840349 + ], + [ + 16.245425626132974, + 16.161443650413105, + 16.244571346287103 + ], + [ + 16.239360526269998, + 16.236806302152885, + 16.25798250721321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2669.028993204871, + "scoreError" : 137.4498966451194, + "scoreConfidence" : [ + 2531.5790965597516, + 2806.47888984999 + ], + "scorePercentiles" : { + "0.0" : 2556.6799422908157, + "50.0" : 2698.057835761459, + "90.0" : 2749.80392247701, + "95.0" : 2749.80392247701, + "99.0" : 2749.80392247701, + "99.9" : 2749.80392247701, + "99.99" : 2749.80392247701, + "99.999" : 2749.80392247701, + "99.9999" : 2749.80392247701, + "100.0" : 2749.80392247701 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2698.057835761459, + 2700.513649170286, + 2691.3840174449533 + ], + [ + 2745.679025287743, + 2743.8605837566774, + 2749.80392247701 + ], + [ + 2556.6799422908157, + 2569.604626828068, + 2565.6773358268297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69622.25476604533, + "scoreError" : 3039.3046996421267, + "scoreConfidence" : [ + 66582.9500664032, + 72661.55946568746 + ], + "scorePercentiles" : { + "0.0" : 67945.86095422869, + "50.0" : 68858.10770484112, + "90.0" : 71994.01572630244, + "95.0" : 71994.01572630244, + "99.0" : 71994.01572630244, + "99.9" : 71994.01572630244, + "99.99" : 71994.01572630244, + "99.999" : 71994.01572630244, + "99.9999" : 71994.01572630244, + "100.0" : 71994.01572630244 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71985.8498471133, + 71984.38163765594, + 71994.01572630244 + ], + [ + 68131.5306860081, + 67945.86095422869, + 68039.64569420867 + ], + [ + 68858.10770484112, + 68791.96960924863, + 68868.93103480102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 345.54602006775417, + "scoreError" : 10.379158594558005, + "scoreConfidence" : [ + 335.16686147319615, + 355.9251786623122 + ], + "scorePercentiles" : { + "0.0" : 337.0649979908811, + "50.0" : 347.4970106082307, + "90.0" : 354.3317645250134, + "95.0" : 354.3317645250134, + "99.0" : 354.3317645250134, + "99.9" : 354.3317645250134, + "99.99" : 354.3317645250134, + "99.999" : 354.3317645250134, + "99.9999" : 354.3317645250134, + "100.0" : 354.3317645250134 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.88831901345856, + 350.18456102805493, + 354.3317645250134 + ], + [ + 347.4970106082307, + 348.05296895971105, + 346.12872413474 + ], + [ + 337.23163930227275, + 337.0649979908811, + 339.53419504742493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.35371713199402, + "scoreError" : 1.314903125074696, + "scoreConfidence" : [ + 106.03881400691932, + 108.66862025706871 + ], + "scorePercentiles" : { + "0.0" : 106.50530219512214, + "50.0" : 107.18568194367174, + "90.0" : 108.41755405532847, + "95.0" : 108.41755405532847, + "99.0" : 108.41755405532847, + "99.9" : 108.41755405532847, + "99.99" : 108.41755405532847, + "99.999" : 108.41755405532847, + "99.9999" : 108.41755405532847, + "100.0" : 108.41755405532847 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.24981127400055, + 108.32662146400149, + 108.41755405532847 + ], + [ + 107.18568194367174, + 107.13477003105366, + 107.19828019655115 + ], + [ + 106.51999139644225, + 106.50530219512214, + 106.64544163177464 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06214532710612761, + "scoreError" : 0.0011852883013128773, + "scoreConfidence" : [ + 0.06096003880481473, + 0.06333061540744049 + ], + "scorePercentiles" : { + "0.0" : 0.06138486032693099, + "50.0" : 0.061953984499293735, + "90.0" : 0.06306548163563896, + "95.0" : 0.06306548163563896, + "99.0" : 0.06306548163563896, + "99.9" : 0.06306548163563896, + "99.99" : 0.06306548163563896, + "99.999" : 0.06306548163563896, + "99.9999" : 0.06306548163563896, + "100.0" : 0.06306548163563896 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06296859688814448, + 0.06306548163563896, + 0.06306126613401607 + ], + [ + 0.06203823581048805, + 0.061953984499293735, + 0.06191340799787021 + ], + [ + 0.06145513012296971, + 0.06138486032693099, + 0.0614669805397963 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6512152469115493E-4, + "scoreError" : 1.1829384828379278E-5, + "scoreConfidence" : [ + 3.5329213986277566E-4, + 3.769509095195342E-4 + ], + "scorePercentiles" : { + "0.0" : 3.567600496961329E-4, + "50.0" : 3.644490447931634E-4, + "90.0" : 3.741745325947859E-4, + "95.0" : 3.741745325947859E-4, + "99.0" : 3.741745325947859E-4, + "99.9" : 3.741745325947859E-4, + "99.99" : 3.741745325947859E-4, + "99.999" : 3.741745325947859E-4, + "99.9999" : 3.741745325947859E-4, + "100.0" : 3.741745325947859E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6447179445013437E-4, + 3.644490447931634E-4, + 3.638343372007972E-4 + ], + [ + 3.574252590678668E-4, + 3.582691317531037E-4, + 3.567600496961329E-4 + ], + [ + 3.7298703933026005E-4, + 3.741745325947859E-4, + 3.7372253333415055E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014286522855636308, + "scoreError" : 3.422176757491122E-4, + "scoreConfidence" : [ + 0.013944305179887196, + 0.01462874053138542 + ], + "scorePercentiles" : { + "0.0" : 0.014121189797843438, + "50.0" : 0.014170198734616665, + "90.0" : 0.014574590904983574, + "95.0" : 0.014574590904983574, + "99.0" : 0.014574590904983574, + "99.9" : 0.014574590904983574, + "99.99" : 0.014574590904983574, + "99.999" : 0.014574590904983574, + "99.9999" : 0.014574590904983574, + "100.0" : 0.014574590904983574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014548139487416732, + 0.014546160303777877, + 0.014574590904983574 + ], + [ + 0.01416057589840752, + 0.014192353136610967, + 0.014170198734616665 + ], + [ + 0.014127603557568556, + 0.014121189797843438, + 0.014137893879501448 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9921077492196557, + "scoreError" : 0.01930856406398767, + "scoreConfidence" : [ + 0.9727991851556681, + 1.0114163132836433 + ], + "scorePercentiles" : { + "0.0" : 0.9776878349789814, + "50.0" : 0.9924878263199682, + "90.0" : 1.0144587190099412, + "95.0" : 1.0144587190099412, + "99.0" : 1.0144587190099412, + "99.9" : 1.0144587190099412, + "99.99" : 1.0144587190099412, + "99.999" : 1.0144587190099412, + "99.9999" : 1.0144587190099412, + "100.0" : 1.0144587190099412 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9970329595214357, + 0.9986729526662672, + 0.9964110701404802 + ], + [ + 0.9829197303911933, + 0.9788613039052559, + 0.9776878349789814 + ], + [ + 1.0144587190099412, + 0.9904373460433792, + 0.9924878263199682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012921779722266246, + "scoreError" : 2.2252345704252554E-4, + "scoreConfidence" : [ + 0.01269925626522372, + 0.013144303179308772 + ], + "scorePercentiles" : { + "0.0" : 0.012807454812541783, + "50.0" : 0.012926500284236968, + "90.0" : 0.013009797126978096, + "95.0" : 0.013009797126978096, + "99.0" : 0.013009797126978096, + "99.9" : 0.013009797126978096, + "99.99" : 0.013009797126978096, + "99.999" : 0.013009797126978096, + "99.9999" : 0.013009797126978096, + "100.0" : 0.013009797126978096 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012807454812541783, + 0.012876620666477814, + 0.012877833138453773 + ], + [ + 0.012975167430020163, + 0.012983805159125847, + 0.013009797126978096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6740661339279614, + "scoreError" : 0.1367137587039101, + "scoreConfidence" : [ + 3.537352375224051, + 3.8107798926318717 + ], + "scorePercentiles" : { + "0.0" : 3.6163268293564714, + "50.0" : 3.665471940654629, + "90.0" : 3.7335179947761192, + "95.0" : 3.7335179947761192, + "99.0" : 3.7335179947761192, + "99.9" : 3.7335179947761192, + "99.99" : 3.7335179947761192, + "99.999" : 3.7335179947761192, + "99.9999" : 3.7335179947761192, + "100.0" : 3.7335179947761192 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6163268293564714, + 3.639242845705968, + 3.641746879096868 + ], + [ + 3.6891970022123894, + 3.7335179947761192, + 3.7243652524199553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.912590076892591, + "scoreError" : 0.0803534341024097, + "scoreConfidence" : [ + 2.8322366427901815, + 2.992943510995001 + ], + "scorePercentiles" : { + "0.0" : 2.875525743243243, + "50.0" : 2.884065987600923, + "90.0" : 2.9793437852249034, + "95.0" : 2.9793437852249034, + "99.0" : 2.9793437852249034, + "99.9" : 2.9793437852249034, + "99.99" : 2.9793437852249034, + "99.999" : 2.9793437852249034, + "99.9999" : 2.9793437852249034, + "100.0" : 2.9793437852249034 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8792008750719633, + 2.875525743243243, + 2.879239616292458 + ], + [ + 2.977670115212861, + 2.9793437852249034, + 2.971356167260844 + ], + [ + 2.887610698614319, + 2.884065987600923, + 2.879297703511802 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18040665676819445, + "scoreError" : 0.016040685065821514, + "scoreConfidence" : [ + 0.16436597170237294, + 0.19644734183401596 + ], + "scorePercentiles" : { + "0.0" : 0.17271579670120898, + "50.0" : 0.17492238903270946, + "90.0" : 0.19332436052041446, + "95.0" : 0.19332436052041446, + "99.0" : 0.19332436052041446, + "99.9" : 0.19332436052041446, + "99.99" : 0.19332436052041446, + "99.999" : 0.19332436052041446, + "99.9999" : 0.19332436052041446, + "100.0" : 0.19332436052041446 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17597227153867812, + 0.17492238903270946, + 0.1748560182371352 + ], + [ + 0.19332436052041446, + 0.19294238105344394, + 0.19289537515190094 + ], + [ + 0.17271579670120898, + 0.17295336802144587, + 0.17307795065681303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3337584233657038, + "scoreError" : 0.00641428915227004, + "scoreConfidence" : [ + 0.3273441342134338, + 0.3401727125179739 + ], + "scorePercentiles" : { + "0.0" : 0.330027413253688, + "50.0" : 0.3320781430563857, + "90.0" : 0.33920266566040297, + "95.0" : 0.33920266566040297, + "99.0" : 0.33920266566040297, + "99.9" : 0.33920266566040297, + "99.99" : 0.33920266566040297, + "99.999" : 0.33920266566040297, + "99.9999" : 0.33920266566040297, + "100.0" : 0.33920266566040297 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33920266566040297, + 0.33819932622002774, + 0.33880499762840494 + ], + [ + 0.330027413253688, + 0.3304519575705505, + 0.3308180865394158 + ], + [ + 0.3322776499534822, + 0.3320781430563857, + 0.33196557040897623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1661026225633705, + "scoreError" : 0.008337119359901021, + "scoreConfidence" : [ + 0.15776550320346946, + 0.17443974192327152 + ], + "scorePercentiles" : { + "0.0" : 0.15952054031807814, + "50.0" : 0.167699954084285, + "90.0" : 0.17118456085453113, + "95.0" : 0.17118456085453113, + "99.0" : 0.17118456085453113, + "99.9" : 0.17118456085453113, + "99.99" : 0.17118456085453113, + "99.999" : 0.17118456085453113, + "99.9999" : 0.17118456085453113, + "100.0" : 0.17118456085453113 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17118456085453113, + 0.17085764863571903, + 0.17079298237464136 + ], + [ + 0.15952054031807814, + 0.15996125433489028, + 0.159874185931255 + ], + [ + 0.16773681192237375, + 0.167699954084285, + 0.16729566461456102 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38635613779325884, + "scoreError" : 0.0060439134029958005, + "scoreConfidence" : [ + 0.380312224390263, + 0.39240005119625465 + ], + "scorePercentiles" : { + "0.0" : 0.38195458276678634, + "50.0" : 0.38560133064702706, + "90.0" : 0.39093867740422206, + "95.0" : 0.39093867740422206, + "99.0" : 0.39093867740422206, + "99.9" : 0.39093867740422206, + "99.99" : 0.39093867740422206, + "99.999" : 0.39093867740422206, + "99.9999" : 0.39093867740422206, + "100.0" : 0.39093867740422206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3823639669649002, + 0.38230232548359966, + 0.38195458276678634 + ], + [ + 0.38974632624030553, + 0.3855979278195489, + 0.38560133064702706 + ], + [ + 0.38964763343074227, + 0.39093867740422206, + 0.38905246938219734 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15826757739724495, + "scoreError" : 0.004627573086720224, + "scoreConfidence" : [ + 0.1536400043105247, + 0.1628951504839652 + ], + "scorePercentiles" : { + "0.0" : 0.15448236841536134, + "50.0" : 0.1591381985041375, + "90.0" : 0.16089253403587805, + "95.0" : 0.16089253403587805, + "99.0" : 0.16089253403587805, + "99.9" : 0.16089253403587805, + "99.99" : 0.16089253403587805, + "99.999" : 0.16089253403587805, + "99.9999" : 0.16089253403587805, + "100.0" : 0.16089253403587805 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15521114455998758, + 0.15448236841536134, + 0.15455100908739663 + ], + [ + 0.1608481260535289, + 0.16089253403587805, + 0.16086269677959014 + ], + [ + 0.1591381985041375, + 0.15963652022540067, + 0.1587855989139237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047272604046442124, + "scoreError" : 0.001440391145386556, + "scoreConfidence" : [ + 0.04583221290105557, + 0.04871299519182868 + ], + "scorePercentiles" : { + "0.0" : 0.04625750033304962, + "50.0" : 0.04723635614652465, + "90.0" : 0.04837972442320066, + "95.0" : 0.04837972442320066, + "99.0" : 0.04837972442320066, + "99.9" : 0.04837972442320066, + "99.99" : 0.04837972442320066, + "99.999" : 0.04837972442320066, + "99.9999" : 0.04837972442320066, + "100.0" : 0.04837972442320066 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04741171134216128, + 0.04722703777166983, + 0.04723635614652465 + ], + [ + 0.04837972442320066, + 0.048154765152864924, + 0.04821053368912287 + ], + [ + 0.046259463596623106, + 0.04625750033304962, + 0.04631634396276226 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9628501.02926758, + "scoreError" : 641376.5173927421, + "scoreConfidence" : [ + 8987124.511874838, + 1.026987754666032E7 + ], + "scorePercentiles" : { + "0.0" : 9113710.301457195, + "50.0" : 9821262.300294407, + "90.0" : 9976360.238285145, + "95.0" : 9976360.238285145, + "99.0" : 9976360.238285145, + "99.9" : 9976360.238285145, + "99.99" : 9976360.238285145, + "99.999" : 9976360.238285145, + "99.9999" : 9976360.238285145, + "100.0" : 9976360.238285145 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9976360.238285145, + 9899911.798219584, + 9908957.99009901 + ], + [ + 9126353.703467153, + 9131182.38229927, + 9113710.301457195 + ], + [ + 9866579.378698224, + 9812191.170588234, + 9821262.300294407 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..71f139c13c --- /dev/null +++ b/performance-results/2025-03-24T00:22:42Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420161184183998, + "scoreError" : 0.01312921616822022, + "scoreConfidence" : [ + 3.4070319680157777, + 3.4332904003522184 + ], + "scorePercentiles" : { + "0.0" : 3.4181212856651784, + "50.0" : 3.4200665558935337, + "90.0" : 3.422390339283747, + "95.0" : 3.422390339283747, + "99.0" : 3.422390339283747, + "99.9" : 3.422390339283747, + "99.99" : 3.422390339283747, + "99.999" : 3.422390339283747, + "99.9999" : 3.422390339283747, + "100.0" : 3.422390339283747 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4213385479537735, + 3.422390339283747 + ], + [ + 3.418794563833294, + 3.4181212856651784 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7276845429241154, + "scoreError" : 0.01306208372096958, + "scoreConfidence" : [ + 1.7146224592031458, + 1.740746626645085 + ], + "scorePercentiles" : { + "0.0" : 1.7256505716963815, + "50.0" : 1.727679262588992, + "90.0" : 1.7297290748220968, + "95.0" : 1.7297290748220968, + "99.0" : 1.7297290748220968, + "99.9" : 1.7297290748220968, + "99.99" : 1.7297290748220968, + "99.999" : 1.7297290748220968, + "99.9999" : 1.7297290748220968, + "100.0" : 1.7297290748220968 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7290829413006634, + 1.7297290748220968 + ], + [ + 1.7256505716963815, + 1.7262755838773205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8687410304418786, + "scoreError" : 0.0024592742022505935, + "scoreConfidence" : [ + 0.866281756239628, + 0.8712003046441291 + ], + "scorePercentiles" : { + "0.0" : 0.8684148887674343, + "50.0" : 0.8686953515573114, + "90.0" : 0.8691585298854573, + "95.0" : 0.8691585298854573, + "99.0" : 0.8691585298854573, + "99.9" : 0.8691585298854573, + "99.99" : 0.8691585298854573, + "99.999" : 0.8691585298854573, + "99.9999" : 0.8691585298854573, + "100.0" : 0.8691585298854573 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.868968907418696, + 0.8691585298854573 + ], + [ + 0.8684217956959267, + 0.8684148887674343 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.224821826130235, + "scoreError" : 0.10048051732951685, + "scoreConfidence" : [ + 16.12434130880072, + 16.32530234345975 + ], + "scorePercentiles" : { + "0.0" : 16.16446628444778, + "50.0" : 16.216501795428456, + "90.0" : 16.31885112609713, + "95.0" : 16.31885112609713, + "99.0" : 16.31885112609713, + "99.9" : 16.31885112609713, + "99.99" : 16.31885112609713, + "99.999" : 16.31885112609713, + "99.9999" : 16.31885112609713, + "100.0" : 16.31885112609713 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.167966195040854, + 16.171702268596363, + 16.186333278362973 + ], + [ + 16.216501795428456, + 16.219076817393454, + 16.16446628444778 + ], + [ + 16.27979011280597, + 16.31885112609713, + 16.29870855699916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2737.5909349527656, + "scoreError" : 119.9485903655442, + "scoreConfidence" : [ + 2617.6423445872215, + 2857.5395253183096 + ], + "scorePercentiles" : { + "0.0" : 2657.620468169439, + "50.0" : 2728.8335513951547, + "90.0" : 2828.7526106375753, + "95.0" : 2828.7526106375753, + "99.0" : 2828.7526106375753, + "99.9" : 2828.7526106375753, + "99.99" : 2828.7526106375753, + "99.999" : 2828.7526106375753, + "99.9999" : 2828.7526106375753, + "100.0" : 2828.7526106375753 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2657.620468169439, + 2662.884293462235, + 2659.29952062177 + ], + [ + 2824.7339008494246, + 2828.7526106375753, + 2818.3510215124497 + ], + [ + 2728.2922326958756, + 2729.550815230966, + 2728.8335513951547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69862.82581904189, + "scoreError" : 1728.1188838150238, + "scoreConfidence" : [ + 68134.70693522686, + 71590.94470285691 + ], + "scorePercentiles" : { + "0.0" : 68958.28296516981, + "50.0" : 69417.52869894679, + "90.0" : 71216.90369253689, + "95.0" : 71216.90369253689, + "99.0" : 71216.90369253689, + "99.9" : 71216.90369253689, + "99.99" : 71216.90369253689, + "99.999" : 71216.90369253689, + "99.9999" : 71216.90369253689, + "100.0" : 71216.90369253689 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69002.86496078158, + 68958.28296516981, + 68978.58832205336 + ], + [ + 69353.2210103416, + 69417.52869894679, + 69417.55557708694 + ], + [ + 71210.03441354769, + 71216.90369253689, + 71210.45273091237 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.6851162543681, + "scoreError" : 2.9786665796925273, + "scoreConfidence" : [ + 353.7064496746756, + 359.6637828340606 + ], + "scorePercentiles" : { + "0.0" : 355.03951802399394, + "50.0" : 355.77587736376466, + "90.0" : 359.56820737462897, + "95.0" : 359.56820737462897, + "99.0" : 359.56820737462897, + "99.9" : 359.56820737462897, + "99.99" : 359.56820737462897, + "99.999" : 359.56820737462897, + "99.9999" : 359.56820737462897, + "100.0" : 359.56820737462897 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.77587736376466, + 355.1195495481835, + 355.03951802399394 + ], + [ + 355.53794376732657, + 355.6143610562547, + 356.1276712534493 + ], + [ + 358.60885342768995, + 359.56820737462897, + 358.77406447402103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.63031003241571, + "scoreError" : 5.9928407989608665, + "scoreConfidence" : [ + 100.63746923345484, + 112.62315083137658 + ], + "scorePercentiles" : { + "0.0" : 101.8237778560693, + "50.0" : 108.37566141662414, + "90.0" : 109.67987437919469, + "95.0" : 109.67987437919469, + "99.0" : 109.67987437919469, + "99.9" : 109.67987437919469, + "99.99" : 109.67987437919469, + "99.999" : 109.67987437919469, + "99.9999" : 109.67987437919469, + "100.0" : 109.67987437919469 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.96717304519494, + 101.8237778560693, + 102.04935047858294 + ], + [ + 107.95691746021808, + 108.37566141662414, + 108.5213479810202 + ], + [ + 109.67987437919469, + 109.62918120434263, + 109.66950647049454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06115860988012198, + "scoreError" : 2.5866124625998005E-4, + "scoreConfidence" : [ + 0.060899948633862, + 0.061417271126381956 + ], + "scorePercentiles" : { + "0.0" : 0.06094085120904836, + "50.0" : 0.06123712456675362, + "90.0" : 0.061325009830254865, + "95.0" : 0.061325009830254865, + "99.0" : 0.061325009830254865, + "99.9" : 0.061325009830254865, + "99.99" : 0.061325009830254865, + "99.999" : 0.061325009830254865, + "99.9999" : 0.061325009830254865, + "100.0" : 0.061325009830254865 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06121436393797861, + 0.06124506581292373, + 0.061244503631753655 + ], + [ + 0.061325009830254865, + 0.0612870807567614, + 0.06123712456675362 + ], + [ + 0.06094085120904836, + 0.06097625959597807, + 0.06095722957964548 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.660580843532509E-4, + "scoreError" : 2.1584630401834428E-5, + "scoreConfidence" : [ + 3.444734539514165E-4, + 3.876427147550853E-4 + ], + "scorePercentiles" : { + "0.0" : 3.485295668586137E-4, + "50.0" : 3.7371202020352256E-4, + "90.0" : 3.7543158886062337E-4, + "95.0" : 3.7543158886062337E-4, + "99.0" : 3.7543158886062337E-4, + "99.9" : 3.7543158886062337E-4, + "99.99" : 3.7543158886062337E-4, + "99.999" : 3.7543158886062337E-4, + "99.9999" : 3.7543158886062337E-4, + "100.0" : 3.7543158886062337E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7371202020352256E-4, + 3.743454742106291E-4, + 3.736798714136409E-4 + ], + [ + 3.485295668586137E-4, + 3.4913701701646063E-4, + 3.491975061719075E-4 + ], + [ + 3.7543158886062337E-4, + 3.753495183136453E-4, + 3.7514019613021487E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014294007118711134, + "scoreError" : 2.467831746836528E-4, + "scoreConfidence" : [ + 0.01404722394402748, + 0.014540790293394787 + ], + "scorePercentiles" : { + "0.0" : 0.01410185573973926, + "50.0" : 0.014340279476126561, + "90.0" : 0.014435574408039945, + "95.0" : 0.014435574408039945, + "99.0" : 0.014435574408039945, + "99.9" : 0.014435574408039945, + "99.99" : 0.014435574408039945, + "99.999" : 0.014435574408039945, + "99.9999" : 0.014435574408039945, + "100.0" : 0.014435574408039945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014340279476126561, + 0.014339337843476616, + 0.014350159556011566 + ], + [ + 0.014435574408039945, + 0.014430580636409946, + 0.014434201299929129 + ], + [ + 0.014106480124135986, + 0.01410185573973926, + 0.014107594984531218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9827271961215186, + "scoreError" : 0.01661406289183188, + "scoreConfidence" : [ + 0.9661131332296867, + 0.9993412590133505 + ], + "scorePercentiles" : { + "0.0" : 0.9650379618836245, + "50.0" : 0.9843077026574804, + "90.0" : 0.9982393412856858, + "95.0" : 0.9982393412856858, + "99.0" : 0.9982393412856858, + "99.9" : 0.9982393412856858, + "99.99" : 0.9982393412856858, + "99.999" : 0.9982393412856858, + "99.9999" : 0.9982393412856858, + "100.0" : 0.9982393412856858 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9900924386694386, + 0.9982393412856858, + 0.98929232505688 + ], + [ + 0.9650379618836245, + 0.9769195255445932, + 0.9732962304622871 + ], + [ + 0.9851143342198582, + 0.9822449053138199, + 0.9843077026574804 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012964384898346287, + "scoreError" : 2.577701313091225E-4, + "scoreConfidence" : [ + 0.012706614767037164, + 0.01322215502965541 + ], + "scorePercentiles" : { + "0.0" : 0.012813191806904116, + "50.0" : 0.01298516114747426, + "90.0" : 0.013039108015990779, + "95.0" : 0.013039108015990779, + "99.0" : 0.013039108015990779, + "99.9" : 0.013039108015990779, + "99.99" : 0.013039108015990779, + "99.999" : 0.013039108015990779, + "99.9999" : 0.013039108015990779, + "100.0" : 0.013039108015990779 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012813191806904116, + 0.012931354416990374, + 0.012924645154536313 + ], + [ + 0.013038967877958146, + 0.013039042117697986, + 0.013039108015990779 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.673469200929784, + "scoreError" : 0.14943802892508878, + "scoreConfidence" : [ + 3.524031172004695, + 3.8229072298548727 + ], + "scorePercentiles" : { + "0.0" : 3.6237315644927537, + "50.0" : 3.67061608442467, + "90.0" : 3.7256586865227104, + "95.0" : 3.7256586865227104, + "99.0" : 3.7256586865227104, + "99.9" : 3.7256586865227104, + "99.99" : 3.7256586865227104, + "99.999" : 3.7256586865227104, + "99.9999" : 3.7256586865227104, + "100.0" : 3.7256586865227104 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6248462644927537, + 3.6237315644927537, + 3.626285658448151 + ], + [ + 3.7253465212211467, + 3.7149465104011887, + 3.7256586865227104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.845002438442127, + "scoreError" : 0.04287871366742935, + "scoreConfidence" : [ + 2.802123724774698, + 2.887881152109556 + ], + "scorePercentiles" : { + "0.0" : 2.7989082118667787, + "50.0" : 2.8569832750642674, + "90.0" : 2.8689466262191625, + "95.0" : 2.8689466262191625, + "99.0" : 2.8689466262191625, + "99.9" : 2.8689466262191625, + "99.99" : 2.8689466262191625, + "99.999" : 2.8689466262191625, + "99.9999" : 2.8689466262191625, + "100.0" : 2.8689466262191625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8689466262191625, + 2.8678104997133027, + 2.8603603591649986 + ], + [ + 2.8197480668170285, + 2.8194921466027627, + 2.7989082118667787 + ], + [ + 2.862014226323319, + 2.8569832750642674, + 2.8507585342075257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17667398738573184, + "scoreError" : 0.004522962845580232, + "scoreConfidence" : [ + 0.1721510245401516, + 0.18119695023131208 + ], + "scorePercentiles" : { + "0.0" : 0.17274437678355503, + "50.0" : 0.17773538823424864, + "90.0" : 0.17929800475131782, + "95.0" : 0.17929800475131782, + "99.0" : 0.17929800475131782, + "99.9" : 0.17929800475131782, + "99.99" : 0.17929800475131782, + "99.999" : 0.17929800475131782, + "99.9999" : 0.17929800475131782, + "100.0" : 0.17929800475131782 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17929800475131782, + 0.17875492422779923, + 0.1786768472698685 + ], + [ + 0.17354256814868804, + 0.17317766123473893, + 0.17274437678355503 + ], + [ + 0.17841636940231936, + 0.177719746419051, + 0.17773538823424864 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3278785338826535, + "scoreError" : 0.02325834532732937, + "scoreConfidence" : [ + 0.30462018855532413, + 0.3511368792099828 + ], + "scorePercentiles" : { + "0.0" : 0.3089522779288186, + "50.0" : 0.33629414826646936, + "90.0" : 0.33916132474139393, + "95.0" : 0.33916132474139393, + "99.0" : 0.33916132474139393, + "99.9" : 0.33916132474139393, + "99.99" : 0.33916132474139393, + "99.999" : 0.33916132474139393, + "99.9999" : 0.33916132474139393, + "100.0" : 0.33916132474139393 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.336947062232555, + 0.33597702281202757, + 0.33629414826646936 + ], + [ + 0.31003876372655403, + 0.3089522779288186, + 0.3094074593298475 + ], + [ + 0.33916132474139393, + 0.3373513187828903, + 0.3367774271233246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16002382610015384, + "scoreError" : 0.0028749300894222066, + "scoreConfidence" : [ + 0.15714889601073162, + 0.16289875618957605 + ], + "scorePercentiles" : { + "0.0" : 0.157941736670036, + "50.0" : 0.16011360556863122, + "90.0" : 0.16208578819067376, + "95.0" : 0.16208578819067376, + "99.0" : 0.16208578819067376, + "99.9" : 0.16208578819067376, + "99.99" : 0.16208578819067376, + "99.999" : 0.16208578819067376, + "99.9999" : 0.16208578819067376, + "100.0" : 0.16208578819067376 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15800144895089427, + 0.15802927755566443, + 0.157941736670036 + ], + [ + 0.16208578819067376, + 0.1619398366719026, + 0.16176520781636713 + ], + [ + 0.1602269537756557, + 0.16011360556863122, + 0.16011057970155945 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3937664494679593, + "scoreError" : 0.005156686612415254, + "scoreConfidence" : [ + 0.38860976285554405, + 0.39892313608037455 + ], + "scorePercentiles" : { + "0.0" : 0.3895133925761471, + "50.0" : 0.393265371583625, + "90.0" : 0.39806655210572406, + "95.0" : 0.39806655210572406, + "99.0" : 0.39806655210572406, + "99.9" : 0.39806655210572406, + "99.99" : 0.39806655210572406, + "99.999" : 0.39806655210572406, + "99.9999" : 0.39806655210572406, + "100.0" : 0.39806655210572406 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39707056577327776, + 0.39672426091958585, + 0.39806655210572406 + ], + [ + 0.3921561219952159, + 0.39032111385191837, + 0.3895133925761471 + ], + [ + 0.39482050100675115, + 0.393265371583625, + 0.39196016539938855 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15675301344455994, + "scoreError" : 0.004658609047840728, + "scoreConfidence" : [ + 0.1520944043967192, + 0.16141162249240068 + ], + "scorePercentiles" : { + "0.0" : 0.1545591449127525, + "50.0" : 0.15518161604233263, + "90.0" : 0.16099979876998374, + "95.0" : 0.16099979876998374, + "99.0" : 0.16099979876998374, + "99.9" : 0.16099979876998374, + "99.99" : 0.16099979876998374, + "99.999" : 0.16099979876998374, + "99.9999" : 0.16099979876998374, + "100.0" : 0.16099979876998374 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15467007167272445, + 0.1545591449127525, + 0.1545636310453021 + ], + [ + 0.15573376948951942, + 0.15518161604233263, + 0.1548710712548977 + ], + [ + 0.16099979876998374, + 0.1602751452383242, + 0.1599228725752027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047817784078729414, + "scoreError" : 0.0011948342870446483, + "scoreConfidence" : [ + 0.04662294979168476, + 0.049012618365774065 + ], + "scorePercentiles" : { + "0.0" : 0.047114732199141585, + "50.0" : 0.047610175369687965, + "90.0" : 0.04905999008021194, + "95.0" : 0.04905999008021194, + "99.0" : 0.04905999008021194, + "99.9" : 0.04905999008021194, + "99.99" : 0.04905999008021194, + "99.999" : 0.04905999008021194, + "99.9999" : 0.04905999008021194, + "100.0" : 0.04905999008021194 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047308128061386207, + 0.04719235425810044, + 0.047269258719872184 + ], + [ + 0.04856412413314167, + 0.04905999008021194, + 0.048489256354432346 + ], + [ + 0.047610175369687965, + 0.04775203753259032, + 0.047114732199141585 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9421759.159399383, + "scoreError" : 707140.3164048794, + "scoreConfidence" : [ + 8714618.842994504, + 1.0128899475804262E7 + ], + "scorePercentiles" : { + "0.0" : 9036655.30532972, + "50.0" : 9254157.081406105, + "90.0" : 1.0006135448E7, + "95.0" : 1.0006135448E7, + "99.0" : 1.0006135448E7, + "99.9" : 1.0006135448E7, + "99.99" : 1.0006135448E7, + "99.999" : 1.0006135448E7, + "99.9999" : 1.0006135448E7, + "100.0" : 1.0006135448E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9206639.917203313, + 9254157.081406105, + 9259158.390379278 + ], + [ + 9036655.30532972, + 9050269.691402715, + 9074580.583484573 + ], + [ + 9935700.8897716, + 9972535.127617149, + 1.0006135448E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From ef527cdaf9bc2c0158d32c9e456097924751b86a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:23:31 +0000 Subject: [PATCH 262/345] Add performance results for commit c46c07a77f81d0493fc0e7c93d9de49e97118281 --- ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json diff --git a/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..cde7a7ef91 --- /dev/null +++ b/performance-results/2025-03-24T00:23:14Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4223396104835797, + "scoreError" : 0.043725212925550025, + "scoreConfidence" : [ + 3.37861439755803, + 3.4660648234091296 + ], + "scorePercentiles" : { + "0.0" : 3.4145587032492717, + "50.0" : 3.42227609893122, + "90.0" : 3.4302475408226076, + "95.0" : 3.4302475408226076, + "99.0" : 3.4302475408226076, + "99.9" : 3.4302475408226076, + "99.99" : 3.4302475408226076, + "99.999" : 3.4302475408226076, + "99.9999" : 3.4302475408226076, + "100.0" : 3.4302475408226076 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4145587032492717, + 3.4196048034813886 + ], + [ + 3.424947394381052, + 3.4302475408226076 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7293409537320772, + "scoreError" : 0.013098203820130744, + "scoreConfidence" : [ + 1.7162427499119464, + 1.742439157552208 + ], + "scorePercentiles" : { + "0.0" : 1.7271885468681993, + "50.0" : 1.7291572733627323, + "90.0" : 1.7318607213346457, + "95.0" : 1.7318607213346457, + "99.0" : 1.7318607213346457, + "99.9" : 1.7318607213346457, + "99.99" : 1.7318607213346457, + "99.999" : 1.7318607213346457, + "99.9999" : 1.7318607213346457, + "100.0" : 1.7318607213346457 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271885468681993, + 1.7299560719039933 + ], + [ + 1.728358474821471, + 1.7318607213346457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8690871927147313, + "scoreError" : 0.004974514875233495, + "scoreConfidence" : [ + 0.8641126778394979, + 0.8740617075899648 + ], + "scorePercentiles" : { + "0.0" : 0.8683436536883511, + "50.0" : 0.8689709686170206, + "90.0" : 0.8700631799365328, + "95.0" : 0.8700631799365328, + "99.0" : 0.8700631799365328, + "99.9" : 0.8700631799365328, + "99.99" : 0.8700631799365328, + "99.999" : 0.8700631799365328, + "99.9999" : 0.8700631799365328, + "100.0" : 0.8700631799365328 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8683436536883511, + 0.8686206739831588 + ], + [ + 0.8693212632508825, + 0.8700631799365328 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.176447094328555, + "scoreError" : 0.21039762953362492, + "scoreConfidence" : [ + 15.96604946479493, + 16.38684472386218 + ], + "scorePercentiles" : { + "0.0" : 16.02273460262859, + "50.0" : 16.17803229239284, + "90.0" : 16.338047338633128, + "95.0" : 16.338047338633128, + "99.0" : 16.338047338633128, + "99.9" : 16.338047338633128, + "99.99" : 16.338047338633128, + "99.999" : 16.338047338633128, + "99.9999" : 16.338047338633128, + "100.0" : 16.338047338633128 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.149948890904675, + 16.1789391938823, + 16.17803229239284 + ], + [ + 16.042872420624704, + 16.0440694515352, + 16.02273460262859 + ], + [ + 16.338047338633128, + 16.327952875347822, + 16.30542678300774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2700.2882550030386, + "scoreError" : 96.7322058302932, + "scoreConfidence" : [ + 2603.5560491727456, + 2797.0204608333315 + ], + "scorePercentiles" : { + "0.0" : 2653.07991575285, + "50.0" : 2666.391896086423, + "90.0" : 2780.899937372966, + "95.0" : 2780.899937372966, + "99.0" : 2780.899937372966, + "99.9" : 2780.899937372966, + "99.99" : 2780.899937372966, + "99.999" : 2780.899937372966, + "99.9999" : 2780.899937372966, + "100.0" : 2780.899937372966 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2773.2417483443546, + 2780.899937372966, + 2775.7904882477383 + ], + [ + 2663.2819930577834, + 2653.07991575285, + 2654.1555989667613 + ], + [ + 2666.391896086423, + 2665.495887754995, + 2670.2568294434764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70174.19309953183, + "scoreError" : 1564.0509467698946, + "scoreConfidence" : [ + 68610.14215276192, + 71738.24404630173 + ], + "scorePercentiles" : { + "0.0" : 68930.65160154008, + "50.0" : 70571.78206598868, + "90.0" : 71019.93901817729, + "95.0" : 71019.93901817729, + "99.0" : 71019.93901817729, + "99.9" : 71019.93901817729, + "99.99" : 71019.93901817729, + "99.999" : 71019.93901817729, + "99.9999" : 71019.93901817729, + "100.0" : 71019.93901817729 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70996.91830347097, + 71019.93901817729, + 71006.93058404124 + ], + [ + 68970.93751249161, + 68930.65160154008, + 68983.81206796458 + ], + [ + 70506.51290054324, + 70580.25384156879, + 70571.78206598868 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.0196860126746, + "scoreError" : 6.327176034437353, + "scoreConfidence" : [ + 344.69250997823724, + 357.3468620471119 + ], + "scorePercentiles" : { + "0.0" : 344.5603693554375, + "50.0" : 350.39200219743225, + "90.0" : 355.7240486824901, + "95.0" : 355.7240486824901, + "99.0" : 355.7240486824901, + "99.9" : 355.7240486824901, + "99.99" : 355.7240486824901, + "99.999" : 355.7240486824901, + "99.9999" : 355.7240486824901, + "100.0" : 355.7240486824901 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.7240486824901, + 355.236232183386, + 355.3319181912754 + ], + [ + 348.72447907602054, + 348.4251848899698, + 344.5603693554375 + ], + [ + 350.39200219743225, + 350.3541221087014, + 350.42881742935845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.65909013547264, + "scoreError" : 1.4190899578645233, + "scoreConfidence" : [ + 105.24000017760811, + 108.07818009333717 + ], + "scorePercentiles" : { + "0.0" : 105.6162841290003, + "50.0" : 106.50638068901223, + "90.0" : 107.78984731739712, + "95.0" : 107.78984731739712, + "99.0" : 107.78984731739712, + "99.9" : 107.78984731739712, + "99.99" : 107.78984731739712, + "99.999" : 107.78984731739712, + "99.9999" : 107.78984731739712, + "100.0" : 107.78984731739712 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.5904277872302, + 107.78984731739712, + 107.70949927973304 + ], + [ + 106.506954789398, + 106.50638068901223, + 106.50478486079068 + ], + [ + 105.6162841290003, + 105.87755649908355, + 105.8300758676087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06209317411218212, + "scoreError" : 7.538075008411679E-4, + "scoreConfidence" : [ + 0.06133936661134095, + 0.06284698161302328 + ], + "scorePercentiles" : { + "0.0" : 0.06144225748201306, + "50.0" : 0.062250828252709424, + "90.0" : 0.06256984610571628, + "95.0" : 0.06256984610571628, + "99.0" : 0.06256984610571628, + "99.9" : 0.06256984610571628, + "99.99" : 0.06256984610571628, + "99.999" : 0.06256984610571628, + "99.9999" : 0.06256984610571628, + "100.0" : 0.06256984610571628 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06239646361095166, + 0.062418272145657004, + 0.06221235583108335 + ], + [ + 0.06144225748201306, + 0.06161576037905581, + 0.06148573024188094 + ], + [ + 0.062250828252709424, + 0.06256984610571628, + 0.06244705296057151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7607663812243037E-4, + "scoreError" : 1.1442859251684939E-5, + "scoreConfidence" : [ + 3.646337788707454E-4, + 3.875194973741153E-4 + ], + "scorePercentiles" : { + "0.0" : 3.681143338609699E-4, + "50.0" : 3.7442910870162834E-4, + "90.0" : 3.8507081206627316E-4, + "95.0" : 3.8507081206627316E-4, + "99.0" : 3.8507081206627316E-4, + "99.9" : 3.8507081206627316E-4, + "99.99" : 3.8507081206627316E-4, + "99.999" : 3.8507081206627316E-4, + "99.9999" : 3.8507081206627316E-4, + "100.0" : 3.8507081206627316E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8409582662134395E-4, + 3.8449133940953627E-4, + 3.8507081206627316E-4 + ], + [ + 3.690260844272774E-4, + 3.681143338609699E-4, + 3.702101250850547E-4 + ], + [ + 3.7412950073089176E-4, + 3.751226121988977E-4, + 3.7442910870162834E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014130309759608764, + "scoreError" : 1.1557199490178697E-4, + "scoreConfidence" : [ + 0.014014737764706976, + 0.014245881754510551 + ], + "scorePercentiles" : { + "0.0" : 0.014047087416772018, + "50.0" : 0.014118687416612664, + "90.0" : 0.014217589361396605, + "95.0" : 0.014217589361396605, + "99.0" : 0.014217589361396605, + "99.9" : 0.014217589361396605, + "99.99" : 0.014217589361396605, + "99.999" : 0.014217589361396605, + "99.9999" : 0.014217589361396605, + "100.0" : 0.014217589361396605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014077196809581392, + 0.01405035927748288, + 0.014047087416772018 + ], + [ + 0.01421129386050927, + 0.014217589361396605, + 0.014214491057772673 + ], + [ + 0.014119107481913626, + 0.014116975154437756, + 0.014118687416612664 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9773896294313688, + "scoreError" : 0.010852659511471296, + "scoreConfidence" : [ + 0.9665369699198975, + 0.98824228894284 + ], + "scorePercentiles" : { + "0.0" : 0.968145494482091, + "50.0" : 0.9763926268306972, + "90.0" : 0.9898854295753736, + "95.0" : 0.9898854295753736, + "99.0" : 0.9898854295753736, + "99.9" : 0.9898854295753736, + "99.99" : 0.9898854295753736, + "99.999" : 0.9898854295753736, + "99.9999" : 0.9898854295753736, + "100.0" : 0.9898854295753736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.980458675490196, + 0.9763926268306972, + 0.9734553186021611 + ], + [ + 0.9725973313557673, + 0.9735463582554517, + 0.968145494482091 + ], + [ + 0.9898854295753736, + 0.9820591416085633, + 0.9799662886820186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012999210482276655, + "scoreError" : 2.1611055986766895E-4, + "scoreConfidence" : [ + 0.012783099922408987, + 0.013215321042144323 + ], + "scorePercentiles" : { + "0.0" : 0.012919324624185454, + "50.0" : 0.013001931921219387, + "90.0" : 0.01307385693106586, + "95.0" : 0.01307385693106586, + "99.0" : 0.01307385693106586, + "99.9" : 0.01307385693106586, + "99.99" : 0.01307385693106586, + "99.999" : 0.01307385693106586, + "99.9999" : 0.01307385693106586, + "100.0" : 0.01307385693106586 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012919324624185454, + 0.012938083570310377, + 0.012929917723875773 + ], + [ + 0.01306829977209407, + 0.01307385693106586, + 0.013065780272128397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.700450900560987, + "scoreError" : 0.040650582191514045, + "scoreConfidence" : [ + 3.659800318369473, + 3.741101482752501 + ], + "scorePercentiles" : { + "0.0" : 3.6858584502579217, + "50.0" : 3.6987097385567482, + "90.0" : 3.7201648074349443, + "95.0" : 3.7201648074349443, + "99.0" : 3.7201648074349443, + "99.9" : 3.7201648074349443, + "99.99" : 3.7201648074349443, + "99.999" : 3.7201648074349443, + "99.9999" : 3.7201648074349443, + "100.0" : 3.7201648074349443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7083377094143812, + 3.7201648074349443, + 3.7109526958456973 + ], + [ + 3.689081767699115, + 3.6858584502579217, + 3.6883099727138644 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.840180921798341, + "scoreError" : 0.044513227628576325, + "scoreConfidence" : [ + 2.7956676941697647, + 2.884694149426917 + ], + "scorePercentiles" : { + "0.0" : 2.801557466946779, + "50.0" : 2.8510196391106044, + "90.0" : 2.872490500861574, + "95.0" : 2.872490500861574, + "99.0" : 2.872490500861574, + "99.9" : 2.872490500861574, + "99.99" : 2.872490500861574, + "99.999" : 2.872490500861574, + "99.9999" : 2.872490500861574, + "100.0" : 2.872490500861574 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8067425004209934, + 2.801557466946779, + 2.8109157793704327 + ], + [ + 2.8510196391106044, + 2.8517295494724837, + 2.846561409220262 + ], + [ + 2.861186417620137, + 2.859425033161807, + 2.872490500861574 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17907202947603687, + "scoreError" : 0.00670484560821617, + "scoreConfidence" : [ + 0.1723671838678207, + 0.18577687508425303 + ], + "scorePercentiles" : { + "0.0" : 0.1755640429592177, + "50.0" : 0.1774438194722927, + "90.0" : 0.18523565140962472, + "95.0" : 0.18523565140962472, + "99.0" : 0.18523565140962472, + "99.9" : 0.18523565140962472, + "99.99" : 0.18523565140962472, + "99.999" : 0.18523565140962472, + "99.9999" : 0.18523565140962472, + "100.0" : 0.18523565140962472 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17574525320726864, + 0.1755640429592177, + 0.17574461892376367 + ], + [ + 0.18321511113553918, + 0.18432324685737458, + 0.18523565140962472 + ], + [ + 0.17765377328524987, + 0.1774438194722927, + 0.17672274803400073 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33467355980546004, + "scoreError" : 0.015732504644345665, + "scoreConfidence" : [ + 0.3189410551611144, + 0.3504060644498057 + ], + "scorePercentiles" : { + "0.0" : 0.3225942608387097, + "50.0" : 0.33705844103272775, + "90.0" : 0.3445825397815375, + "95.0" : 0.3445825397815375, + "99.0" : 0.3445825397815375, + "99.9" : 0.3445825397815375, + "99.99" : 0.3445825397815375, + "99.999" : 0.3445825397815375, + "99.9999" : 0.3445825397815375, + "100.0" : 0.3445825397815375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3225942608387097, + 0.3227770372151572, + 0.32293328559434237 + ], + [ + 0.3445825397815375, + 0.34353106176571624, + 0.3433423331731099 + ], + [ + 0.3383529962444174, + 0.33705844103272775, + 0.33689008260342274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16641165219979803, + "scoreError" : 0.008301354539846898, + "scoreConfidence" : [ + 0.15811029765995113, + 0.17471300673964493 + ], + "scorePercentiles" : { + "0.0" : 0.1613107943638798, + "50.0" : 0.16515381480074648, + "90.0" : 0.17292260472756826, + "95.0" : 0.17292260472756826, + "99.0" : 0.17292260472756826, + "99.9" : 0.17292260472756826, + "99.99" : 0.17292260472756826, + "99.999" : 0.17292260472756826, + "99.9999" : 0.17292260472756826, + "100.0" : 0.17292260472756826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17292260472756826, + 0.17262155191520948, + 0.17226494201650272 + ], + [ + 0.16135854223477208, + 0.1614882046669358, + 0.1613107943638798 + ], + [ + 0.16554833105434802, + 0.16515381480074648, + 0.16503608401821962 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38875197801253086, + "scoreError" : 0.010133028661687969, + "scoreConfidence" : [ + 0.3786189493508429, + 0.39888500667421883 + ], + "scorePercentiles" : { + "0.0" : 0.37941510911712256, + "50.0" : 0.3914092459882583, + "90.0" : 0.3958145895111815, + "95.0" : 0.3958145895111815, + "99.0" : 0.3958145895111815, + "99.9" : 0.3958145895111815, + "99.99" : 0.3958145895111815, + "99.999" : 0.3958145895111815, + "99.9999" : 0.3958145895111815, + "100.0" : 0.3958145895111815 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38415878153810695, + 0.37941510911712256, + 0.3798788741880342 + ], + [ + 0.3958145895111815, + 0.39277299945013944, + 0.3931043139274343 + ], + [ + 0.3917136562475519, + 0.3914092459882583, + 0.39050023214494906 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1567575782526978, + "scoreError" : 0.001756730125437472, + "scoreConfidence" : [ + 0.1550008481272603, + 0.15851430837813527 + ], + "scorePercentiles" : { + "0.0" : 0.1552836069099379, + "50.0" : 0.1568126810826068, + "90.0" : 0.15808412828214166, + "95.0" : 0.15808412828214166, + "99.0" : 0.15808412828214166, + "99.9" : 0.15808412828214166, + "99.99" : 0.15808412828214166, + "99.999" : 0.15808412828214166, + "99.9999" : 0.15808412828214166, + "100.0" : 0.15808412828214166 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1560860536296805, + 0.1552836069099379, + 0.15552143758261924 + ], + [ + 0.1580676237157399, + 0.15808412828214166, + 0.15766376098506946 + ], + [ + 0.1570153811744387, + 0.1568126810826068, + 0.156283530912046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048592658466308974, + "scoreError" : 0.0017968188521679121, + "scoreConfidence" : [ + 0.04679583961414106, + 0.050389477318476886 + ], + "scorePercentiles" : { + "0.0" : 0.047535836964220354, + "50.0" : 0.048176836740199735, + "90.0" : 0.05068937412245353, + "95.0" : 0.05068937412245353, + "99.0" : 0.05068937412245353, + "99.9" : 0.05068937412245353, + "99.99" : 0.05068937412245353, + "99.999" : 0.05068937412245353, + "99.9999" : 0.05068937412245353, + "100.0" : 0.05068937412245353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04894306757471051, + 0.048111777384870005, + 0.048176836740199735 + ], + [ + 0.047619933290158525, + 0.047535836964220354, + 0.047573736302526606 + ], + [ + 0.05068937412245353, + 0.049340145975389535, + 0.04934321784225199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9118731.258717624, + "scoreError" : 64258.13778346629, + "scoreConfidence" : [ + 9054473.120934159, + 9182989.39650109 + ], + "scorePercentiles" : { + "0.0" : 9080304.523593467, + "50.0" : 9100486.565059144, + "90.0" : 9171500.41796517, + "95.0" : 9171500.41796517, + "99.0" : 9171500.41796517, + "99.9" : 9171500.41796517, + "99.99" : 9171500.41796517, + "99.999" : 9171500.41796517, + "99.9999" : 9171500.41796517, + "100.0" : 9171500.41796517 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9169333.384051329, + 9171500.41796517, + 9156587.633119853 + ], + [ + 9100486.565059144, + 9087986.72479564, + 9093709.6 + ], + [ + 9128045.636861313, + 9080304.523593467, + 9080626.843012704 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 1094916455e9edbe3ccf8ccf44c4c81622194afb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:24:06 +0000 Subject: [PATCH 263/345] Add performance results for commit c46c07a77f81d0493fc0e7c93d9de49e97118281 --- ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json diff --git a/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..43a8f0b979 --- /dev/null +++ b/performance-results/2025-03-24T00:23:52Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4139790279787423, + "scoreError" : 0.01733409931536483, + "scoreConfidence" : [ + 3.3966449286633775, + 3.431313127294107 + ], + "scorePercentiles" : { + "0.0" : 3.410359353387592, + "50.0" : 3.4147105177822104, + "90.0" : 3.4161357229629568, + "95.0" : 3.4161357229629568, + "99.0" : 3.4161357229629568, + "99.9" : 3.4161357229629568, + "99.99" : 3.4161357229629568, + "99.999" : 3.4161357229629568, + "99.9999" : 3.4161357229629568, + "100.0" : 3.4161357229629568 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.410359353387592, + 3.4161357229629568 + ], + [ + 3.4135350559911077, + 3.415885979573313 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7232104134744857, + "scoreError" : 0.007629890942061581, + "scoreConfidence" : [ + 1.715580522532424, + 1.7308403044165472 + ], + "scorePercentiles" : { + "0.0" : 1.7220037289307688, + "50.0" : 1.7232692487178383, + "90.0" : 1.724299427531498, + "95.0" : 1.724299427531498, + "99.0" : 1.724299427531498, + "99.9" : 1.724299427531498, + "99.99" : 1.724299427531498, + "99.999" : 1.724299427531498, + "99.9999" : 1.724299427531498, + "100.0" : 1.724299427531498 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7220037289307688, + 1.724144873194817 + ], + [ + 1.7223936242408595, + 1.724299427531498 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662626240049967, + "scoreError" : 0.012849636408795155, + "scoreConfidence" : [ + 0.8534129875962015, + 0.8791122604137918 + ], + "scorePercentiles" : { + "0.0" : 0.8648472759593716, + "50.0" : 0.8655491554294797, + "90.0" : 0.8691049092016552, + "95.0" : 0.8691049092016552, + "99.0" : 0.8691049092016552, + "99.9" : 0.8691049092016552, + "99.99" : 0.8691049092016552, + "99.999" : 0.8691049092016552, + "99.9999" : 0.8691049092016552, + "100.0" : 0.8691049092016552 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8649317121070363, + 0.8648472759593716 + ], + [ + 0.8661665987519231, + 0.8691049092016552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.747041994645217, + "scoreError" : 0.14758109112545448, + "scoreConfidence" : [ + 15.599460903519763, + 15.894623085770672 + ], + "scorePercentiles" : { + "0.0" : 15.609608788536184, + "50.0" : 15.753115594028856, + "90.0" : 15.892679137848754, + "95.0" : 15.892679137848754, + "99.0" : 15.892679137848754, + "99.9" : 15.892679137848754, + "99.99" : 15.892679137848754, + "99.999" : 15.892679137848754, + "99.9999" : 15.892679137848754, + "100.0" : 15.892679137848754 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.892679137848754, + 15.840820211442846, + 15.760137568493265 + ], + [ + 15.716608944186692, + 15.750055674111344, + 15.639867067639829 + ], + [ + 15.76048496551918, + 15.753115594028856, + 15.609608788536184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2545.4144779507083, + "scoreError" : 133.1445397106979, + "scoreConfidence" : [ + 2412.2699382400106, + 2678.559017661406 + ], + "scorePercentiles" : { + "0.0" : 2423.101821634822, + "50.0" : 2562.1716441581257, + "90.0" : 2649.288918606347, + "95.0" : 2649.288918606347, + "99.0" : 2649.288918606347, + "99.9" : 2649.288918606347, + "99.99" : 2649.288918606347, + "99.999" : 2649.288918606347, + "99.9999" : 2649.288918606347, + "100.0" : 2649.288918606347 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2637.4876233069353, + 2609.3290298838847, + 2649.288918606347 + ], + [ + 2564.6887466700787, + 2562.1716441581257, + 2515.2897354670463 + ], + [ + 2479.1384646149886, + 2468.2343172141473, + 2423.101821634822 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70197.89601850326, + "scoreError" : 653.3580011482312, + "scoreConfidence" : [ + 69544.53801735504, + 70851.25401965149 + ], + "scorePercentiles" : { + "0.0" : 69486.97210441956, + "50.0" : 70326.68061681147, + "90.0" : 70559.23822474394, + "95.0" : 70559.23822474394, + "99.0" : 70559.23822474394, + "99.9" : 70559.23822474394, + "99.99" : 70559.23822474394, + "99.999" : 70559.23822474394, + "99.9999" : 70559.23822474394, + "100.0" : 70559.23822474394 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70326.68061681147, + 70503.0313110003, + 70559.23822474394 + ], + [ + 70280.42396857131, + 70461.33770627339, + 70492.21472352139 + ], + [ + 69486.97210441956, + 69697.21793988864, + 69973.94757129939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 344.5101901407003, + "scoreError" : 2.383199551240554, + "scoreConfidence" : [ + 342.1269905894597, + 346.89338969194085 + ], + "scorePercentiles" : { + "0.0" : 342.6941923456472, + "50.0" : 344.34952393825296, + "90.0" : 347.15351826154125, + "95.0" : 347.15351826154125, + "99.0" : 347.15351826154125, + "99.9" : 347.15351826154125, + "99.99" : 347.15351826154125, + "99.999" : 347.15351826154125, + "99.9999" : 347.15351826154125, + "100.0" : 347.15351826154125 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 344.34952393825296, + 342.75642153725806, + 347.15351826154125 + ], + [ + 344.46026237521187, + 345.8795032843992, + 342.6941923456472 + ], + [ + 344.2612697809226, + 343.90034476443435, + 345.13667497863463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.19980969284724, + "scoreError" : 4.314449187306226, + "scoreConfidence" : [ + 101.88536050554102, + 110.51425888015346 + ], + "scorePercentiles" : { + "0.0" : 102.98445685458186, + "50.0" : 106.25756148437183, + "90.0" : 109.45660740565823, + "95.0" : 109.45660740565823, + "99.0" : 109.45660740565823, + "99.9" : 109.45660740565823, + "99.99" : 109.45660740565823, + "99.999" : 109.45660740565823, + "99.9999" : 109.45660740565823, + "100.0" : 109.45660740565823 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.4167165580331, + 109.45660740565823, + 108.58405853540157 + ], + [ + 103.46395059370718, + 102.98445685458186, + 103.48652507131372 + ], + [ + 106.73553070412007, + 106.25756148437183, + 105.4128800284376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06275639899463895, + "scoreError" : 9.54564950141199E-4, + "scoreConfidence" : [ + 0.061801834044497746, + 0.06371096394478014 + ], + "scorePercentiles" : { + "0.0" : 0.06206886380451109, + "50.0" : 0.06277109492125466, + "90.0" : 0.06384064171167375, + "95.0" : 0.06384064171167375, + "99.0" : 0.06384064171167375, + "99.9" : 0.06384064171167375, + "99.99" : 0.06384064171167375, + "99.999" : 0.06384064171167375, + "99.9999" : 0.06384064171167375, + "100.0" : 0.06384064171167375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06277109492125466, + 0.06384064171167375, + 0.0628098215095501 + ], + [ + 0.06311703809060958, + 0.062423528202599284, + 0.062465097437723306 + ], + [ + 0.06319615820904954, + 0.06206886380451109, + 0.06211534706477921 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7162303018110915E-4, + "scoreError" : 1.3300625207700327E-5, + "scoreConfidence" : [ + 3.583224049734088E-4, + 3.849236553888095E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6245800606610196E-4, + "50.0" : 3.6733737068606417E-4, + "90.0" : 3.8197260089267476E-4, + "95.0" : 3.8197260089267476E-4, + "99.0" : 3.8197260089267476E-4, + "99.9" : 3.8197260089267476E-4, + "99.99" : 3.8197260089267476E-4, + "99.999" : 3.8197260089267476E-4, + "99.9999" : 3.8197260089267476E-4, + "100.0" : 3.8197260089267476E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7946744438874773E-4, + 3.8197260089267476E-4, + 3.801795977685541E-4 + ], + [ + 3.774281412412418E-4, + 3.6596905308952E-4, + 3.6733737068606417E-4 + ], + [ + 3.655366763432819E-4, + 3.64258381153796E-4, + 3.6245800606610196E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014576655465828222, + "scoreError" : 4.4815463271461934E-4, + "scoreConfidence" : [ + 0.014128500833113603, + 0.015024810098542842 + ], + "scorePercentiles" : { + "0.0" : 0.014191622172709856, + "50.0" : 0.014660958410302422, + "90.0" : 0.01486787987493291, + "95.0" : 0.01486787987493291, + "99.0" : 0.01486787987493291, + "99.9" : 0.01486787987493291, + "99.99" : 0.01486787987493291, + "99.999" : 0.01486787987493291, + "99.9999" : 0.01486787987493291, + "100.0" : 0.01486787987493291 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014191622172709856, + 0.014290993181850661, + 0.014229220261302128 + ], + [ + 0.014660958410302422, + 0.014729058729871167, + 0.014615897812608705 + ], + [ + 0.01486787987493291, + 0.014796878423028379, + 0.014807390325847788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9886220481891734, + "scoreError" : 0.02202937493183751, + "scoreConfidence" : [ + 0.9665926732573359, + 1.0106514231210109 + ], + "scorePercentiles" : { + "0.0" : 0.9708414966508107, + "50.0" : 0.9914381361157926, + "90.0" : 1.0050596295477388, + "95.0" : 1.0050596295477388, + "99.0" : 1.0050596295477388, + "99.9" : 1.0050596295477388, + "99.99" : 1.0050596295477388, + "99.999" : 1.0050596295477388, + "99.9999" : 1.0050596295477388, + "100.0" : 1.0050596295477388 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9988275476428286, + 0.9798739526748971, + 1.0050596295477388 + ], + [ + 0.9914381361157926, + 0.9749231319945408, + 0.9770868427943332 + ], + [ + 0.9708414966508107, + 1.00367483410277, + 0.9958728621788488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013247707048733286, + "scoreError" : 5.193704451363999E-4, + "scoreConfidence" : [ + 0.012728336603596886, + 0.013767077493869686 + ], + "scorePercentiles" : { + "0.0" : 0.013023179856227536, + "50.0" : 0.013218959993194505, + "90.0" : 0.013476428963390805, + "95.0" : 0.013476428963390805, + "99.0" : 0.013476428963390805, + "99.9" : 0.013476428963390805, + "99.99" : 0.013476428963390805, + "99.999" : 0.013476428963390805, + "99.9999" : 0.013476428963390805, + "100.0" : 0.013476428963390805 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013431655164077107, + 0.013476428963390805, + 0.013309052718435748 + ], + [ + 0.013023179856227536, + 0.013117058322315264, + 0.013128867267953263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8007924550689083, + "scoreError" : 0.1575107709395715, + "scoreConfidence" : [ + 3.6432816841293367, + 3.95830322600848 + ], + "scorePercentiles" : { + "0.0" : 3.7105204391691395, + "50.0" : 3.810032759650752, + "90.0" : 3.8690372513534417, + "95.0" : 3.8690372513534417, + "99.0" : 3.8690372513534417, + "99.9" : 3.8690372513534417, + "99.99" : 3.8690372513534417, + "99.999" : 3.8690372513534417, + "99.9999" : 3.8690372513534417, + "100.0" : 3.8690372513534417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7105204391691395, + 3.7916760227445034, + 3.7700243978899772 + ], + [ + 3.828389496557001, + 3.8351071226993865, + 3.8690372513534417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9027731564072075, + "scoreError" : 0.07612377795801785, + "scoreConfidence" : [ + 2.8266493784491895, + 2.9788969343652254 + ], + "scorePercentiles" : { + "0.0" : 2.825844649901102, + "50.0" : 2.915686231778426, + "90.0" : 2.9708684835164836, + "95.0" : 2.9708684835164836, + "99.0" : 2.9708684835164836, + "99.9" : 2.9708684835164836, + "99.99" : 2.9708684835164836, + "99.999" : 2.9708684835164836, + "99.9999" : 2.9708684835164836, + "100.0" : 2.9708684835164836 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.915686231778426, + 2.8977852381918283, + 2.9708684835164836 + ], + [ + 2.851340196123147, + 2.876133754385965, + 2.825844649901102 + ], + [ + 2.9407795983534255, + 2.9272113388937666, + 2.9193089165207238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17689930835873036, + "scoreError" : 0.002842059148974742, + "scoreConfidence" : [ + 0.17405724920975563, + 0.17974136750770509 + ], + "scorePercentiles" : { + "0.0" : 0.1749956751596815, + "50.0" : 0.17624560317236518, + "90.0" : 0.1805695294680582, + "95.0" : 0.1805695294680582, + "99.0" : 0.1805695294680582, + "99.9" : 0.1805695294680582, + "99.99" : 0.1805695294680582, + "99.999" : 0.1805695294680582, + "99.9999" : 0.1805695294680582, + "100.0" : 0.1805695294680582 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1756597641623777, + 0.17624560317236518, + 0.1749956751596815 + ], + [ + 0.1805695294680582, + 0.17602795509672423, + 0.1759503923462655 + ], + [ + 0.17831782509539604, + 0.17724520107761293, + 0.1770818296500921 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3354327846464433, + "scoreError" : 0.011347978196975963, + "scoreConfidence" : [ + 0.32408480644946736, + 0.3467807628434193 + ], + "scorePercentiles" : { + "0.0" : 0.3264376331320385, + "50.0" : 0.3361444103865546, + "90.0" : 0.3443870391555892, + "95.0" : 0.3443870391555892, + "99.0" : 0.3443870391555892, + "99.9" : 0.3443870391555892, + "99.99" : 0.3443870391555892, + "99.999" : 0.3443870391555892, + "99.9999" : 0.3443870391555892, + "100.0" : 0.3443870391555892 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3373253261148216, + 0.3342318498328877, + 0.3361444103865546 + ], + [ + 0.3443870391555892, + 0.34167287751546005, + 0.342488746600911 + ], + [ + 0.3264376331320385, + 0.32709297160893597, + 0.3291142074707915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16110332563434188, + "scoreError" : 0.0020874150798940866, + "scoreConfidence" : [ + 0.1590159105544478, + 0.16319074071423595 + ], + "scorePercentiles" : { + "0.0" : 0.15933203478163888, + "50.0" : 0.1610831870298481, + "90.0" : 0.16265270313262417, + "95.0" : 0.16265270313262417, + "99.0" : 0.16265270313262417, + "99.9" : 0.16265270313262417, + "99.99" : 0.16265270313262417, + "99.999" : 0.16265270313262417, + "99.9999" : 0.16265270313262417, + "100.0" : 0.16265270313262417 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16261264577133844, + 0.15933203478163888, + 0.1594406899872449 + ], + [ + 0.1620065954120563, + 0.1610831870298481, + 0.16164427368829407 + ], + [ + 0.16265270313262417, + 0.16080782867801952, + 0.1603499722280125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39241547184985115, + "scoreError" : 0.004628031957858871, + "scoreConfidence" : [ + 0.38778743989199227, + 0.39704350380771003 + ], + "scorePercentiles" : { + "0.0" : 0.38753200643286184, + "50.0" : 0.3934960783032974, + "90.0" : 0.3954240305654409, + "95.0" : 0.3954240305654409, + "99.0" : 0.3954240305654409, + "99.9" : 0.3954240305654409, + "99.99" : 0.3954240305654409, + "99.999" : 0.3954240305654409, + "99.9999" : 0.3954240305654409, + "100.0" : 0.3954240305654409 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39394333220405753, + 0.3947797881252221, + 0.3938365002756774 + ], + [ + 0.3954240305654409, + 0.3930255630011005, + 0.3934960783032974 + ], + [ + 0.39110447979975754, + 0.38859746794124506, + 0.38753200643286184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15713051585289387, + "scoreError" : 0.0032836281079149463, + "scoreConfidence" : [ + 0.15384688774497893, + 0.1604141439608088 + ], + "scorePercentiles" : { + "0.0" : 0.15493549551475716, + "50.0" : 0.15686275267838937, + "90.0" : 0.1600880574863528, + "95.0" : 0.1600880574863528, + "99.0" : 0.1600880574863528, + "99.9" : 0.1600880574863528, + "99.99" : 0.1600880574863528, + "99.999" : 0.1600880574863528, + "99.9999" : 0.1600880574863528, + "100.0" : 0.1600880574863528 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1577168077626723, + 0.15493549551475716, + 0.1556498461275059 + ], + [ + 0.1600880574863528, + 0.15967283248974118, + 0.15846983966405198 + ], + [ + 0.15555324712232454, + 0.1552257638302496, + 0.15686275267838937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04705066768023394, + "scoreError" : 0.001354979886918993, + "scoreConfidence" : [ + 0.04569568779331495, + 0.04840564756715294 + ], + "scorePercentiles" : { + "0.0" : 0.046198589189688624, + "50.0" : 0.04695832817738709, + "90.0" : 0.04813244350534022, + "95.0" : 0.04813244350534022, + "99.0" : 0.04813244350534022, + "99.9" : 0.04813244350534022, + "99.99" : 0.04813244350534022, + "99.999" : 0.04813244350534022, + "99.9999" : 0.04813244350534022, + "100.0" : 0.04813244350534022 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046199114461003984, + 0.046198589189688624, + 0.04623714843789734 + ], + [ + 0.04695832817738709, + 0.04697174483905363, + 0.04676409584646608 + ], + [ + 0.04811783464051659, + 0.047876710024751884, + 0.04813244350534022 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9532333.788803102, + "scoreError" : 184675.12319489112, + "scoreConfidence" : [ + 9347658.66560821, + 9717008.911997994 + ], + "scorePercentiles" : { + "0.0" : 9399325.62781955, + "50.0" : 9531696.442857143, + "90.0" : 9684418.71732817, + "95.0" : 9684418.71732817, + "99.0" : 9684418.71732817, + "99.9" : 9684418.71732817, + "99.99" : 9684418.71732817, + "99.999" : 9684418.71732817, + "99.9999" : 9684418.71732817, + "100.0" : 9684418.71732817 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9399325.62781955, + 9531696.442857143, + 9439758.283018868 + ], + [ + 9542497.550572518, + 9446944.228517469, + 9435623.42264151 + ], + [ + 9665474.026086956, + 9645265.800385728, + 9684418.71732817 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 9d41bad396eb99ebd62f06194ccc6a98c360319b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:24:23 +0000 Subject: [PATCH 264/345] Add performance results for commit c46c07a77f81d0493fc0e7c93d9de49e97118281 --- ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json diff --git a/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..31b6567efb --- /dev/null +++ b/performance-results/2025-03-24T00:24:07Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.418727796332958, + "scoreError" : 0.019260305937663362, + "scoreConfidence" : [ + 3.3994674903952946, + 3.437988102270621 + ], + "scorePercentiles" : { + "0.0" : 3.4152823316089855, + "50.0" : 3.418559195614442, + "90.0" : 3.4225104624939626, + "95.0" : 3.4225104624939626, + "99.0" : 3.4225104624939626, + "99.9" : 3.4225104624939626, + "99.99" : 3.4225104624939626, + "99.999" : 3.4225104624939626, + "99.9999" : 3.4225104624939626, + "100.0" : 3.4225104624939626 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4152823316089855, + 3.418103971728598 + ], + [ + 3.4190144195002863, + 3.4225104624939626 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7267000534572148, + "scoreError" : 0.009745745154939877, + "scoreConfidence" : [ + 1.716954308302275, + 1.7364457986121546 + ], + "scorePercentiles" : { + "0.0" : 1.725070583670842, + "50.0" : 1.7265046397066905, + "90.0" : 1.7287203507446358, + "95.0" : 1.7287203507446358, + "99.0" : 1.7287203507446358, + "99.9" : 1.7287203507446358, + "99.99" : 1.7287203507446358, + "99.999" : 1.7287203507446358, + "99.9999" : 1.7287203507446358, + "100.0" : 1.7287203507446358 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7287203507446358, + 1.7265772264402828 + ], + [ + 1.725070583670842, + 1.7264320529730983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8679407914173365, + "scoreError" : 0.006622606573662276, + "scoreConfidence" : [ + 0.8613181848436742, + 0.8745633979909988 + ], + "scorePercentiles" : { + "0.0" : 0.8669313223112551, + "50.0" : 0.8677987709768098, + "90.0" : 0.8692343014044714, + "95.0" : 0.8692343014044714, + "99.0" : 0.8692343014044714, + "99.9" : 0.8692343014044714, + "99.99" : 0.8692343014044714, + "99.999" : 0.8692343014044714, + "99.9999" : 0.8692343014044714, + "100.0" : 0.8692343014044714 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8669313223112551, + 0.8692343014044714 + ], + [ + 0.8673413586729263, + 0.8682561832806932 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.235936579563116, + "scoreError" : 0.10012301905339593, + "scoreConfidence" : [ + 16.13581356050972, + 16.33605959861651 + ], + "scorePercentiles" : { + "0.0" : 16.137368925786877, + "50.0" : 16.23306955047474, + "90.0" : 16.320767303396018, + "95.0" : 16.320767303396018, + "99.0" : 16.320767303396018, + "99.9" : 16.320767303396018, + "99.99" : 16.320767303396018, + "99.999" : 16.320767303396018, + "99.9999" : 16.320767303396018, + "100.0" : 16.320767303396018 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.137368925786877, + 16.156522429329012, + 16.224274005597668 + ], + [ + 16.23306955047474, + 16.270260500138413, + 16.229219191891904 + ], + [ + 16.29340742332964, + 16.258539886123778, + 16.320767303396018 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2693.999980775219, + "scoreError" : 143.563391004748, + "scoreConfidence" : [ + 2550.4365897704706, + 2837.563371779967 + ], + "scorePercentiles" : { + "0.0" : 2587.0134717566575, + "50.0" : 2705.156115027511, + "90.0" : 2786.233952324298, + "95.0" : 2786.233952324298, + "99.0" : 2786.233952324298, + "99.9" : 2786.233952324298, + "99.99" : 2786.233952324298, + "99.999" : 2786.233952324298, + "99.9999" : 2786.233952324298, + "100.0" : 2786.233952324298 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2785.8671292365375, + 2786.233952324298, + 2785.9989424675027 + ], + [ + 2705.156115027511, + 2701.0886255987457, + 2711.748006185997 + ], + [ + 2589.3528046902547, + 2593.5407796894633, + 2587.0134717566575 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70073.68564851678, + "scoreError" : 1632.0955447784556, + "scoreConfidence" : [ + 68441.59010373833, + 71705.78119329523 + ], + "scorePercentiles" : { + "0.0" : 68765.72725889308, + "50.0" : 70559.97147775891, + "90.0" : 70873.8723885834, + "95.0" : 70873.8723885834, + "99.0" : 70873.8723885834, + "99.9" : 70873.8723885834, + "99.99" : 70873.8723885834, + "99.999" : 70873.8723885834, + "99.9999" : 70873.8723885834, + "100.0" : 70873.8723885834 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70652.15947951954, + 70559.97147775891, + 70557.58478472116 + ], + [ + 70873.8723885834, + 70794.07496145777, + 70861.8622002032 + ], + [ + 68800.60238606091, + 68765.72725889308, + 68797.31589945283 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.4769662363869, + "scoreError" : 5.749983693062291, + "scoreConfidence" : [ + 340.7269825433246, + 352.2269499294492 + ], + "scorePercentiles" : { + "0.0" : 342.6456839432396, + "50.0" : 345.21547181686816, + "90.0" : 350.95338261651966, + "95.0" : 350.95338261651966, + "99.0" : 350.95338261651966, + "99.9" : 350.95338261651966, + "99.99" : 350.95338261651966, + "99.999" : 350.95338261651966, + "99.9999" : 350.95338261651966, + "100.0" : 350.95338261651966 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 350.81948717326736, + 350.8788328484417, + 350.95338261651966 + ], + [ + 343.53993221462224, + 342.6456839432396, + 345.7400937176836 + ], + [ + 345.21547181686816, + 344.3811516063152, + 344.1186601905246 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.48660478045684, + "scoreError" : 3.6159200713995125, + "scoreConfidence" : [ + 104.87068470905733, + 112.10252485185636 + ], + "scorePercentiles" : { + "0.0" : 106.35313512940456, + "50.0" : 107.62571485891694, + "90.0" : 111.58741620896292, + "95.0" : 111.58741620896292, + "99.0" : 111.58741620896292, + "99.9" : 111.58741620896292, + "99.99" : 111.58741620896292, + "99.999" : 111.58741620896292, + "99.9999" : 111.58741620896292, + "100.0" : 111.58741620896292 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.993872610707, + 107.63913033013222, + 107.62571485891694 + ], + [ + 106.35313512940456, + 107.01793018601509, + 106.84737908686986 + ], + [ + 110.96237137270401, + 111.35249324039887, + 111.58741620896292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0622361102645904, + "scoreError" : 0.0014092667087201524, + "scoreConfidence" : [ + 0.06082684355587025, + 0.06364537697331056 + ], + "scorePercentiles" : { + "0.0" : 0.06113559449297867, + "50.0" : 0.06233768628404366, + "90.0" : 0.06329307029247391, + "95.0" : 0.06329307029247391, + "99.0" : 0.06329307029247391, + "99.9" : 0.06329307029247391, + "99.99" : 0.06329307029247391, + "99.999" : 0.06329307029247391, + "99.9999" : 0.06329307029247391, + "100.0" : 0.06329307029247391 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06113559449297867, + 0.06127452007328341, + 0.061268865124343666 + ], + [ + 0.06329307029247391, + 0.06295227893083542, + 0.06318084146249005 + ], + [ + 0.06233768628404366, + 0.062332511154188974, + 0.06234962456667581 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.665468543083284E-4, + "scoreError" : 1.005729578916367E-5, + "scoreConfidence" : [ + 3.564895585191647E-4, + 3.7660415009749205E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5904002448909427E-4, + "50.0" : 3.674106865832467E-4, + "90.0" : 3.7315715283631613E-4, + "95.0" : 3.7315715283631613E-4, + "99.0" : 3.7315715283631613E-4, + "99.9" : 3.7315715283631613E-4, + "99.99" : 3.7315715283631613E-4, + "99.999" : 3.7315715283631613E-4, + "99.9999" : 3.7315715283631613E-4, + "100.0" : 3.7315715283631613E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5904002448909427E-4, + 3.593027288419463E-4, + 3.59669568734919E-4 + ], + [ + 3.6629329073931805E-4, + 3.68010703875466E-4, + 3.674106865832467E-4 + ], + [ + 3.7315715283631613E-4, + 3.7295545675339195E-4, + 3.7308207592125686E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014168876622290247, + "scoreError" : 2.180404606342525E-4, + "scoreConfidence" : [ + 0.013950836161655995, + 0.0143869170829245 + ], + "scorePercentiles" : { + "0.0" : 0.014005904332395416, + "50.0" : 0.014214103812740216, + "90.0" : 0.014365163314117767, + "95.0" : 0.014365163314117767, + "99.0" : 0.014365163314117767, + "99.9" : 0.014365163314117767, + "99.99" : 0.014365163314117767, + "99.999" : 0.014365163314117767, + "99.9999" : 0.014365163314117767, + "100.0" : 0.014365163314117767 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014248717006779458, + 0.014241400673894561, + 0.014247215099016953 + ], + [ + 0.014015916791290052, + 0.01400655825116253, + 0.014005904332395416 + ], + [ + 0.014365163314117767, + 0.014214103812740216, + 0.014174910319215287 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9883874619998374, + "scoreError" : 0.012262246983570126, + "scoreConfidence" : [ + 0.9761252150162673, + 1.0006497089834074 + ], + "scorePercentiles" : { + "0.0" : 0.9782718871172845, + "50.0" : 0.9889908523536393, + "90.0" : 1.0001254258425842, + "95.0" : 1.0001254258425842, + "99.0" : 1.0001254258425842, + "99.9" : 1.0001254258425842, + "99.99" : 1.0001254258425842, + "99.999" : 1.0001254258425842, + "99.9999" : 1.0001254258425842, + "100.0" : 1.0001254258425842 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9902935940192098, + 0.9942343288597276, + 1.0001254258425842 + ], + [ + 0.9818900094256259, + 0.9782718871172845, + 0.9801009946099569 + ], + [ + 0.9872359937808489, + 0.9889908523536393, + 0.9943440719896589 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013229909001656678, + "scoreError" : 9.406588269167901E-4, + "scoreConfidence" : [ + 0.012289250174739887, + 0.014170567828573469 + ], + "scorePercentiles" : { + "0.0" : 0.012873240898839377, + "50.0" : 0.013235218525888437, + "90.0" : 0.013595976207632591, + "95.0" : 0.013595976207632591, + "99.0" : 0.013595976207632591, + "99.9" : 0.013595976207632591, + "99.99" : 0.013595976207632591, + "99.999" : 0.013595976207632591, + "99.9999" : 0.013595976207632591, + "100.0" : 0.013595976207632591 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012873240898839377, + 0.012927177535904031, + 0.012980483442625505 + ], + [ + 0.013489953609151367, + 0.013512622315787199, + 0.013595976207632591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8953529355881122, + "scoreError" : 0.16813129815441916, + "scoreConfidence" : [ + 3.727221637433693, + 4.063484233742531 + ], + "scorePercentiles" : { + "0.0" : 3.8246030955657493, + "50.0" : 3.8941909112009157, + "90.0" : 3.9681537279936556, + "95.0" : 3.9681537279936556, + "99.0" : 3.9681537279936556, + "99.9" : 3.9681537279936556, + "99.99" : 3.9681537279936556, + "99.999" : 3.9681537279936556, + "99.9999" : 3.9681537279936556, + "100.0" : 3.9681537279936556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8246030955657493, + 3.8482302953846155, + 3.8541955454545453 + ], + [ + 3.9681537279936556, + 3.9341862769472855, + 3.9427486721828213 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.860606839688258, + "scoreError" : 0.04294079178434248, + "scoreConfidence" : [ + 2.8176660479039155, + 2.9035476314726 + ], + "scorePercentiles" : { + "0.0" : 2.832584204474653, + "50.0" : 2.848960992309883, + "90.0" : 2.8993197460869564, + "95.0" : 2.8993197460869564, + "99.0" : 2.8993197460869564, + "99.9" : 2.8993197460869564, + "99.99" : 2.8993197460869564, + "99.999" : 2.8993197460869564, + "99.9999" : 2.8993197460869564, + "100.0" : 2.8993197460869564 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.841267359375, + 2.853678905278174, + 2.846926069740962 + ], + [ + 2.841372784375, + 2.832584204474653, + 2.848960992309883 + ], + [ + 2.8877761952064684, + 2.8935753003472224, + 2.8993197460869564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17612873481401406, + "scoreError" : 0.002273465359969216, + "scoreConfidence" : [ + 0.17385526945404484, + 0.17840220017398328 + ], + "scorePercentiles" : { + "0.0" : 0.17405524113203608, + "50.0" : 0.17676613815777845, + "90.0" : 0.17724810159697973, + "95.0" : 0.17724810159697973, + "99.0" : 0.17724810159697973, + "99.9" : 0.17724810159697973, + "99.99" : 0.17724810159697973, + "99.999" : 0.17724810159697973, + "99.9999" : 0.17724810159697973, + "100.0" : 0.17724810159697973 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17460966817991339, + 0.17438350551041049, + 0.17405524113203608 + ], + [ + 0.17709970664281793, + 0.17698738675822523, + 0.1767625913493831 + ], + [ + 0.17724810159697973, + 0.17724627399858206, + 0.17676613815777845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3286495142725523, + "scoreError" : 0.00669510717019289, + "scoreConfidence" : [ + 0.3219544071023594, + 0.3353446214427452 + ], + "scorePercentiles" : { + "0.0" : 0.3232384157993406, + "50.0" : 0.3294961234596376, + "90.0" : 0.3335745540545048, + "95.0" : 0.3335745540545048, + "99.0" : 0.3335745540545048, + "99.9" : 0.3335745540545048, + "99.99" : 0.3335745540545048, + "99.999" : 0.3335745540545048, + "99.9999" : 0.3335745540545048, + "100.0" : 0.3335745540545048 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3335745540545048, + 0.33236815833554906, + 0.33235919395792485 + ], + [ + 0.3243569388278032, + 0.3236054946445329, + 0.3232384157993406 + ], + [ + 0.32962189515145524, + 0.3294961234596376, + 0.3292248542222222 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1617962695319054, + "scoreError" : 0.009564736250000632, + "scoreConfidence" : [ + 0.15223153328190478, + 0.17136100578190602 + ], + "scorePercentiles" : { + "0.0" : 0.15489851643432465, + "50.0" : 0.16205769522590263, + "90.0" : 0.16841606593351072, + "95.0" : 0.16841606593351072, + "99.0" : 0.16841606593351072, + "99.9" : 0.16841606593351072, + "99.99" : 0.16841606593351072, + "99.999" : 0.16841606593351072, + "99.9999" : 0.16841606593351072, + "100.0" : 0.16841606593351072 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16201351245038478, + 0.16205769522590263, + 0.16216430718212335 + ], + [ + 0.1681184438747205, + 0.16812965105331293, + 0.16841606593351072 + ], + [ + 0.1551939337802815, + 0.1551742998525875, + 0.15489851643432465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3925601761045857, + "scoreError" : 0.002854200782560512, + "scoreConfidence" : [ + 0.3897059753220252, + 0.3954143768871462 + ], + "scorePercentiles" : { + "0.0" : 0.3902284047684083, + "50.0" : 0.3928132682457381, + "90.0" : 0.39562102373605507, + "95.0" : 0.39562102373605507, + "99.0" : 0.39562102373605507, + "99.9" : 0.39562102373605507, + "99.99" : 0.39562102373605507, + "99.999" : 0.39562102373605507, + "99.9999" : 0.39562102373605507, + "100.0" : 0.39562102373605507 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3928132682457381, + 0.3921554295517823, + 0.3917012223179664 + ], + [ + 0.39295643506621086, + 0.3903483630118272, + 0.3902284047684083 + ], + [ + 0.39562102373605507, + 0.39343656243606895, + 0.3937808758072137 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1590055963300603, + "scoreError" : 0.0038154826825017377, + "scoreConfidence" : [ + 0.15519011364755858, + 0.16282107901256204 + ], + "scorePercentiles" : { + "0.0" : 0.15701236564035734, + "50.0" : 0.15821260119923425, + "90.0" : 0.16385100081922893, + "95.0" : 0.16385100081922893, + "99.0" : 0.16385100081922893, + "99.9" : 0.16385100081922893, + "99.99" : 0.16385100081922893, + "99.999" : 0.16385100081922893, + "99.9999" : 0.16385100081922893, + "100.0" : 0.16385100081922893 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16385100081922893, + 0.16060318779108984, + 0.16053085958744684 + ], + [ + 0.1570874410706712, + 0.15701236564035734, + 0.1571129542340927 + ], + [ + 0.15852308593304165, + 0.15811687069537994, + 0.15821260119923425 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04709400613370748, + "scoreError" : 8.959832103309933E-4, + "scoreConfidence" : [ + 0.04619802292337649, + 0.047989989344038475 + ], + "scorePercentiles" : { + "0.0" : 0.046410384114873394, + "50.0" : 0.04702598648019525, + "90.0" : 0.0478789975917228, + "95.0" : 0.0478789975917228, + "99.0" : 0.0478789975917228, + "99.9" : 0.0478789975917228, + "99.99" : 0.0478789975917228, + "99.999" : 0.0478789975917228, + "99.9999" : 0.0478789975917228, + "100.0" : 0.0478789975917228 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04702598648019525, + 0.046662754487720885, + 0.046708876802354096 + ], + [ + 0.047046067618236646, + 0.04673500164037855, + 0.046410384114873394 + ], + [ + 0.0477683986367067, + 0.04760958783117903, + 0.0478789975917228 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9327352.777649432, + "scoreError" : 192657.07108017706, + "scoreConfidence" : [ + 9134695.706569256, + 9520009.848729609 + ], + "scorePercentiles" : { + "0.0" : 9175624.649541285, + "50.0" : 9338098.31372549, + "90.0" : 9463799.421948912, + "95.0" : 9463799.421948912, + "99.0" : 9463799.421948912, + "99.9" : 9463799.421948912, + "99.99" : 9463799.421948912, + "99.999" : 9463799.421948912, + "99.9999" : 9463799.421948912, + "100.0" : 9463799.421948912 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9368004.88857678, + 9338098.31372549, + 9322472.486486487 + ], + [ + 9198349.157169119, + 9175624.649541285, + 9193192.830882354 + ], + [ + 9433707.31856739, + 9463799.421948912, + 9452925.93194707 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From d763804edbd3e6834464d2dc6f90a86554cad1d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:24:50 +0000 Subject: [PATCH 265/345] Add performance results for commit c46c07a77f81d0493fc0e7c93d9de49e97118281 --- ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json diff --git a/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..fbe88ad5af --- /dev/null +++ b/performance-results/2025-03-24T00:24:36Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420038635731748, + "scoreError" : 0.03572612124681014, + "scoreConfidence" : [ + 3.3843125144849378, + 3.4557647569785583 + ], + "scorePercentiles" : { + "0.0" : 3.412757503952283, + "50.0" : 3.4206086449711632, + "90.0" : 3.4261797490323804, + "95.0" : 3.4261797490323804, + "99.0" : 3.4261797490323804, + "99.9" : 3.4261797490323804, + "99.99" : 3.4261797490323804, + "99.999" : 3.4261797490323804, + "99.9999" : 3.4261797490323804, + "100.0" : 3.4261797490323804 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.420208542034723, + 3.4261797490323804 + ], + [ + 3.412757503952283, + 3.421008747907604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7269594749383836, + "scoreError" : 0.009130618232612993, + "scoreConfidence" : [ + 1.7178288567057707, + 1.7360900931709966 + ], + "scorePercentiles" : { + "0.0" : 1.7252408089036402, + "50.0" : 1.7270218836065996, + "90.0" : 1.7285533236366952, + "95.0" : 1.7285533236366952, + "99.0" : 1.7285533236366952, + "99.9" : 1.7285533236366952, + "99.99" : 1.7285533236366952, + "99.999" : 1.7285533236366952, + "99.9999" : 1.7285533236366952, + "100.0" : 1.7285533236366952 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7265281609307856, + 1.7275156062824133 + ], + [ + 1.7252408089036402, + 1.7285533236366952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683627355847058, + "scoreError" : 0.004424765135251617, + "scoreConfidence" : [ + 0.8639379704494542, + 0.8727875007199574 + ], + "scorePercentiles" : { + "0.0" : 0.8676182677477435, + "50.0" : 0.8683318351838458, + "90.0" : 0.8691690042233875, + "95.0" : 0.8691690042233875, + "99.0" : 0.8691690042233875, + "99.9" : 0.8691690042233875, + "99.99" : 0.8691690042233875, + "99.999" : 0.8691690042233875, + "99.9999" : 0.8691690042233875, + "100.0" : 0.8691690042233875 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8680153036900241, + 0.8691690042233875 + ], + [ + 0.8676182677477435, + 0.8686483666776675 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.055543045735995, + "scoreError" : 0.2069643928273129, + "scoreConfidence" : [ + 15.848578652908682, + 16.262507438563308 + ], + "scorePercentiles" : { + "0.0" : 15.853454930952296, + "50.0" : 16.095843976286545, + "90.0" : 16.17934655862583, + "95.0" : 16.17934655862583, + "99.0" : 16.17934655862583, + "99.9" : 16.17934655862583, + "99.99" : 16.17934655862583, + "99.999" : 16.17934655862583, + "99.9999" : 16.17934655862583, + "100.0" : 16.17934655862583 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.853454930952296, + 15.919691762471901, + 15.92626644855112 + ], + [ + 16.101053864799674, + 16.16745467342604, + 16.088498782754574 + ], + [ + 16.17934655862583, + 16.095843976286545, + 16.168276413755958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2633.4585624258307, + "scoreError" : 107.03761392892255, + "scoreConfidence" : [ + 2526.4209484969083, + 2740.496176354753 + ], + "scorePercentiles" : { + "0.0" : 2549.5553016703866, + "50.0" : 2651.5276426160167, + "90.0" : 2695.661966615178, + "95.0" : 2695.661966615178, + "99.0" : 2695.661966615178, + "99.9" : 2695.661966615178, + "99.99" : 2695.661966615178, + "99.999" : 2695.661966615178, + "99.9999" : 2695.661966615178, + "100.0" : 2695.661966615178 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2552.6745350860156, + 2552.7855568633254, + 2549.5553016703866 + ], + [ + 2665.1315269714228, + 2651.5276426160167, + 2649.0604733029927 + ], + [ + 2691.478381856197, + 2693.251676850942, + 2695.661966615178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69931.37941176901, + "scoreError" : 1465.4758812930647, + "scoreConfidence" : [ + 68465.90353047595, + 71396.85529306208 + ], + "scorePercentiles" : { + "0.0" : 68845.18560964587, + "50.0" : 70023.56910032906, + "90.0" : 70921.12070454148, + "95.0" : 70921.12070454148, + "99.0" : 70921.12070454148, + "99.9" : 70921.12070454148, + "99.99" : 70921.12070454148, + "99.999" : 70921.12070454148, + "99.9999" : 70921.12070454148, + "100.0" : 70921.12070454148 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68875.69735017336, + 68845.18560964587, + 68901.2495725469 + ], + [ + 70094.01325465711, + 70012.04067921391, + 70023.56910032906 + ], + [ + 70889.52196622957, + 70921.12070454148, + 70820.0164685838 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.19467879376697, + "scoreError" : 7.823959503486677, + "scoreConfidence" : [ + 341.3707192902803, + 357.01863829725363 + ], + "scorePercentiles" : { + "0.0" : 342.85429652799536, + "50.0" : 351.3516869295316, + "90.0" : 353.85345733628844, + "95.0" : 353.85345733628844, + "99.0" : 353.85345733628844, + "99.9" : 353.85345733628844, + "99.99" : 353.85345733628844, + "99.999" : 353.85345733628844, + "99.9999" : 353.85345733628844, + "100.0" : 353.85345733628844 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.3459819255283, + 351.6033818518908, + 351.3516869295316 + ], + [ + 342.85429652799536, + 343.0360144184278, + 343.3701754846237 + ], + [ + 352.1977931513615, + 353.85345733628844, + 353.13932151825475 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.23185794008825, + "scoreError" : 2.631478358621384, + "scoreConfidence" : [ + 104.60037958146687, + 109.86333629870963 + ], + "scorePercentiles" : { + "0.0" : 105.6072203712119, + "50.0" : 107.10883582462246, + "90.0" : 109.34753566473427, + "95.0" : 109.34753566473427, + "99.0" : 109.34753566473427, + "99.9" : 109.34753566473427, + "99.99" : 109.34753566473427, + "99.999" : 109.34753566473427, + "99.9999" : 109.34753566473427, + "100.0" : 109.34753566473427 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.90448525309176, + 107.10883582462246, + 107.37865546414842 + ], + [ + 108.80366786552064, + 109.29181493925394, + 109.34753566473427 + ], + [ + 105.6072203712119, + 105.91024847813217, + 105.73425760007858 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06181778714684108, + "scoreError" : 8.67739054633523E-4, + "scoreConfidence" : [ + 0.060950048092207554, + 0.0626855262014746 + ], + "scorePercentiles" : { + "0.0" : 0.061366941830923685, + "50.0" : 0.06172266934334052, + "90.0" : 0.06312104011285884, + "95.0" : 0.06312104011285884, + "99.0" : 0.06312104011285884, + "99.9" : 0.06312104011285884, + "99.99" : 0.06312104011285884, + "99.999" : 0.06312104011285884, + "99.9999" : 0.06312104011285884, + "100.0" : 0.06312104011285884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06195911648151475, + 0.06172355798537173, + 0.06173098702437097 + ], + [ + 0.06153243771151503, + 0.06167637224233528, + 0.06172266934334052 + ], + [ + 0.06312104011285884, + 0.06152696158933878, + 0.061366941830923685 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6857029118731886E-4, + "scoreError" : 1.5216564218543925E-5, + "scoreConfidence" : [ + 3.5335372696877494E-4, + 3.837868554058628E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5672240780497004E-4, + "50.0" : 3.6874689627437875E-4, + "90.0" : 3.791402232827823E-4, + "95.0" : 3.791402232827823E-4, + "99.0" : 3.791402232827823E-4, + "99.9" : 3.791402232827823E-4, + "99.99" : 3.791402232827823E-4, + "99.999" : 3.791402232827823E-4, + "99.9999" : 3.791402232827823E-4, + "100.0" : 3.791402232827823E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.686687545112998E-4, + 3.6874689627437875E-4, + 3.6928144258397934E-4 + ], + [ + 3.5672240780497004E-4, + 3.591926452381613E-4, + 3.580368797876607E-4 + ], + [ + 3.782523123139139E-4, + 3.790910588887234E-4, + 3.791402232827823E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014149934787332199, + "scoreError" : 1.5484970065954965E-4, + "scoreConfidence" : [ + 0.013995085086672649, + 0.014304784487991749 + ], + "scorePercentiles" : { + "0.0" : 0.014058790354938164, + "50.0" : 0.014136459809273935, + "90.0" : 0.014363401301596329, + "95.0" : 0.014363401301596329, + "99.0" : 0.014363401301596329, + "99.9" : 0.014363401301596329, + "99.99" : 0.014363401301596329, + "99.999" : 0.014363401301596329, + "99.9999" : 0.014363401301596329, + "100.0" : 0.014363401301596329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014151441471108086, + 0.014164649357216513, + 0.014363401301596329 + ], + [ + 0.014128270719925855, + 0.014136459809273935, + 0.014193550559501302 + ], + [ + 0.014060995313528198, + 0.014091854198901412, + 0.014058790354938164 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9848796345153955, + "scoreError" : 0.026365331267761083, + "scoreConfidence" : [ + 0.9585143032476344, + 1.0112449657831566 + ], + "scorePercentiles" : { + "0.0" : 0.9705371368400622, + "50.0" : 0.977281722759699, + "90.0" : 1.0084672936371886, + "95.0" : 1.0084672936371886, + "99.0" : 1.0084672936371886, + "99.9" : 1.0084672936371886, + "99.99" : 1.0084672936371886, + "99.999" : 1.0084672936371886, + "99.9999" : 1.0084672936371886, + "100.0" : 1.0084672936371886 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9727504306001362, + 0.972441956437184, + 0.9705371368400622 + ], + [ + 0.9843706345112708, + 0.971754894859586, + 0.977281722759699 + ], + [ + 1.0012740556668, + 1.0050385853266333, + 1.0084672936371886 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01303848291506131, + "scoreError" : 7.648798660533651E-4, + "scoreConfidence" : [ + 0.012273603049007945, + 0.013803362781114676 + ], + "scorePercentiles" : { + "0.0" : 0.012721311135196195, + "50.0" : 0.01305365903752266, + "90.0" : 0.013294264663889117, + "95.0" : 0.013294264663889117, + "99.0" : 0.013294264663889117, + "99.9" : 0.013294264663889117, + "99.99" : 0.013294264663889117, + "99.999" : 0.013294264663889117, + "99.9999" : 0.013294264663889117, + "100.0" : 0.013294264663889117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012721311135196195, + 0.012828935289786096, + 0.012825929841347202 + ], + [ + 0.013278382785259227, + 0.013294264663889117, + 0.013282073774890027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6859162919508712, + "scoreError" : 0.08130077546456034, + "scoreConfidence" : [ + 3.604615516486311, + 3.7672170674154315 + ], + "scorePercentiles" : { + "0.0" : 3.6448528950437318, + "50.0" : 3.680905968346083, + "90.0" : 3.722713207589286, + "95.0" : 3.722713207589286, + "99.0" : 3.722713207589286, + "99.9" : 3.722713207589286, + "99.99" : 3.722713207589286, + "99.999" : 3.722713207589286, + "99.9999" : 3.722713207589286, + "100.0" : 3.722713207589286 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6448528950437318, + 3.6821769646539027, + 3.6796349720382633 + ], + [ + 3.670619360968452, + 3.71550035141159, + 3.722713207589286 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9123843056312286, + "scoreError" : 0.040828029372389635, + "scoreConfidence" : [ + 2.871556276258839, + 2.9532123350036183 + ], + "scorePercentiles" : { + "0.0" : 2.883016596137215, + "50.0" : 2.9039433644018584, + "90.0" : 2.9513215104750663, + "95.0" : 2.9513215104750663, + "99.0" : 2.9513215104750663, + "99.9" : 2.9513215104750663, + "99.99" : 2.9513215104750663, + "99.999" : 2.9513215104750663, + "99.9999" : 2.9513215104750663, + "100.0" : 2.9513215104750663 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9101809997090484, + 2.9016431763852624, + 2.883016596137215 + ], + [ + 2.949388729283397, + 2.9513215104750663, + 2.923200353405437 + ], + [ + 2.891391844174617, + 2.9039433644018584, + 2.8973721767091543 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17631540626328382, + "scoreError" : 0.005322650101665493, + "scoreConfidence" : [ + 0.17099275616161833, + 0.1816380563649493 + ], + "scorePercentiles" : { + "0.0" : 0.17230167962921483, + "50.0" : 0.17607343552362842, + "90.0" : 0.18029872303254305, + "95.0" : 0.18029872303254305, + "99.0" : 0.18029872303254305, + "99.9" : 0.18029872303254305, + "99.99" : 0.18029872303254305, + "99.999" : 0.18029872303254305, + "99.9999" : 0.18029872303254305, + "100.0" : 0.18029872303254305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17323904012126462, + 0.17264319178578827, + 0.17230167962921483 + ], + [ + 0.18029872303254305, + 0.1797842819646196, + 0.17992781205131433 + ], + [ + 0.17659479259376987, + 0.17607343552362842, + 0.1759756996674116 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3374518829803303, + "scoreError" : 0.009005641323680674, + "scoreConfidence" : [ + 0.3284462416566496, + 0.346457524304011 + ], + "scorePercentiles" : { + "0.0" : 0.33093121890201527, + "50.0" : 0.3372985680652995, + "90.0" : 0.34342195291895605, + "95.0" : 0.34342195291895605, + "99.0" : 0.34342195291895605, + "99.9" : 0.34342195291895605, + "99.99" : 0.34342195291895605, + "99.999" : 0.34342195291895605, + "99.9999" : 0.34342195291895605, + "100.0" : 0.34342195291895605 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3393818560374669, + 0.3372985680652995, + 0.33715946481912273 + ], + [ + 0.3309354022767887, + 0.331359524055666, + 0.33093121890201527 + ], + [ + 0.34341128602335164, + 0.34316767372430595, + 0.34342195291895605 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16313051381345262, + "scoreError" : 0.010396355099357468, + "scoreConfidence" : [ + 0.15273415871409515, + 0.17352686891281008 + ], + "scorePercentiles" : { + "0.0" : 0.15699070771911647, + "50.0" : 0.1611923607730621, + "90.0" : 0.1712437169081133, + "95.0" : 0.1712437169081133, + "99.0" : 0.1712437169081133, + "99.9" : 0.1712437169081133, + "99.99" : 0.1712437169081133, + "99.999" : 0.1712437169081133, + "99.9999" : 0.1712437169081133, + "100.0" : 0.1712437169081133 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15752309528385106, + 0.15699070771911647, + 0.15700094895988695 + ], + [ + 0.1712437169081133, + 0.17107739566154584, + 0.17081330198992228 + ], + [ + 0.16126023378968926, + 0.1610728632358863, + 0.1611923607730621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38568584578686127, + "scoreError" : 0.008013563016641172, + "scoreConfidence" : [ + 0.3776722827702201, + 0.39369940880350246 + ], + "scorePercentiles" : { + "0.0" : 0.38021937287555607, + "50.0" : 0.3842808693463475, + "90.0" : 0.39188927098518694, + "95.0" : 0.39188927098518694, + "99.0" : 0.39188927098518694, + "99.9" : 0.39188927098518694, + "99.99" : 0.39188927098518694, + "99.999" : 0.39188927098518694, + "99.9999" : 0.39188927098518694, + "100.0" : 0.39188927098518694 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3802239573020037, + 0.38021937287555607, + 0.38083733512319584 + ], + [ + 0.3888499179951785, + 0.39188927098518694, + 0.38913277193665124 + ], + [ + 0.3915314130060293, + 0.3842808693463475, + 0.3842077035116029 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15686664020284957, + "scoreError" : 0.004103900306174808, + "scoreConfidence" : [ + 0.15276273989667477, + 0.16097054050902437 + ], + "scorePercentiles" : { + "0.0" : 0.15334087613469088, + "50.0" : 0.15778918079113874, + "90.0" : 0.15933047987699955, + "95.0" : 0.15933047987699955, + "99.0" : 0.15933047987699955, + "99.9" : 0.15933047987699955, + "99.99" : 0.15933047987699955, + "99.999" : 0.15933047987699955, + "99.9999" : 0.15933047987699955, + "100.0" : 0.15933047987699955 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15933047987699955, + 0.1585143294973608, + 0.15778918079113874 + ], + [ + 0.15860314175601092, + 0.15883556409726965, + 0.15759307658850227 + ], + [ + 0.15443659665189258, + 0.15334087613469088, + 0.1533565164317809 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04798045376241683, + "scoreError" : 0.0016470127208893697, + "scoreConfidence" : [ + 0.04633344104152746, + 0.0496274664833062 + ], + "scorePercentiles" : { + "0.0" : 0.04644588398890886, + "50.0" : 0.048023235478015326, + "90.0" : 0.04916658521188045, + "95.0" : 0.04916658521188045, + "99.0" : 0.04916658521188045, + "99.9" : 0.04916658521188045, + "99.99" : 0.04916658521188045, + "99.999" : 0.04916658521188045, + "99.9999" : 0.04916658521188045, + "100.0" : 0.04916658521188045 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04727092483538093, + 0.04644588398890886, + 0.046728657712005385 + ], + [ + 0.04916658521188045, + 0.048825053589563315, + 0.04881958612861809 + ], + [ + 0.04790924984789035, + 0.048023235478015326, + 0.04863490706948875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9397966.469331594, + "scoreError" : 400921.4801179857, + "scoreConfidence" : [ + 8997044.989213608, + 9798887.94944958 + ], + "scorePercentiles" : { + "0.0" : 9164177.787545787, + "50.0" : 9301691.79739777, + "90.0" : 9721944.350826045, + "95.0" : 9721944.350826045, + "99.0" : 9721944.350826045, + "99.9" : 9721944.350826045, + "99.99" : 9721944.350826045, + "99.999" : 9721944.350826045, + "99.9999" : 9721944.350826045, + "100.0" : 9721944.350826045 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9301769.69888476, + 9301691.79739777, + 9293745.372330548 + ], + [ + 9216755.062615102, + 9177969.882568806, + 9164177.787545787 + ], + [ + 9686416.676669894, + 9721944.350826045, + 9717227.595145632 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From fc0f59cdbb8a7594a75243fcc49c678d58a26441 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:25:28 +0000 Subject: [PATCH 266/345] Add performance results for commit c46c07a77f81d0493fc0e7c93d9de49e97118281 --- ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json diff --git a/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..9ec78ec79a --- /dev/null +++ b/performance-results/2025-03-24T00:25:13Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.427192512014576, + "scoreError" : 0.012873173657204301, + "scoreConfidence" : [ + 3.414319338357372, + 3.44006568567178 + ], + "scorePercentiles" : { + "0.0" : 3.4251916231698507, + "50.0" : 3.427044764180539, + "90.0" : 3.4294888965273755, + "95.0" : 3.4294888965273755, + "99.0" : 3.4294888965273755, + "99.9" : 3.4294888965273755, + "99.99" : 3.4294888965273755, + "99.999" : 3.4294888965273755, + "99.9999" : 3.4294888965273755, + "100.0" : 3.4294888965273755 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4251916231698507, + 3.4294888965273755 + ], + [ + 3.4259078290300446, + 3.4281816993310326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.729194618855824, + "scoreError" : 0.008041480454113865, + "scoreConfidence" : [ + 1.7211531384017102, + 1.7372360993099378 + ], + "scorePercentiles" : { + "0.0" : 1.728180199312595, + "50.0" : 1.7288913442207987, + "90.0" : 1.730815587669104, + "95.0" : 1.730815587669104, + "99.0" : 1.730815587669104, + "99.9" : 1.730815587669104, + "99.99" : 1.730815587669104, + "99.999" : 1.730815587669104, + "99.9999" : 1.730815587669104, + "100.0" : 1.730815587669104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282568108323697, + 1.7295258776092277 + ], + [ + 1.728180199312595, + 1.730815587669104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8689448347025848, + "scoreError" : 0.005903307335313809, + "scoreConfidence" : [ + 0.8630415273672709, + 0.8748481420378986 + ], + "scorePercentiles" : { + "0.0" : 0.8676539255997362, + "50.0" : 0.8691740741199422, + "90.0" : 0.8697772649707182, + "95.0" : 0.8697772649707182, + "99.0" : 0.8697772649707182, + "99.9" : 0.8697772649707182, + "99.99" : 0.8697772649707182, + "99.999" : 0.8697772649707182, + "99.9999" : 0.8697772649707182, + "100.0" : 0.8697772649707182 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8676539255997362, + 0.8690340804702854 + ], + [ + 0.869314067769599, + 0.8697772649707182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.167508035118427, + "scoreError" : 0.25972430198208885, + "scoreConfidence" : [ + 15.907783733136338, + 16.427232337100516 + ], + "scorePercentiles" : { + "0.0" : 15.92809758573588, + "50.0" : 16.183659072249025, + "90.0" : 16.343217981430513, + "95.0" : 16.343217981430513, + "99.0" : 16.343217981430513, + "99.9" : 16.343217981430513, + "99.99" : 16.343217981430513, + "99.999" : 16.343217981430513, + "99.9999" : 16.343217981430513, + "100.0" : 16.343217981430513 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.197843725815492, + 16.17705961536494, + 16.183659072249025 + ], + [ + 16.310391435762632, + 16.343217981430513, + 16.34076437108 + ], + [ + 15.92809758573588, + 15.970675179208435, + 16.05586334941892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2687.1436345801776, + "scoreError" : 18.904649497499815, + "scoreConfidence" : [ + 2668.2389850826776, + 2706.0482840776776 + ], + "scorePercentiles" : { + "0.0" : 2670.3886255919297, + "50.0" : 2684.9111243097527, + "90.0" : 2703.5474294577257, + "95.0" : 2703.5474294577257, + "99.0" : 2703.5474294577257, + "99.9" : 2703.5474294577257, + "99.99" : 2703.5474294577257, + "99.999" : 2703.5474294577257, + "99.9999" : 2703.5474294577257, + "100.0" : 2703.5474294577257 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2703.5474294577257, + 2700.7496243988994, + 2697.685683724869 + ], + [ + 2687.329405036839, + 2684.9111243097527, + 2681.400528174645 + ], + [ + 2679.5193054018728, + 2670.3886255919297, + 2678.7609851250654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69734.09464764553, + "scoreError" : 1969.4613868559036, + "scoreConfidence" : [ + 67764.63326078962, + 71703.55603450144 + ], + "scorePercentiles" : { + "0.0" : 68737.04196237889, + "50.0" : 69100.07053657329, + "90.0" : 71311.58539349773, + "95.0" : 71311.58539349773, + "99.0" : 71311.58539349773, + "99.9" : 71311.58539349773, + "99.99" : 71311.58539349773, + "99.999" : 71311.58539349773, + "99.9999" : 71311.58539349773, + "100.0" : 71311.58539349773 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71238.58894866482, + 71309.06321666678, + 71311.58539349773 + ], + [ + 68737.04196237889, + 68887.45002530912, + 68811.03706522842 + ], + [ + 69073.30047654698, + 69138.71420394372, + 69100.07053657329 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.50220235933625, + "scoreError" : 7.756306318471352, + "scoreConfidence" : [ + 343.7458960408649, + 359.2585086778076 + ], + "scorePercentiles" : { + "0.0" : 345.4808066065005, + "50.0" : 351.31352568630047, + "90.0" : 356.91040681496656, + "95.0" : 356.91040681496656, + "99.0" : 356.91040681496656, + "99.9" : 356.91040681496656, + "99.99" : 356.91040681496656, + "99.999" : 356.91040681496656, + "99.9999" : 356.91040681496656, + "100.0" : 356.91040681496656 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.91040681496656, + 356.88629417444713, + 356.5931456022146 + ], + [ + 345.4808066065005, + 346.0590898633618, + 347.0960040572533 + ], + [ + 352.2717640794763, + 351.31352568630047, + 350.90878434950565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.89426072041461, + "scoreError" : 3.212501268374495, + "scoreConfidence" : [ + 103.68175945204011, + 110.1067619887891 + ], + "scorePercentiles" : { + "0.0" : 104.89864582142164, + "50.0" : 106.2840255003389, + "90.0" : 109.5152093057473, + "95.0" : 109.5152093057473, + "99.0" : 109.5152093057473, + "99.9" : 109.5152093057473, + "99.99" : 109.5152093057473, + "99.999" : 109.5152093057473, + "99.9999" : 109.5152093057473, + "100.0" : 109.5152093057473 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 104.89864582142164, + 105.31981365401647, + 105.27531851739955 + ], + [ + 109.19609289827845, + 109.5152093057473, + 109.37650741372804 + ], + [ + 105.80530145136055, + 106.2840255003389, + 106.37743192144043 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06176367037071446, + "scoreError" : 0.0012202223664750805, + "scoreConfidence" : [ + 0.06054344800423938, + 0.06298389273718955 + ], + "scorePercentiles" : { + "0.0" : 0.0613146869738496, + "50.0" : 0.0613733022891862, + "90.0" : 0.06359179673142348, + "95.0" : 0.06359179673142348, + "99.0" : 0.06359179673142348, + "99.9" : 0.06359179673142348, + "99.99" : 0.06359179673142348, + "99.999" : 0.06359179673142348, + "99.9999" : 0.06359179673142348, + "100.0" : 0.06359179673142348 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06137311087516877, + 0.0613733022891862, + 0.06134540644975278 + ], + [ + 0.06186620599352887, + 0.061843810723562154, + 0.061818986511297254 + ], + [ + 0.06359179673142348, + 0.06134572678866103, + 0.0613146869738496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6557456403008633E-4, + "scoreError" : 1.4201606647306137E-5, + "scoreConfidence" : [ + 3.513729573827802E-4, + 3.797761706773925E-4 + ], + "scorePercentiles" : { + "0.0" : 3.552793083481791E-4, + "50.0" : 3.657273559060746E-4, + "90.0" : 3.7604188406507215E-4, + "95.0" : 3.7604188406507215E-4, + "99.0" : 3.7604188406507215E-4, + "99.9" : 3.7604188406507215E-4, + "99.99" : 3.7604188406507215E-4, + "99.999" : 3.7604188406507215E-4, + "99.9999" : 3.7604188406507215E-4, + "100.0" : 3.7604188406507215E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.655510130763393E-4, + 3.665766364791667E-4, + 3.657273559060746E-4 + ], + [ + 3.747549098404646E-4, + 3.7456665019215994E-4, + 3.7604188406507215E-4 + ], + [ + 3.5582687465080437E-4, + 3.558464437125165E-4, + 3.552793083481791E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01478077065447956, + "scoreError" : 4.596114266672553E-4, + "scoreConfidence" : [ + 0.014321159227812304, + 0.015240382081146815 + ], + "scorePercentiles" : { + "0.0" : 0.014584980540950492, + "50.0" : 0.014609507818172522, + "90.0" : 0.015151146695958486, + "95.0" : 0.015151146695958486, + "99.0" : 0.015151146695958486, + "99.9" : 0.015151146695958486, + "99.99" : 0.015151146695958486, + "99.999" : 0.015151146695958486, + "99.9999" : 0.015151146695958486, + "100.0" : 0.015151146695958486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.015151146695958486, + 0.015140491343534866, + 0.015144086810876953 + ], + [ + 0.014609507818172522, + 0.014589845803357664, + 0.014596098798462171 + ], + [ + 0.014597137646444033, + 0.01461364043255882, + 0.014584980540950492 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9851262027850285, + "scoreError" : 0.022089658643544983, + "scoreConfidence" : [ + 0.9630365441414835, + 1.0072158614285736 + ], + "scorePercentiles" : { + "0.0" : 0.9747190762183235, + "50.0" : 0.9791730844022325, + "90.0" : 1.01408276617319, + "95.0" : 1.01408276617319, + "99.0" : 1.01408276617319, + "99.9" : 1.01408276617319, + "99.99" : 1.01408276617319, + "99.999" : 1.01408276617319, + "99.9999" : 1.01408276617319, + "100.0" : 1.01408276617319 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9758338460187354, + 0.9761059209370425, + 0.9747190762183235 + ], + [ + 0.9823366401768173, + 0.9763997227104081, + 0.9791730844022325 + ], + [ + 0.9938331164662626, + 1.01408276617319, + 0.9936516519622454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012908189953084093, + "scoreError" : 5.544120422241866E-4, + "scoreConfidence" : [ + 0.012353777910859906, + 0.01346260199530828 + ], + "scorePercentiles" : { + "0.0" : 0.012679037873927696, + "50.0" : 0.012885974801918061, + "90.0" : 0.013127490649506812, + "95.0" : 0.013127490649506812, + "99.0" : 0.013127490649506812, + "99.9" : 0.013127490649506812, + "99.99" : 0.013127490649506812, + "99.999" : 0.013127490649506812, + "99.9999" : 0.013127490649506812, + "100.0" : 0.013127490649506812 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012679037873927696, + 0.012766024883001891, + 0.012756999800995532 + ], + [ + 0.013005924720834233, + 0.013127490649506812, + 0.013113661790238401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6561826880524, + "scoreError" : 0.06436677310614175, + "scoreConfidence" : [ + 3.5918159149462583, + 3.720549461158542 + ], + "scorePercentiles" : { + "0.0" : 3.6185629515195368, + "50.0" : 3.6526129974433896, + "90.0" : 3.682027943298969, + "95.0" : 3.682027943298969, + "99.0" : 3.682027943298969, + "99.9" : 3.682027943298969, + "99.99" : 3.682027943298969, + "99.999" : 3.682027943298969, + "99.9999" : 3.682027943298969, + "100.0" : 3.682027943298969 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6526484506939374, + 3.682027943298969, + 3.678807961764706 + ], + [ + 3.6185629515195368, + 3.652471276844412, + 3.6525775441928414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8098269224905965, + "scoreError" : 0.0682573600462391, + "scoreConfidence" : [ + 2.7415695624443575, + 2.8780842825368356 + ], + "scorePercentiles" : { + "0.0" : 2.756005176357123, + "50.0" : 2.8269731232334654, + "90.0" : 2.852774981745579, + "95.0" : 2.852774981745579, + "99.0" : 2.852774981745579, + "99.9" : 2.852774981745579, + "99.99" : 2.852774981745579, + "99.999" : 2.852774981745579, + "99.9999" : 2.852774981745579, + "100.0" : 2.852774981745579 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.852774981745579, + 2.8471311010532308, + 2.841508862215909 + ], + [ + 2.760114301048565, + 2.756005176357123, + 2.756156037475889 + ], + [ + 2.8206438959390865, + 2.8271348233465234, + 2.8269731232334654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.182257758641677, + "scoreError" : 0.009369711322852617, + "scoreConfidence" : [ + 0.1728880473188244, + 0.19162746996452962 + ], + "scorePercentiles" : { + "0.0" : 0.17512085773574992, + "50.0" : 0.18244345578603616, + "90.0" : 0.18892104490582434, + "95.0" : 0.18892104490582434, + "99.0" : 0.18892104490582434, + "99.9" : 0.18892104490582434, + "99.99" : 0.18892104490582434, + "99.999" : 0.18892104490582434, + "99.9999" : 0.18892104490582434, + "100.0" : 0.18892104490582434 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18892104490582434, + 0.18846615911875012, + 0.18838380496948234 + ], + [ + 0.17668158256183747, + 0.17546814056358787, + 0.17512085773574992 + ], + [ + 0.18229967321715035, + 0.18253510891667427, + 0.18244345578603616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33033853868194574, + "scoreError" : 0.010265857312702213, + "scoreConfidence" : [ + 0.32007268136924355, + 0.3406043959946479 + ], + "scorePercentiles" : { + "0.0" : 0.32237836437782075, + "50.0" : 0.3325730915893445, + "90.0" : 0.3368782656560552, + "95.0" : 0.3368782656560552, + "99.0" : 0.3368782656560552, + "99.9" : 0.3368782656560552, + "99.99" : 0.3368782656560552, + "99.999" : 0.3368782656560552, + "99.9999" : 0.3368782656560552, + "100.0" : 0.3368782656560552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3368782656560552, + 0.3358404426906673, + 0.33497170506464796 + ], + [ + 0.33304267895560663, + 0.3325730915893445, + 0.3324330246659132 + ], + [ + 0.322414881290905, + 0.32237836437782075, + 0.3225143938465508 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16090177068882616, + "scoreError" : 0.005913352137785627, + "scoreConfidence" : [ + 0.15498841855104054, + 0.1668151228266118 + ], + "scorePercentiles" : { + "0.0" : 0.15638643631245602, + "50.0" : 0.16139914766216368, + "90.0" : 0.1650659744317713, + "95.0" : 0.1650659744317713, + "99.0" : 0.1650659744317713, + "99.9" : 0.1650659744317713, + "99.99" : 0.1650659744317713, + "99.999" : 0.1650659744317713, + "99.9999" : 0.1650659744317713, + "100.0" : 0.1650659744317713 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1650659744317713, + 0.16443675696785331, + 0.1646148937431069 + ], + [ + 0.1609050628801287, + 0.16174211627417998, + 0.16139914766216368 + ], + [ + 0.15649513283047214, + 0.15707041509730316, + 0.15638643631245602 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39215436517063057, + "scoreError" : 0.00894198906358332, + "scoreConfidence" : [ + 0.3832123761070472, + 0.4010963542342139 + ], + "scorePercentiles" : { + "0.0" : 0.3839347225016317, + "50.0" : 0.3935621432900433, + "90.0" : 0.39837528426881247, + "95.0" : 0.39837528426881247, + "99.0" : 0.39837528426881247, + "99.9" : 0.39837528426881247, + "99.99" : 0.39837528426881247, + "99.999" : 0.39837528426881247, + "99.9999" : 0.39837528426881247, + "100.0" : 0.39837528426881247 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39837528426881247, + 0.3951016906483347, + 0.3937299167683767 + ], + [ + 0.38905089678649235, + 0.3843139198339802, + 0.3839347225016317 + ], + [ + 0.3980502241372448, + 0.3935621432900433, + 0.393270488300759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15446192003082043, + "scoreError" : 0.001081224597951432, + "scoreConfidence" : [ + 0.153380695432869, + 0.15554314462877186 + ], + "scorePercentiles" : { + "0.0" : 0.15360487676451162, + "50.0" : 0.15451793318809004, + "90.0" : 0.15524694288597377, + "95.0" : 0.15524694288597377, + "99.0" : 0.15524694288597377, + "99.9" : 0.15524694288597377, + "99.99" : 0.15524694288597377, + "99.999" : 0.15524694288597377, + "99.9999" : 0.15524694288597377, + "100.0" : 0.15524694288597377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15498702888892332, + 0.15524694288597377, + 0.1549091697467276 + ], + [ + 0.15451793318809004, + 0.15411996120888943, + 0.15380470221012318 + ], + [ + 0.15516613101832458, + 0.15380053436582028, + 0.15360487676451162 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04748573782000606, + "scoreError" : 0.0012040196670550232, + "scoreConfidence" : [ + 0.04628171815295104, + 0.048689757487061086 + ], + "scorePercentiles" : { + "0.0" : 0.046663098938428876, + "50.0" : 0.04712490444145991, + "90.0" : 0.048372361226128514, + "95.0" : 0.048372361226128514, + "99.0" : 0.048372361226128514, + "99.9" : 0.048372361226128514, + "99.99" : 0.048372361226128514, + "99.999" : 0.048372361226128514, + "99.9999" : 0.048372361226128514, + "100.0" : 0.048372361226128514 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04778590171548717, + 0.04712490444145991, + 0.046904938836772984 + ], + [ + 0.04829784319805265, + 0.04837072604720905, + 0.048372361226128514 + ], + [ + 0.04701799494562432, + 0.04683387103089114, + 0.046663098938428876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9317618.65213532, + "scoreError" : 293418.301524301, + "scoreConfidence" : [ + 9024200.35061102, + 9611036.95365962 + ], + "scorePercentiles" : { + "0.0" : 9093342.035454545, + "50.0" : 9337089.965485075, + "90.0" : 9534807.62726406, + "95.0" : 9534807.62726406, + "99.0" : 9534807.62726406, + "99.9" : 9534807.62726406, + "99.99" : 9534807.62726406, + "99.999" : 9534807.62726406, + "99.9999" : 9534807.62726406, + "100.0" : 9534807.62726406 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9301863.918215614, + 9338010.549953315, + 9337089.965485075 + ], + [ + 9534807.62726406, + 9507893.685361216, + 9498141.189933524 + ], + [ + 9150132.32936871, + 9097286.568181818, + 9093342.035454545 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 410f5f1cb4fa19b841a93e65bf232a25a9f543dc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:25:43 +0000 Subject: [PATCH 267/345] Add performance results for commit c46c07a77f81d0493fc0e7c93d9de49e97118281 --- ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json diff --git a/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..e7a92860fd --- /dev/null +++ b/performance-results/2025-03-24T00:25:27Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421246302583824, + "scoreError" : 0.025733017281439678, + "scoreConfidence" : [ + 3.395513285302384, + 3.4469793198652634 + ], + "scorePercentiles" : { + "0.0" : 3.417136102719499, + "50.0" : 3.4205731276212257, + "90.0" : 3.4267028523733463, + "95.0" : 3.4267028523733463, + "99.0" : 3.4267028523733463, + "99.9" : 3.4267028523733463, + "99.99" : 3.4267028523733463, + "99.999" : 3.4267028523733463, + "99.9999" : 3.4267028523733463, + "100.0" : 3.4267028523733463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.417136102719499, + 3.4205781955314856 + ], + [ + 3.4205680597109653, + 3.4267028523733463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7273766517476457, + "scoreError" : 0.01233951072091223, + "scoreConfidence" : [ + 1.7150371410267333, + 1.739716162468558 + ], + "scorePercentiles" : { + "0.0" : 1.7248858281468324, + "50.0" : 1.7275784917996955, + "90.0" : 1.7294637952443586, + "95.0" : 1.7294637952443586, + "99.0" : 1.7294637952443586, + "99.9" : 1.7294637952443586, + "99.99" : 1.7294637952443586, + "99.999" : 1.7294637952443586, + "99.9999" : 1.7294637952443586, + "100.0" : 1.7294637952443586 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7271929218788888, + 1.7294637952443586 + ], + [ + 1.7248858281468324, + 1.727964061720502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683348226608707, + "scoreError" : 0.0037602099325063747, + "scoreConfidence" : [ + 0.8645746127283643, + 0.8720950325933771 + ], + "scorePercentiles" : { + "0.0" : 0.8678619660868055, + "50.0" : 0.8681469488116227, + "90.0" : 0.8691834269334319, + "95.0" : 0.8691834269334319, + "99.0" : 0.8691834269334319, + "99.9" : 0.8691834269334319, + "99.99" : 0.8691834269334319, + "99.999" : 0.8691834269334319, + "99.9999" : 0.8691834269334319, + "100.0" : 0.8691834269334319 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8678619660868055, + 0.8691834269334319 + ], + [ + 0.8681742930439199, + 0.8681196045793255 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.341865851698003, + "scoreError" : 0.10566306717401301, + "scoreConfidence" : [ + 16.23620278452399, + 16.447528918872017 + ], + "scorePercentiles" : { + "0.0" : 16.22303246272705, + "50.0" : 16.362295927808958, + "90.0" : 16.435421636550824, + "95.0" : 16.435421636550824, + "99.0" : 16.435421636550824, + "99.9" : 16.435421636550824, + "99.99" : 16.435421636550824, + "99.999" : 16.435421636550824, + "99.9999" : 16.435421636550824, + "100.0" : 16.435421636550824 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.35107234728992, + 16.362295927808958, + 16.435421636550824 + ], + [ + 16.378925272900975, + 16.374444545565535, + 16.367253221102832 + ], + [ + 16.281324433699563, + 16.22303246272705, + 16.303022817636357 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2723.7793282226216, + "scoreError" : 34.82246156603348, + "scoreConfidence" : [ + 2688.9568666565883, + 2758.601789788655 + ], + "scorePercentiles" : { + "0.0" : 2702.465007990573, + "50.0" : 2718.2824063648923, + "90.0" : 2752.109075671271, + "95.0" : 2752.109075671271, + "99.0" : 2752.109075671271, + "99.9" : 2752.109075671271, + "99.99" : 2752.109075671271, + "99.999" : 2752.109075671271, + "99.9999" : 2752.109075671271, + "100.0" : 2752.109075671271 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2751.25254211314, + 2745.482247982233, + 2752.109075671271 + ], + [ + 2703.1017470328934, + 2702.5273149643604, + 2702.465007990573 + ], + [ + 2718.2824063648923, + 2720.945553216911, + 2717.8480586673195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69969.63461352007, + "scoreError" : 1134.2174371916856, + "scoreConfidence" : [ + 68835.41717632838, + 71103.85205071176 + ], + "scorePercentiles" : { + "0.0" : 69043.0075343839, + "50.0" : 70280.94069877287, + "90.0" : 70603.5514723977, + "95.0" : 70603.5514723977, + "99.0" : 70603.5514723977, + "99.9" : 70603.5514723977, + "99.99" : 70603.5514723977, + "99.999" : 70603.5514723977, + "99.9999" : 70603.5514723977, + "100.0" : 70603.5514723977 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70332.83724038013, + 70280.94069877287, + 70280.81855460658 + ], + [ + 70505.14309459185, + 70478.95648670508, + 70603.5514723977 + ], + [ + 69133.77056067433, + 69043.0075343839, + 69067.68587916823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 349.43725104505324, + "scoreError" : 4.453722696756971, + "scoreConfidence" : [ + 344.98352834829626, + 353.8909737418102 + ], + "scorePercentiles" : { + "0.0" : 345.9068962532555, + "50.0" : 350.13288831364576, + "90.0" : 352.6286330072688, + "95.0" : 352.6286330072688, + "99.0" : 352.6286330072688, + "99.9" : 352.6286330072688, + "99.99" : 352.6286330072688, + "99.999" : 352.6286330072688, + "99.9999" : 352.6286330072688, + "100.0" : 352.6286330072688 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.2672803390126, + 346.2982345844763, + 345.9068962532555 + ], + [ + 350.13288831364576, + 350.55161549887754, + 349.3974695571367 + ], + [ + 351.77503927442575, + 351.97720257737996, + 352.6286330072688 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.03740194054079, + "scoreError" : 4.341780378218412, + "scoreConfidence" : [ + 101.69562156232237, + 110.3791823187592 + ], + "scorePercentiles" : { + "0.0" : 102.61722251422017, + "50.0" : 106.99671128488392, + "90.0" : 108.66695605213567, + "95.0" : 108.66695605213567, + "99.0" : 108.66695605213567, + "99.9" : 108.66695605213567, + "99.99" : 108.66695605213567, + "99.999" : 108.66695605213567, + "99.9999" : 108.66695605213567, + "100.0" : 108.66695605213567 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.2477674737249, + 106.99671128488392, + 106.51128399292004 + ], + [ + 102.61722251422017, + 102.78829964896627, + 102.76383751861742 + ], + [ + 108.31343183269428, + 108.66695605213567, + 108.4311071467046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06114094780691651, + "scoreError" : 6.931905613668829E-4, + "scoreConfidence" : [ + 0.06044775724554963, + 0.06183413836828339 + ], + "scorePercentiles" : { + "0.0" : 0.06052651748890866, + "50.0" : 0.06120342482496083, + "90.0" : 0.06171405804122439, + "95.0" : 0.06171405804122439, + "99.0" : 0.06171405804122439, + "99.9" : 0.06171405804122439, + "99.99" : 0.06171405804122439, + "99.999" : 0.06171405804122439, + "99.9999" : 0.06171405804122439, + "100.0" : 0.06171405804122439 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.060785686946479046, + 0.06061288448576832, + 0.06052651748890866 + ], + [ + 0.06120342482496083, + 0.06117210848687269, + 0.06171405804122439 + ], + [ + 0.06145645012567678, + 0.061479210661568064, + 0.06131818920078977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.558887426986108E-4, + "scoreError" : 1.1643968365827848E-5, + "scoreConfidence" : [ + 3.4424477433278296E-4, + 3.675327110644386E-4 + ], + "scorePercentiles" : { + "0.0" : 3.4989609340297815E-4, + "50.0" : 3.527937491614633E-4, + "90.0" : 3.652218515584872E-4, + "95.0" : 3.652218515584872E-4, + "99.0" : 3.652218515584872E-4, + "99.9" : 3.652218515584872E-4, + "99.99" : 3.652218515584872E-4, + "99.999" : 3.652218515584872E-4, + "99.9999" : 3.652218515584872E-4, + "100.0" : 3.652218515584872E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6513254492621797E-4, + 3.646400005615393E-4, + 3.652218515584872E-4 + ], + [ + 3.519855166866087E-4, + 3.527937491614633E-4, + 3.530516825367461E-4 + ], + [ + 3.4989609340297815E-4, + 3.4996294116570423E-4, + 3.503143042877524E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014459886907853124, + "scoreError" : 1.751271748642364E-5, + "scoreConfidence" : [ + 0.0144423741903667, + 0.014477399625339548 + ], + "scorePercentiles" : { + "0.0" : 0.01444761801971787, + "50.0" : 0.0144585426456789, + "90.0" : 0.014479206546259053, + "95.0" : 0.014479206546259053, + "99.0" : 0.014479206546259053, + "99.9" : 0.014479206546259053, + "99.99" : 0.014479206546259053, + "99.999" : 0.014479206546259053, + "99.9999" : 0.014479206546259053, + "100.0" : 0.014479206546259053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0144585426456789, + 0.01444858810287856, + 0.01445240660900229 + ], + [ + 0.014471111776452883, + 0.014463550117008629, + 0.014462029081353746 + ], + [ + 0.014479206546259053, + 0.01445592927232619, + 0.01444761801971787 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9848656516090956, + "scoreError" : 0.01790359690960157, + "scoreConfidence" : [ + 0.966962054699494, + 1.0027692485186972 + ], + "scorePercentiles" : { + "0.0" : 0.9702499647812166, + "50.0" : 0.987872356910007, + "90.0" : 0.999280423361311, + "95.0" : 0.999280423361311, + "99.0" : 0.999280423361311, + "99.9" : 0.999280423361311, + "99.99" : 0.999280423361311, + "99.999" : 0.999280423361311, + "99.9999" : 0.999280423361311, + "100.0" : 0.999280423361311 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9702499647812166, + 0.9752142199902487, + 0.97071049669967 + ], + [ + 0.9902428413704327, + 0.999280423361311, + 0.9967743983853284 + ], + [ + 0.987872356910007, + 0.9849215701201497, + 0.988524592863497 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013021840921867006, + "scoreError" : 1.9749862566405114E-4, + "scoreConfidence" : [ + 0.012824342296202955, + 0.013219339547531057 + ], + "scorePercentiles" : { + "0.0" : 0.012931413966648046, + "50.0" : 0.01299823102761962, + "90.0" : 0.013108989882703329, + "95.0" : 0.013108989882703329, + "99.0" : 0.013108989882703329, + "99.9" : 0.013108989882703329, + "99.99" : 0.013108989882703329, + "99.999" : 0.013108989882703329, + "99.9999" : 0.013108989882703329, + "100.0" : 0.013108989882703329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012931413966648046, + 0.013104382452609151, + 0.013108989882703329 + ], + [ + 0.013004359931858672, + 0.012992102123380572, + 0.012989797174002275 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.607023788037479, + "scoreError" : 0.07327604702535247, + "scoreConfidence" : [ + 3.5337477410121267, + 3.6802998350628315 + ], + "scorePercentiles" : { + "0.0" : 3.5660110042765503, + "50.0" : 3.6107640732839337, + "90.0" : 3.6383183745454546, + "95.0" : 3.6383183745454546, + "99.0" : 3.6383183745454546, + "99.9" : 3.6383183745454546, + "99.99" : 3.6383183745454546, + "99.999" : 3.6383183745454546, + "99.9999" : 3.6383183745454546, + "100.0" : 3.6383183745454546 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.589340019368723, + 3.6383183745454546, + 3.62694518346628 + ], + [ + 3.5660110042765503, + 3.6080095750360752, + 3.613518571531792 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8059151286489663, + "scoreError" : 0.05752197780891353, + "scoreConfidence" : [ + 2.748393150840053, + 2.8634371064578796 + ], + "scorePercentiles" : { + "0.0" : 2.7601151989514348, + "50.0" : 2.8134174627285513, + "90.0" : 2.844721040386803, + "95.0" : 2.844721040386803, + "99.0" : 2.844721040386803, + "99.9" : 2.844721040386803, + "99.99" : 2.844721040386803, + "99.999" : 2.844721040386803, + "99.9999" : 2.844721040386803, + "100.0" : 2.844721040386803 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.84413932044356, + 2.844721040386803, + 2.8285615141402713 + ], + [ + 2.823798961038961, + 2.8089209247402414, + 2.8134174627285513 + ], + [ + 2.76110121783545, + 2.768460517575422, + 2.7601151989514348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.19079301512188468, + "scoreError" : 0.014774377161596323, + "scoreConfidence" : [ + 0.17601863796028835, + 0.205567392283481 + ], + "scorePercentiles" : { + "0.0" : 0.1786670587268407, + "50.0" : 0.1959693705148053, + "90.0" : 0.19811789208732863, + "95.0" : 0.19811789208732863, + "99.0" : 0.19811789208732863, + "99.9" : 0.19811789208732863, + "99.99" : 0.19811789208732863, + "99.999" : 0.19811789208732863, + "99.9999" : 0.19811789208732863, + "100.0" : 0.19811789208732863 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1972381575511331, + 0.1959693705148053, + 0.19596850636880267 + ], + [ + 0.19811789208732863, + 0.19637531048228732, + 0.1961232889642864 + ], + [ + 0.17988990216042164, + 0.1786670587268407, + 0.17878764924105625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.31952785321151783, + "scoreError" : 0.01001783873026382, + "scoreConfidence" : [ + 0.30951001448125404, + 0.3295456919417816 + ], + "scorePercentiles" : { + "0.0" : 0.31381017921360654, + "50.0" : 0.31626577435167613, + "90.0" : 0.32794699619597295, + "95.0" : 0.32794699619597295, + "99.0" : 0.32794699619597295, + "99.9" : 0.32794699619597295, + "99.99" : 0.32794699619597295, + "99.999" : 0.32794699619597295, + "99.9999" : 0.32794699619597295, + "100.0" : 0.32794699619597295 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3189972577434687, + 0.31626577435167613, + 0.31608200075858145 + ], + [ + 0.31446555177510144, + 0.3145012565965343, + 0.31381017921360654 + ], + [ + 0.3270510261307519, + 0.32663063613796706, + 0.32794699619597295 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16863322355175633, + "scoreError" : 0.0036872991180300486, + "scoreConfidence" : [ + 0.1649459244337263, + 0.17232052266978637 + ], + "scorePercentiles" : { + "0.0" : 0.16568923645099826, + "50.0" : 0.1695653306485799, + "90.0" : 0.1706155962260288, + "95.0" : 0.1706155962260288, + "99.0" : 0.1706155962260288, + "99.9" : 0.1706155962260288, + "99.99" : 0.1706155962260288, + "99.999" : 0.1706155962260288, + "99.9999" : 0.1706155962260288, + "100.0" : 0.1706155962260288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16583173301936854, + 0.16568923645099826, + 0.16583332192428238 + ], + [ + 0.17051351466375664, + 0.1706155962260288, + 0.17053552343110503 + ], + [ + 0.17005843134087237, + 0.16905632426081518, + 0.1695653306485799 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39274708507310296, + "scoreError" : 0.00931143808849305, + "scoreConfidence" : [ + 0.3834356469846099, + 0.402058523161596 + ], + "scorePercentiles" : { + "0.0" : 0.38599543554114557, + "50.0" : 0.39204008754116354, + "90.0" : 0.3999358855828834, + "95.0" : 0.3999358855828834, + "99.0" : 0.3999358855828834, + "99.9" : 0.3999358855828834, + "99.99" : 0.3999358855828834, + "99.999" : 0.3999358855828834, + "99.9999" : 0.3999358855828834, + "100.0" : 0.3999358855828834 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39978432941552733, + 0.3999358855828834, + 0.3985876615648292 + ], + [ + 0.38599543554114557, + 0.38682379077054, + 0.3874426654914571 + ], + [ + 0.3922239095544399, + 0.39204008754116354, + 0.3918900001959401 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15654185959972333, + "scoreError" : 0.003324708225371492, + "scoreConfidence" : [ + 0.15321715137435185, + 0.1598665678250948 + ], + "scorePercentiles" : { + "0.0" : 0.1537966328934822, + "50.0" : 0.15711305921445404, + "90.0" : 0.15991182664385314, + "95.0" : 0.15991182664385314, + "99.0" : 0.15991182664385314, + "99.9" : 0.15991182664385314, + "99.99" : 0.15991182664385314, + "99.999" : 0.15991182664385314, + "99.9999" : 0.15991182664385314, + "100.0" : 0.15991182664385314 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15991182664385314, + 0.1574710881977797, + 0.1574142480166226 + ], + [ + 0.15711305921445404, + 0.1573238880655717, + 0.15707679514325207 + ], + [ + 0.15401986099987677, + 0.1537966328934822, + 0.1547493372226177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04730248592662241, + "scoreError" : 0.001214882838521849, + "scoreConfidence" : [ + 0.04608760308810056, + 0.04851736876514426 + ], + "scorePercentiles" : { + "0.0" : 0.04615450604845223, + "50.0" : 0.04744312130542456, + "90.0" : 0.04815119295365029, + "95.0" : 0.04815119295365029, + "99.0" : 0.04815119295365029, + "99.9" : 0.04815119295365029, + "99.99" : 0.04815119295365029, + "99.999" : 0.04815119295365029, + "99.9999" : 0.04815119295365029, + "100.0" : 0.04815119295365029 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04669727998860601, + 0.04615450604845223, + 0.04643505562830264 + ], + [ + 0.04815119295365029, + 0.04791434695676756, + 0.04799755646589584 + ], + [ + 0.04744312130542456, + 0.04768213433305519, + 0.04724717965944741 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9214657.65577173, + "scoreError" : 324186.95975341706, + "scoreConfidence" : [ + 8890470.696018314, + 9538844.615525147 + ], + "scorePercentiles" : { + "0.0" : 9072593.251133272, + "50.0" : 9095946.824545454, + "90.0" : 9473104.0625, + "95.0" : 9473104.0625, + "99.0" : 9473104.0625, + "99.9" : 9473104.0625, + "99.99" : 9473104.0625, + "99.999" : 9473104.0625, + "99.9999" : 9473104.0625, + "100.0" : 9473104.0625 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9100846.449499546, + 9095946.824545454, + 9093544.356363636 + ], + [ + 9471608.28125, + 9470003.732007576, + 9473104.0625 + ], + [ + 9076957.367513612, + 9077314.577132486, + 9072593.251133272 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From ae7279fa86294a4250c1df7bbf056a940e80459c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 00:26:35 +0000 Subject: [PATCH 268/345] Add performance results for commit c46c07a77f81d0493fc0e7c93d9de49e97118281 --- ...f81d0493fc0e7c93d9de49e97118281-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json diff --git a/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json b/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json new file mode 100644 index 0000000000..3b71828ef6 --- /dev/null +++ b/performance-results/2025-03-24T00:26:22Z-c46c07a77f81d0493fc0e7c93d9de49e97118281-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4058150783351246, + "scoreError" : 0.026452604872451217, + "scoreConfidence" : [ + 3.3793624734626735, + 3.432267683207576 + ], + "scorePercentiles" : { + "0.0" : 3.4004071794259927, + "50.0" : 3.406246718629739, + "90.0" : 3.4103596966550294, + "95.0" : 3.4103596966550294, + "99.0" : 3.4103596966550294, + "99.9" : 3.4103596966550294, + "99.99" : 3.4103596966550294, + "99.999" : 3.4103596966550294, + "99.9999" : 3.4103596966550294, + "100.0" : 3.4103596966550294 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.406232750028374, + 3.4103596966550294 + ], + [ + 3.4004071794259927, + 3.406260687231104 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7237606775531091, + "scoreError" : 0.01471389781372789, + "scoreConfidence" : [ + 1.7090467797393813, + 1.738474575366837 + ], + "scorePercentiles" : { + "0.0" : 1.7204652078126201, + "50.0" : 1.7244467307218376, + "90.0" : 1.7256840409561414, + "95.0" : 1.7256840409561414, + "99.0" : 1.7256840409561414, + "99.9" : 1.7256840409561414, + "99.99" : 1.7256840409561414, + "99.999" : 1.7256840409561414, + "99.9999" : 1.7256840409561414, + "100.0" : 1.7256840409561414 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7246099665286807, + 1.7204652078126201 + ], + [ + 1.7256840409561414, + 1.7242834949149946 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8663232166649114, + "scoreError" : 0.006686175885856252, + "scoreConfidence" : [ + 0.8596370407790551, + 0.8730093925507677 + ], + "scorePercentiles" : { + "0.0" : 0.8652181246222682, + "50.0" : 0.8663474533310827, + "90.0" : 0.8673798353752123, + "95.0" : 0.8673798353752123, + "99.0" : 0.8673798353752123, + "99.9" : 0.8673798353752123, + "99.99" : 0.8673798353752123, + "99.999" : 0.8673798353752123, + "99.9999" : 0.8673798353752123, + "100.0" : 0.8673798353752123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673798353752123, + 0.8670081057362332 + ], + [ + 0.865686800925932, + 0.8652181246222682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.063146484271993, + "scoreError" : 0.09274549186336652, + "scoreConfidence" : [ + 15.970400992408626, + 16.155891976135358 + ], + "scorePercentiles" : { + "0.0" : 15.988271964073459, + "50.0" : 16.056373512006516, + "90.0" : 16.151461751402852, + "95.0" : 16.151461751402852, + "99.0" : 16.151461751402852, + "99.9" : 16.151461751402852, + "99.99" : 16.151461751402852, + "99.999" : 16.151461751402852, + "99.9999" : 16.151461751402852, + "100.0" : 16.151461751402852 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.056373512006516, + 16.074774345532692, + 16.042297273489353 + ], + [ + 16.021096192431116, + 16.005741694538813, + 15.988271964073459 + ], + [ + 16.107798059757286, + 16.151461751402852, + 16.120503565215856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2631.4019878913555, + "scoreError" : 45.07292665333818, + "scoreConfidence" : [ + 2586.3290612380174, + 2676.4749145446935 + ], + "scorePercentiles" : { + "0.0" : 2598.1253635550966, + "50.0" : 2628.6049799406546, + "90.0" : 2670.80836297728, + "95.0" : 2670.80836297728, + "99.0" : 2670.80836297728, + "99.9" : 2670.80836297728, + "99.99" : 2670.80836297728, + "99.999" : 2670.80836297728, + "99.9999" : 2670.80836297728, + "100.0" : 2670.80836297728 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2628.363719532275, + 2634.404337259284, + 2628.6049799406546 + ], + [ + 2602.783085480924, + 2598.1253635550966, + 2603.021830794198 + ], + [ + 2670.80836297728, + 2657.0851252173516, + 2659.4210862651344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70139.36832003857, + "scoreError" : 1080.653635734936, + "scoreConfidence" : [ + 69058.71468430363, + 71220.02195577351 + ], + "scorePercentiles" : { + "0.0" : 69331.95951448398, + "50.0" : 70230.85843595021, + "90.0" : 70859.36155987332, + "95.0" : 70859.36155987332, + "99.0" : 70859.36155987332, + "99.9" : 70859.36155987332, + "99.99" : 70859.36155987332, + "99.999" : 70859.36155987332, + "99.9999" : 70859.36155987332, + "100.0" : 70859.36155987332 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70230.85843595021, + 70306.19172133977, + 70212.58255702884 + ], + [ + 70778.52672038162, + 70820.40440516589, + 70859.36155987332 + ], + [ + 69338.63968738963, + 69375.79027873385, + 69331.95951448398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.39493729944945, + "scoreError" : 5.38735019936265, + "scoreConfidence" : [ + 337.0075871000868, + 347.7822874988121 + ], + "scorePercentiles" : { + "0.0" : 337.26407618201983, + "50.0" : 344.3494882000147, + "90.0" : 345.3180429063327, + "95.0" : 345.3180429063327, + "99.0" : 345.3180429063327, + "99.9" : 345.3180429063327, + "99.99" : 345.3180429063327, + "99.999" : 345.3180429063327, + "99.9999" : 345.3180429063327, + "100.0" : 345.3180429063327 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.09902243857897, + 341.8493886510512, + 344.6666914454054 + ], + [ + 337.26407618201983, + 338.34929933870706, + 339.6471681207518 + ], + [ + 345.0112584121833, + 345.3180429063327, + 344.3494882000147 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.47572256516146, + "scoreError" : 3.6800047610781017, + "scoreConfidence" : [ + 101.79571780408337, + 109.15572732623956 + ], + "scorePercentiles" : { + "0.0" : 102.42778427400434, + "50.0" : 106.31243167262423, + "90.0" : 107.74689637106496, + "95.0" : 107.74689637106496, + "99.0" : 107.74689637106496, + "99.9" : 107.74689637106496, + "99.99" : 107.74689637106496, + "99.999" : 107.74689637106496, + "99.9999" : 107.74689637106496, + "100.0" : 107.74689637106496 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.283036063032, + 107.37412707665254, + 107.74689637106496 + ], + [ + 106.11333166047164, + 106.31243167262423, + 106.51985552590087 + ], + [ + 102.42778427400434, + 102.67053516833408, + 102.8335052743686 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06311428347152606, + "scoreError" : 0.00152037655154138, + "scoreConfidence" : [ + 0.06159390691998468, + 0.06463466002306745 + ], + "scorePercentiles" : { + "0.0" : 0.062365334173173345, + "50.0" : 0.06271125822291064, + "90.0" : 0.06517277432368142, + "95.0" : 0.06517277432368142, + "99.0" : 0.06517277432368142, + "99.9" : 0.06517277432368142, + "99.99" : 0.06517277432368142, + "99.999" : 0.06517277432368142, + "99.9999" : 0.06517277432368142, + "100.0" : 0.06517277432368142 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06270253047289417, + 0.06275191931475904, + 0.06271125822291064 + ], + [ + 0.062365334173173345, + 0.06256196170015765, + 0.06247188241063508 + ], + [ + 0.06369551286950872, + 0.06359537775601443, + 0.06517277432368142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8222663335657985E-4, + "scoreError" : 2.8979427134608703E-6, + "scoreConfidence" : [ + 3.79328690643119E-4, + 3.851245760700407E-4 + ], + "scorePercentiles" : { + "0.0" : 3.790968269142776E-4, + "50.0" : 3.8297120240527854E-4, + "90.0" : 3.8414170084109486E-4, + "95.0" : 3.8414170084109486E-4, + "99.0" : 3.8414170084109486E-4, + "99.9" : 3.8414170084109486E-4, + "99.99" : 3.8414170084109486E-4, + "99.999" : 3.8414170084109486E-4, + "99.9999" : 3.8414170084109486E-4, + "100.0" : 3.8414170084109486E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.790968269142776E-4, + 3.80274158956133E-4, + 3.809465855965468E-4 + ], + [ + 3.8414170084109486E-4, + 3.824734405275988E-4, + 3.8297120240527854E-4 + ], + [ + 3.8380708551126946E-4, + 3.831089772239076E-4, + 3.832197222331119E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014194196126241223, + "scoreError" : 8.231346586656076E-5, + "scoreConfidence" : [ + 0.014111882660374662, + 0.014276509592107784 + ], + "scorePercentiles" : { + "0.0" : 0.014149952206303724, + "50.0" : 0.014168512126664777, + "90.0" : 0.014269262559644757, + "95.0" : 0.014269262559644757, + "99.0" : 0.014269262559644757, + "99.9" : 0.014269262559644757, + "99.99" : 0.014269262559644757, + "99.999" : 0.014269262559644757, + "99.9999" : 0.014269262559644757, + "100.0" : 0.014269262559644757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014149952206303724, + 0.014151971689328413, + 0.01415818948088244 + ], + [ + 0.014168512126664777, + 0.014177382997877677, + 0.014167298605955855 + ], + [ + 0.01425682910980045, + 0.014269262559644757, + 0.014248366359712928 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9976094463518428, + "scoreError" : 0.020593406679277775, + "scoreConfidence" : [ + 0.977016039672565, + 1.0182028530311205 + ], + "scorePercentiles" : { + "0.0" : 0.9861651139927029, + "50.0" : 0.9900198547668547, + "90.0" : 1.0160989425988012, + "95.0" : 1.0160989425988012, + "99.0" : 1.0160989425988012, + "99.9" : 1.0160989425988012, + "99.99" : 1.0160989425988012, + "99.999" : 1.0160989425988012, + "99.9999" : 1.0160989425988012, + "100.0" : 1.0160989425988012 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9956012011946241, + 0.989060773711799, + 0.9890333369597468 + ], + [ + 1.0111175650591446, + 1.013320355253825, + 1.0160989425988012 + ], + [ + 0.9900198547668547, + 0.9861651139927029, + 0.988067873629088 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013280445247701916, + "scoreError" : 1.4610011076541306E-4, + "scoreConfidence" : [ + 0.013134345136936502, + 0.01342654535846733 + ], + "scorePercentiles" : { + "0.0" : 0.013238463008903915, + "50.0" : 0.013259971745728908, + "90.0" : 0.01337144344340329, + "95.0" : 0.01337144344340329, + "99.0" : 0.01337144344340329, + "99.9" : 0.01337144344340329, + "99.99" : 0.01337144344340329, + "99.999" : 0.01337144344340329, + "99.9999" : 0.01337144344340329, + "100.0" : 0.01337144344340329 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01325390333619611, + 0.013266040155261706, + 0.013240461469816412 + ], + [ + 0.013312360072630071, + 0.01337144344340329, + 0.013238463008903915 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8909240052175984, + "scoreError" : 0.04217030962671556, + "scoreConfidence" : [ + 3.848753695590883, + 3.933094314844314 + ], + "scorePercentiles" : { + "0.0" : 3.8692972204176335, + "50.0" : 3.8944467164305974, + "90.0" : 3.9083230546875, + "95.0" : 3.9083230546875, + "99.0" : 3.9083230546875, + "99.9" : 3.9083230546875, + "99.99" : 3.9083230546875, + "99.999" : 3.9083230546875, + "99.9999" : 3.9083230546875, + "100.0" : 3.9083230546875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9021358884555384, + 3.896992226635514, + 3.876894434883721 + ], + [ + 3.8692972204176335, + 3.891901206225681, + 3.9083230546875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9464650664152674, + "scoreError" : 0.07900631384816474, + "scoreConfidence" : [ + 2.8674587525671025, + 3.0254713802634323 + ], + "scorePercentiles" : { + "0.0" : 2.8846654577444477, + "50.0" : 2.949214712769095, + "90.0" : 3.0071091683704148, + "95.0" : 3.0071091683704148, + "99.0" : 3.0071091683704148, + "99.9" : 3.0071091683704148, + "99.99" : 3.0071091683704148, + "99.999" : 3.0071091683704148, + "99.9999" : 3.0071091683704148, + "100.0" : 3.0071091683704148 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0030966561561563, + 3.0071091683704148, + 2.9888247429766888 + ], + [ + 2.8951925684515194, + 2.898828372173913, + 2.8846654577444477 + ], + [ + 2.9574190813128327, + 2.949214712769095, + 2.933834837782341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17691180678475368, + "scoreError" : 0.0020375512397658494, + "scoreConfidence" : [ + 0.17487425554498784, + 0.17894935802451953 + ], + "scorePercentiles" : { + "0.0" : 0.17535436262252538, + "50.0" : 0.1772252414978645, + "90.0" : 0.1782519088089551, + "95.0" : 0.1782519088089551, + "99.0" : 0.1782519088089551, + "99.9" : 0.1782519088089551, + "99.99" : 0.1782519088089551, + "99.999" : 0.1782519088089551, + "99.9999" : 0.1782519088089551, + "100.0" : 0.1782519088089551 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1772252414978645, + 0.17715724875992064, + 0.17734751363765341 + ], + [ + 0.1782519088089551, + 0.17805553854782422, + 0.17803248316747075 + ], + [ + 0.17542131004964304, + 0.17536065397092604, + 0.17535436262252538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33425991649520753, + "scoreError" : 0.005110301773248331, + "scoreConfidence" : [ + 0.3291496147219592, + 0.33937021826845587 + ], + "scorePercentiles" : { + "0.0" : 0.3314547915879487, + "50.0" : 0.33275132459321866, + "90.0" : 0.338584502843987, + "95.0" : 0.338584502843987, + "99.0" : 0.338584502843987, + "99.9" : 0.338584502843987, + "99.99" : 0.338584502843987, + "99.999" : 0.338584502843987, + "99.9999" : 0.338584502843987, + "100.0" : 0.338584502843987 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.338584502843987, + 0.3381622264980387, + 0.33802885596944293 + ], + [ + 0.332660973854035, + 0.3329679401012186, + 0.33275132459321866 + ], + [ + 0.33184054337005575, + 0.3318880896389221, + 0.3314547915879487 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16033987885490203, + "scoreError" : 0.0088942834909611, + "scoreConfidence" : [ + 0.15144559536394092, + 0.16923416234586314 + ], + "scorePercentiles" : { + "0.0" : 0.15388121990890347, + "50.0" : 0.16065122100308443, + "90.0" : 0.166323342004158, + "95.0" : 0.166323342004158, + "99.0" : 0.166323342004158, + "99.9" : 0.166323342004158, + "99.99" : 0.166323342004158, + "99.999" : 0.166323342004158, + "99.9999" : 0.166323342004158, + "100.0" : 0.166323342004158 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1541098480351364, + 0.15412502709450712, + 0.15388121990890347 + ], + [ + 0.16623179028906732, + 0.166323342004158, + 0.16616231505574663 + ], + [ + 0.16094142122119223, + 0.1606327250823227, + 0.16065122100308443 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39744495573528943, + "scoreError" : 0.005411637246195458, + "scoreConfidence" : [ + 0.39203331848909395, + 0.4028565929814849 + ], + "scorePercentiles" : { + "0.0" : 0.3940697161603026, + "50.0" : 0.39633976704185164, + "90.0" : 0.402766328567401, + "95.0" : 0.402766328567401, + "99.0" : 0.402766328567401, + "99.9" : 0.402766328567401, + "99.99" : 0.402766328567401, + "99.999" : 0.402766328567401, + "99.9999" : 0.402766328567401, + "100.0" : 0.402766328567401 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.402766328567401, + 0.3995626060012786, + 0.3994064622973081 + ], + [ + 0.3944502245888061, + 0.3940697161603026, + 0.3944233631379664 + ], + [ + 0.4007321151673011, + 0.39633976704185164, + 0.3952540186553891 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1578731358594352, + "scoreError" : 0.001429244900730236, + "scoreConfidence" : [ + 0.15644389095870495, + 0.15930238076016542 + ], + "scorePercentiles" : { + "0.0" : 0.15651093406369826, + "50.0" : 0.15804752496325447, + "90.0" : 0.15899748204973288, + "95.0" : 0.15899748204973288, + "99.0" : 0.15899748204973288, + "99.9" : 0.15899748204973288, + "99.99" : 0.15899748204973288, + "99.999" : 0.15899748204973288, + "99.9999" : 0.15899748204973288, + "100.0" : 0.15899748204973288 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15817670798139888, + 0.15885249123949613, + 0.15842256156137127 + ], + [ + 0.15899748204973288, + 0.15804752496325447, + 0.15767250805688698 + ], + [ + 0.15651093406369826, + 0.15700596079631984, + 0.157172052022758 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04795383363672171, + "scoreError" : 5.299177065546994E-4, + "scoreConfidence" : [ + 0.04742391593016701, + 0.04848375134327641 + ], + "scorePercentiles" : { + "0.0" : 0.04746444761660663, + "50.0" : 0.04800709954586042, + "90.0" : 0.04852743631837416, + "95.0" : 0.04852743631837416, + "99.0" : 0.04852743631837416, + "99.9" : 0.04852743631837416, + "99.99" : 0.04852743631837416, + "99.999" : 0.04852743631837416, + "99.9999" : 0.04852743631837416, + "100.0" : 0.04852743631837416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047803915034585615, + 0.04798231661172767, + 0.04801513513708167 + ], + [ + 0.0480238308625434, + 0.04800709954586042, + 0.04818131418150632 + ], + [ + 0.04852743631837416, + 0.04746444761660663, + 0.04757900742220954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9466197.532085942, + "scoreError" : 123449.88258417205, + "scoreConfidence" : [ + 9342747.64950177, + 9589647.414670113 + ], + "scorePercentiles" : { + "0.0" : 9371300.07022472, + "50.0" : 9485310.44549763, + "90.0" : 9569203.46462715, + "95.0" : 9569203.46462715, + "99.0" : 9569203.46462715, + "99.9" : 9569203.46462715, + "99.99" : 9569203.46462715, + "99.999" : 9569203.46462715, + "99.9999" : 9569203.46462715, + "100.0" : 9569203.46462715 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9371300.07022472, + 9371471.336142322, + 9412303.88052681 + ], + [ + 9485310.44549763, + 9489903.88235294, + 9427795.868991517 + ], + [ + 9569203.46462715, + 9531204.40952381, + 9537284.43088656 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From e2cff0318940cc7dc80a06d7d0fbc9da70d70a24 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 01:13:25 +0000 Subject: [PATCH 269/345] Add performance results for commit ae7279fa86294a4250c1df7bbf056a940e80459c --- ...6294a4250c1df7bbf056a940e80459c-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json diff --git a/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..e2485a8d00 --- /dev/null +++ b/performance-results/2025-03-24T01:13:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.406454124310017, + "scoreError" : 0.018858190056667414, + "scoreConfidence" : [ + 3.3875959342533495, + 3.4253123143666846 + ], + "scorePercentiles" : { + "0.0" : 3.403381953657993, + "50.0" : 3.406207135056139, + "90.0" : 3.410020273469797, + "95.0" : 3.410020273469797, + "99.0" : 3.410020273469797, + "99.9" : 3.410020273469797, + "99.99" : 3.410020273469797, + "99.999" : 3.410020273469797, + "99.9999" : 3.410020273469797, + "100.0" : 3.410020273469797 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.403381953657993, + 3.407486239518625 + ], + [ + 3.404928030593653, + 3.410020273469797 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7214546892881701, + "scoreError" : 0.004938647272620143, + "scoreConfidence" : [ + 1.71651604201555, + 1.7263933365607902 + ], + "scorePercentiles" : { + "0.0" : 1.7204864939331292, + "50.0" : 1.7215383639780086, + "90.0" : 1.7222555352635336, + "95.0" : 1.7222555352635336, + "99.0" : 1.7222555352635336, + "99.9" : 1.7222555352635336, + "99.99" : 1.7222555352635336, + "99.999" : 1.7222555352635336, + "99.9999" : 1.7222555352635336, + "100.0" : 1.7222555352635336 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7212559407094044, + 1.7204864939331292 + ], + [ + 1.721820787246613, + 1.7222555352635336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8668132758292565, + "scoreError" : 0.008547982869116547, + "scoreConfidence" : [ + 0.85826529296014, + 0.875361258698373 + ], + "scorePercentiles" : { + "0.0" : 0.8658233476391417, + "50.0" : 0.8663400506622068, + "90.0" : 0.8687496543534708, + "95.0" : 0.8687496543534708, + "99.0" : 0.8687496543534708, + "99.9" : 0.8687496543534708, + "99.99" : 0.8687496543534708, + "99.999" : 0.8687496543534708, + "99.9999" : 0.8687496543534708, + "100.0" : 0.8687496543534708 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8658233476391417, + 0.8661502169712597 + ], + [ + 0.8665298843531537, + 0.8687496543534708 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.902287964479932, + "scoreError" : 0.11396164265965075, + "scoreConfidence" : [ + 15.78832632182028, + 16.01624960713958 + ], + "scorePercentiles" : { + "0.0" : 15.80922986452746, + "50.0" : 15.920960661790467, + "90.0" : 15.97118075881037, + "95.0" : 15.97118075881037, + "99.0" : 15.97118075881037, + "99.9" : 15.97118075881037, + "99.99" : 15.97118075881037, + "99.999" : 15.97118075881037, + "99.9999" : 15.97118075881037, + "100.0" : 15.97118075881037 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.80922986452746, + 15.824703875481319, + 15.820446126136925 + ], + [ + 15.97118075881037, + 15.956354305652036, + 15.967698445224553 + ], + [ + 15.892708365722527, + 15.920960661790467, + 15.957309276973744 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2722.266736729774, + "scoreError" : 105.57849040404129, + "scoreConfidence" : [ + 2616.688246325733, + 2827.845227133815 + ], + "scorePercentiles" : { + "0.0" : 2636.873921470413, + "50.0" : 2760.8545369376047, + "90.0" : 2772.0616199852557, + "95.0" : 2772.0616199852557, + "99.0" : 2772.0616199852557, + "99.9" : 2772.0616199852557, + "99.99" : 2772.0616199852557, + "99.999" : 2772.0616199852557, + "99.9999" : 2772.0616199852557, + "100.0" : 2772.0616199852557 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2636.873921470413, + 2642.265641869794, + 2636.9323275347615 + ], + [ + 2765.7734690069874, + 2760.8545369376047, + 2772.0616199852557 + ], + [ + 2756.996665783692, + 2764.59089597599, + 2764.051552003467 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69403.28294159488, + "scoreError" : 1789.5098351053073, + "scoreConfidence" : [ + 67613.77310648958, + 71192.79277670018 + ], + "scorePercentiles" : { + "0.0" : 68148.26382761766, + "50.0" : 69446.16304178763, + "90.0" : 70726.5839917201, + "95.0" : 70726.5839917201, + "99.0" : 70726.5839917201, + "99.9" : 70726.5839917201, + "99.99" : 70726.5839917201, + "99.999" : 70726.5839917201, + "99.9999" : 70726.5839917201, + "100.0" : 70726.5839917201 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69465.85758059853, + 69446.16304178763, + 68976.76943002627 + ], + [ + 68304.00362996088, + 68148.26382761766, + 68275.46953815382 + ], + [ + 70726.5839917201, + 70682.72282740971, + 70603.71260707919 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 335.70220206197814, + "scoreError" : 15.07249257701705, + "scoreConfidence" : [ + 320.6297094849611, + 350.7746946389952 + ], + "scorePercentiles" : { + "0.0" : 327.22299189736594, + "50.0" : 332.9895061687026, + "90.0" : 347.9638389367264, + "95.0" : 347.9638389367264, + "99.0" : 347.9638389367264, + "99.9" : 347.9638389367264, + "99.99" : 347.9638389367264, + "99.999" : 347.9638389367264, + "99.9999" : 347.9638389367264, + "100.0" : 347.9638389367264 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.6069929006137, + 347.9638389367264, + 347.28162821148885 + ], + [ + 333.69198738799884, + 329.7415538701372, + 332.9895061687026 + ], + [ + 327.9921801088395, + 327.22299189736594, + 327.82913907593047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.20240192236119, + "scoreError" : 1.7118826264673341, + "scoreConfidence" : [ + 101.49051929589386, + 104.91428454882852 + ], + "scorePercentiles" : { + "0.0" : 101.86121014089116, + "50.0" : 103.17117821314267, + "90.0" : 104.71944989338951, + "95.0" : 104.71944989338951, + "99.0" : 104.71944989338951, + "99.9" : 104.71944989338951, + "99.99" : 104.71944989338951, + "99.999" : 104.71944989338951, + "99.9999" : 104.71944989338951, + "100.0" : 104.71944989338951 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.14285113507162, + 103.17117821314267, + 103.41142732656795 + ], + [ + 102.26046497937386, + 101.86121014089116, + 101.98306700690846 + ], + [ + 104.00069533126559, + 104.27127327463997, + 104.71944989338951 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06280098304120152, + "scoreError" : 3.937176959420289E-4, + "scoreConfidence" : [ + 0.06240726534525949, + 0.06319470073714355 + ], + "scorePercentiles" : { + "0.0" : 0.06254160231025166, + "50.0" : 0.06279172655234555, + "90.0" : 0.06323299884917925, + "95.0" : 0.06323299884917925, + "99.0" : 0.06323299884917925, + "99.9" : 0.06323299884917925, + "99.99" : 0.06323299884917925, + "99.999" : 0.06323299884917925, + "99.9999" : 0.06323299884917925, + "100.0" : 0.06323299884917925 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06254160231025166, + 0.06256130020144389, + 0.06289950600052835 + ], + [ + 0.06279268673904444, + 0.06279172655234555, + 0.0625852339908877 + ], + [ + 0.06323299884917925, + 0.06306160496793356, + 0.06274218775919942 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.800666345175178E-4, + "scoreError" : 1.4269686166394017E-5, + "scoreConfidence" : [ + 3.657969483511238E-4, + 3.9433632068391184E-4 + ], + "scorePercentiles" : { + "0.0" : 3.683397532387197E-4, + "50.0" : 3.854766220563561E-4, + "90.0" : 3.8654012930314224E-4, + "95.0" : 3.8654012930314224E-4, + "99.0" : 3.8654012930314224E-4, + "99.9" : 3.8654012930314224E-4, + "99.99" : 3.8654012930314224E-4, + "99.999" : 3.8654012930314224E-4, + "99.9999" : 3.8654012930314224E-4, + "100.0" : 3.8654012930314224E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.859636843167263E-4, + 3.8455198181245204E-4, + 3.854766220563561E-4 + ], + [ + 3.6918629544099645E-4, + 3.6879014199807185E-4, + 3.683397532387197E-4 + ], + [ + 3.8654012930314224E-4, + 3.8552127057348224E-4, + 3.8622983191771357E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01422155170621673, + "scoreError" : 1.222545120086124E-4, + "scoreConfidence" : [ + 0.014099297194208117, + 0.014343806218225343 + ], + "scorePercentiles" : { + "0.0" : 0.014122907994599466, + "50.0" : 0.0142476932221646, + "90.0" : 0.014300206638362132, + "95.0" : 0.014300206638362132, + "99.0" : 0.014300206638362132, + "99.9" : 0.014300206638362132, + "99.99" : 0.014300206638362132, + "99.999" : 0.014300206638362132, + "99.9999" : 0.014300206638362132, + "100.0" : 0.014300206638362132 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014255982918679112, + 0.014234981336734506, + 0.0142476932221646 + ], + [ + 0.01412348233458089, + 0.014139337159864547, + 0.014122907994599466 + ], + [ + 0.014300206638362132, + 0.01428836946243565, + 0.014281004288529646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9803882629131864, + "scoreError" : 0.020658568420889065, + "scoreConfidence" : [ + 0.9597296944922973, + 1.0010468313340755 + ], + "scorePercentiles" : { + "0.0" : 0.9592676801918465, + "50.0" : 0.9825492621340145, + "90.0" : 0.9934468711632065, + "95.0" : 0.9934468711632065, + "99.0" : 0.9934468711632065, + "99.9" : 0.9934468711632065, + "99.99" : 0.9934468711632065, + "99.999" : 0.9934468711632065, + "99.9999" : 0.9934468711632065, + "100.0" : 0.9934468711632065 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9934468711632065, + 0.9888148557445126, + 0.9868741706137754 + ], + [ + 0.9825492621340145, + 0.9926531631761787, + 0.9820926468624177 + ], + [ + 0.9592676801918465, + 0.9635445763561037, + 0.9742511399766218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013139045113127988, + "scoreError" : 8.038683793137916E-4, + "scoreConfidence" : [ + 0.012335176733814197, + 0.01394291349244178 + ], + "scorePercentiles" : { + "0.0" : 0.012814005489380022, + "50.0" : 0.013142212237676986, + "90.0" : 0.013427707323033625, + "95.0" : 0.013427707323033625, + "99.0" : 0.013427707323033625, + "99.9" : 0.013427707323033625, + "99.99" : 0.013427707323033625, + "99.999" : 0.013427707323033625, + "99.9999" : 0.013427707323033625, + "100.0" : 0.013427707323033625 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013369222135175747, + 0.013397351988253483, + 0.013427707323033625 + ], + [ + 0.012814005489380022, + 0.012915202340178225, + 0.012910781402746829 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.840400281821194, + "scoreError" : 0.07710475631475237, + "scoreConfidence" : [ + 3.7632955255064418, + 3.9175050381359466 + ], + "scorePercentiles" : { + "0.0" : 3.7997022750759877, + "50.0" : 3.8363600249409693, + "90.0" : 3.8819478875096975, + "95.0" : 3.8819478875096975, + "99.0" : 3.8819478875096975, + "99.9" : 3.8819478875096975, + "99.99" : 3.8819478875096975, + "99.999" : 3.8819478875096975, + "99.9999" : 3.8819478875096975, + "100.0" : 3.8819478875096975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.834708003834356, + 3.8819478875096975, + 3.8569279853508096 + ], + [ + 3.7997022750759877, + 3.831103493108729, + 3.8380120460475826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.961820214803675, + "scoreError" : 0.04684169380098943, + "scoreConfidence" : [ + 2.914978521002686, + 3.0086619086046644 + ], + "scorePercentiles" : { + "0.0" : 2.9317596974494284, + "50.0" : 2.9511743021540275, + "90.0" : 2.9983626555755394, + "95.0" : 2.9983626555755394, + "99.0" : 2.9983626555755394, + "99.9" : 2.9983626555755394, + "99.99" : 2.9983626555755394, + "99.999" : 2.9983626555755394, + "99.9999" : 2.9983626555755394, + "100.0" : 2.9983626555755394 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9317596974494284, + 2.9345205044014087, + 2.936623438344099 + ], + [ + 2.9511743021540275, + 2.947147355922216, + 2.966120393534994 + ], + [ + 2.994105714071856, + 2.9983626555755394, + 2.996567871779509 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1757288501955799, + "scoreError" : 0.00513685216512485, + "scoreConfidence" : [ + 0.17059199803045505, + 0.18086570236070476 + ], + "scorePercentiles" : { + "0.0" : 0.17125731531176683, + "50.0" : 0.17670132100576033, + "90.0" : 0.17882767461239962, + "95.0" : 0.17882767461239962, + "99.0" : 0.17882767461239962, + "99.9" : 0.17882767461239962, + "99.99" : 0.17882767461239962, + "99.999" : 0.17882767461239962, + "99.9999" : 0.17882767461239962, + "100.0" : 0.17882767461239962 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1769569301741223, + 0.17670132100576033, + 0.17669613964131106 + ], + [ + 0.17275412223815365, + 0.1714712559499314, + 0.17125731531176683 + ], + [ + 0.17882767461239962, + 0.17852007883180407, + 0.17837481399496993 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.34706825206330116, + "scoreError" : 0.001580435927439251, + "scoreConfidence" : [ + 0.34548781613586194, + 0.3486486879907404 + ], + "scorePercentiles" : { + "0.0" : 0.3460187886924328, + "50.0" : 0.34727262110636525, + "90.0" : 0.3483138171780851, + "95.0" : 0.3483138171780851, + "99.0" : 0.3483138171780851, + "99.9" : 0.3483138171780851, + "99.99" : 0.3483138171780851, + "99.999" : 0.3483138171780851, + "99.9999" : 0.3483138171780851, + "100.0" : 0.3483138171780851 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.34613291267176627, + 0.3461400510193486, + 0.3460187886924328 + ], + [ + 0.34794822761908073, + 0.34727262110636525, + 0.3476111665334214 + ], + [ + 0.3483138171780851, + 0.34620084740012463, + 0.34797583634908485 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15901443524647912, + "scoreError" : 0.006788045196272182, + "scoreConfidence" : [ + 0.15222639005020694, + 0.1658024804427513 + ], + "scorePercentiles" : { + "0.0" : 0.15484666245490158, + "50.0" : 0.15790013287121835, + "90.0" : 0.1641328795627626, + "95.0" : 0.1641328795627626, + "99.0" : 0.1641328795627626, + "99.9" : 0.1641328795627626, + "99.99" : 0.1641328795627626, + "99.999" : 0.1641328795627626, + "99.9999" : 0.1641328795627626, + "100.0" : 0.1641328795627626 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15799359083655898, + 0.1578523076935219, + 0.15790013287121835 + ], + [ + 0.1641328795627626, + 0.16412531186607582, + 0.16412967892136748 + ], + [ + 0.15502788157690758, + 0.15512147143499774, + 0.15484666245490158 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39415298606633214, + "scoreError" : 0.0073863990684665615, + "scoreConfidence" : [ + 0.3867665869978656, + 0.4015393851347987 + ], + "scorePercentiles" : { + "0.0" : 0.387162633255904, + "50.0" : 0.3951555636780337, + "90.0" : 0.4017765369224588, + "95.0" : 0.4017765369224588, + "99.0" : 0.4017765369224588, + "99.9" : 0.4017765369224588, + "99.99" : 0.4017765369224588, + "99.999" : 0.4017765369224588, + "99.9999" : 0.4017765369224588, + "100.0" : 0.4017765369224588 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3951555636780337, + 0.387162633255904, + 0.38800434348568325 + ], + [ + 0.39662847281164476, + 0.3953628665691468, + 0.3951758637082115 + ], + [ + 0.4017765369224588, + 0.39381700567085415, + 0.39429358849505186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15758703083047398, + "scoreError" : 0.005201091754230971, + "scoreConfidence" : [ + 0.152385939076243, + 0.16278812258470496 + ], + "scorePercentiles" : { + "0.0" : 0.15472419694273823, + "50.0" : 0.15595056361112844, + "90.0" : 0.1617285585367037, + "95.0" : 0.1617285585367037, + "99.0" : 0.1617285585367037, + "99.9" : 0.1617285585367037, + "99.99" : 0.1617285585367037, + "99.999" : 0.1617285585367037, + "99.9999" : 0.1617285585367037, + "100.0" : 0.1617285585367037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15483804412789348, + 0.1558617654650021, + 0.15472419694273823 + ], + [ + 0.16167252702287607, + 0.1617285585367037, + 0.16159403569524117 + ], + [ + 0.15595056361112844, + 0.15604103013091578, + 0.15587255594176694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048128917200255104, + "scoreError" : 0.001081398938893643, + "scoreConfidence" : [ + 0.047047518261361464, + 0.049210316139148745 + ], + "scorePercentiles" : { + "0.0" : 0.04691966639610009, + "50.0" : 0.048270016783156025, + "90.0" : 0.049073969491159455, + "95.0" : 0.049073969491159455, + "99.0" : 0.049073969491159455, + "99.9" : 0.049073969491159455, + "99.99" : 0.049073969491159455, + "99.999" : 0.049073969491159455, + "99.9999" : 0.049073969491159455, + "100.0" : 0.049073969491159455 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047598662782672434, + 0.04691966639610009, + 0.04762934602158527 + ], + [ + 0.049073969491159455, + 0.048270016783156025, + 0.048181095204598345 + ], + [ + 0.04849201205981903, + 0.04850977500036382, + 0.04848571106284152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9451596.3953978, + "scoreError" : 178389.00774169658, + "scoreConfidence" : [ + 9273207.387656102, + 9629985.403139496 + ], + "scorePercentiles" : { + "0.0" : 9312494.095903166, + "50.0" : 9479242.483412322, + "90.0" : 9571400.162679426, + "95.0" : 9571400.162679426, + "99.0" : 9571400.162679426, + "99.9" : 9571400.162679426, + "99.99" : 9571400.162679426, + "99.999" : 9571400.162679426, + "99.9999" : 9571400.162679426, + "100.0" : 9571400.162679426 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9479242.483412322, + 9467233.308420056, + 9499272.824311491 + ], + [ + 9528669.641904762, + 9571400.162679426, + 9564784.041108986 + ], + [ + 9312494.095903166, + 9328251.902143523, + 9313019.098696461 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From cc5861ab6debc0edf2ce8a809086e67ece1fdc8a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 01:13:53 +0000 Subject: [PATCH 270/345] Add performance results for commit ae7279fa86294a4250c1df7bbf056a940e80459c --- ...6294a4250c1df7bbf056a940e80459c-jdk17.json | 1310 +++++++++++++++++ ...6294a4250c1df7bbf056a940e80459c-jdk17.json | 1310 +++++++++++++++++ 2 files changed, 2620 insertions(+) create mode 100644 performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json create mode 100644 performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json diff --git a/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..b5cdb60176 --- /dev/null +++ b/performance-results/2025-03-24T01:13:31Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.422918226767772, + "scoreError" : 0.018333149688673566, + "scoreConfidence" : [ + 3.404585077079098, + 3.4412513764564454 + ], + "scorePercentiles" : { + "0.0" : 3.419464583762408, + "50.0" : 3.422947389990944, + "90.0" : 3.426313543326791, + "95.0" : 3.426313543326791, + "99.0" : 3.426313543326791, + "99.9" : 3.426313543326791, + "99.99" : 3.426313543326791, + "99.999" : 3.426313543326791, + "99.9999" : 3.426313543326791, + "100.0" : 3.426313543326791 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.419464583762408, + 3.426313543326791 + ], + [ + 3.4223602521562295, + 3.4235345278256584 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7248233246272615, + "scoreError" : 0.023643110989649992, + "scoreConfidence" : [ + 1.7011802136376115, + 1.7484664356169115 + ], + "scorePercentiles" : { + "0.0" : 1.7201482102136298, + "50.0" : 1.7253085313214631, + "90.0" : 1.7285280256524898, + "95.0" : 1.7285280256524898, + "99.0" : 1.7285280256524898, + "99.9" : 1.7285280256524898, + "99.99" : 1.7285280256524898, + "99.999" : 1.7285280256524898, + "99.9999" : 1.7285280256524898, + "100.0" : 1.7285280256524898 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7201482102136298, + 1.723875345355189 + ], + [ + 1.7267417172877373, + 1.7285280256524898 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691911317000947, + "scoreError" : 0.002655907669193238, + "scoreConfidence" : [ + 0.8665352240309014, + 0.8718470393692879 + ], + "scorePercentiles" : { + "0.0" : 0.8686357338501872, + "50.0" : 0.869250861572249, + "90.0" : 0.8696270698056936, + "95.0" : 0.8696270698056936, + "99.0" : 0.8696270698056936, + "99.9" : 0.8696270698056936, + "99.99" : 0.8696270698056936, + "99.999" : 0.8696270698056936, + "99.9999" : 0.8696270698056936, + "100.0" : 0.8696270698056936 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686357338501872, + 0.8696270698056936 + ], + [ + 0.869274635006496, + 0.869227088138002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.269713337427504, + "scoreError" : 0.14438877525995078, + "scoreConfidence" : [ + 16.125324562167553, + 16.414102112687456 + ], + "scorePercentiles" : { + "0.0" : 16.117858602831706, + "50.0" : 16.322456788864862, + "90.0" : 16.348479604511603, + "95.0" : 16.348479604511603, + "99.0" : 16.348479604511603, + "99.9" : 16.348479604511603, + "99.99" : 16.348479604511603, + "99.999" : 16.348479604511603, + "99.9999" : 16.348479604511603, + "100.0" : 16.348479604511603 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.322854104364346, + 16.335474903690017, + 16.348479604511603 + ], + [ + 16.28551807447759, + 16.322456788864862, + 16.331614273616157 + ], + [ + 16.192817675350103, + 16.117858602831706, + 16.170346009141166 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2705.9594158818363, + "scoreError" : 192.99783864660245, + "scoreConfidence" : [ + 2512.961577235234, + 2898.9572545284386 + ], + "scorePercentiles" : { + "0.0" : 2577.247939215522, + "50.0" : 2692.3021417137543, + "90.0" : 2850.8813638762285, + "95.0" : 2850.8813638762285, + "99.0" : 2850.8813638762285, + "99.9" : 2850.8813638762285, + "99.99" : 2850.8813638762285, + "99.999" : 2850.8813638762285, + "99.9999" : 2850.8813638762285, + "100.0" : 2850.8813638762285 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2692.3021417137543, + 2695.2601082938186, + 2691.307173319121 + ], + [ + 2850.8813638762285, + 2843.8230950227876, + 2838.84709036833 + ], + [ + 2577.892907020788, + 2577.247939215522, + 2586.0729241061736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70330.90293571194, + "scoreError" : 1814.8467265792697, + "scoreConfidence" : [ + 68516.05620913267, + 72145.74966229121 + ], + "scorePercentiles" : { + "0.0" : 69039.15347272958, + "50.0" : 70411.6312894578, + "90.0" : 71564.1567915699, + "95.0" : 71564.1567915699, + "99.0" : 71564.1567915699, + "99.9" : 71564.1567915699, + "99.99" : 71564.1567915699, + "99.999" : 71564.1567915699, + "99.9999" : 71564.1567915699, + "100.0" : 71564.1567915699 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69039.15347272958, + 69066.18990884532, + 69044.98069845003 + ], + [ + 71510.90218062312, + 71564.1567915699, + 71545.78744063577 + ], + [ + 70349.9073863051, + 70411.6312894578, + 70445.41725279074 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.8932895289724, + "scoreError" : 6.778917399249856, + "scoreConfidence" : [ + 351.11437212972254, + 364.67220692822224 + ], + "scorePercentiles" : { + "0.0" : 354.3820744687182, + "50.0" : 355.97315553038175, + "90.0" : 363.8908628823784, + "95.0" : 363.8908628823784, + "99.0" : 363.8908628823784, + "99.9" : 363.8908628823784, + "99.99" : 363.8908628823784, + "99.999" : 363.8908628823784, + "99.9999" : 363.8908628823784, + "100.0" : 363.8908628823784 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.9125115105426, + 354.68922837188575, + 354.3820744687182 + ], + [ + 355.97315553038175, + 356.6277140587543, + 354.96717029330796 + ], + [ + 363.4166848352348, + 363.8908628823784, + 362.1802038095481 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 109.31292831463014, + "scoreError" : 1.96493773221573, + "scoreConfidence" : [ + 107.34799058241441, + 111.27786604684587 + ], + "scorePercentiles" : { + "0.0" : 107.69539614027994, + "50.0" : 109.76809662718475, + "90.0" : 110.36454561045173, + "95.0" : 110.36454561045173, + "99.0" : 110.36454561045173, + "99.9" : 110.36454561045173, + "99.99" : 110.36454561045173, + "99.999" : 110.36454561045173, + "99.9999" : 110.36454561045173, + "100.0" : 110.36454561045173 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.69539614027994, + 107.86202400330613, + 107.81319167511278 + ], + [ + 110.34968849825734, + 110.36069523704057, + 110.36454561045173 + ], + [ + 109.75382660904711, + 109.76809662718475, + 109.84889043099095 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06115231415443667, + "scoreError" : 2.7757492177696216E-4, + "scoreConfidence" : [ + 0.06087473923265971, + 0.061429889076213634 + ], + "scorePercentiles" : { + "0.0" : 0.06093074006080805, + "50.0" : 0.061178577077903806, + "90.0" : 0.061452698443424346, + "95.0" : 0.061452698443424346, + "99.0" : 0.061452698443424346, + "99.9" : 0.061452698443424346, + "99.99" : 0.061452698443424346, + "99.999" : 0.061452698443424346, + "99.9999" : 0.061452698443424346, + "100.0" : 0.061452698443424346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06108022874890821, + 0.06096968443097709, + 0.06093074006080805 + ], + [ + 0.061178577077903806, + 0.0612031103474445, + 0.061452698443424346 + ], + [ + 0.06119962405600911, + 0.0613076285420013, + 0.061048535682453636 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6351884197456766E-4, + "scoreError" : 1.1708507477707113E-5, + "scoreConfidence" : [ + 3.5181033449686053E-4, + 3.752273494522748E-4 + ], + "scorePercentiles" : { + "0.0" : 3.542770620589208E-4, + "50.0" : 3.669356435358375E-4, + "90.0" : 3.6963335624417025E-4, + "95.0" : 3.6963335624417025E-4, + "99.0" : 3.6963335624417025E-4, + "99.9" : 3.6963335624417025E-4, + "99.99" : 3.6963335624417025E-4, + "99.999" : 3.6963335624417025E-4, + "99.9999" : 3.6963335624417025E-4, + "100.0" : 3.6963335624417025E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.693484092028624E-4, + 3.6963335624417025E-4, + 3.6946049352507286E-4 + ], + [ + 3.542770620589208E-4, + 3.5438673282758176E-4, + 3.5446827063455045E-4 + ], + [ + 3.660474383407284E-4, + 3.669356435358375E-4, + 3.6711217140138446E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014040306639199382, + "scoreError" : 2.189874459994869E-4, + "scoreConfidence" : [ + 0.013821319193199894, + 0.01425929408519887 + ], + "scorePercentiles" : { + "0.0" : 0.013873872933511657, + "50.0" : 0.014066023999178553, + "90.0" : 0.014185114222814207, + "95.0" : 0.014185114222814207, + "99.0" : 0.014185114222814207, + "99.9" : 0.014185114222814207, + "99.99" : 0.014185114222814207, + "99.999" : 0.014185114222814207, + "99.9999" : 0.014185114222814207, + "100.0" : 0.014185114222814207 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013873872933511657, + 0.013874219684504072, + 0.013887816720458182 + ], + [ + 0.014062647974788746, + 0.014070673822931002, + 0.014066023999178553 + ], + [ + 0.014172631385231997, + 0.014185114222814207, + 0.014169759009376014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9742580802486356, + "scoreError" : 0.025198240489418596, + "scoreConfidence" : [ + 0.949059839759217, + 0.9994563207380541 + ], + "scorePercentiles" : { + "0.0" : 0.9591472857964899, + "50.0" : 0.9688832565394303, + "90.0" : 0.9961906805458711, + "95.0" : 0.9961906805458711, + "99.0" : 0.9961906805458711, + "99.9" : 0.9961906805458711, + "99.99" : 0.9961906805458711, + "99.999" : 0.9961906805458711, + "99.9999" : 0.9961906805458711, + "100.0" : 0.9961906805458711 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9896558599703117, + 0.9947686386153387, + 0.9961906805458711 + ], + [ + 0.9688832565394303, + 0.9673317737473399, + 0.9690521334302326 + ], + [ + 0.9591472857964899, + 0.9638375641865844, + 0.9594555294061211 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01304551071126541, + "scoreError" : 4.5378102190033647E-4, + "scoreConfidence" : [ + 0.012591729689365073, + 0.013499291733165745 + ], + "scorePercentiles" : { + "0.0" : 0.012846069177073887, + "50.0" : 0.0130605302303139, + "90.0" : 0.013192607064739887, + "95.0" : 0.013192607064739887, + "99.0" : 0.013192607064739887, + "99.9" : 0.013192607064739887, + "99.99" : 0.013192607064739887, + "99.999" : 0.013192607064739887, + "99.9999" : 0.013192607064739887, + "100.0" : 0.013192607064739887 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012846069177073887, + 0.012922527678061463, + 0.012932401976023898 + ], + [ + 0.013188658484603901, + 0.013192607064739887, + 0.013190799887089414 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6124515862232065, + "scoreError" : 0.3329195335223676, + "scoreConfidence" : [ + 3.279532052700839, + 3.945371119745574 + ], + "scorePercentiles" : { + "0.0" : 3.4783565465924897, + "50.0" : 3.6183021933966506, + "90.0" : 3.7219963913690477, + "95.0" : 3.7219963913690477, + "99.0" : 3.7219963913690477, + "99.9" : 3.7219963913690477, + "99.99" : 3.7219963913690477, + "99.999" : 3.7219963913690477, + "99.9999" : 3.7219963913690477, + "100.0" : 3.7219963913690477 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4783565465924897, + 3.51792920745429, + 3.518397646272855 + ], + [ + 3.7198229851301114, + 3.7219963913690477, + 3.718206740520446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.820564883208848, + "scoreError" : 0.07635244025538424, + "scoreConfidence" : [ + 2.744212442953464, + 2.896917323464232 + ], + "scorePercentiles" : { + "0.0" : 2.7563458605676496, + "50.0" : 2.8488649763600113, + "90.0" : 2.856326268989149, + "95.0" : 2.856326268989149, + "99.0" : 2.856326268989149, + "99.9" : 2.856326268989149, + "99.99" : 2.856326268989149, + "99.999" : 2.856326268989149, + "99.9999" : 2.856326268989149, + "100.0" : 2.856326268989149 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8540345976027397, + 2.853888280171184, + 2.8488649763600113 + ], + [ + 2.856326268989149, + 2.8520386968919302, + 2.8387283894408175 + ], + [ + 2.763057338121547, + 2.7617995407346037, + 2.7563458605676496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18422658410785747, + "scoreError" : 0.025242427508284763, + "scoreConfidence" : [ + 0.1589841565995727, + 0.20946901161614223 + ], + "scorePercentiles" : { + "0.0" : 0.1730692323907099, + "50.0" : 0.1752739016387696, + "90.0" : 0.20461711738587768, + "95.0" : 0.20461711738587768, + "99.0" : 0.20461711738587768, + "99.9" : 0.20461711738587768, + "99.99" : 0.20461711738587768, + "99.999" : 0.20461711738587768, + "99.9999" : 0.20461711738587768, + "100.0" : 0.20461711738587768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1732926723621051, + 0.1730692323907099, + 0.17307003277894117 + ], + [ + 0.1751855069546633, + 0.17550739095105214, + 0.1752739016387696 + ], + [ + 0.20461711738587768, + 0.2041418652295507, + 0.20388153727904748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3313797971859773, + "scoreError" : 0.020569230998265856, + "scoreConfidence" : [ + 0.31081056618771147, + 0.3519490281842432 + ], + "scorePercentiles" : { + "0.0" : 0.3170424942616194, + "50.0" : 0.33000916014916015, + "90.0" : 0.3460290239100346, + "95.0" : 0.3460290239100346, + "99.0" : 0.3460290239100346, + "99.9" : 0.3460290239100346, + "99.99" : 0.3460290239100346, + "99.999" : 0.3460290239100346, + "99.9999" : 0.3460290239100346, + "100.0" : 0.3460290239100346 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33180670217989977, + 0.3296485476661392, + 0.33000916014916015 + ], + [ + 0.31890494929523566, + 0.3172751786541451, + 0.3170424942616194 + ], + [ + 0.3460290239100346, + 0.34592098360372203, + 0.3457811349538398 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1549902340662419, + "scoreError" : 0.003544496616706501, + "scoreConfidence" : [ + 0.1514457374495354, + 0.1585347306829484 + ], + "scorePercentiles" : { + "0.0" : 0.15323426649913424, + "50.0" : 0.15390085390439842, + "90.0" : 0.15797860720999668, + "95.0" : 0.15797860720999668, + "99.0" : 0.15797860720999668, + "99.9" : 0.15797860720999668, + "99.99" : 0.15797860720999668, + "99.999" : 0.15797860720999668, + "99.9999" : 0.15797860720999668, + "100.0" : 0.15797860720999668 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15344080177374067, + 0.1533190904407819, + 0.15323426649913424 + ], + [ + 0.15797860720999668, + 0.15759360946167422, + 0.1577704870314275 + ], + [ + 0.15390085390439842, + 0.15396346709878064, + 0.15371092317624274 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.397097650470543, + "scoreError" : 0.024930142478511705, + "scoreConfidence" : [ + 0.3721675079920313, + 0.42202779294905474 + ], + "scorePercentiles" : { + "0.0" : 0.38140312475209764, + "50.0" : 0.39157604408943186, + "90.0" : 0.4164570443509766, + "95.0" : 0.4164570443509766, + "99.0" : 0.4164570443509766, + "99.9" : 0.4164570443509766, + "99.99" : 0.4164570443509766, + "99.999" : 0.4164570443509766, + "99.9999" : 0.4164570443509766, + "100.0" : 0.4164570443509766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.4161600940491053, + 0.41621297852416034, + 0.4164570443509766 + ], + [ + 0.39187239076766334, + 0.39157604408943186, + 0.3909906981272237 + ], + [ + 0.3859372891710404, + 0.38326919040318874, + 0.38140312475209764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15905829126011567, + "scoreError" : 0.00219234128808664, + "scoreConfidence" : [ + 0.15686594997202902, + 0.16125063254820232 + ], + "scorePercentiles" : { + "0.0" : 0.1576184559467894, + "50.0" : 0.15896080007947863, + "90.0" : 0.1610654456255637, + "95.0" : 0.1610654456255637, + "99.0" : 0.1610654456255637, + "99.9" : 0.1610654456255637, + "99.99" : 0.1610654456255637, + "99.999" : 0.1610654456255637, + "99.9999" : 0.1610654456255637, + "100.0" : 0.1610654456255637 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15821193833059105, + 0.1578200735433369, + 0.1576240174644957 + ], + [ + 0.16021311116985484, + 0.15896080007947863, + 0.1576184559467894 + ], + [ + 0.1610654456255637, + 0.16019364413866016, + 0.15981713504227063 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047881073265585855, + "scoreError" : 7.391661947761921E-4, + "scoreConfidence" : [ + 0.04714190707080966, + 0.04862023946036205 + ], + "scorePercentiles" : { + "0.0" : 0.04747618604695326, + "50.0" : 0.04758646360404859, + "90.0" : 0.04868108797986584, + "95.0" : 0.04868108797986584, + "99.0" : 0.04868108797986584, + "99.9" : 0.04868108797986584, + "99.99" : 0.04868108797986584, + "99.999" : 0.04868108797986584, + "99.9999" : 0.04868108797986584, + "100.0" : 0.04868108797986584 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047553612824073194, + 0.04753731592858094, + 0.04747618604695326 + ], + [ + 0.04868108797986584, + 0.04828521061678561, + 0.048222274048105855 + ], + [ + 0.04805520271315781, + 0.04758646360404859, + 0.04753230562870153 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9271893.135588221, + "scoreError" : 226020.91233735438, + "scoreConfidence" : [ + 9045872.223250866, + 9497914.047925577 + ], + "scorePercentiles" : { + "0.0" : 9089321.821071753, + "50.0" : 9271490.395736793, + "90.0" : 9463506.104068117, + "95.0" : 9463506.104068117, + "99.0" : 9463506.104068117, + "99.9" : 9463506.104068117, + "99.99" : 9463506.104068117, + "99.999" : 9463506.104068117, + "99.9999" : 9463506.104068117, + "100.0" : 9463506.104068117 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9463506.104068117, + 9412204.553151459, + 9399670.632518796 + ], + [ + 9271490.395736793, + 9270540.29935125, + 9273005.521779425 + ], + [ + 9148431.066727605, + 9118867.825888788, + 9089321.821071753 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..fba2b47404 --- /dev/null +++ b/performance-results/2025-03-24T01:13:36Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4255027365084705, + "scoreError" : 0.015268297622684238, + "scoreConfidence" : [ + 3.4102344388857864, + 3.4407710341311546 + ], + "scorePercentiles" : { + "0.0" : 3.423680586656175, + "50.0" : 3.4247710163271283, + "90.0" : 3.42878832672345, + "95.0" : 3.42878832672345, + "99.0" : 3.42878832672345, + "99.9" : 3.42878832672345, + "99.99" : 3.42878832672345, + "99.999" : 3.42878832672345, + "99.9999" : 3.42878832672345, + "100.0" : 3.42878832672345 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4256547896178025, + 3.42878832672345 + ], + [ + 3.423680586656175, + 3.423887243036454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.72787103241473, + "scoreError" : 0.015311326619137618, + "scoreConfidence" : [ + 1.7125597057955924, + 1.7431823590338675 + ], + "scorePercentiles" : { + "0.0" : 1.7258301618950143, + "50.0" : 1.72761015824926, + "90.0" : 1.7304336512653857, + "95.0" : 1.7304336512653857, + "99.0" : 1.7304336512653857, + "99.9" : 1.7304336512653857, + "99.99" : 1.7304336512653857, + "99.999" : 1.7304336512653857, + "99.9999" : 1.7304336512653857, + "100.0" : 1.7304336512653857 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.729338528385661, + 1.7304336512653857 + ], + [ + 1.7258301618950143, + 1.725881788112859 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8675124306454595, + "scoreError" : 0.005320038114788069, + "scoreConfidence" : [ + 0.8621923925306714, + 0.8728324687602476 + ], + "scorePercentiles" : { + "0.0" : 0.8666706939441462, + "50.0" : 0.8675694953743074, + "90.0" : 0.8682400378890769, + "95.0" : 0.8682400378890769, + "99.0" : 0.8682400378890769, + "99.9" : 0.8682400378890769, + "99.99" : 0.8682400378890769, + "99.999" : 0.8682400378890769, + "99.9999" : 0.8682400378890769, + "100.0" : 0.8682400378890769 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8681975610402533, + 0.8669414297083615 + ], + [ + 0.8666706939441462, + 0.8682400378890769 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.08387646024225, + "scoreError" : 0.28169323607593694, + "scoreConfidence" : [ + 15.802183224166315, + 16.36556969631819 + ], + "scorePercentiles" : { + "0.0" : 15.857648305820325, + "50.0" : 16.169853409735502, + "90.0" : 16.220922945381865, + "95.0" : 16.220922945381865, + "99.0" : 16.220922945381865, + "99.9" : 16.220922945381865, + "99.99" : 16.220922945381865, + "99.999" : 16.220922945381865, + "99.9999" : 16.220922945381865, + "100.0" : 16.220922945381865 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.86268753833565, + 15.857648305820325, + 15.86481780525936 + ], + [ + 16.220922945381865, + 16.214595465849875, + 16.210400315425794 + ], + [ + 16.169747624196056, + 16.184214732175867, + 16.169853409735502 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2714.00827636627, + "scoreError" : 55.61639089855765, + "scoreConfidence" : [ + 2658.391885467712, + 2769.6246672648276 + ], + "scorePercentiles" : { + "0.0" : 2667.708875949212, + "50.0" : 2717.824085599261, + "90.0" : 2754.3955765089468, + "95.0" : 2754.3955765089468, + "99.0" : 2754.3955765089468, + "99.9" : 2754.3955765089468, + "99.99" : 2754.3955765089468, + "99.999" : 2754.3955765089468, + "99.9999" : 2754.3955765089468, + "100.0" : 2754.3955765089468 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2710.520618895013, + 2717.824085599261, + 2719.7067761834132 + ], + [ + 2683.136600437227, + 2674.865175131134, + 2667.708875949212 + ], + [ + 2749.5732786152225, + 2748.3434999769956, + 2754.3955765089468 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70426.43446172662, + "scoreError" : 903.3310026109199, + "scoreConfidence" : [ + 69523.1034591157, + 71329.76546433754 + ], + "scorePercentiles" : { + "0.0" : 69722.5379226521, + "50.0" : 70645.27630459232, + "90.0" : 70965.6169677315, + "95.0" : 70965.6169677315, + "99.0" : 70965.6169677315, + "99.9" : 70965.6169677315, + "99.99" : 70965.6169677315, + "99.999" : 70965.6169677315, + "99.9999" : 70965.6169677315, + "100.0" : 70965.6169677315 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69722.5379226521, + 69731.8772056881, + 69731.03011934547 + ], + [ + 70564.19048055039, + 70645.27630459232, + 70728.42014552624 + ], + [ + 70965.6169677315, + 70872.53267611962, + 70876.42833333378 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.15213022456425, + "scoreError" : 5.601239292143671, + "scoreConfidence" : [ + 341.5508909324206, + 352.7533695167079 + ], + "scorePercentiles" : { + "0.0" : 342.43002863553767, + "50.0" : 348.0046593211147, + "90.0" : 350.7291616178739, + "95.0" : 350.7291616178739, + "99.0" : 350.7291616178739, + "99.9" : 350.7291616178739, + "99.99" : 350.7291616178739, + "99.999" : 350.7291616178739, + "99.9999" : 350.7291616178739, + "100.0" : 350.7291616178739 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 350.6492554423494, + 350.7291616178739, + 349.088136414228 + ], + [ + 348.0046593211147, + 349.4400643546579, + 347.65661947655303 + ], + [ + 342.93217357156874, + 343.43907318719454, + 342.43002863553767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.225095253805, + "scoreError" : 2.632840318025602, + "scoreConfidence" : [ + 100.5922549357794, + 105.8579355718306 + ], + "scorePercentiles" : { + "0.0" : 101.82354108992503, + "50.0" : 102.27286704928098, + "90.0" : 105.37862607434907, + "95.0" : 105.37862607434907, + "99.0" : 105.37862607434907, + "99.9" : 105.37862607434907, + "99.99" : 105.37862607434907, + "99.999" : 105.37862607434907, + "99.9999" : 105.37862607434907, + "100.0" : 105.37862607434907 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.82354108992503, + 102.14092633561962, + 102.25810535530064 + ], + [ + 105.21616990044764, + 105.31650086545383, + 105.37862607434907 + ], + [ + 102.26552728272861, + 102.35359333113948, + 102.27286704928098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06230045880514185, + "scoreError" : 7.518182294873389E-4, + "scoreConfidence" : [ + 0.06154864057565451, + 0.06305227703462919 + ], + "scorePercentiles" : { + "0.0" : 0.06176947449890361, + "50.0" : 0.06223176112687626, + "90.0" : 0.06286822427938264, + "95.0" : 0.06286822427938264, + "99.0" : 0.06286822427938264, + "99.9" : 0.06286822427938264, + "99.99" : 0.06286822427938264, + "99.999" : 0.06286822427938264, + "99.9999" : 0.06286822427938264, + "100.0" : 0.06286822427938264 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06281667806351919, + 0.06284513343681657, + 0.06286822427938264 + ], + [ + 0.06177516175562145, + 0.0619247579401693, + 0.06176947449890361 + ], + [ + 0.06223176112687626, + 0.062192614485705226, + 0.06228032365928242 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.784185944753912E-4, + "scoreError" : 2.9961168533700172E-5, + "scoreConfidence" : [ + 3.4845742594169103E-4, + 4.083797630090914E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5462576541199346E-4, + "50.0" : 3.8776968823675393E-4, + "90.0" : 3.932338892053513E-4, + "95.0" : 3.932338892053513E-4, + "99.0" : 3.932338892053513E-4, + "99.9" : 3.932338892053513E-4, + "99.99" : 3.932338892053513E-4, + "99.999" : 3.932338892053513E-4, + "99.9999" : 3.932338892053513E-4, + "100.0" : 3.932338892053513E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.932338892053513E-4, + 3.921218514055642E-4, + 3.9255882731871754E-4 + ], + [ + 3.8776968823675393E-4, + 3.8844496690490987E-4, + 3.871850316723476E-4 + ], + [ + 3.548904501436881E-4, + 3.549368799791953E-4, + 3.5462576541199346E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014112566362291336, + "scoreError" : 1.1457189642839478E-4, + "scoreConfidence" : [ + 0.013997994465862942, + 0.01422713825871973 + ], + "scorePercentiles" : { + "0.0" : 0.014037298399628298, + "50.0" : 0.014102882472316397, + "90.0" : 0.014198602709345268, + "95.0" : 0.014198602709345268, + "99.0" : 0.014198602709345268, + "99.9" : 0.014198602709345268, + "99.99" : 0.014198602709345268, + "99.999" : 0.014198602709345268, + "99.9999" : 0.014198602709345268, + "100.0" : 0.014198602709345268 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01419368768628965, + 0.01419327041108878, + 0.014198602709345268 + ], + [ + 0.014111649840610857, + 0.014102882472316397, + 0.014096726636716178 + ], + [ + 0.014038897584779789, + 0.014040081519846797, + 0.014037298399628298 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.98631598312936, + "scoreError" : 0.008020690408102148, + "scoreConfidence" : [ + 0.9782952927212578, + 0.9943366735374621 + ], + "scorePercentiles" : { + "0.0" : 0.978657759761229, + "50.0" : 0.9860868756655492, + "90.0" : 0.9935871373075013, + "95.0" : 0.9935871373075013, + "99.0" : 0.9935871373075013, + "99.9" : 0.9935871373075013, + "99.99" : 0.9935871373075013, + "99.999" : 0.9935871373075013, + "99.9999" : 0.9935871373075013, + "100.0" : 0.9935871373075013 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9887167659911024, + 0.9916675884977689, + 0.9851070933806146 + ], + [ + 0.9855722197693899, + 0.9869512607322609, + 0.9860868756655492 + ], + [ + 0.978657759761229, + 0.9804971470588235, + 0.9935871373075013 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01313144176204755, + "scoreError" : 5.18352424928154E-4, + "scoreConfidence" : [ + 0.012613089337119396, + 0.013649794186975706 + ], + "scorePercentiles" : { + "0.0" : 0.012891570798741814, + "50.0" : 0.013147115764235705, + "90.0" : 0.013308197912812965, + "95.0" : 0.013308197912812965, + "99.0" : 0.013308197912812965, + "99.9" : 0.013308197912812965, + "99.99" : 0.013308197912812965, + "99.999" : 0.013308197912812965, + "99.9999" : 0.013308197912812965, + "100.0" : 0.013308197912812965 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013296880921925651, + 0.013308197912812965, + 0.013281904583173956 + ], + [ + 0.012891570798741814, + 0.012997769410333461, + 0.013012326945297454 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7079852049983484, + "scoreError" : 0.11627454463127139, + "scoreConfidence" : [ + 3.591710660367077, + 3.82425974962962 + ], + "scorePercentiles" : { + "0.0" : 3.6668081752199413, + "50.0" : 3.695892137459865, + "90.0" : 3.7589851232156275, + "95.0" : 3.7589851232156275, + "99.0" : 3.7589851232156275, + "99.9" : 3.7589851232156275, + "99.99" : 3.7589851232156275, + "99.999" : 3.7589851232156275, + "99.9999" : 3.7589851232156275, + "100.0" : 3.7589851232156275 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6668081752199413, + 3.6728324199706313, + 3.6832431259204714 + ], + [ + 3.7085411489992586, + 3.7589851232156275, + 3.7575012366641625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8926147839484724, + "scoreError" : 0.09645934758523785, + "scoreConfidence" : [ + 2.7961554363632346, + 2.98907413153371 + ], + "scorePercentiles" : { + "0.0" : 2.8026243536004483, + "50.0" : 2.921494793456033, + "90.0" : 2.9457562176730487, + "95.0" : 2.9457562176730487, + "99.0" : 2.9457562176730487, + "99.9" : 2.9457562176730487, + "99.99" : 2.9457562176730487, + "99.999" : 2.9457562176730487, + "99.9999" : 2.9457562176730487, + "100.0" : 2.9457562176730487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9457562176730487, + 2.93675267498532, + 2.921494793456033 + ], + [ + 2.9296250128881076, + 2.927352605209248, + 2.920907433995327 + ], + [ + 2.823672700169396, + 2.825347263559322, + 2.8026243536004483 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18133326474609845, + "scoreError" : 0.01346855229269323, + "scoreConfidence" : [ + 0.16786471245340523, + 0.19480181703879168 + ], + "scorePercentiles" : { + "0.0" : 0.1740499499269006, + "50.0" : 0.17767172076041574, + "90.0" : 0.1920147274821912, + "95.0" : 0.1920147274821912, + "99.0" : 0.1920147274821912, + "99.9" : 0.1920147274821912, + "99.99" : 0.1920147274821912, + "99.999" : 0.1920147274821912, + "99.9999" : 0.1920147274821912, + "100.0" : 0.1920147274821912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17821891932207015, + 0.17765134902559912, + 0.17767172076041574 + ], + [ + 0.1743843624315558, + 0.17456054072406088, + 0.1740499499269006 + ], + [ + 0.1920147274821912, + 0.19182560413949207, + 0.19162220890260026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3367788147831052, + "scoreError" : 0.02374465315352348, + "scoreConfidence" : [ + 0.3130341616295817, + 0.36052346793662865 + ], + "scorePercentiles" : { + "0.0" : 0.32071956720438727, + "50.0" : 0.33412888810184105, + "90.0" : 0.35441121898146505, + "95.0" : 0.35441121898146505, + "99.0" : 0.35441121898146505, + "99.9" : 0.35441121898146505, + "99.99" : 0.35441121898146505, + "99.999" : 0.35441121898146505, + "99.9999" : 0.35441121898146505, + "100.0" : 0.35441121898146505 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.35441121898146505, + 0.3540245686975608, + 0.35409223429643794 + ], + [ + 0.32071956720438727, + 0.32220562051744694, + 0.3226218893118689 + ], + [ + 0.33409698326206066, + 0.33470836267487786, + 0.33412888810184105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16858839828710112, + "scoreError" : 0.010531615699214387, + "scoreConfidence" : [ + 0.15805678258788675, + 0.1791200139863155 + ], + "scorePercentiles" : { + "0.0" : 0.16052026189826482, + "50.0" : 0.17016409602164442, + "90.0" : 0.17525053695979811, + "95.0" : 0.17525053695979811, + "99.0" : 0.17525053695979811, + "99.9" : 0.17525053695979811, + "99.99" : 0.17525053695979811, + "99.999" : 0.17525053695979811, + "99.9999" : 0.17525053695979811, + "100.0" : 0.17525053695979811 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17016409602164442, + 0.17025412281866625, + 0.17014017352320676 + ], + [ + 0.17525053695979811, + 0.17473462677569848, + 0.17468118482741754 + ], + [ + 0.16098750687401397, + 0.16052026189826482, + 0.16056307488519958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39153306316745484, + "scoreError" : 0.011987780396202052, + "scoreConfidence" : [ + 0.37954528277125277, + 0.4035208435636569 + ], + "scorePercentiles" : { + "0.0" : 0.3824763335883118, + "50.0" : 0.3891833180261519, + "90.0" : 0.405713951357053, + "95.0" : 0.405713951357053, + "99.0" : 0.405713951357053, + "99.9" : 0.405713951357053, + "99.99" : 0.405713951357053, + "99.999" : 0.405713951357053, + "99.9999" : 0.405713951357053, + "100.0" : 0.405713951357053 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.405713951357053, + 0.39427057364768964, + 0.39585323267228756 + ], + [ + 0.3959599306303453, + 0.3891833180261519, + 0.3883369830304442 + ], + [ + 0.3868123861834217, + 0.38519085937138897, + 0.3824763335883118 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15836425098734164, + "scoreError" : 0.001008748099331414, + "scoreConfidence" : [ + 0.15735550288801023, + 0.15937299908667305 + ], + "scorePercentiles" : { + "0.0" : 0.1578140798838512, + "50.0" : 0.15816451689942587, + "90.0" : 0.159676068308105, + "95.0" : 0.159676068308105, + "99.0" : 0.159676068308105, + "99.9" : 0.159676068308105, + "99.99" : 0.159676068308105, + "99.999" : 0.159676068308105, + "99.9999" : 0.159676068308105, + "100.0" : 0.159676068308105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15865113410435802, + 0.15809743934675036, + 0.15790347873869037 + ], + [ + 0.15876646168256942, + 0.159676068308105, + 0.1583807269876465 + ], + [ + 0.1578140798838512, + 0.15782435293467797, + 0.15816451689942587 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04791337412082488, + "scoreError" : 6.092732015952206E-4, + "scoreConfidence" : [ + 0.04730410091922966, + 0.0485226473224201 + ], + "scorePercentiles" : { + "0.0" : 0.04742956409538896, + "50.0" : 0.04789460816111497, + "90.0" : 0.04834787348491808, + "95.0" : 0.04834787348491808, + "99.0" : 0.04834787348491808, + "99.9" : 0.04834787348491808, + "99.99" : 0.04834787348491808, + "99.999" : 0.04834787348491808, + "99.9999" : 0.04834787348491808, + "100.0" : 0.04834787348491808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04790588642123165, + 0.04789460816111497, + 0.047890905550952774 + ], + [ + 0.0483252757449235, + 0.048341155593475967, + 0.04834787348491808 + ], + [ + 0.04753277148452354, + 0.04755232655089445, + 0.04742956409538896 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9462755.68721248, + "scoreError" : 319695.88956154167, + "scoreConfidence" : [ + 9143059.797650939, + 9782451.576774022 + ], + "scorePercentiles" : { + "0.0" : 9210562.837016575, + "50.0" : 9569353.49043977, + "90.0" : 9645247.50819672, + "95.0" : 9645247.50819672, + "99.0" : 9645247.50819672, + "99.9" : 9645247.50819672, + "99.99" : 9645247.50819672, + "99.999" : 9645247.50819672, + "99.9999" : 9645247.50819672, + "100.0" : 9645247.50819672 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9609886.60518732, + 9569353.49043977, + 9552628.962750716 + ], + [ + 9645247.50819672, + 9577503.71291866, + 9575471.54354067 + ], + [ + 9212506.072744016, + 9211640.452117864, + 9210562.837016575 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 3298174d60b940a6f55100581db9a99057a91903 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 01:14:46 +0000 Subject: [PATCH 271/345] Add performance results for commit ae7279fa86294a4250c1df7bbf056a940e80459c --- ...6294a4250c1df7bbf056a940e80459c-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json diff --git a/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..ad9d1d5a8c --- /dev/null +++ b/performance-results/2025-03-24T01:14:33Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.40858461951776, + "scoreError" : 0.02823504274507638, + "scoreConfidence" : [ + 3.3803495767726837, + 3.4368196622628364 + ], + "scorePercentiles" : { + "0.0" : 3.403842617984939, + "50.0" : 3.408227397148522, + "90.0" : 3.414041065789058, + "95.0" : 3.414041065789058, + "99.0" : 3.414041065789058, + "99.9" : 3.414041065789058, + "99.99" : 3.414041065789058, + "99.999" : 3.414041065789058, + "99.9999" : 3.414041065789058, + "100.0" : 3.414041065789058 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.403842617984939, + 3.409770199303155 + ], + [ + 3.406684594993889, + 3.414041065789058 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.719980936295944, + "scoreError" : 0.023474343074217335, + "scoreConfidence" : [ + 1.6965065932217267, + 1.7434552793701612 + ], + "scorePercentiles" : { + "0.0" : 1.7165348324954257, + "50.0" : 1.7198702033470656, + "90.0" : 1.7236485059942186, + "95.0" : 1.7236485059942186, + "99.0" : 1.7236485059942186, + "99.9" : 1.7236485059942186, + "99.99" : 1.7236485059942186, + "99.999" : 1.7236485059942186, + "99.9999" : 1.7236485059942186, + "100.0" : 1.7236485059942186 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.722538337715663, + 1.7236485059942186 + ], + [ + 1.7172020689784684, + 1.7165348324954257 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662508137633711, + "scoreError" : 0.006600936431906626, + "scoreConfidence" : [ + 0.8596498773314645, + 0.8728517501952777 + ], + "scorePercentiles" : { + "0.0" : 0.8649383265860422, + "50.0" : 0.8664958062991177, + "90.0" : 0.8670733158692063, + "95.0" : 0.8670733158692063, + "99.0" : 0.8670733158692063, + "99.9" : 0.8670733158692063, + "99.99" : 0.8670733158692063, + "99.999" : 0.8670733158692063, + "99.9999" : 0.8670733158692063, + "100.0" : 0.8670733158692063 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8670486287680078, + 0.8670733158692063 + ], + [ + 0.8649383265860422, + 0.8659429838302277 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.77838375496337, + "scoreError" : 0.236087536028889, + "scoreConfidence" : [ + 15.542296218934482, + 16.014471290992258 + ], + "scorePercentiles" : { + "0.0" : 15.5961961951466, + "50.0" : 15.711442912088485, + "90.0" : 15.972625063204788, + "95.0" : 15.972625063204788, + "99.0" : 15.972625063204788, + "99.9" : 15.972625063204788, + "99.99" : 15.972625063204788, + "99.999" : 15.972625063204788, + "99.9999" : 15.972625063204788, + "100.0" : 15.972625063204788 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.923619257367257, + 15.688122136687152, + 15.861394961333474 + ], + [ + 15.917691639008215, + 15.972625063204788, + 15.700576098794429 + ], + [ + 15.63378553103995, + 15.5961961951466, + 15.711442912088485 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2568.2740998550807, + "scoreError" : 97.78617105196564, + "scoreConfidence" : [ + 2470.487928803115, + 2666.0602709070463 + ], + "scorePercentiles" : { + "0.0" : 2475.227524256153, + "50.0" : 2577.6124597652006, + "90.0" : 2636.058733746114, + "95.0" : 2636.058733746114, + "99.0" : 2636.058733746114, + "99.9" : 2636.058733746114, + "99.99" : 2636.058733746114, + "99.999" : 2636.058733746114, + "99.9999" : 2636.058733746114, + "100.0" : 2636.058733746114 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2510.514525115231, + 2475.227524256153, + 2512.7676390395122 + ], + [ + 2618.47099094829, + 2552.117579354896, + 2612.291342265198 + ], + [ + 2636.058733746114, + 2577.6124597652006, + 2619.406104205128 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69829.0263668477, + "scoreError" : 1060.1346840457486, + "scoreConfidence" : [ + 68768.89168280194, + 70889.16105089345 + ], + "scorePercentiles" : { + "0.0" : 68925.80132472458, + "50.0" : 69768.77289161518, + "90.0" : 70700.90064854718, + "95.0" : 70700.90064854718, + "99.0" : 70700.90064854718, + "99.9" : 70700.90064854718, + "99.99" : 70700.90064854718, + "99.999" : 70700.90064854718, + "99.9999" : 70700.90064854718, + "100.0" : 70700.90064854718 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69506.85659733678, + 70028.64672895106, + 69768.77289161518 + ], + [ + 70700.90064854718, + 70253.3941584423, + 70621.94107476607 + ], + [ + 69600.20646558938, + 68925.80132472458, + 69054.71741165676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.9282095584336, + "scoreError" : 2.6303078428595033, + "scoreConfidence" : [ + 340.2979017155741, + 345.5585174012931 + ], + "scorePercentiles" : { + "0.0" : 339.7323315026931, + "50.0" : 343.5420116887202, + "90.0" : 345.02858681117044, + "95.0" : 345.02858681117044, + "99.0" : 345.02858681117044, + "99.9" : 345.02858681117044, + "99.99" : 345.02858681117044, + "99.999" : 345.02858681117044, + "99.9999" : 345.02858681117044, + "100.0" : 345.02858681117044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 345.02858681117044, + 343.5420116887202, + 342.0739074233191 + ], + [ + 343.5761532037889, + 341.92689876445934, + 339.7323315026931 + ], + [ + 342.55961907210377, + 344.2673861390148, + 343.6469914206324 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 106.48756562624698, + "scoreError" : 1.0958141946055548, + "scoreConfidence" : [ + 105.39175143164142, + 107.58337982085253 + ], + "scorePercentiles" : { + "0.0" : 105.49245380830173, + "50.0" : 106.5276062463189, + "90.0" : 107.65841429984553, + "95.0" : 107.65841429984553, + "99.0" : 107.65841429984553, + "99.9" : 107.65841429984553, + "99.99" : 107.65841429984553, + "99.999" : 107.65841429984553, + "99.9999" : 107.65841429984553, + "100.0" : 107.65841429984553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.77795669889201, + 106.85071095308024, + 106.68181660710022 + ], + [ + 106.35814726073099, + 105.49245380830173, + 106.93707535894518 + ], + [ + 106.5276062463189, + 106.1039094030079, + 107.65841429984553 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06297848004678867, + "scoreError" : 5.894937036759589E-4, + "scoreConfidence" : [ + 0.06238898634311271, + 0.06356797375046463 + ], + "scorePercentiles" : { + "0.0" : 0.06252654531244138, + "50.0" : 0.06302387430044368, + "90.0" : 0.06367914714722364, + "95.0" : 0.06367914714722364, + "99.0" : 0.06367914714722364, + "99.9" : 0.06367914714722364, + "99.99" : 0.06367914714722364, + "99.999" : 0.06367914714722364, + "99.9999" : 0.06367914714722364, + "100.0" : 0.06367914714722364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06319152964594221, + 0.06269488202250713, + 0.06314516624675595 + ], + [ + 0.06302387430044368, + 0.062759557803704, + 0.06308125920342147 + ], + [ + 0.06367914714722364, + 0.06270435873865852, + 0.06252654531244138 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.761317551796573E-4, + "scoreError" : 1.2845499363296883E-5, + "scoreConfidence" : [ + 3.632862558163604E-4, + 3.889772545429542E-4 + ], + "scorePercentiles" : { + "0.0" : 3.654097590578796E-4, + "50.0" : 3.7901738871717514E-4, + "90.0" : 3.834261705410972E-4, + "95.0" : 3.834261705410972E-4, + "99.0" : 3.834261705410972E-4, + "99.9" : 3.834261705410972E-4, + "99.99" : 3.834261705410972E-4, + "99.999" : 3.834261705410972E-4, + "99.9999" : 3.834261705410972E-4, + "100.0" : 3.834261705410972E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7850269643764254E-4, + 3.7901738871717514E-4, + 3.834261705410972E-4 + ], + [ + 3.6558843802575615E-4, + 3.677787138036308E-4, + 3.654097590578796E-4 + ], + [ + 3.828899716507752E-4, + 3.796131917762167E-4, + 3.829594666067419E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014172803140729643, + "scoreError" : 1.0782891474152387E-4, + "scoreConfidence" : [ + 0.014064974225988118, + 0.014280632055471167 + ], + "scorePercentiles" : { + "0.0" : 0.014081310722784686, + "50.0" : 0.01416622602502008, + "90.0" : 0.014286797526133748, + "95.0" : 0.014286797526133748, + "99.0" : 0.014286797526133748, + "99.9" : 0.014286797526133748, + "99.99" : 0.014286797526133748, + "99.999" : 0.014286797526133748, + "99.9999" : 0.014286797526133748, + "100.0" : 0.014286797526133748 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014178331408884037, + 0.014115230361415172, + 0.014081310722784686 + ], + [ + 0.01416622602502008, + 0.014132456071226682, + 0.014158328896641263 + ], + [ + 0.014286797526133748, + 0.014185009923713932, + 0.014251537330747185 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9905397184409652, + "scoreError" : 0.02238876384346547, + "scoreConfidence" : [ + 0.9681509545974998, + 1.0129284822844307 + ], + "scorePercentiles" : { + "0.0" : 0.9773580523846755, + "50.0" : 0.9843310696850394, + "90.0" : 1.0116134580214444, + "95.0" : 1.0116134580214444, + "99.0" : 1.0116134580214444, + "99.9" : 1.0116134580214444, + "99.99" : 1.0116134580214444, + "99.999" : 1.0116134580214444, + "99.9999" : 1.0116134580214444, + "100.0" : 1.0116134580214444 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9831717689736532, + 0.9843310696850394, + 0.9784792103512376 + ], + [ + 1.010704397877716, + 1.0116134580214444, + 0.9998777521495701 + ], + [ + 0.9773580523846755, + 0.9853596882451473, + 0.9839620682802046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013155411922502263, + "scoreError" : 2.795852915008635E-4, + "scoreConfidence" : [ + 0.012875826631001399, + 0.013434997214003127 + ], + "scorePercentiles" : { + "0.0" : 0.013002453662963657, + "50.0" : 0.01316711428100242, + "90.0" : 0.01327616876247929, + "95.0" : 0.01327616876247929, + "99.0" : 0.01327616876247929, + "99.9" : 0.01327616876247929, + "99.99" : 0.01327616876247929, + "99.999" : 0.01327616876247929, + "99.9999" : 0.01327616876247929, + "100.0" : 0.01327616876247929 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013121031901689159, + 0.013219664486364297, + 0.01327616876247929 + ], + [ + 0.013002453662963657, + 0.013099956061201498, + 0.013213196660315682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.750332902092968, + "scoreError" : 0.1674325694384914, + "scoreConfidence" : [ + 3.582900332654477, + 3.9177654715314594 + ], + "scorePercentiles" : { + "0.0" : 3.659013118507681, + "50.0" : 3.746797678884942, + "90.0" : 3.840637273425499, + "95.0" : 3.840637273425499, + "99.0" : 3.840637273425499, + "99.9" : 3.840637273425499, + "99.99" : 3.840637273425499, + "99.999" : 3.840637273425499, + "99.9999" : 3.840637273425499, + "100.0" : 3.840637273425499 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.840637273425499, + 3.751801334583646, + 3.779107640483384 + ], + [ + 3.659013118507681, + 3.7296440223713647, + 3.741794023186238 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8548886386460897, + "scoreError" : 0.03636649593192445, + "scoreConfidence" : [ + 2.818522142714165, + 2.891255134578014 + ], + "scorePercentiles" : { + "0.0" : 2.8271100124364046, + "50.0" : 2.8555864614505997, + "90.0" : 2.880886245391705, + "95.0" : 2.880886245391705, + "99.0" : 2.880886245391705, + "99.9" : 2.880886245391705, + "99.99" : 2.880886245391705, + "99.999" : 2.880886245391705, + "99.9999" : 2.880886245391705, + "100.0" : 2.880886245391705 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.868786039586919, + 2.880886245391705, + 2.8482905326117915 + ], + [ + 2.827418055414193, + 2.8798364851713214, + 2.8555864614505997 + ], + [ + 2.871456194946885, + 2.8271100124364046, + 2.834627720804989 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17971936084685597, + "scoreError" : 0.016517911751403654, + "scoreConfidence" : [ + 0.1632014490954523, + 0.19623727259825963 + ], + "scorePercentiles" : { + "0.0" : 0.16987528725283685, + "50.0" : 0.17653581038713437, + "90.0" : 0.19261740506182826, + "95.0" : 0.19261740506182826, + "99.0" : 0.19261740506182826, + "99.9" : 0.19261740506182826, + "99.99" : 0.19261740506182826, + "99.999" : 0.19261740506182826, + "99.9999" : 0.19261740506182826, + "100.0" : 0.19261740506182826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19216519448501154, + 0.19261740506182826, + 0.19231822860494635 + ], + [ + 0.17595648287086726, + 0.1765369575793952, + 0.17653581038713437 + ], + [ + 0.16987528725283685, + 0.17103812304166383, + 0.17043075833802002 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33498656189355885, + "scoreError" : 0.00339606700371187, + "scoreConfidence" : [ + 0.331590494889847, + 0.3383826288972707 + ], + "scorePercentiles" : { + "0.0" : 0.3326694837829746, + "50.0" : 0.3347886653610525, + "90.0" : 0.33945752532247114, + "95.0" : 0.33945752532247114, + "99.0" : 0.33945752532247114, + "99.9" : 0.33945752532247114, + "99.99" : 0.33945752532247114, + "99.999" : 0.33945752532247114, + "99.9999" : 0.33945752532247114, + "100.0" : 0.33945752532247114 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3366052745296038, + 0.3343679756921225, + 0.33945752532247114 + ], + [ + 0.33349957656906554, + 0.33495701289523044, + 0.3349827138311057 + ], + [ + 0.3347886653610525, + 0.3326694837829746, + 0.33355082905840366 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16055367098210246, + "scoreError" : 0.010627721830330528, + "scoreConfidence" : [ + 0.14992594915177193, + 0.171181392812433 + ], + "scorePercentiles" : { + "0.0" : 0.15152957390711416, + "50.0" : 0.1632057275353331, + "90.0" : 0.16693598417467947, + "95.0" : 0.16693598417467947, + "99.0" : 0.16693598417467947, + "99.9" : 0.16693598417467947, + "99.99" : 0.16693598417467947, + "99.999" : 0.16693598417467947, + "99.9999" : 0.16693598417467947, + "100.0" : 0.16693598417467947 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1535686558915217, + 0.15192134652487657, + 0.15152957390711416 + ], + [ + 0.16276372596474667, + 0.1632057275353331, + 0.1637623504298698 + ], + [ + 0.16609101062964007, + 0.16693598417467947, + 0.16520466378114054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39828964003913936, + "scoreError" : 0.00934466580815901, + "scoreConfidence" : [ + 0.38894497423098034, + 0.4076343058472984 + ], + "scorePercentiles" : { + "0.0" : 0.3920836011918764, + "50.0" : 0.3969977016673283, + "90.0" : 0.40858754435137895, + "95.0" : 0.40858754435137895, + "99.0" : 0.40858754435137895, + "99.9" : 0.40858754435137895, + "99.99" : 0.40858754435137895, + "99.999" : 0.40858754435137895, + "99.9999" : 0.40858754435137895, + "100.0" : 0.40858754435137895 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3922899960379727, + 0.3920836011918764, + 0.39326324503519605 + ], + [ + 0.40858754435137895, + 0.3969044770201619, + 0.3969977016673283 + ], + [ + 0.4036797789932588, + 0.4003199688563308, + 0.40048044719875053 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16041917557422003, + "scoreError" : 0.001737144665873153, + "scoreConfidence" : [ + 0.15868203090834687, + 0.1621563202400932 + ], + "scorePercentiles" : { + "0.0" : 0.15906686147165489, + "50.0" : 0.16033186659077792, + "90.0" : 0.1626990494265029, + "95.0" : 0.1626990494265029, + "99.0" : 0.1626990494265029, + "99.9" : 0.1626990494265029, + "99.99" : 0.1626990494265029, + "99.999" : 0.1626990494265029, + "99.9999" : 0.1626990494265029, + "100.0" : 0.1626990494265029 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1626990494265029, + 0.16033186659077792, + 0.16045412686926386 + ], + [ + 0.1595371675648098, + 0.16000919154212934, + 0.15906686147165489 + ], + [ + 0.16053158194076572, + 0.16107567585851426, + 0.16006705890356143 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04807424698073026, + "scoreError" : 5.436220780624052E-4, + "scoreConfidence" : [ + 0.04753062490266786, + 0.048617869058792666 + ], + "scorePercentiles" : { + "0.0" : 0.04746269952775339, + "50.0" : 0.048026309701617975, + "90.0" : 0.048588726259887666, + "95.0" : 0.048588726259887666, + "99.0" : 0.048588726259887666, + "99.9" : 0.048588726259887666, + "99.99" : 0.048588726259887666, + "99.999" : 0.048588726259887666, + "99.9999" : 0.048588726259887666, + "100.0" : 0.048588726259887666 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048350908289173405, + 0.048588726259887666, + 0.048329807225189085 + ], + [ + 0.0480161819836171, + 0.047919599771906116, + 0.04746269952775339 + ], + [ + 0.04790992621054094, + 0.048026309701617975, + 0.048064063856886746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9676391.013650784, + "scoreError" : 287328.6480368536, + "scoreConfidence" : [ + 9389062.36561393, + 9963719.661687639 + ], + "scorePercentiles" : { + "0.0" : 9478153.125, + "50.0" : 9586281.842911877, + "90.0" : 9966990.433266932, + "95.0" : 9966990.433266932, + "99.0" : 9966990.433266932, + "99.9" : 9966990.433266932, + "99.99" : 9966990.433266932, + "99.999" : 9966990.433266932, + "99.9999" : 9966990.433266932, + "100.0" : 9966990.433266932 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9558136.078319008, + 9557984.59503343, + 9478153.125 + ], + [ + 9966990.433266932, + 9883363.479249012, + 9822402.113837095 + ], + [ + 9586281.842911877, + 9579493.921455938, + 9654713.533783784 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 3fa0ae7404372d87411a1fd780b0740f2de03a26 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 01:15:11 +0000 Subject: [PATCH 272/345] Add performance results for commit ae7279fa86294a4250c1df7bbf056a940e80459c --- ...6294a4250c1df7bbf056a940e80459c-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json diff --git a/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..c247dd7f92 --- /dev/null +++ b/performance-results/2025-03-24T01:14:54Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.416841228362352, + "scoreError" : 0.046224539933131144, + "scoreConfidence" : [ + 3.370616688429221, + 3.463065768295483 + ], + "scorePercentiles" : { + "0.0" : 3.4104833073322536, + "50.0" : 3.4149070097262744, + "90.0" : 3.4270675866646054, + "95.0" : 3.4270675866646054, + "99.0" : 3.4270675866646054, + "99.9" : 3.4270675866646054, + "99.99" : 3.4270675866646054, + "99.999" : 3.4270675866646054, + "99.9999" : 3.4270675866646054, + "100.0" : 3.4270675866646054 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4104833073322536, + 3.415622928858356 + ], + [ + 3.414191090594193, + 3.4270675866646054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7256805880386656, + "scoreError" : 0.008670416239197185, + "scoreConfidence" : [ + 1.7170101717994684, + 1.734351004277863 + ], + "scorePercentiles" : { + "0.0" : 1.7238767187983217, + "50.0" : 1.7258640396415021, + "90.0" : 1.7271175540733374, + "95.0" : 1.7271175540733374, + "99.0" : 1.7271175540733374, + "99.9" : 1.7271175540733374, + "99.99" : 1.7271175540733374, + "99.999" : 1.7271175540733374, + "99.9999" : 1.7271175540733374, + "100.0" : 1.7271175540733374 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7257779960512811, + 1.7238767187983217 + ], + [ + 1.725950083231723, + 1.7271175540733374 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8668202231331765, + "scoreError" : 0.004831866423434959, + "scoreConfidence" : [ + 0.8619883567097416, + 0.8716520895566114 + ], + "scorePercentiles" : { + "0.0" : 0.866215610918664, + "50.0" : 0.8666131123079148, + "90.0" : 0.8678390569982123, + "95.0" : 0.8678390569982123, + "99.0" : 0.8678390569982123, + "99.9" : 0.8678390569982123, + "99.99" : 0.8678390569982123, + "99.999" : 0.8678390569982123, + "99.9999" : 0.8678390569982123, + "100.0" : 0.8678390569982123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8663065488930909, + 0.8678390569982123 + ], + [ + 0.866215610918664, + 0.8669196757227386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.31640431452635, + "scoreError" : 0.3186289582091417, + "scoreConfidence" : [ + 15.997775356317206, + 16.63503327273549 + ], + "scorePercentiles" : { + "0.0" : 16.01931994704482, + "50.0" : 16.40630490278462, + "90.0" : 16.49237024973776, + "95.0" : 16.49237024973776, + "99.0" : 16.49237024973776, + "99.9" : 16.49237024973776, + "99.99" : 16.49237024973776, + "99.999" : 16.49237024973776, + "99.9999" : 16.49237024973776, + "100.0" : 16.49237024973776 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.40630490278462, + 16.401037480073782, + 16.411364862887655 + ], + [ + 16.01931994704482, + 16.08726384861906, + 16.099568628269374 + ], + [ + 16.452416990458655, + 16.49237024973776, + 16.47799192086142 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2809.778181329612, + "scoreError" : 90.87641938701525, + "scoreConfidence" : [ + 2718.9017619425967, + 2900.654600716627 + ], + "scorePercentiles" : { + "0.0" : 2751.543366182571, + "50.0" : 2799.350960371689, + "90.0" : 2882.7440630130905, + "95.0" : 2882.7440630130905, + "99.0" : 2882.7440630130905, + "99.9" : 2882.7440630130905, + "99.99" : 2882.7440630130905, + "99.999" : 2882.7440630130905, + "99.9999" : 2882.7440630130905, + "100.0" : 2882.7440630130905 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2751.543366182571, + 2754.397261861922, + 2753.9996216878067 + ], + [ + 2873.0058513045706, + 2882.7440630130905, + 2874.397658886027 + ], + [ + 2799.6827906200256, + 2798.8820580388037, + 2799.350960371689 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69538.89231546373, + "scoreError" : 2700.454110688654, + "scoreConfidence" : [ + 66838.43820477507, + 72239.34642615239 + ], + "scorePercentiles" : { + "0.0" : 67053.05858762588, + "50.0" : 70502.74638799811, + "90.0" : 70713.11228173104, + "95.0" : 70713.11228173104, + "99.0" : 70713.11228173104, + "99.9" : 70713.11228173104, + "99.99" : 70713.11228173104, + "99.999" : 70713.11228173104, + "99.9999" : 70713.11228173104, + "100.0" : 70713.11228173104 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 67586.91728942825, + 67053.05858762588, + 67587.19740878949 + ], + [ + 70692.91981659395, + 70713.11228173104, + 70694.96634571847 + ], + [ + 70502.74638799811, + 70522.83979766157, + 70496.2729236268 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.46608040287845, + "scoreError" : 2.1052187242826883, + "scoreConfidence" : [ + 351.36086167859577, + 355.5712991271611 + ], + "scorePercentiles" : { + "0.0" : 351.46498132968077, + "50.0" : 353.7673749359021, + "90.0" : 355.081588309483, + "95.0" : 355.081588309483, + "99.0" : 355.081588309483, + "99.9" : 355.081588309483, + "99.99" : 355.081588309483, + "99.999" : 355.081588309483, + "99.9999" : 355.081588309483, + "100.0" : 355.081588309483 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.89802732725707, + 355.081588309483, + 353.87855531342655 + ], + [ + 354.1289425757435, + 353.7673749359021, + 351.46498132968077 + ], + [ + 352.1390732144776, + 352.2742231087273, + 353.5619575112081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.22875395145122, + "scoreError" : 2.2268608546616937, + "scoreConfidence" : [ + 106.00189309678953, + 110.45561480611292 + ], + "scorePercentiles" : { + "0.0" : 106.86010819192902, + "50.0" : 107.79288461324526, + "90.0" : 110.04883231120205, + "95.0" : 110.04883231120205, + "99.0" : 110.04883231120205, + "99.9" : 110.04883231120205, + "99.99" : 110.04883231120205, + "99.999" : 110.04883231120205, + "99.9999" : 110.04883231120205, + "100.0" : 110.04883231120205 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.9151305341687, + 106.86010819192902, + 106.9410451235742 + ], + [ + 109.80234788582067, + 109.83710038953076, + 110.04883231120205 + ], + [ + 108.0859766767882, + 107.79288461324526, + 107.77535983680224 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061717211018078616, + "scoreError" : 7.746341957989277E-4, + "scoreConfidence" : [ + 0.06094257682227969, + 0.062491845213877545 + ], + "scorePercentiles" : { + "0.0" : 0.06129506386838944, + "50.0" : 0.061503650343801126, + "90.0" : 0.06238190136302673, + "95.0" : 0.06238190136302673, + "99.0" : 0.06238190136302673, + "99.9" : 0.06238190136302673, + "99.99" : 0.06238190136302673, + "99.999" : 0.06238190136302673, + "99.9999" : 0.06238190136302673, + "100.0" : 0.06238190136302673 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06140399041496273, + 0.06129506386838944, + 0.061410989824367476 + ], + [ + 0.062216737816600406, + 0.062367104588288855, + 0.06238190136302673 + ], + [ + 0.06135302896443406, + 0.06152243197883663, + 0.061503650343801126 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.594316967390262E-4, + "scoreError" : 2.025210075568485E-5, + "scoreConfidence" : [ + 3.3917959598334135E-4, + 3.79683797494711E-4 + ], + "scorePercentiles" : { + "0.0" : 3.451150199006584E-4, + "50.0" : 3.5978557142412557E-4, + "90.0" : 3.738151868826466E-4, + "95.0" : 3.738151868826466E-4, + "99.0" : 3.738151868826466E-4, + "99.9" : 3.738151868826466E-4, + "99.99" : 3.738151868826466E-4, + "99.999" : 3.738151868826466E-4, + "99.9999" : 3.738151868826466E-4, + "100.0" : 3.738151868826466E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5978557142412557E-4, + 3.5895190739054946E-4, + 3.5982580568855865E-4 + ], + [ + 3.451150199006584E-4, + 3.455401107623804E-4, + 3.4577895015172963E-4 + ], + [ + 3.728989930124733E-4, + 3.738151868826466E-4, + 3.731737254381133E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014191966644421385, + "scoreError" : 2.1829014589974747E-4, + "scoreConfidence" : [ + 0.013973676498521638, + 0.014410256790321131 + ], + "scorePercentiles" : { + "0.0" : 0.014034512911592084, + "50.0" : 0.014199062441074573, + "90.0" : 0.014338884630605725, + "95.0" : 0.014338884630605725, + "99.0" : 0.014338884630605725, + "99.9" : 0.014338884630605725, + "99.99" : 0.014338884630605725, + "99.999" : 0.014338884630605725, + "99.9999" : 0.014338884630605725, + "100.0" : 0.014338884630605725 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014034512911592084, + 0.014036816928473472, + 0.014044025110419842 + ], + [ + 0.014203260520230885, + 0.014199062441074573, + 0.014195771940384105 + ], + [ + 0.014338884630605725, + 0.014338267550563345, + 0.01433709776644841 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9925031145812194, + "scoreError" : 0.042226353185113495, + "scoreConfidence" : [ + 0.950276761396106, + 1.034729467766333 + ], + "scorePercentiles" : { + "0.0" : 0.9630525597072419, + "50.0" : 0.9913075222045995, + "90.0" : 1.0285787390723027, + "95.0" : 1.0285787390723027, + "99.0" : 1.0285787390723027, + "99.9" : 1.0285787390723027, + "99.99" : 1.0285787390723027, + "99.999" : 1.0285787390723027, + "99.9999" : 1.0285787390723027, + "100.0" : 1.0285787390723027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9906748670629024, + 0.9913075222045995, + 0.9914711291761673 + ], + [ + 0.9630525597072419, + 0.9650835647558387, + 0.9655797285893598 + ], + [ + 1.0129199996961409, + 1.023859920966421, + 1.0285787390723027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013059418001820743, + "scoreError" : 2.515838452231582E-4, + "scoreConfidence" : [ + 0.012807834156597584, + 0.013311001847043901 + ], + "scorePercentiles" : { + "0.0" : 0.012981688982469987, + "50.0" : 0.013024948595270976, + "90.0" : 0.013170221643917884, + "95.0" : 0.013170221643917884, + "99.0" : 0.013170221643917884, + "99.9" : 0.013170221643917884, + "99.99" : 0.013170221643917884, + "99.999" : 0.013170221643917884, + "99.9999" : 0.013170221643917884, + "100.0" : 0.013170221643917884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013056340266081757, + 0.013169372862338977, + 0.013170221643917884 + ], + [ + 0.012985327331655668, + 0.012981688982469987, + 0.012993556924460197 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6592788291395366, + "scoreError" : 0.050967515054031964, + "scoreConfidence" : [ + 3.6083113140855048, + 3.7102463441935685 + ], + "scorePercentiles" : { + "0.0" : 3.623741924637681, + "50.0" : 3.664233986813187, + "90.0" : 3.6741932277736957, + "95.0" : 3.6741932277736957, + "99.0" : 3.6741932277736957, + "99.9" : 3.6741932277736957, + "99.99" : 3.6741932277736957, + "99.999" : 3.6741932277736957, + "99.9999" : 3.6741932277736957, + "100.0" : 3.6741932277736957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.665116643223443, + 3.6633513304029304, + 3.6592315215801023 + ], + [ + 3.623741924637681, + 3.670038327219369, + 3.6741932277736957 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.816428854728746, + "scoreError" : 0.06208714333215352, + "scoreConfidence" : [ + 2.7543417113965925, + 2.8785159980609 + ], + "scorePercentiles" : { + "0.0" : 2.765137873652198, + "50.0" : 2.8340587007650893, + "90.0" : 2.8525728069024527, + "95.0" : 2.8525728069024527, + "99.0" : 2.8525728069024527, + "99.9" : 2.8525728069024527, + "99.99" : 2.8525728069024527, + "99.999" : 2.8525728069024527, + "99.9999" : 2.8525728069024527, + "100.0" : 2.8525728069024527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8513465621436715, + 2.8525728069024527, + 2.8419214063654445 + ], + [ + 2.834123484839898, + 2.8340587007650893, + 2.8287812502828054 + ], + [ + 2.7730404374826727, + 2.766877170124481, + 2.765137873652198 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1793954246557457, + "scoreError" : 0.015718117464958145, + "scoreConfidence" : [ + 0.16367730719078755, + 0.19511354212070386 + ], + "scorePercentiles" : { + "0.0" : 0.17193095985489307, + "50.0" : 0.1741289254744907, + "90.0" : 0.19208350172870808, + "95.0" : 0.19208350172870808, + "99.0" : 0.19208350172870808, + "99.9" : 0.19208350172870808, + "99.99" : 0.19208350172870808, + "99.999" : 0.19208350172870808, + "99.9999" : 0.19208350172870808, + "100.0" : 0.19208350172870808 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19208350172870808, + 0.19167580244570948, + 0.1917056374511157 + ], + [ + 0.1741670207600404, + 0.17371442937794224, + 0.1741289254744907 + ], + [ + 0.17308442873461757, + 0.17193095985489307, + 0.1720681160741939 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3310067074422411, + "scoreError" : 0.005286940810887437, + "scoreConfidence" : [ + 0.32571976663135366, + 0.3362936482531285 + ], + "scorePercentiles" : { + "0.0" : 0.3272692564060608, + "50.0" : 0.3299537344925432, + "90.0" : 0.33597765600537544, + "95.0" : 0.33597765600537544, + "99.0" : 0.33597765600537544, + "99.9" : 0.33597765600537544, + "99.99" : 0.33597765600537544, + "99.999" : 0.33597765600537544, + "99.9999" : 0.33597765600537544, + "100.0" : 0.33597765600537544 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.33105885374251004, + 0.32922863973662553, + 0.3299537344925432 + ], + [ + 0.33597765600537544, + 0.33463009536556804, + 0.3340892610496776 + ], + [ + 0.32880638031827447, + 0.32804648986353496, + 0.3272692564060608 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1655695332101355, + "scoreError" : 0.0014940467802612104, + "scoreConfidence" : [ + 0.1640754864298743, + 0.16706357999039673 + ], + "scorePercentiles" : { + "0.0" : 0.1643908343634929, + "50.0" : 0.16573519637382125, + "90.0" : 0.16663853021945976, + "95.0" : 0.16663853021945976, + "99.0" : 0.16663853021945976, + "99.9" : 0.16663853021945976, + "99.99" : 0.16663853021945976, + "99.999" : 0.16663853021945976, + "99.9999" : 0.16663853021945976, + "100.0" : 0.16663853021945976 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16573519637382125, + 0.16486172864255333, + 0.16493741781296387 + ], + [ + 0.1658688282302206, + 0.16462066344016987, + 0.1643908343634929 + ], + [ + 0.1664890851077999, + 0.16658351470073796, + 0.16663853021945976 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3880358277948496, + "scoreError" : 0.015062129870327713, + "scoreConfidence" : [ + 0.37297369792452184, + 0.4030979576651773 + ], + "scorePercentiles" : { + "0.0" : 0.3791764736862061, + "50.0" : 0.3846368117235278, + "90.0" : 0.40354941443041037, + "95.0" : 0.40354941443041037, + "99.0" : 0.40354941443041037, + "99.9" : 0.40354941443041037, + "99.99" : 0.40354941443041037, + "99.999" : 0.40354941443041037, + "99.9999" : 0.40354941443041037, + "100.0" : 0.40354941443041037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38075618664331407, + 0.3798244570625546, + 0.3791764736862061 + ], + [ + 0.38515324564782005, + 0.3846368117235278, + 0.3846282916153846 + ], + [ + 0.40354941443041037, + 0.3971281042808355, + 0.397469465063593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15783876494082616, + "scoreError" : 0.0036673927342274586, + "scoreConfidence" : [ + 0.1541713722065987, + 0.1615061576750536 + ], + "scorePercentiles" : { + "0.0" : 0.1556568356914935, + "50.0" : 0.15700002814933434, + "90.0" : 0.1620545456254355, + "95.0" : 0.1620545456254355, + "99.0" : 0.1620545456254355, + "99.9" : 0.1620545456254355, + "99.99" : 0.1620545456254355, + "99.999" : 0.1620545456254355, + "99.9999" : 0.1620545456254355, + "100.0" : 0.1620545456254355 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15700002814933434, + 0.15577499482841878, + 0.1556568356914935 + ], + [ + 0.15725884702237738, + 0.1567389933544403, + 0.15655110679733242 + ], + [ + 0.1620545456254355, + 0.15990778622255625, + 0.159605746776047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04759487313143161, + "scoreError" : 5.249458188152128E-4, + "scoreConfidence" : [ + 0.047069927312616396, + 0.04811981895024683 + ], + "scorePercentiles" : { + "0.0" : 0.0471997846347726, + "50.0" : 0.04748367897265933, + "90.0" : 0.048040983771942464, + "95.0" : 0.048040983771942464, + "99.0" : 0.048040983771942464, + "99.9" : 0.048040983771942464, + "99.99" : 0.048040983771942464, + "99.999" : 0.048040983771942464, + "99.9999" : 0.048040983771942464, + "100.0" : 0.048040983771942464 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048040983771942464, + 0.047442269875608435, + 0.04746866217460649 + ], + [ + 0.04795914089221827, + 0.04756065644603612, + 0.04748367897265933 + ], + [ + 0.04794581715666532, + 0.047252864258375465, + 0.0471997846347726 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9273198.347081004, + "scoreError" : 151405.44321916296, + "scoreConfidence" : [ + 9121792.903861841, + 9424603.790300166 + ], + "scorePercentiles" : { + "0.0" : 9155483.271729186, + "50.0" : 9294069.286245354, + "90.0" : 9361522.364826942, + "95.0" : 9361522.364826942, + "99.0" : 9361522.364826942, + "99.9" : 9361522.364826942, + "99.99" : 9361522.364826942, + "99.999" : 9361522.364826942, + "99.9999" : 9361522.364826942, + "100.0" : 9361522.364826942 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9159622.364468865, + 9161932.124542125, + 9155483.271729186 + ], + [ + 9338092.402427638, + 9294069.286245354, + 9278606.829313543 + ], + [ + 9350569.692523364, + 9358886.787652012, + 9361522.364826942 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From e189eea3d1d8a51b2508294058bdb2e9bf25cd2b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 01:15:56 +0000 Subject: [PATCH 273/345] Add performance results for commit ae7279fa86294a4250c1df7bbf056a940e80459c --- ...6294a4250c1df7bbf056a940e80459c-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json diff --git a/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..347a362b1b --- /dev/null +++ b/performance-results/2025-03-24T01:15:42Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.423985031790188, + "scoreError" : 0.020585678001601503, + "scoreConfidence" : [ + 3.4033993537885863, + 3.4445707097917895 + ], + "scorePercentiles" : { + "0.0" : 3.4193836164754052, + "50.0" : 3.425190782059619, + "90.0" : 3.4261749465661073, + "95.0" : 3.4261749465661073, + "99.0" : 3.4261749465661073, + "99.9" : 3.4261749465661073, + "99.99" : 3.4261749465661073, + "99.999" : 3.4261749465661073, + "99.9999" : 3.4261749465661073, + "100.0" : 3.4261749465661073 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4193836164754052, + 3.4261749465661073 + ], + [ + 3.4243051172951176, + 3.4260764468241205 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7287797917121857, + "scoreError" : 0.007600411881287742, + "scoreConfidence" : [ + 1.7211793798308979, + 1.7363802035934734 + ], + "scorePercentiles" : { + "0.0" : 1.7276067282125074, + "50.0" : 1.728753700082378, + "90.0" : 1.7300050384714796, + "95.0" : 1.7300050384714796, + "99.0" : 1.7300050384714796, + "99.9" : 1.7300050384714796, + "99.99" : 1.7300050384714796, + "99.999" : 1.7300050384714796, + "99.9999" : 1.7300050384714796, + "100.0" : 1.7300050384714796 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7276067282125074, + 1.729551031146016 + ], + [ + 1.7279563690187403, + 1.7300050384714796 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680077673242658, + "scoreError" : 0.001730336967352543, + "scoreConfidence" : [ + 0.8662774303569132, + 0.8697381042916184 + ], + "scorePercentiles" : { + "0.0" : 0.8676148794980105, + "50.0" : 0.868100694296265, + "90.0" : 0.8682148012065225, + "95.0" : 0.8682148012065225, + "99.0" : 0.8682148012065225, + "99.9" : 0.8682148012065225, + "99.99" : 0.8682148012065225, + "99.999" : 0.8682148012065225, + "99.9999" : 0.8682148012065225, + "100.0" : 0.8682148012065225 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8676148794980105, + 0.8682148012065225 + ], + [ + 0.8680832284714595, + 0.8681181601210705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.38240461990315, + "scoreError" : 0.12334786222297711, + "scoreConfidence" : [ + 16.25905675768017, + 16.505752482126127 + ], + "scorePercentiles" : { + "0.0" : 16.276350464015767, + "50.0" : 16.405246368329045, + "90.0" : 16.491374585997335, + "95.0" : 16.491374585997335, + "99.0" : 16.491374585997335, + "99.9" : 16.491374585997335, + "99.99" : 16.491374585997335, + "99.999" : 16.491374585997335, + "99.9999" : 16.491374585997335, + "100.0" : 16.491374585997335 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.276350464015767, + 16.28949960657584, + 16.309277751841147 + ], + [ + 16.405246368329045, + 16.4140186013479, + 16.491374585997335 + ], + [ + 16.435045435937738, + 16.418812751229037, + 16.402016013854535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2708.5653430356538, + "scoreError" : 91.70865496219062, + "scoreConfidence" : [ + 2616.8566880734634, + 2800.273997997844 + ], + "scorePercentiles" : { + "0.0" : 2655.382188812315, + "50.0" : 2683.8756391544052, + "90.0" : 2780.8420757077465, + "95.0" : 2780.8420757077465, + "99.0" : 2780.8420757077465, + "99.9" : 2780.8420757077465, + "99.99" : 2780.8420757077465, + "99.999" : 2780.8420757077465, + "99.9999" : 2780.8420757077465, + "100.0" : 2780.8420757077465 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2778.394621699917, + 2780.6211412089756, + 2780.8420757077465 + ], + [ + 2681.688877607523, + 2683.8756391544052, + 2686.991378749153 + ], + [ + 2669.7043469811665, + 2655.382188812315, + 2659.5878173996875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69453.92527304837, + "scoreError" : 1521.0238725110248, + "scoreConfidence" : [ + 67932.90140053735, + 70974.9491455594 + ], + "scorePercentiles" : { + "0.0" : 68693.4254198043, + "50.0" : 68981.39786361123, + "90.0" : 70688.90214143042, + "95.0" : 70688.90214143042, + "99.0" : 70688.90214143042, + "99.9" : 70688.90214143042, + "99.99" : 70688.90214143042, + "99.999" : 70688.90214143042, + "99.9999" : 70688.90214143042, + "100.0" : 70688.90214143042 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68981.39786361123, + 68965.05800560681, + 68981.99555956059 + ], + [ + 70626.75144783205, + 70688.90214143042, + 70640.85183648426 + ], + [ + 68693.4254198043, + 68759.7918936698, + 68747.15328943594 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 356.10407851079464, + "scoreError" : 6.498936628587323, + "scoreConfidence" : [ + 349.6051418822073, + 362.60301513938197 + ], + "scorePercentiles" : { + "0.0" : 350.9120636475959, + "50.0" : 355.3428972137064, + "90.0" : 361.4061321659956, + "95.0" : 361.4061321659956, + "99.0" : 361.4061321659956, + "99.9" : 361.4061321659956, + "99.99" : 361.4061321659956, + "99.999" : 361.4061321659956, + "99.9999" : 361.4061321659956, + "100.0" : 361.4061321659956 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.25636836864624, + 354.82855651204625, + 351.4684689201288 + ], + [ + 360.4932364258982, + 360.36491162891963, + 361.4061321659956 + ], + [ + 355.8640717142149, + 355.3428972137064, + 350.9120636475959 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.31669412956369, + "scoreError" : 3.5778548693793955, + "scoreConfidence" : [ + 103.73883926018429, + 110.89454899894308 + ], + "scorePercentiles" : { + "0.0" : 105.79308903472088, + "50.0" : 105.93376479703352, + "90.0" : 110.34952243173072, + "95.0" : 110.34952243173072, + "99.0" : 110.34952243173072, + "99.9" : 110.34952243173072, + "99.99" : 110.34952243173072, + "99.999" : 110.34952243173072, + "99.9999" : 110.34952243173072, + "100.0" : 110.34952243173072 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.77252022787577, + 110.31612729927951, + 110.34952243173072 + ], + [ + 106.03328503402605, + 105.87577646935003, + 105.79308903472088 + ], + [ + 105.87219204411367, + 105.90396982794302, + 105.93376479703352 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06119980136377835, + "scoreError" : 8.618213928725673E-4, + "scoreConfidence" : [ + 0.060337979970905786, + 0.06206162275665092 + ], + "scorePercentiles" : { + "0.0" : 0.06066733146885389, + "50.0" : 0.06089297250114173, + "90.0" : 0.061862555115650385, + "95.0" : 0.061862555115650385, + "99.0" : 0.061862555115650385, + "99.9" : 0.061862555115650385, + "99.99" : 0.061862555115650385, + "99.999" : 0.061862555115650385, + "99.9999" : 0.061862555115650385, + "100.0" : 0.061862555115650385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06178237913394827, + 0.061862555115650385, + 0.06185610631664894 + ], + [ + 0.06089089902575656, + 0.06089297250114173, + 0.06134222386549055 + ], + [ + 0.06074345491377582, + 0.0607602899327391, + 0.06066733146885389 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.714779192655463E-4, + "scoreError" : 1.623245467441315E-5, + "scoreConfidence" : [ + 3.552454645911331E-4, + 3.8771037393995944E-4 + ], + "scorePercentiles" : { + "0.0" : 3.584074242444118E-4, + "50.0" : 3.7633382446846465E-4, + "90.0" : 3.7957460862137523E-4, + "95.0" : 3.7957460862137523E-4, + "99.0" : 3.7957460862137523E-4, + "99.9" : 3.7957460862137523E-4, + "99.99" : 3.7957460862137523E-4, + "99.999" : 3.7957460862137523E-4, + "99.9999" : 3.7957460862137523E-4, + "100.0" : 3.7957460862137523E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7924316070034667E-4, + 3.7957460862137523E-4, + 3.7955198229060557E-4 + ], + [ + 3.593466223899345E-4, + 3.5847276303743996E-4, + 3.584074242444118E-4 + ], + [ + 3.7633382446846465E-4, + 3.766252124611751E-4, + 3.7574567517616273E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014355010333514245, + "scoreError" : 4.1067815151196995E-4, + "scoreConfidence" : [ + 0.013944332182002275, + 0.014765688485026216 + ], + "scorePercentiles" : { + "0.0" : 0.014026616836784073, + "50.0" : 0.014459461475396798, + "90.0" : 0.01459370264405256, + "95.0" : 0.01459370264405256, + "99.0" : 0.01459370264405256, + "99.9" : 0.01459370264405256, + "99.99" : 0.01459370264405256, + "99.999" : 0.01459370264405256, + "99.9999" : 0.01459370264405256, + "100.0" : 0.01459370264405256 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014453072907829299, + 0.01459370264405256, + 0.014459461475396798 + ], + [ + 0.014026616836784073, + 0.014033903854924926, + 0.01404158894438352 + ], + [ + 0.014542850651003227, + 0.014528971946336417, + 0.01451492374091739 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9771543281961408, + "scoreError" : 0.02185627742500379, + "scoreConfidence" : [ + 0.955298050771137, + 0.9990106056211445 + ], + "scorePercentiles" : { + "0.0" : 0.9627037857142857, + "50.0" : 0.974022056199474, + "90.0" : 0.9980891943113772, + "95.0" : 0.9980891943113772, + "99.0" : 0.9980891943113772, + "99.9" : 0.9980891943113772, + "99.99" : 0.9980891943113772, + "99.999" : 0.9980891943113772, + "99.9999" : 0.9980891943113772, + "100.0" : 0.9980891943113772 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9669437919164572, + 0.9627037857142857, + 0.963355748579135 + ], + [ + 0.991817503818308, + 0.9980891943113772, + 0.989932828152841 + ], + [ + 0.974022056199474, + 0.9732893321654501, + 0.9742347129079396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012885614874331264, + "scoreError" : 5.050071426909742E-4, + "scoreConfidence" : [ + 0.01238060773164029, + 0.013390622017022237 + ], + "scorePercentiles" : { + "0.0" : 0.012721508086860284, + "50.0" : 0.012853246073407367, + "90.0" : 0.013082793771193537, + "95.0" : 0.013082793771193537, + "99.0" : 0.013082793771193537, + "99.9" : 0.013082793771193537, + "99.99" : 0.013082793771193537, + "99.999" : 0.013082793771193537, + "99.9999" : 0.013082793771193537, + "100.0" : 0.013082793771193537 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012979090677596537, + 0.013082793771193537, + 0.013077631711922834 + ], + [ + 0.012727401469218198, + 0.012721508086860284, + 0.01272526352919619 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6305832853859683, + "scoreError" : 0.07908803946707522, + "scoreConfidence" : [ + 3.551495245918893, + 3.7096713248530437 + ], + "scorePercentiles" : { + "0.0" : 3.5858967541218636, + "50.0" : 3.6275817135425212, + "90.0" : 3.661791859443631, + "95.0" : 3.661791859443631, + "99.0" : 3.661791859443631, + "99.9" : 3.661791859443631, + "99.99" : 3.661791859443631, + "99.999" : 3.661791859443631, + "99.9999" : 3.661791859443631, + "100.0" : 3.661791859443631 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5858967541218636, + 3.620618655571635, + 3.624266738405797 + ], + [ + 3.630896688679245, + 3.6600290160936355, + 3.661791859443631 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8635983475617643, + "scoreError" : 0.05318319058426944, + "scoreConfidence" : [ + 2.810415156977495, + 2.916781538146034 + ], + "scorePercentiles" : { + "0.0" : 2.814156100168824, + "50.0" : 2.8762246813344836, + "90.0" : 2.8928681952560025, + "95.0" : 2.8928681952560025, + "99.0" : 2.8928681952560025, + "99.9" : 2.8928681952560025, + "99.99" : 2.8928681952560025, + "99.999" : 2.8928681952560025, + "99.9999" : 2.8928681952560025, + "100.0" : 2.8928681952560025 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8762246813344836, + 2.8830864364370137, + 2.8709831374856485 + ], + [ + 2.830178765138653, + 2.8240756487859966, + 2.814156100168824 + ], + [ + 2.8894638145044786, + 2.8913483489447818, + 2.8928681952560025 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17460592529590413, + "scoreError" : 0.007290842462030162, + "scoreConfidence" : [ + 0.16731508283387397, + 0.18189676775793429 + ], + "scorePercentiles" : { + "0.0" : 0.16902718518330714, + "50.0" : 0.17527733757492903, + "90.0" : 0.1789688415627181, + "95.0" : 0.1789688415627181, + "99.0" : 0.1789688415627181, + "99.9" : 0.1789688415627181, + "99.99" : 0.1789688415627181, + "99.999" : 0.1789688415627181, + "99.9999" : 0.1789688415627181, + "100.0" : 0.1789688415627181 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17740387072911123, + 0.1752745377618088, + 0.17527733757492903 + ], + [ + 0.16919842399837576, + 0.16908881285719116, + 0.16902718518330714 + ], + [ + 0.1789688415627181, + 0.17867402992728118, + 0.17854028806841513 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32594856915486825, + "scoreError" : 0.006512483666661735, + "scoreConfidence" : [ + 0.3194360854882065, + 0.33246105282153 + ], + "scorePercentiles" : { + "0.0" : 0.32274181687913506, + "50.0" : 0.32294927724850636, + "90.0" : 0.3315308010542368, + "95.0" : 0.3315308010542368, + "99.0" : 0.3315308010542368, + "99.9" : 0.3315308010542368, + "99.99" : 0.3315308010542368, + "99.999" : 0.3315308010542368, + "99.9999" : 0.3315308010542368, + "100.0" : 0.3315308010542368 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3266327356937549, + 0.32294927724850636, + 0.32284441984116735 + ], + [ + 0.33064299758637794, + 0.3315308010542368, + 0.33034233406005353 + ], + [ + 0.3229322670584816, + 0.32292047297210025, + 0.32274181687913506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16163972415380565, + "scoreError" : 0.007092012523861331, + "scoreConfidence" : [ + 0.15454771162994432, + 0.16873173667766697 + ], + "scorePercentiles" : { + "0.0" : 0.15710679449192483, + "50.0" : 0.16063566504963536, + "90.0" : 0.16717027942159812, + "95.0" : 0.16717027942159812, + "99.0" : 0.16717027942159812, + "99.9" : 0.16717027942159812, + "99.99" : 0.16717027942159812, + "99.999" : 0.16717027942159812, + "99.9999" : 0.16717027942159812, + "100.0" : 0.16717027942159812 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16096042670894428, + 0.16060938489335733, + 0.16063566504963536 + ], + [ + 0.15735056534600497, + 0.15741520246190657, + 0.15710679449192483 + ], + [ + 0.16711328819705554, + 0.16717027942159812, + 0.16639591081382385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3908731216705499, + "scoreError" : 0.008318461719991843, + "scoreConfidence" : [ + 0.38255465995055804, + 0.3991915833905417 + ], + "scorePercentiles" : { + "0.0" : 0.3850710142472083, + "50.0" : 0.39186429463166145, + "90.0" : 0.39874439389952154, + "95.0" : 0.39874439389952154, + "99.0" : 0.39874439389952154, + "99.9" : 0.39874439389952154, + "99.99" : 0.39874439389952154, + "99.999" : 0.39874439389952154, + "99.9999" : 0.39874439389952154, + "100.0" : 0.39874439389952154 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39874439389952154, + 0.3877659189220628, + 0.386286415868356 + ], + [ + 0.39493609237391886, + 0.3853260085153932, + 0.3850710142472083 + ], + [ + 0.39510388317332384, + 0.3927600734035033, + 0.39186429463166145 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1586786249037039, + "scoreError" : 0.0034100905503789674, + "scoreConfidence" : [ + 0.15526853435332494, + 0.16208871545408288 + ], + "scorePercentiles" : { + "0.0" : 0.15661870924496094, + "50.0" : 0.1578523135339058, + "90.0" : 0.16217684937238494, + "95.0" : 0.16217684937238494, + "99.0" : 0.16217684937238494, + "99.9" : 0.16217684937238494, + "99.99" : 0.16217684937238494, + "99.999" : 0.16217684937238494, + "99.9999" : 0.16217684937238494, + "100.0" : 0.16217684937238494 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15877473223358313, + 0.1578523135339058, + 0.15726137488598838 + ], + [ + 0.16217684937238494, + 0.16083772981536285, + 0.16052423554906337 + ], + [ + 0.15739435946549987, + 0.15666732003258604, + 0.15661870924496094 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04705562194714075, + "scoreError" : 0.001724178194025406, + "scoreConfidence" : [ + 0.04533144375311534, + 0.04877980014116615 + ], + "scorePercentiles" : { + "0.0" : 0.04576418512315, + "50.0" : 0.047069235799412586, + "90.0" : 0.048249880785691195, + "95.0" : 0.048249880785691195, + "99.0" : 0.048249880785691195, + "99.9" : 0.048249880785691195, + "99.99" : 0.048249880785691195, + "99.999" : 0.048249880785691195, + "99.9999" : 0.048249880785691195, + "100.0" : 0.048249880785691195 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047069235799412586, + 0.04717382480446822, + 0.046859601845300296 + ], + [ + 0.048249880785691195, + 0.048244426864980386, + 0.048241332310631276 + ], + [ + 0.04600872909506655, + 0.04588938089556622, + 0.04576418512315 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9393487.11191537, + "scoreError" : 76117.81686439089, + "scoreConfidence" : [ + 9317369.295050979, + 9469604.928779762 + ], + "scorePercentiles" : { + "0.0" : 9326570.458527492, + "50.0" : 9421905.214689266, + "90.0" : 9427197.699340245, + "95.0" : 9427197.699340245, + "99.0" : 9427197.699340245, + "99.9" : 9427197.699340245, + "99.99" : 9427197.699340245, + "99.999" : 9427197.699340245, + "99.9999" : 9427197.699340245, + "100.0" : 9427197.699340245 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9423936.029190207, + 9422548.15913371, + 9421905.214689266 + ], + [ + 9331684.680037314, + 9341840.24089636, + 9326570.458527492 + ], + [ + 9427197.699340245, + 9420696.956685498, + 9425004.56873823 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From bac784bd7fa41228e10c7adbed094d05631dc077 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 01:16:23 +0000 Subject: [PATCH 274/345] Add performance results for commit ae7279fa86294a4250c1df7bbf056a940e80459c --- ...6294a4250c1df7bbf056a940e80459c-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json diff --git a/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json b/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json new file mode 100644 index 0000000000..2a0b401278 --- /dev/null +++ b/performance-results/2025-03-24T01:16:10Z-ae7279fa86294a4250c1df7bbf056a940e80459c-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.426145151023948, + "scoreError" : 0.013210663115301039, + "scoreConfidence" : [ + 3.412934487908647, + 3.439355814139249 + ], + "scorePercentiles" : { + "0.0" : 3.4234322248782174, + "50.0" : 3.426652794233978, + "90.0" : 3.427842790749618, + "95.0" : 3.427842790749618, + "99.0" : 3.427842790749618, + "99.9" : 3.427842790749618, + "99.99" : 3.427842790749618, + "99.999" : 3.427842790749618, + "99.9999" : 3.427842790749618, + "100.0" : 3.427842790749618 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4275964386075892, + 3.427842790749618 + ], + [ + 3.4234322248782174, + 3.4257091498603667 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.729128204255764, + "scoreError" : 0.007766170352462106, + "scoreConfidence" : [ + 1.721362033903302, + 1.7368943746082262 + ], + "scorePercentiles" : { + "0.0" : 1.7279808848819176, + "50.0" : 1.7290426231590101, + "90.0" : 1.7304466858231178, + "95.0" : 1.7304466858231178, + "99.0" : 1.7304466858231178, + "99.9" : 1.7304466858231178, + "99.99" : 1.7304466858231178, + "99.999" : 1.7304466858231178, + "99.9999" : 1.7304466858231178, + "100.0" : 1.7304466858231178 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7282477158561975, + 1.7298375304618228 + ], + [ + 1.7279808848819176, + 1.7304466858231178 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8683695224465093, + "scoreError" : 0.0022479338394988647, + "scoreConfidence" : [ + 0.8661215886070105, + 0.8706174562860082 + ], + "scorePercentiles" : { + "0.0" : 0.8679904677398708, + "50.0" : 0.8683417491104126, + "90.0" : 0.8688041238253417, + "95.0" : 0.8688041238253417, + "99.0" : 0.8688041238253417, + "99.9" : 0.8688041238253417, + "99.99" : 0.8688041238253417, + "99.999" : 0.8688041238253417, + "99.9999" : 0.8688041238253417, + "100.0" : 0.8688041238253417 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8682214628124686, + 0.8684620354083565 + ], + [ + 0.8679904677398708, + 0.8688041238253417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.240687874378818, + "scoreError" : 0.14206130369424322, + "scoreConfidence" : [ + 16.098626570684573, + 16.382749178073063 + ], + "scorePercentiles" : { + "0.0" : 16.102134406564456, + "50.0" : 16.20890091093278, + "90.0" : 16.34498291737838, + "95.0" : 16.34498291737838, + "99.0" : 16.34498291737838, + "99.9" : 16.34498291737838, + "99.99" : 16.34498291737838, + "99.999" : 16.34498291737838, + "99.9999" : 16.34498291737838, + "100.0" : 16.34498291737838 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.33512895649821, + 16.342082271169485, + 16.34498291737838 + ], + [ + 16.20890091093278, + 16.201763368385475, + 16.204084508361756 + ], + [ + 16.102134406564456, + 16.177766103475452, + 16.24934742664334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2768.9873500346007, + "scoreError" : 104.42207140117078, + "scoreConfidence" : [ + 2664.56527863343, + 2873.4094214357715 + ], + "scorePercentiles" : { + "0.0" : 2685.5244079379963, + "50.0" : 2795.830847084459, + "90.0" : 2824.7859522281055, + "95.0" : 2824.7859522281055, + "99.0" : 2824.7859522281055, + "99.9" : 2824.7859522281055, + "99.99" : 2824.7859522281055, + "99.999" : 2824.7859522281055, + "99.9999" : 2824.7859522281055, + "100.0" : 2824.7859522281055 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2687.576466737567, + 2685.5244079379963, + 2691.1189811657555 + ], + [ + 2824.4863505006483, + 2824.7859522281055, + 2824.782033862034 + ], + [ + 2790.6171435181855, + 2796.1639672766546, + 2795.830847084459 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69477.58904509427, + "scoreError" : 2033.1449142317103, + "scoreConfidence" : [ + 67444.44413086255, + 71510.73395932598 + ], + "scorePercentiles" : { + "0.0" : 68354.45274228718, + "50.0" : 68850.00819272888, + "90.0" : 71104.42582085764, + "95.0" : 71104.42582085764, + "99.0" : 71104.42582085764, + "99.9" : 71104.42582085764, + "99.99" : 71104.42582085764, + "99.999" : 71104.42582085764, + "99.9999" : 71104.42582085764, + "100.0" : 71104.42582085764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68845.9116730038, + 68850.00819272888, + 68933.08606569297 + ], + [ + 68354.45274228718, + 68569.71784579945, + 68527.59360154229 + ], + [ + 71069.65064660512, + 71043.45481733108, + 71104.42582085764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.43246559746035, + "scoreError" : 5.017815172324881, + "scoreConfidence" : [ + 348.41465042513545, + 358.45028076978525 + ], + "scorePercentiles" : { + "0.0" : 348.49531796540316, + "50.0" : 352.22740012108295, + "90.0" : 357.6247499948426, + "95.0" : 357.6247499948426, + "99.0" : 357.6247499948426, + "99.9" : 357.6247499948426, + "99.99" : 357.6247499948426, + "99.999" : 357.6247499948426, + "99.9999" : 357.6247499948426, + "100.0" : 357.6247499948426 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.5264560603956, + 352.22740012108295, + 348.49531796540316 + ], + [ + 356.42376106443544, + 356.8220207221888, + 357.6247499948426 + ], + [ + 352.2169543217317, + 351.9050707919133, + 353.6504593351496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.90948380386186, + "scoreError" : 3.918996971616842, + "scoreConfidence" : [ + 104.99048683224501, + 112.82848077547871 + ], + "scorePercentiles" : { + "0.0" : 105.69252450514203, + "50.0" : 109.97755758368027, + "90.0" : 111.12718275777527, + "95.0" : 111.12718275777527, + "99.0" : 111.12718275777527, + "99.9" : 111.12718275777527, + "99.99" : 111.12718275777527, + "99.999" : 111.12718275777527, + "99.9999" : 111.12718275777527, + "100.0" : 111.12718275777527 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.97755758368027, + 110.15002579246816, + 109.55958182687034 + ], + [ + 110.62620785006521, + 111.11818071668289, + 111.12718275777527 + ], + [ + 105.69252450514203, + 105.96696635595293, + 105.96712684611965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061097025447483445, + "scoreError" : 0.0011606211932044168, + "scoreConfidence" : [ + 0.05993640425427903, + 0.062257646640687864 + ], + "scorePercentiles" : { + "0.0" : 0.06035415747290153, + "50.0" : 0.06096801351030039, + "90.0" : 0.06199666086385081, + "95.0" : 0.06199666086385081, + "99.0" : 0.06199666086385081, + "99.9" : 0.06199666086385081, + "99.99" : 0.06199666086385081, + "99.999" : 0.06199666086385081, + "99.9999" : 0.06199666086385081, + "100.0" : 0.06199666086385081 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06199666086385081, + 0.061894619520075266, + 0.061959236395516704 + ], + [ + 0.06036282408083686, + 0.06035415747290153, + 0.06040292525837023 + ], + [ + 0.06096801351030039, + 0.06101391860841128, + 0.06092087331708803 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.578972828265755E-4, + "scoreError" : 5.7237137478910345E-6, + "scoreConfidence" : [ + 3.5217356907868446E-4, + 3.6362099657446655E-4 + ], + "scorePercentiles" : { + "0.0" : 3.549562143708115E-4, + "50.0" : 3.5624617220250085E-4, + "90.0" : 3.6339893810142566E-4, + "95.0" : 3.6339893810142566E-4, + "99.0" : 3.6339893810142566E-4, + "99.9" : 3.6339893810142566E-4, + "99.99" : 3.6339893810142566E-4, + "99.999" : 3.6339893810142566E-4, + "99.9999" : 3.6339893810142566E-4, + "100.0" : 3.6339893810142566E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6191391529543857E-4, + 3.6339893810142566E-4, + 3.617474791706142E-4 + ], + [ + 3.563956431412455E-4, + 3.549562143708115E-4, + 3.553836690005984E-4 + ], + [ + 3.5512751742728077E-4, + 3.5590599672926385E-4, + 3.5624617220250085E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014230959816322204, + "scoreError" : 3.529362494757639E-4, + "scoreConfidence" : [ + 0.01387802356684644, + 0.014583896065797968 + ], + "scorePercentiles" : { + "0.0" : 0.014070434197529822, + "50.0" : 0.014109343967413465, + "90.0" : 0.014518360081650312, + "95.0" : 0.014518360081650312, + "99.0" : 0.014518360081650312, + "99.9" : 0.014518360081650312, + "99.99" : 0.014518360081650312, + "99.999" : 0.014518360081650312, + "99.9999" : 0.014518360081650312, + "100.0" : 0.014518360081650312 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014070434197529822, + 0.014071993049926826, + 0.01409282296653415 + ], + [ + 0.014109343967413465, + 0.014115185616529233, + 0.01408806176698895 + ], + [ + 0.014518360081650312, + 0.014509509125652376, + 0.014502927574674702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9697289381301906, + "scoreError" : 0.00528362052375522, + "scoreConfidence" : [ + 0.9644453176064354, + 0.9750125586539458 + ], + "scorePercentiles" : { + "0.0" : 0.9641568281912842, + "50.0" : 0.9692605071719326, + "90.0" : 0.9739204806194001, + "95.0" : 0.9739204806194001, + "99.0" : 0.9739204806194001, + "99.9" : 0.9739204806194001, + "99.99" : 0.9739204806194001, + "99.999" : 0.9739204806194001, + "99.9999" : 0.9739204806194001, + "100.0" : 0.9739204806194001 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9677952521049066, + 0.9674707717906549, + 0.9706912509948559 + ], + [ + 0.9641568281912842, + 0.9739204806194001, + 0.9733063868613139 + ], + [ + 0.9722907940890531, + 0.9692605071719326, + 0.9686681713483146 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013101354791376594, + "scoreError" : 4.999515490779988E-4, + "scoreConfidence" : [ + 0.012601403242298595, + 0.013601306340454592 + ], + "scorePercentiles" : { + "0.0" : 0.012865263901217797, + "50.0" : 0.013119884615840766, + "90.0" : 0.013265388737961957, + "95.0" : 0.013265388737961957, + "99.0" : 0.013265388737961957, + "99.9" : 0.013265388737961957, + "99.99" : 0.013265388737961957, + "99.999" : 0.013265388737961957, + "99.9999" : 0.013265388737961957, + "100.0" : 0.013265388737961957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012865263901217797, + 0.012979990903828231, + 0.012984937465915287 + ], + [ + 0.013257715973570058, + 0.013265388737961957, + 0.013254831765766244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5684094461451203, + "scoreError" : 0.06843728423472582, + "scoreConfidence" : [ + 3.4999721619103945, + 3.636846730379846 + ], + "scorePercentiles" : { + "0.0" : 3.5270711086036672, + "50.0" : 3.5678580502980344, + "90.0" : 3.595799877785766, + "95.0" : 3.595799877785766, + "99.0" : 3.595799877785766, + "99.9" : 3.595799877785766, + "99.99" : 3.595799877785766, + "99.999" : 3.595799877785766, + "99.9999" : 3.595799877785766, + "100.0" : 3.595799877785766 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5617510263532766, + 3.595799877785766, + 3.5901185635319455 + ], + [ + 3.5270711086036672, + 3.5666760649072753, + 3.569040035688794 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8218470565413725, + "scoreError" : 0.058995670696254006, + "scoreConfidence" : [ + 2.7628513858451185, + 2.8808427272376265 + ], + "scorePercentiles" : { + "0.0" : 2.7884896799553944, + "50.0" : 2.812975501265823, + "90.0" : 2.8689687375215147, + "95.0" : 2.8689687375215147, + "99.0" : 2.8689687375215147, + "99.9" : 2.8689687375215147, + "99.99" : 2.8689687375215147, + "99.999" : 2.8689687375215147, + "99.9999" : 2.8689687375215147, + "100.0" : 2.8689687375215147 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.866157445558739, + 2.8689687375215147, + 2.865885706876791 + ], + [ + 2.7884896799553944, + 2.7952312970933484, + 2.788916612660346 + ], + [ + 2.8146177188291586, + 2.812975501265823, + 2.7953808091112355 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17479665863226598, + "scoreError" : 0.0036510964053856694, + "scoreConfidence" : [ + 0.17114556222688032, + 0.17844775503765165 + ], + "scorePercentiles" : { + "0.0" : 0.17170469753266598, + "50.0" : 0.1757618755800056, + "90.0" : 0.17690241083337757, + "95.0" : 0.17690241083337757, + "99.0" : 0.17690241083337757, + "99.9" : 0.17690241083337757, + "99.99" : 0.17690241083337757, + "99.999" : 0.17690241083337757, + "99.9999" : 0.17690241083337757, + "100.0" : 0.17690241083337757 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17690241083337757, + 0.17658258348636813, + 0.17661318091907738 + ], + [ + 0.1757618755800056, + 0.1759331799405359, + 0.17544330049122808 + ], + [ + 0.1724683128503182, + 0.17170469753266598, + 0.171760386056817 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3246266612392709, + "scoreError" : 0.019924162165017714, + "scoreConfidence" : [ + 0.30470249907425323, + 0.3445508234042886 + ], + "scorePercentiles" : { + "0.0" : 0.31273289608155863, + "50.0" : 0.3212355564549806, + "90.0" : 0.3402318470043888, + "95.0" : 0.3402318470043888, + "99.0" : 0.3402318470043888, + "99.9" : 0.3402318470043888, + "99.99" : 0.3402318470043888, + "99.999" : 0.3402318470043888, + "99.9999" : 0.3402318470043888, + "100.0" : 0.3402318470043888 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3220469740435399, + 0.3212355564549806, + 0.32113408535371374 + ], + [ + 0.3128711308700685, + 0.3127965790247412, + 0.31273289608155863 + ], + [ + 0.3402318470043888, + 0.3399265549134913, + 0.3386643274069559 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1609434612920892, + "scoreError" : 0.005787544780688637, + "scoreConfidence" : [ + 0.15515591651140057, + 0.16673100607277783 + ], + "scorePercentiles" : { + "0.0" : 0.157457594693749, + "50.0" : 0.15970487859526966, + "90.0" : 0.16554137850320316, + "95.0" : 0.16554137850320316, + "99.0" : 0.16554137850320316, + "99.9" : 0.16554137850320316, + "99.99" : 0.16554137850320316, + "99.999" : 0.16554137850320316, + "99.9999" : 0.16554137850320316, + "100.0" : 0.16554137850320316 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15970487859526966, + 0.15976183559127072, + 0.1596239163421019 + ], + [ + 0.16554137850320316, + 0.16528086764511438, + 0.16534963091320953 + ], + [ + 0.15787519901172978, + 0.1578958503331544, + 0.157457594693749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38969563839387505, + "scoreError" : 0.01257371231763372, + "scoreConfidence" : [ + 0.37712192607624134, + 0.40226935071150877 + ], + "scorePercentiles" : { + "0.0" : 0.38017483816149633, + "50.0" : 0.3889050955510617, + "90.0" : 0.40367623961571064, + "95.0" : 0.40367623961571064, + "99.0" : 0.40367623961571064, + "99.9" : 0.40367623961571064, + "99.99" : 0.40367623961571064, + "99.999" : 0.40367623961571064, + "99.9999" : 0.40367623961571064, + "100.0" : 0.40367623961571064 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3834444588190184, + 0.38162887341627233, + 0.38017483816149633 + ], + [ + 0.40367623961571064, + 0.39445489649731774, + 0.39294918110731264 + ], + [ + 0.3941998362568489, + 0.3878273261198371, + 0.3889050955510617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15826806224850987, + "scoreError" : 0.002061095263214545, + "scoreConfidence" : [ + 0.15620696698529532, + 0.1603291575117244 + ], + "scorePercentiles" : { + "0.0" : 0.15657704847497964, + "50.0" : 0.15863054351929698, + "90.0" : 0.1598088950396318, + "95.0" : 0.1598088950396318, + "99.0" : 0.1598088950396318, + "99.9" : 0.1598088950396318, + "99.99" : 0.1598088950396318, + "99.999" : 0.1598088950396318, + "99.9999" : 0.1598088950396318, + "100.0" : 0.1598088950396318 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1598088950396318, + 0.1592978537840292, + 0.15920936771635993 + ], + [ + 0.15691187307788865, + 0.15657704847497964, + 0.15667079597048364 + ], + [ + 0.15878778983470682, + 0.15863054351929698, + 0.15851839281921218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048150610010993106, + "scoreError" : 0.001506079249802445, + "scoreConfidence" : [ + 0.04664453076119066, + 0.04965668926079555 + ], + "scorePercentiles" : { + "0.0" : 0.04693892552782028, + "50.0" : 0.04831327972558398, + "90.0" : 0.04916321137915607, + "95.0" : 0.04916321137915607, + "99.0" : 0.04916321137915607, + "99.9" : 0.04916321137915607, + "99.99" : 0.04916321137915607, + "99.999" : 0.04916321137915607, + "99.9999" : 0.04916321137915607, + "100.0" : 0.04916321137915607 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.048350991471009165, + 0.04831327972558398, + 0.048275269739509914 + ], + [ + 0.04721030312243299, + 0.04699559927439858, + 0.04693892552782028 + ], + [ + 0.04916321137915607, + 0.049058127318573605, + 0.049049782540453314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9279650.608622259, + "scoreError" : 462029.7659555513, + "scoreConfidence" : [ + 8817620.842666708, + 9741680.37457781 + ], + "scorePercentiles" : { + "0.0" : 8933317.997321429, + "50.0" : 9321904.258154707, + "90.0" : 9607548.77137368, + "95.0" : 9607548.77137368, + "99.0" : 9607548.77137368, + "99.9" : 9607548.77137368, + "99.99" : 9607548.77137368, + "99.999" : 9607548.77137368, + "99.9999" : 9607548.77137368, + "100.0" : 9607548.77137368 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 8953302.709937332, + 8933317.997321429, + 8941444.654155497 + ], + [ + 9314768.808193669, + 9321904.258154707, + 9337448.018674137 + ], + [ + 9607548.77137368, + 9554760.581661891, + 9552359.678127985 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 91f15a97c1bdf575ce866d20a8c40041d330331e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:17:41 +0000 Subject: [PATCH 275/345] Bump io.projectreactor:reactor-core from 3.7.3 to 3.7.4 Bumps [io.projectreactor:reactor-core](https://github.com/reactor/reactor-core) from 3.7.3 to 3.7.4. - [Release notes](https://github.com/reactor/reactor-core/releases) - [Commits](https://github.com/reactor/reactor-core/compare/v3.7.3...v3.7.4) --- updated-dependencies: - dependency-name: io.projectreactor:reactor-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1a379c317a..05c2c0d325 100644 --- a/build.gradle +++ b/build.gradle @@ -117,7 +117,7 @@ dependencies { testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion testImplementation "io.reactivex.rxjava2:rxjava:2.2.21" - testImplementation "io.projectreactor:reactor-core:3.7.3" + testImplementation "io.projectreactor:reactor-core:3.7.4" testImplementation 'org.testng:testng:7.11.0' // use for reactive streams test inheritance From 968a4ea6cd8b17fa767acb2eb012ae270fa7838f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Mar 2025 17:18:12 +0000 Subject: [PATCH 276/345] Bump org.eclipse.jetty:jetty-server from 11.0.24 to 11.0.25 Bumps org.eclipse.jetty:jetty-server from 11.0.24 to 11.0.25. --- updated-dependencies: - dependency-name: org.eclipse.jetty:jetty-server dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1a379c317a..2b3eeb0984 100644 --- a/build.gradle +++ b/build.gradle @@ -110,7 +110,7 @@ dependencies { testImplementation 'org.codehaus.groovy:groovy:3.0.24' testImplementation 'org.codehaus.groovy:groovy-json:3.0.24' testImplementation 'com.google.code.gson:gson:2.12.1' - testImplementation 'org.eclipse.jetty:jetty-server:11.0.24' + testImplementation 'org.eclipse.jetty:jetty-server:11.0.25' testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3' testImplementation 'org.awaitility:awaitility-groovy:4.2.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' From 40f8c1dbeb8b19102340cbd83517bd981500ff2b Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 29 Mar 2025 08:19:25 +1100 Subject: [PATCH 277/345] Remove older GCP performance testing code --- .github/workflows/create_job.js | 77 ------------------------ .github/workflows/invoke_test_runner.yml | 58 ------------------ 2 files changed, 135 deletions(-) delete mode 100644 .github/workflows/create_job.js delete mode 100644 .github/workflows/invoke_test_runner.yml diff --git a/.github/workflows/create_job.js b/.github/workflows/create_job.js deleted file mode 100644 index e14f39f828..0000000000 --- a/.github/workflows/create_job.js +++ /dev/null @@ -1,77 +0,0 @@ -const { CloudTasksClient } = require('@google-cloud/tasks'); -const { v4: uuidv4 } = require('uuid'); - -const client = new CloudTasksClient(); - -const constructPayload = () => { - const jobId = String(uuidv4()); - const commitHash = process.env.COMMIT_HASH; - const branch = process.env.BRANCH; - const classes = process.env.CLASSES; - const pullRequestNumber = process.env.PULL_REQUEST_NUMBER; - - const payloadStructure = { - "jobId": jobId, - "commitHash": commitHash.trim(), - "branch": branch.trim(), - "classes": convertClassesStringToArray(classes), - "pullRequest": pullRequestNumber.trim(), - } - return payloadStructure; -} - -const convertClassesStringToArray = (classes) => { - const classesArray = classes.split(','); - const trimmedClassesArray = classesArray.map(currentClass => currentClass.trim()); - return trimmedClassesArray; -} - -const formatPayload = (payloadStructure) => { - const parsedPayload = JSON.stringify(JSON.stringify(payloadStructure)); - const payload = `{"argument": ${parsedPayload}}`; - console.log(`Payload: ${payload}`); - return payload; -} - -const constructTask = (serviceAccountEmail, payload, url) => { - const task = { - httpRequest: { - httpMethod: 'POST', - url, - oauthToken: { - serviceAccountEmail, - }, - body: Buffer.from(payload).toString('base64'), - }, - }; - return task; -} - -const createRequestBody = (payload) => { - const project = process.env.PROJECT_ID; - const queue = process.env.QUEUE_ID; - const location = process.env.LOCATION; - const url = process.env.WORKFLOW_URL - const serviceAccountEmail = process.env.SERVICE_ACCOUNT_EMAIL; - const requestBody = { - "fullyQualifiedQueueName": client.queuePath(project, location, queue), - "task": constructTask(serviceAccountEmail, payload, url) - } - return requestBody; -} - -const constructRequest = () => { - const payloadStructure = constructPayload(); - const payload = formatPayload(payloadStructure); - const requestBody = createRequestBody(payload); - const request = { parent: requestBody.fullyQualifiedQueueName, task: requestBody.task }; - return request; -} - -async function createHttpTaskWithToken() { - const request = constructRequest(); - const [response] = await client.createTask(request); - const name = response.name; - console.log(`Created task ${name}`); -} -createHttpTaskWithToken(); diff --git a/.github/workflows/invoke_test_runner.yml b/.github/workflows/invoke_test_runner.yml deleted file mode 100644 index 4eb0307eaa..0000000000 --- a/.github/workflows/invoke_test_runner.yml +++ /dev/null @@ -1,58 +0,0 @@ -name: invoke_test_runner -on: - push: - branches: - - master - workflow_dispatch: - inputs: - BRANCH_INPUT: - description: 'Branch' - required: true - COMMIT_HASH_INPUT: - description: 'Commit hash' - required: true - CLASSES_TO_EXECUTE_INPUT: - description: 'Classes to test' - required: false - PULL_REQUEST_NUMBER_INPUT: - description: 'Pull request number' - required: false -env: - PROJECT_ID: ${{ secrets.PROJECT_ID }} - QUEUE_ID: ${{ secrets.QUEUE_ID }} - LOCATION: ${{ secrets.LOCATION }} - SERVICE_ACCOUNT_EMAIL: ${{ secrets.SERVICE_ACCOUNT_EMAIL }} - WORKFLOW_URL: ${{ secrets.WORKFLOW_URL }} - #Payload variables - COMMIT_HASH: ${{ (github.sha) }} - BRANCH: ${{ (github.ref_name) }} - CLASSES: ${{ (github.event.inputs.CLASSES_TO_EXECUTE_INPUT) }} - PULL_REQUEST_NUMBER: ${{ (github.event.inputs.PULL_REQUEST_NUMBER_INPUT) }} - -jobs: - execute_workflow: - if: github.repository == 'graphql-java/graphql-java' - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: '14' - - run: npm install --prefix .github/workflows - - - name: Update COMMIT_HASH - if: ${{ github.event_name == 'workflow_dispatch' }} - run: echo "COMMIT_HASH=${{ (github.event.inputs.COMMIT_HASH_INPUT) }} " >> $GITHUB_ENV - - - name: Update BRANCH - if: ${{ github.event_name == 'workflow_dispatch' }} - run: echo "BRANCH=${{ (github.event.inputs.BRANCH_INPUT) }} " >> $GITHUB_ENV - - - id: 'auth' - name: 'Authenticate to Google Cloud' - uses: google-github-actions/auth@v2.1.8 - with: - credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} - - - name: Execute JS script - run: node .github/workflows/create_job.js From 57487ae7f504ed9670293537d4cc2b0403b2591a Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 29 Mar 2025 08:22:19 +1100 Subject: [PATCH 278/345] Update performance pipeline to be triggered by pull request merges rather than master commits --- .github/workflows/commit_performance_result.yml | 1 + .github/workflows/publish_commit.yml | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/commit_performance_result.yml b/.github/workflows/commit_performance_result.yml index c4db0610e8..86715d9d8a 100644 --- a/.github/workflows/commit_performance_result.yml +++ b/.github/workflows/commit_performance_result.yml @@ -33,6 +33,7 @@ jobs: echo "Performance results already present" exit 0 fi + git pull git commit -m "Add performance results for commit ${{ github.event.inputs.sha }}" git push diff --git a/.github/workflows/publish_commit.yml b/.github/workflows/publish_commit.yml index fdb1747c26..f55a6a580f 100644 --- a/.github/workflows/publish_commit.yml +++ b/.github/workflows/publish_commit.yml @@ -1,8 +1,12 @@ name: Publish Commit SHA for performance testing on: - push: + pull_request: + types: + - closed branches: - master + paths-ignore: + - 'performance-results/**' permissions: id-token: write # This is required for requesting the JWT contents: read # This is required for actions/checkout From 5f9b01dd2c305e3e7c9b7acc3971788a7bd1b151 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 29 Mar 2025 11:07:50 +1100 Subject: [PATCH 279/345] Detect and prohibit new Guava classes --- build.gradle | 2 + .../groovy/graphql/GuavaLimitCheck.groovy | 78 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 src/test/groovy/graphql/GuavaLimitCheck.groovy diff --git a/build.gradle b/build.gradle index 1a379c317a..96242099a0 100644 --- a/build.gradle +++ b/build.gradle @@ -125,6 +125,8 @@ dependencies { testAnnotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.37' jmh 'org.openjdk.jmh:jmh-core:1.37' jmh 'org.openjdk.jmh:jmh-generator-annprocess:1.37' + + testImplementation "com.tngtech.archunit:archunit-junit5:1.2.0" } shadowJar { diff --git a/src/test/groovy/graphql/GuavaLimitCheck.groovy b/src/test/groovy/graphql/GuavaLimitCheck.groovy new file mode 100644 index 0000000000..815a97959e --- /dev/null +++ b/src/test/groovy/graphql/GuavaLimitCheck.groovy @@ -0,0 +1,78 @@ +package graphql + +import com.tngtech.archunit.core.domain.JavaClasses +import com.tngtech.archunit.core.importer.ClassFileImporter +import com.tngtech.archunit.core.importer.ImportOption +import spock.lang.Specification + +/* + * We selectively shade in a few classes of Guava, however we want to minimise dependencies so we want to keep this list small. + * This check ensures no new Guava classes are added + */ +class GuavaLimitCheck extends Specification { + + static final String GUAVA_PACKAGE_PREFIX = "com.google.common" + + static final Set ALLOWED_GUAVA_CLASSES = [ + "com.google.common.collect.ImmutableMap", + "com.google.common.collect.ImmutableSet", + "com.google.common.collect.ImmutableList", + "com.google.common.base.Strings", + "com.google.common.collect.BiMap", + "com.google.common.collect.HashBiMap", + "com.google.common.collect.ImmutableCollection", + "com.google.common.collect.LinkedHashMultimap", + "com.google.common.collect.Multimap", + "com.google.common.collect.Table", + "com.google.common.collect.Sets", + "com.google.common.collect.Multimaps", + "com.google.common.collect.Iterables", + "com.google.common.collect.HashBasedTable", + "com.google.common.collect.HashMultimap", + "com.google.common.collect.Interner", + "com.google.common.collect.Interners" + ] + + def "should identify which classes use prohibited Guava dependencies"() { + given: + JavaClasses importedClasses = new ClassFileImporter() + .withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS) + .importPackages("graphql") + + when: + Map> violationsByClass = [:] + + importedClasses.each { javaClass -> + def className = javaClass.name + def guavaUsages = javaClass.getAccessesFromSelf() + .collect { it.targetOwner } + .findAll { it.packageName.startsWith(GUAVA_PACKAGE_PREFIX) && !ALLOWED_GUAVA_CLASSES.contains(it) } + .toSet() + + if (!guavaUsages.isEmpty()) { + violationsByClass[className] = guavaUsages + } + } + + then: + violationsByClass.isEmpty() + + cleanup: "if the test fails, provide detailed information about which classes have violations" + if (!violationsByClass.isEmpty()) { + def errorMessage = new StringBuilder("Prohibited Guava class usage found:\n") + + violationsByClass.each { className, guavaClasses -> + errorMessage.append("\nClass: ${className} uses these prohibited Guava classes:\n") + guavaClasses.each { guavaClass -> + errorMessage.append(" - ${guavaClass}\n") + } + } + + errorMessage.append("\nEither:\n") + errorMessage.append("1. Preferred option: Replace them with alternatives that don't depend on Guava\n") + errorMessage.append("2. If absolutely necessary: Add these Guava classes to the shade configuration in the build.gradle file\n") + + println errorMessage.toString() + } + } +} From 8507df14df1c2c7138342c6dd18787a0d84892a7 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 29 Mar 2025 11:42:06 +1100 Subject: [PATCH 280/345] Fix bug should be fully qualified name --- src/test/groovy/graphql/GuavaLimitCheck.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/GuavaLimitCheck.groovy b/src/test/groovy/graphql/GuavaLimitCheck.groovy index 815a97959e..19be5de631 100644 --- a/src/test/groovy/graphql/GuavaLimitCheck.groovy +++ b/src/test/groovy/graphql/GuavaLimitCheck.groovy @@ -46,7 +46,7 @@ class GuavaLimitCheck extends Specification { def className = javaClass.name def guavaUsages = javaClass.getAccessesFromSelf() .collect { it.targetOwner } - .findAll { it.packageName.startsWith(GUAVA_PACKAGE_PREFIX) && !ALLOWED_GUAVA_CLASSES.contains(it) } + .findAll { it.packageName.startsWith(GUAVA_PACKAGE_PREFIX) && !ALLOWED_GUAVA_CLASSES.contains(it.fullName) } .toSet() if (!guavaUsages.isEmpty()) { From 6fb0db222f2bf4f78fe874e574688442142c4db8 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 29 Mar 2025 11:47:02 +1100 Subject: [PATCH 281/345] Add full list of Guava exemptions --- .../groovy/graphql/GuavaLimitCheck.groovy | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/test/groovy/graphql/GuavaLimitCheck.groovy b/src/test/groovy/graphql/GuavaLimitCheck.groovy index 19be5de631..cc4fc7ff58 100644 --- a/src/test/groovy/graphql/GuavaLimitCheck.groovy +++ b/src/test/groovy/graphql/GuavaLimitCheck.groovy @@ -14,23 +14,34 @@ class GuavaLimitCheck extends Specification { static final String GUAVA_PACKAGE_PREFIX = "com.google.common" static final Set ALLOWED_GUAVA_CLASSES = [ - "com.google.common.collect.ImmutableMap", - "com.google.common.collect.ImmutableSet", - "com.google.common.collect.ImmutableList", "com.google.common.base.Strings", "com.google.common.collect.BiMap", + "com.google.common.collect.HashBasedTable", "com.google.common.collect.HashBiMap", + "com.google.common.collect.HashMultimap", + "com.google.common.collect.HashMultiset", + "com.google.common.collect.ImmutableBiMap", "com.google.common.collect.ImmutableCollection", + "com.google.common.collect.ImmutableList", + "com.google.common.collect.ImmutableList\$Builder", + "com.google.common.collect.ImmutableListMultimap", + "com.google.common.collect.ImmutableListMultimap\$Builder", + "com.google.common.collect.ImmutableMap", + "com.google.common.collect.ImmutableMap\$Builder", + "com.google.common.collect.ImmutableSet", + "com.google.common.collect.ImmutableSet\$Builder", + "com.google.common.collect.Interner", + "com.google.common.collect.Interners", + "com.google.common.collect.Iterables", "com.google.common.collect.LinkedHashMultimap", + "com.google.common.collect.Maps", "com.google.common.collect.Multimap", - "com.google.common.collect.Table", - "com.google.common.collect.Sets", "com.google.common.collect.Multimaps", - "com.google.common.collect.Iterables", - "com.google.common.collect.HashBasedTable", - "com.google.common.collect.HashMultimap", - "com.google.common.collect.Interner", - "com.google.common.collect.Interners" + "com.google.common.collect.Multiset", + "com.google.common.collect.Multisets", + "com.google.common.collect.Sets", + "com.google.common.collect.Sets\$SetView", + "com.google.common.collect.Table" ] def "should identify which classes use prohibited Guava dependencies"() { From f0ffbee67e43f0a862380ab21a5c22732655b245 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sat, 29 Mar 2025 11:51:41 +1100 Subject: [PATCH 282/345] Prepare for version 23 --- .github/workflows/pull_request.yml | 1 + README.md | 2 +- README.zh_cn.md | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 6a68d71271..8a1bbfe82c 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -7,6 +7,7 @@ on: pull_request: branches: - master + - 23.x - 22.x - 21.x - 20.x diff --git a/README.md b/README.md index 14f906c100..64f61df038 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This is a [GraphQL](https://github.com/graphql/graphql-spec) Java implementation Latest build in Maven central: https://repo1.maven.org/maven2/com/graphql-java/graphql-java/ [![Build](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml/badge.svg)](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml) -[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=22.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) +[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=23.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) [![Latest Snapshot](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?label=maven-central%20snapshot&versionPrefix=0)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) [![MIT licensed](https://img.shields.io/badge/license-MIT-green)](https://github.com/graphql-java/graphql-java/blob/master/LICENSE.md) diff --git a/README.zh_cn.md b/README.zh_cn.md index 15efa0dbf3..057e89df07 100644 --- a/README.zh_cn.md +++ b/README.zh_cn.md @@ -5,7 +5,7 @@ 该组件是 [GraphQL 规范](https://github.com/graphql/graphql-spec) 的 Java 实现。 [![Build](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml/badge.svg)](https://github.com/graphql-java/graphql-java/actions/workflows/master.yml) -[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=20.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) +[![Latest Release](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?versionPrefix=23.)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) [![Latest Snapshot](https://img.shields.io/maven-central/v/com.graphql-java/graphql-java?label=maven-central%20snapshot&versionPrefix=0)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java/graphql-java/) [![MIT licensed](https://img.shields.io/badge/license-MIT-green)](https://github.com/graphql-java/graphql-java/blob/master/LICENSE.md) From 007e0b36e517aca7a2c6e8d5d24135cf8a540f19 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 30 Mar 2025 09:04:10 +1100 Subject: [PATCH 283/345] Add rule and tests --- .../validation/ValidationErrorType.java | 1 + .../java/graphql/validation/Validator.java | 4 +- ...tField.java => SubscriptionRootField.java} | 42 ++++- src/main/resources/i18n/Validation.properties | 3 +- .../resources/i18n/Validation_de.properties | 4 +- .../resources/i18n/Validation_nl.properties | 2 - ...riptionRootFieldNoSkipNoIncludeTest.groovy | 153 ++++++++++++++++++ ...roovy => SubscriptionRootFieldTest.groovy} | 3 +- 8 files changed, 197 insertions(+), 15 deletions(-) rename src/main/java/graphql/validation/rules/{SubscriptionUniqueRootField.java => SubscriptionRootField.java} (58%) create mode 100644 src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy rename src/test/groovy/graphql/validation/rules/{SubscriptionUniqueRootFieldTest.groovy => SubscriptionRootFieldTest.groovy} (99%) diff --git a/src/main/java/graphql/validation/ValidationErrorType.java b/src/main/java/graphql/validation/ValidationErrorType.java index e701a5d778..e480c5c360 100644 --- a/src/main/java/graphql/validation/ValidationErrorType.java +++ b/src/main/java/graphql/validation/ValidationErrorType.java @@ -43,6 +43,7 @@ public enum ValidationErrorType implements ValidationErrorClassification { NullValueForNonNullArgument, SubscriptionMultipleRootFields, SubscriptionIntrospectionRootField, + ForbidSkipAndIncludeOnSubscriptionRoot, UniqueObjectFieldName, UnknownOperation } diff --git a/src/main/java/graphql/validation/Validator.java b/src/main/java/graphql/validation/Validator.java index 52709109d6..8bda10839b 100644 --- a/src/main/java/graphql/validation/Validator.java +++ b/src/main/java/graphql/validation/Validator.java @@ -27,7 +27,7 @@ import graphql.validation.rules.PossibleFragmentSpreads; import graphql.validation.rules.ProvidedNonNullArguments; import graphql.validation.rules.ScalarLeaves; -import graphql.validation.rules.SubscriptionUniqueRootField; +import graphql.validation.rules.SubscriptionRootField; import graphql.validation.rules.UniqueArgumentNames; import graphql.validation.rules.UniqueDirectiveNamesPerLocation; import graphql.validation.rules.UniqueFragmentNames; @@ -155,7 +155,7 @@ public List createRules(ValidationContext validationContext, Valid UniqueVariableNames uniqueVariableNamesRule = new UniqueVariableNames(validationContext, validationErrorCollector); rules.add(uniqueVariableNamesRule); - SubscriptionUniqueRootField uniqueSubscriptionRootField = new SubscriptionUniqueRootField(validationContext, validationErrorCollector); + SubscriptionRootField uniqueSubscriptionRootField = new SubscriptionRootField(validationContext, validationErrorCollector); rules.add(uniqueSubscriptionRootField); UniqueObjectFieldName uniqueObjectFieldName = new UniqueObjectFieldName(validationContext, validationErrorCollector); diff --git a/src/main/java/graphql/validation/rules/SubscriptionUniqueRootField.java b/src/main/java/graphql/validation/rules/SubscriptionRootField.java similarity index 58% rename from src/main/java/graphql/validation/rules/SubscriptionUniqueRootField.java rename to src/main/java/graphql/validation/rules/SubscriptionRootField.java index 0ded9ca632..758ecff605 100644 --- a/src/main/java/graphql/validation/rules/SubscriptionUniqueRootField.java +++ b/src/main/java/graphql/validation/rules/SubscriptionRootField.java @@ -6,9 +6,12 @@ import graphql.execution.FieldCollectorParameters; import graphql.execution.MergedField; import graphql.execution.MergedSelectionSet; +import graphql.execution.RawVariables; +import graphql.execution.ValuesResolver; +import graphql.language.Directive; import graphql.language.NodeUtil; import graphql.language.OperationDefinition; -import graphql.language.Selection; +import graphql.language.VariableDefinition; import graphql.schema.GraphQLObjectType; import graphql.validation.AbstractRule; import graphql.validation.ValidationContext; @@ -16,20 +19,25 @@ import java.util.List; +import static graphql.Directives.INCLUDE_DIRECTIVE_DEFINITION; +import static graphql.Directives.SKIP_DIRECTIVE_DEFINITION; import static graphql.language.OperationDefinition.Operation.SUBSCRIPTION; import static graphql.validation.ValidationErrorType.SubscriptionIntrospectionRootField; import static graphql.validation.ValidationErrorType.SubscriptionMultipleRootFields; +import static graphql.validation.ValidationErrorType.ForbidSkipAndIncludeOnSubscriptionRoot; /** * A subscription operation must only have one root field * A subscription operation's single root field must not be an introspection field * https://spec.graphql.org/draft/#sec-Single-root-field + * + * A subscription operation's root field must not have neither @skip nor @include directives */ @Internal -public class SubscriptionUniqueRootField extends AbstractRule { +public class SubscriptionRootField extends AbstractRule { private final FieldCollector fieldCollector = new FieldCollector(); - public SubscriptionUniqueRootField(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { + public SubscriptionRootField(ValidationContext validationContext, ValidationErrorCollector validationErrorCollector) { super(validationContext, validationErrorCollector); } @@ -39,16 +47,24 @@ public void checkOperationDefinition(OperationDefinition operationDef) { GraphQLObjectType subscriptionType = getValidationContext().getSchema().getSubscriptionType(); + // This coercion takes into account default values for variables + List variableDefinitions = operationDef.getVariableDefinitions(); + CoercedVariables coercedVariableValues = ValuesResolver.coerceVariableValues( + getValidationContext().getSchema(), + variableDefinitions, + RawVariables.emptyVariables(), + getValidationContext().getGraphQLContext(), + getValidationContext().getI18n().getLocale()); + FieldCollectorParameters collectorParameters = FieldCollectorParameters.newParameters() .schema(getValidationContext().getSchema()) .fragments(NodeUtil.getFragmentsByName(getValidationContext().getDocument())) - .variables(CoercedVariables.emptyVariables().toMap()) + .variables(coercedVariableValues.toMap()) .objectType(subscriptionType) .graphQLContext(getValidationContext().getGraphQLContext()) .build(); MergedSelectionSet fields = fieldCollector.collectFields(collectorParameters, operationDef.getSelectionSet()); - List subscriptionSelections = operationDef.getSelectionSet().getSelections(); if (fields.size() > 1) { String message = i18n(SubscriptionMultipleRootFields, "SubscriptionUniqueRootField.multipleRootFields", operationDef.getName()); @@ -57,11 +73,15 @@ public void checkOperationDefinition(OperationDefinition operationDef) { MergedField mergedField = fields.getSubFieldsList().get(0); - if (isIntrospectionField(mergedField)) { String message = i18n(SubscriptionIntrospectionRootField, "SubscriptionIntrospectionRootField.introspectionRootField", operationDef.getName(), mergedField.getName()); addError(SubscriptionIntrospectionRootField, mergedField.getSingleField().getSourceLocation(), message); } + + if (hasSkipOrIncludeDirectives(mergedField)) { + String message = i18n(ForbidSkipAndIncludeOnSubscriptionRoot, "SubscriptionRootField.forbidSkipAndIncludeOnSubscriptionRoot", operationDef.getName(), mergedField.getName()); + addError(ForbidSkipAndIncludeOnSubscriptionRoot, mergedField.getSingleField().getSourceLocation(), message); + } } } } @@ -69,4 +89,14 @@ public void checkOperationDefinition(OperationDefinition operationDef) { private boolean isIntrospectionField(MergedField field) { return field.getName().startsWith("__"); } + + private boolean hasSkipOrIncludeDirectives(MergedField field) { + List directives = field.getSingleField().getDirectives(); + for (Directive directive : directives) { + if (directive.getName().equals(SKIP_DIRECTIVE_DEFINITION.getName()) || directive.getName().equals(INCLUDE_DIRECTIVE_DEFINITION.getName())) { + return true; + } + } + return false; + } } diff --git a/src/main/resources/i18n/Validation.properties b/src/main/resources/i18n/Validation.properties index a9403bea5b..e638233cf2 100644 --- a/src/main/resources/i18n/Validation.properties +++ b/src/main/resources/i18n/Validation.properties @@ -68,9 +68,8 @@ ScalarLeaves.subselectionOnLeaf=Validation error ({0}) : Subselection not allowe ScalarLeaves.subselectionRequired=Validation error ({0}) : Subselection required for type ''{1}'' of field ''{2}'' # SubscriptionUniqueRootField.multipleRootFields=Validation error ({0}) : Subscription operation ''{1}'' must have exactly one root field -SubscriptionUniqueRootField.multipleRootFieldsWithFragment=Validation error ({0}) : Subscription operation ''{1}'' must have exactly one root field with fragments SubscriptionIntrospectionRootField.introspectionRootField=Validation error ({0}) : Subscription operation ''{1}'' root field ''{2}'' cannot be an introspection field -SubscriptionIntrospectionRootField.introspectionRootFieldWithFragment=Validation error ({0}) : Subscription operation ''{1}'' fragment root field ''{2}'' cannot be an introspection field +SubscriptionRootField.forbidSkipAndIncludeOnSubscriptionRoot=Validation error ({0}) : Subscription operation ''{1}'' root field ''{2}'' must not use @skip nor @include directives in top level selection # UniqueArgumentNames.uniqueArgument=Validation error ({0}) : There can be only one argument named ''{1}'' # diff --git a/src/main/resources/i18n/Validation_de.properties b/src/main/resources/i18n/Validation_de.properties index 7823c9d511..fa58577fa1 100644 --- a/src/main/resources/i18n/Validation_de.properties +++ b/src/main/resources/i18n/Validation_de.properties @@ -60,9 +60,9 @@ ScalarLeaves.subselectionOnLeaf=Validierungsfehler ({0}) : Unterauswahl für Bla ScalarLeaves.subselectionRequired=Validierungsfehler ({0}) : Unterauswahl erforderlich für Typ ''{1}'' des Feldes ''{2}'' # SubscriptionUniqueRootField.multipleRootFields=Validierungsfehler ({0}) : Subscription operation ''{1}'' muss genau ein root field haben -SubscriptionUniqueRootField.multipleRootFieldsWithFragment=Validierungsfehler ({0}) : Subscription operation ''{1}'' muss genau ein root field mit Fragmenten haben SubscriptionIntrospectionRootField.introspectionRootField=Validierungsfehler ({0}) : Subscription operation ''{1}'' root field ''{2}'' kann kein introspection field sein -SubscriptionIntrospectionRootField.introspectionRootFieldWithFragment=Validierungsfehler ({0}) : Subscription operation ''{1}'' fragment root field ''{2}'' kann kein introspection field sein +SubscriptionRootField.forbidSkipAndIncludeOnSubscriptionRoot=Validierungsfehler ({0}) : Subscription operation ''{1}'' root field ''{2}'' darf weder @skip noch @include directive in top level selection +# # UniqueArgumentNames.uniqueArgument=Validierungsfehler ({0}) : Es kann nur ein Argument namens ''{1}'' geben # diff --git a/src/main/resources/i18n/Validation_nl.properties b/src/main/resources/i18n/Validation_nl.properties index e30b342640..be2b6cca7b 100644 --- a/src/main/resources/i18n/Validation_nl.properties +++ b/src/main/resources/i18n/Validation_nl.properties @@ -58,9 +58,7 @@ ScalarLeaves.subselectionOnLeaf=Validatiefout ({0}) : Sub-selectie niet toegesta ScalarLeaves.subselectionRequired=Validatiefout ({0}) : Sub-selectie verplicht voor type ''{1}'' van veld ''{2}'' # SubscriptionUniqueRootField.multipleRootFields=Validatiefout ({0}) : Subscription operation ''{1}'' moet exact één root field hebben -SubscriptionUniqueRootField.multipleRootFieldsWithFragment=Validatiefout ({0}) : Subscription operation ''{1}'' moet exact één root field met fragmenten hebben SubscriptionIntrospectionRootField.introspectionRootField=Validatiefout ({0}) : Subscription operation ''{1}'' root field ''{2}'' kan geen introspectieveld zijn -SubscriptionIntrospectionRootField.introspectionRootFieldWithFragment=Validatiefout ({0}) : Subscription operation ''{1}'' fragment root field ''{2}'' kan geen introspectieveld zijn # UniqueArgumentNames.uniqueArgument=Validatiefout ({0}) : Er mag maar één argument met naam ''{1}'' bestaan # diff --git a/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy b/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy new file mode 100644 index 0000000000..35fdf7af7c --- /dev/null +++ b/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy @@ -0,0 +1,153 @@ +package graphql.validation.rules + +import graphql.parser.Parser +import graphql.validation.SpecValidationSchema +import graphql.validation.ValidationError +import graphql.validation.Validator +import spock.lang.Specification + +class SubscriptionRootFieldNoSkipNoIncludeTest extends Specification { + + def "valid subscription with @skip and @include directives on subfields"() { + given: + def query = """ + subscription MySubscription(\$bool: Boolean = true) { + dog { + name @skip(if: \$bool) + nickname @include(if: \$bool) + } + } + """ + + when: + def validationErrors = validate(query) + + then: + validationErrors.isEmpty() + } + + def "invalid subscription with @skip directive on root field"() { + given: + def query = """ + subscription MySubscription(\$bool: Boolean = false) { + dog @skip(if: \$bool) { + name + } + } + """ + + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 1 + validationErrors.first().getMessage().contains("Subscription operation 'MySubscription' root field 'dog' must not use @skip nor @include directives in top level selection") + } + + def "invalid subscription with @include directive on root field"() { + given: + def query = """ + subscription MySubscription { + dog @include(if: true) { + name + } + } + """ + + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 1 + validationErrors.first().getMessage().contains("Subscription operation 'MySubscription' root field 'dog' must not use @skip nor @include directives in top level selection") + } + + // dz todo investigate NPE with field collector on spreads at root level + def "invalid subscription with directive in fragment spread"() { + given: + def query = """ + subscription MySubscription { + ...dogFragment @skip(if: false) + } + + fragment dogFragment on Subscription { + dog { + name + } + } + """ + + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 1 + validationErrors.first().getMessage() == "Subscription root field cannot have @skip directive." + } + + // dz todo investigate NPE with field collector on spreads at root level + def "invalid subscription with directive in inline fragment"() { + given: + def query = """ + subscription MySubscription { + ... on Subscription @include(if: true) { + dog { + name + } + } + } + """ + + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 1 + validationErrors.first().getMessage() == "Subscription root fields cannot have @include directive." + } + + def "@skip and @include directives are valid on query root fields"() { + given: + def query = """ + query MyQuery { + pet @skip(if: false) { + name + } + pet @include(if: true) { + name + } + } + """ + + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 0 + } + + def "@skip and @include directives are valid on mutation root fields"() { + given: + def query = """ + mutation MyMutation { + createDog(input: {id: "a"}) @skip(if: false) { + name + } + createDog(input: {id: "a"}) @include(if: true) { + name + } + } + """ + + when: + def validationErrors = validate(query) + + then: + validationErrors.size() == 0 + } + + static List validate(String query) { + def document = new Parser().parseDocument(query) + return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) + } +} diff --git a/src/test/groovy/graphql/validation/rules/SubscriptionUniqueRootFieldTest.groovy b/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldTest.groovy similarity index 99% rename from src/test/groovy/graphql/validation/rules/SubscriptionUniqueRootFieldTest.groovy rename to src/test/groovy/graphql/validation/rules/SubscriptionRootFieldTest.groovy index 9b171f2256..53f0d7fe50 100644 --- a/src/test/groovy/graphql/validation/rules/SubscriptionUniqueRootFieldTest.groovy +++ b/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldTest.groovy @@ -7,7 +7,7 @@ import graphql.validation.ValidationErrorType import graphql.validation.Validator import spock.lang.Specification -class SubscriptionUniqueRootFieldTest extends Specification { +class SubscriptionRootFieldTest extends Specification { def "5.2.3.1 subscription with only one root field passes validation"() { given: def subscriptionOneRoot = ''' @@ -286,6 +286,7 @@ class SubscriptionUniqueRootFieldTest extends Specification { then: validationErrors.empty } + static List validate(String query) { def document = new Parser().parseDocument(query) return new Validator().validateDocument(SpecValidationSchema.specValidationSchema, document, Locale.ENGLISH) From 6a1414c13226e395c280934101785598b1e6feb4 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 30 Mar 2025 10:13:54 +1100 Subject: [PATCH 284/345] Fix typo in fragment --- ...riptionRootFieldNoSkipNoIncludeTest.groovy | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy b/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy index 35fdf7af7c..0cb4c86dcb 100644 --- a/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy @@ -47,8 +47,8 @@ class SubscriptionRootFieldNoSkipNoIncludeTest extends Specification { def "invalid subscription with @include directive on root field"() { given: def query = """ - subscription MySubscription { - dog @include(if: true) { + subscription MySubscription(\$bool: Boolean = true) { + dog @include(if: \$bool) { name } } @@ -62,16 +62,15 @@ class SubscriptionRootFieldNoSkipNoIncludeTest extends Specification { validationErrors.first().getMessage().contains("Subscription operation 'MySubscription' root field 'dog' must not use @skip nor @include directives in top level selection") } - // dz todo investigate NPE with field collector on spreads at root level - def "invalid subscription with directive in fragment spread"() { + def "invalid subscription with directive on root field in fragment spread"() { given: def query = """ - subscription MySubscription { - ...dogFragment @skip(if: false) + subscription MySubscription(\$bool: Boolean = false) { + ...dogFragment } - fragment dogFragment on Subscription { - dog { + fragment dogFragment on SubscriptionRoot { + dog @skip(if: \$bool) { name } } @@ -82,16 +81,15 @@ class SubscriptionRootFieldNoSkipNoIncludeTest extends Specification { then: validationErrors.size() == 1 - validationErrors.first().getMessage() == "Subscription root field cannot have @skip directive." + validationErrors.first().getMessage().contains("Subscription operation 'MySubscription' root field 'dog' must not use @skip nor @include directives in top level selection") } - // dz todo investigate NPE with field collector on spreads at root level - def "invalid subscription with directive in inline fragment"() { + def "invalid subscription with directive on root field in inline fragment"() { given: def query = """ - subscription MySubscription { - ... on Subscription @include(if: true) { - dog { + subscription MySubscription(\$bool: Boolean = true) { + ... on SubscriptionRoot { + dog @include(if: \$bool) { name } } @@ -103,7 +101,7 @@ class SubscriptionRootFieldNoSkipNoIncludeTest extends Specification { then: validationErrors.size() == 1 - validationErrors.first().getMessage() == "Subscription root fields cannot have @include directive." + validationErrors.first().getMessage().contains("Subscription operation 'MySubscription' root field 'dog' must not use @skip nor @include directives in top level selection") } def "@skip and @include directives are valid on query root fields"() { From e63d32a6658e1a16026ed197fa7f9355695282a8 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 30 Mar 2025 10:20:55 +1100 Subject: [PATCH 285/345] Add English placeholder sentence --- src/main/resources/i18n/Validation_nl.properties | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/i18n/Validation_nl.properties b/src/main/resources/i18n/Validation_nl.properties index be2b6cca7b..4cef5f2a0a 100644 --- a/src/main/resources/i18n/Validation_nl.properties +++ b/src/main/resources/i18n/Validation_nl.properties @@ -59,6 +59,7 @@ ScalarLeaves.subselectionRequired=Validatiefout ({0}) : Sub-selectie verplicht v # SubscriptionUniqueRootField.multipleRootFields=Validatiefout ({0}) : Subscription operation ''{1}'' moet exact één root field hebben SubscriptionIntrospectionRootField.introspectionRootField=Validatiefout ({0}) : Subscription operation ''{1}'' root field ''{2}'' kan geen introspectieveld zijn +SubscriptionRootField.forbidSkipAndIncludeOnSubscriptionRoot=Validation error ({0}) : Subscription operation ''{1}'' root field ''{2}'' must not use @skip nor @include directives in top level selection # UniqueArgumentNames.uniqueArgument=Validatiefout ({0}) : Er mag maar één argument met naam ''{1}'' bestaan # From 0219c47adc2a1a058ee634fa7a431731ed2fb204 Mon Sep 17 00:00:00 2001 From: dondonz <13839920+dondonz@users.noreply.github.com> Date: Sun, 30 Mar 2025 10:29:10 +1100 Subject: [PATCH 286/345] Add another case --- .../rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy b/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy index 0cb4c86dcb..31b526fe4c 100644 --- a/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy +++ b/src/test/groovy/graphql/validation/rules/SubscriptionRootFieldNoSkipNoIncludeTest.groovy @@ -33,6 +33,9 @@ class SubscriptionRootFieldNoSkipNoIncludeTest extends Specification { dog @skip(if: \$bool) { name } + dog @include(if: true) { + nickname + } } """ From b42397f47f8ebb02199706250e7c31093ee10a17 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 16:15:00 +0000 Subject: [PATCH 287/345] Bump net.bytebuddy:byte-buddy-agent from 1.17.2 to 1.17.5 Bumps [net.bytebuddy:byte-buddy-agent](https://github.com/raphw/byte-buddy) from 1.17.2 to 1.17.5. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.2...byte-buddy-1.17.5) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy-agent dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 3aa1fe8714..1ce59bfe4f 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -4,7 +4,7 @@ plugins { dependencies { implementation(rootProject) - implementation("net.bytebuddy:byte-buddy-agent:1.17.2") + implementation("net.bytebuddy:byte-buddy-agent:1.17.5") testImplementation 'org.junit.jupiter:junit-jupiter:5.12.0' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' From 8096ca2adae1ed6fa41abd6720c67b4fae538ab1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 16:15:03 +0000 Subject: [PATCH 288/345] Bump net.bytebuddy:byte-buddy from 1.17.2 to 1.17.5 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.17.2 to 1.17.5. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.2...byte-buddy-1.17.5) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent/build.gradle b/agent/build.gradle index 46ebbdd8d5..3484d69556 100644 --- a/agent/build.gradle +++ b/agent/build.gradle @@ -6,7 +6,7 @@ plugins { } dependencies { - implementation("net.bytebuddy:byte-buddy:1.17.2") + implementation("net.bytebuddy:byte-buddy:1.17.5") // graphql-java itself implementation(rootProject) } From a22461470972666c273971f6a45c1d4aede6a577 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 30 Mar 2025 22:22:41 +1000 Subject: [PATCH 289/345] adding a counter to ExecutionContext that tracks if the engine is running --- .../AbstractAsyncExecutionStrategy.java | 4 ++- .../execution/AsyncExecutionStrategy.java | 8 +++++ .../AsyncSerialExecutionStrategy.java | 13 ++++++-- .../graphql/execution/ExecutionContext.java | 22 +++++++++++++ .../graphql/execution/ExecutionStrategy.java | 33 ++++++++++++++++--- .../SubscriptionExecutionStrategy.java | 18 +++++++--- 6 files changed, 87 insertions(+), 11 deletions(-) diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index 863e0d6fad..3b1490d3c2 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -5,7 +5,6 @@ import graphql.ExecutionResultImpl; import graphql.PublicSpi; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; @@ -24,8 +23,10 @@ public AbstractAsyncExecutionStrategy(DataFetcherExceptionHandler dataFetcherExc protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult) { return (List results, Throwable exception) -> { + executionContext.running(); if (exception != null) { handleNonNullException(executionContext, overallResult, exception); + executionContext.finished(); return; } Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); @@ -35,6 +36,7 @@ protected BiConsumer, Throwable> handleResults(ExecutionContext exe resolvedValuesByField.put(fieldName, result); } overallResult.complete(new ExecutionResultImpl(resolvedValuesByField, executionContext.getErrors())); + executionContext.finished(); }; } } diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index bbd4a9cf68..f665938404 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -38,6 +38,7 @@ public AsyncExecutionStrategy(DataFetcherExceptionHandler exceptionHandler) { @Override @SuppressWarnings("FutureReturnValueIgnored") public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + executionContext.running(); DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -50,6 +51,7 @@ public CompletableFuture execute(ExecutionContext executionCont Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); if (isNotSensible.isPresent()) { + executionContext.finished(); return CompletableFuture.completedFuture(isNotSensible.get()); } @@ -60,11 +62,13 @@ public CompletableFuture execute(ExecutionContext executionCont executionStrategyCtx.onDispatched(); futures.await().whenComplete((completeValueInfos, throwable) -> { + executionContext.running(); List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, fieldsExecutedOnInitialResult, overallResult); if (throwable != null) { handleResultsConsumer.accept(null, throwable.getCause()); + executionContext.finished(); return; } @@ -75,17 +79,21 @@ public CompletableFuture execute(ExecutionContext executionCont dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos); executionStrategyCtx.onFieldValuesInfo(completeValueInfos); fieldValuesFutures.await().whenComplete(handleResultsConsumer); + executionContext.finished(); }).exceptionally((ex) -> { + executionContext.running(); // if there are any issues with combining/handling the field results, // complete the future at all costs and bubble up any thrown exception so // the execution does not hang. dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex); executionStrategyCtx.onFieldValuesException(); overallResult.completeExceptionally(ex); + executionContext.finished(); return null; }); overallResult.whenComplete(executionStrategyCtx::onCompleted); + executionContext.finished(); return overallResult; } } diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index fb871712da..da45d9c31a 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -32,6 +32,7 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler @Override @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + executionContext.running(); DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -46,16 +47,20 @@ public CompletableFuture execute(ExecutionContext executionCont // so belts and braces Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); if (isNotSensible.isPresent()) { + executionContext.finished(); return CompletableFuture.completedFuture(isNotSensible.get()); } CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> { + executionContext.running(); MergedField currentField = fields.getSubField(fieldName); ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); ExecutionStrategyParameters newParameters = parameters .transform(builder -> builder.field(currentField).path(fieldPath)); - return resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); + Object resolveSerialField = resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); + executionContext.finished(); + return resolveSerialField; }); CompletableFuture overallResult = new CompletableFuture<>(); @@ -63,6 +68,7 @@ public CompletableFuture execute(ExecutionContext executionCont resultsFuture.whenComplete(handleResults(executionContext, fieldNames, overallResult)); overallResult.whenComplete(executionStrategyCtx::onCompleted); + executionContext.finished(); return overallResult; } @@ -75,8 +81,11 @@ private Object resolveSerialField(ExecutionContext executionContext, if (fieldWithInfo instanceof CompletableFuture) { //noinspection unchecked return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> { + executionContext.running(); dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); - return fvi.getFieldValueFuture(); + CompletableFuture fieldValueFuture = fvi.getFieldValueFuture(); + executionContext.finished(); + return fieldValueFuture; }); } else { FieldValueInfo fvi = (FieldValueInfo) fieldWithInfo; diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index b166b19025..cf2028fbf5 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -28,6 +28,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Supplier; @@ -63,6 +64,8 @@ public class ExecutionContext { private final Supplier queryTree; private final boolean propagateErrorsOnNonNullContractFailure; + private final AtomicInteger isRunning = new AtomicInteger(0); + // this is modified after creation so it needs to be volatile to ensure visibility across Threads private volatile DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; @@ -141,7 +144,9 @@ public Supplier getNormalizedVariables() { /** * @param for two + * * @return the legacy context + * * @deprecated use {@link #getGraphQLContext()} instead */ @Deprecated(since = "2021-07-05") @@ -184,6 +189,7 @@ public ValueUnboxer getValueUnboxer() { * @return true if the current operation should propagate errors in non-null positions * Propagating errors is the default. Error aware clients may opt in returning null in non-null positions * by using the `@experimental_disableErrorPropagation` directive. + * * @see graphql.Directives#setExperimentalDisableErrorPropagationEnabled(boolean) to change the JVM wide default */ @ExperimentalApi @@ -338,6 +344,7 @@ public DataLoaderDispatchStrategy getDataLoaderDispatcherStrategy() { * the current values and allows you to transform it how you want. * * @param builderConsumer the consumer code that will be given a builder to transform + * * @return a new ExecutionContext object based on calling build on that builder */ public ExecutionContext transform(Consumer builderConsumer) { @@ -349,4 +356,19 @@ public ExecutionContext transform(Consumer builderConsu public ResultNodesInfo getResultNodesInfo() { return resultNodesInfo; } + + @Internal + public boolean isRunning() { + return isRunning.get() > 0; + } + + @Internal + public void running() { + isRunning.incrementAndGet(); + } + + @Internal + public void finished() { + isRunning.decrementAndGet(); + } } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 3b45786533..c485b8499e 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -201,6 +201,7 @@ public static String mkNameForPath(List currentField) { @SuppressWarnings("unchecked") @DuckTyped(shape = "CompletableFuture> | Map") protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + executionContext.running(); DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -225,8 +226,10 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat if (fieldValueInfosResult instanceof CompletableFuture) { CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { + executionContext.running(); if (throwable != null) { handleResultsConsumer.accept(null, throwable); + executionContext.finished(); return; } @@ -234,16 +237,20 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); resolveObjectCtx.onFieldValuesInfo(completeValueInfos); resultFutures.await().whenComplete(handleResultsConsumer); + executionContext.finished(); }).exceptionally((ex) -> { + executionContext.running(); // if there are any issues with combining/handling the field results, // complete the future at all costs and bubble up any thrown exception so // the execution does not hang. dataLoaderDispatcherStrategy.executeObjectOnFieldValuesException(ex, parameters); resolveObjectCtx.onFieldValuesException(); overallResult.completeExceptionally(ex); + executionContext.finished(); return null; }); overallResult.whenComplete(resolveObjectCtx::onCompleted); + executionContext.finished(); return overallResult; } else { List completeValueInfos = (List) fieldValueInfosResult; @@ -257,10 +264,12 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat CompletableFuture> completedValues = (CompletableFuture>) completedValuesObject; completedValues.whenComplete(handleResultsConsumer); overallResult.whenComplete(resolveObjectCtx::onCompleted); + executionContext.finished(); return overallResult; } else { Map fieldValueMap = buildFieldValueMap(fieldsExecutedOnInitialResult, (List) completedValuesObject); resolveObjectCtx.onCompleted(fieldValueMap, null); + executionContext.finished(); return fieldValueMap; } } @@ -276,12 +285,15 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat private BiConsumer, Throwable> buildFieldValueMap(List fieldNames, CompletableFuture> overallResult, ExecutionContext executionContext) { return (List results, Throwable exception) -> { + executionContext.running(); if (exception != null) { handleValueException(overallResult, exception, executionContext); + executionContext.finished(); return; } Map resolvedValuesByField = buildFieldValueMap(fieldNames, results); overallResult.complete(resolvedValuesByField); + executionContext.finished(); }; } @@ -509,11 +521,15 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; return fetchedValue .handle((result, exception) -> { + executionContext.running(); fetchCtx.onCompleted(result, exception); if (exception != null) { - return handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); + CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); + executionContext.finished(); + return handleFetchingExceptionResult; } else { // we can simply return the fetched value CF and avoid a allocation + executionContext.finished(); return fetchedValue; } }) @@ -553,7 +569,7 @@ protected Supplier getNormalizedField(ExecutionContex protected FetchedValue unboxPossibleDataFetcherResult(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object result) { - + executionContext.running(); if (result instanceof DataFetcherResult) { DataFetcherResult dataFetcherResult = (DataFetcherResult) result; @@ -567,10 +583,14 @@ protected FetchedValue unboxPossibleDataFetcherResult(ExecutionContext execution localContext = parameters.getLocalContext(); } Object unBoxedValue = executionContext.getValueUnboxer().unbox(dataFetcherResult.getData()); - return new FetchedValue(unBoxedValue, dataFetcherResult.getErrors(), localContext); + FetchedValue fetchedValue = new FetchedValue(unBoxedValue, dataFetcherResult.getErrors(), localContext); + executionContext.finished(); + return fetchedValue; } else { Object unBoxedValue = executionContext.getValueUnboxer().unbox(result); - return new FetchedValue(unBoxedValue, ImmutableList.of(), parameters.getLocalContext()); + FetchedValue fetchedValue = new FetchedValue(unBoxedValue, ImmutableList.of(), parameters.getLocalContext()); + executionContext.finished(); + return fetchedValue; } } @@ -638,6 +658,7 @@ protected FieldValueInfo completeField(ExecutionContext executionContext, Execut } private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { + executionContext.running(); GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); @@ -661,6 +682,7 @@ private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionC CompletableFuture executionResultFuture = fieldValueInfo.getFieldValueFuture(); ctxCompleteField.onDispatched(); executionResultFuture.whenComplete(ctxCompleteField::onCompleted); + executionContext.finished(); return fieldValueInfo; } @@ -833,13 +855,16 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, overallResult.whenComplete(completeListCtx::onCompleted); resultsFuture.whenComplete((results, exception) -> { + executionContext.running(); if (exception != null) { handleValueException(overallResult, exception, executionContext); + executionContext.finished(); return; } List completedResults = new ArrayList<>(results.size()); completedResults.addAll(results); overallResult.complete(completedResults); + executionContext.finished(); }); listOrPromiseToList = overallResult; } else { diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 4cc43963b8..7d98a28c9a 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -56,7 +56,7 @@ public SubscriptionExecutionStrategy(DataFetcherExceptionHandler dataFetcherExce @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - + executionContext.running(); Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy( @@ -69,19 +69,25 @@ public CompletableFuture execute(ExecutionContext executionCont // // when the upstream source event stream completes, subscribe to it and wire in our adapter CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { + executionContext.running(); + ; if (publisher == null) { - return new ExecutionResultImpl(null, executionContext.getErrors()); + ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); + executionContext.finished(); + return executionResult; } Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered); - return new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); + ExecutionResultImpl executionResult = new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); + executionContext.finished(); + return executionResult; }); // dispatched the subscription query executionStrategyCtx.onDispatched(); overallResult.whenComplete(executionStrategyCtx::onCompleted); - + executionContext.finished(); return overallResult; } @@ -109,11 +115,13 @@ private CompletableFuture> createSourceEventStream(ExecutionCo CompletableFuture fieldFetched = Async.toCompletableFuture(fetchField(executionContext, newParameters)); return fieldFetched.thenApply(fetchedValue -> { + executionContext.running(); Object publisher = fetchedValue.getFetchedValue(); if (publisher != null) { assertTrue(publisher instanceof Publisher, () -> "Your data fetcher must return a Publisher of events when using graphql subscriptions"); } //noinspection unchecked,DataFlowIssue + executionContext.finished(); return (Publisher) publisher; }); } @@ -132,6 +140,7 @@ private CompletableFuture> createSourceEventStream(ExecutionCo */ private CompletableFuture executeSubscriptionEvent(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object eventPayload) { + executionContext.running(); Instrumentation instrumentation = executionContext.getInstrumentation(); ExecutionContext newExecutionContext = executionContext.transform(builder -> builder @@ -162,6 +171,7 @@ private CompletableFuture executeSubscriptionEvent(ExecutionCon executionContext.getExecutionInput(), executionContext.getGraphQLSchema()); overallResult = overallResult.thenCompose(executionResult -> instrumentation.instrumentExecutionResult(executionResult, i13nExecutionParameters, executionContext.getInstrumentationState())); + executionContext.finished(); return overallResult; } From 4c17673ce4d8c9fefb86723d9e114a11b0729c9b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 31 Mar 2025 23:21:02 +0000 Subject: [PATCH 290/345] Add performance results for commit cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7 --- ...d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json diff --git a/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json b/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json new file mode 100644 index 0000000000..ac01ce7b4f --- /dev/null +++ b/performance-results/2025-03-31T23:20:48Z-cd99d17c3d8134fcfa8ca0ab4f2283c99b1370e7-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4095002146992455, + "scoreError" : 0.025505340753752086, + "scoreConfidence" : [ + 3.3839948739454933, + 3.4350055554529977 + ], + "scorePercentiles" : { + "0.0" : 3.404163195746615, + "50.0" : 3.4102788182455352, + "90.0" : 3.4132800265592973, + "95.0" : 3.4132800265592973, + "99.0" : 3.4132800265592973, + "99.9" : 3.4132800265592973, + "99.99" : 3.4132800265592973, + "99.999" : 3.4132800265592973, + "99.9999" : 3.4132800265592973, + "100.0" : 3.4132800265592973 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4132800265592973, + 3.411452008475927 + ], + [ + 3.404163195746615, + 3.4091056280151433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7245578519058582, + "scoreError" : 0.024912795202235074, + "scoreConfidence" : [ + 1.6996450567036232, + 1.7494706471080932 + ], + "scorePercentiles" : { + "0.0" : 1.7211598482106032, + "50.0" : 1.7235201540372407, + "90.0" : 1.7300312513383473, + "95.0" : 1.7300312513383473, + "99.0" : 1.7300312513383473, + "99.9" : 1.7300312513383473, + "99.99" : 1.7300312513383473, + "99.999" : 1.7300312513383473, + "99.9999" : 1.7300312513383473, + "100.0" : 1.7300312513383473 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7211598482106032, + 1.7228377141578146 + ], + [ + 1.7242025939166667, + 1.7300312513383473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8653820156363996, + "scoreError" : 0.010780862871240771, + "scoreConfidence" : [ + 0.8546011527651588, + 0.8761628785076404 + ], + "scorePercentiles" : { + "0.0" : 0.8629236869657826, + "50.0" : 0.8659809453132804, + "90.0" : 0.8666424849532549, + "95.0" : 0.8666424849532549, + "99.0" : 0.8666424849532549, + "99.9" : 0.8666424849532549, + "99.99" : 0.8666424849532549, + "99.999" : 0.8666424849532549, + "99.9999" : 0.8666424849532549, + "100.0" : 0.8666424849532549 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8659980265177031, + 0.8659638641088577 + ], + [ + 0.8629236869657826, + 0.8666424849532549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.845427151308781, + "scoreError" : 0.23528497239241766, + "scoreConfidence" : [ + 15.610142178916364, + 16.0807121237012 + ], + "scorePercentiles" : { + "0.0" : 15.685382986452229, + "50.0" : 15.794741526952283, + "90.0" : 16.05433497503823, + "95.0" : 16.05433497503823, + "99.0" : 16.05433497503823, + "99.9" : 16.05433497503823, + "99.99" : 16.05433497503823, + "99.999" : 16.05433497503823, + "99.9999" : 16.05433497503823, + "100.0" : 16.05433497503823 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.705963889103662, + 15.983985656350747, + 15.907397863104613 + ], + [ + 15.794741526952283, + 15.685382986452229, + 15.783258404085283 + ], + [ + 15.707878097947686, + 16.05433497503823, + 15.985900962744292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2618.6331027609417, + "scoreError" : 164.53393097173048, + "scoreConfidence" : [ + 2454.099171789211, + 2783.1670337326723 + ], + "scorePercentiles" : { + "0.0" : 2526.588483782207, + "50.0" : 2574.4482466906097, + "90.0" : 2779.116655176981, + "95.0" : 2779.116655176981, + "99.0" : 2779.116655176981, + "99.9" : 2779.116655176981, + "99.99" : 2779.116655176981, + "99.999" : 2779.116655176981, + "99.9999" : 2779.116655176981, + "100.0" : 2779.116655176981 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2574.4482466906097, + 2567.169496959159, + 2583.5862751102313 + ], + [ + 2691.7266850893725, + 2759.1161944439864, + 2779.116655176981 + ], + [ + 2526.588483782207, + 2550.387208827728, + 2535.558678768202 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70548.16913826618, + "scoreError" : 244.49656136443414, + "scoreConfidence" : [ + 70303.67257690175, + 70792.66569963061 + ], + "scorePercentiles" : { + "0.0" : 70333.39038528103, + "50.0" : 70574.58948612705, + "90.0" : 70727.34078165884, + "95.0" : 70727.34078165884, + "99.0" : 70727.34078165884, + "99.9" : 70727.34078165884, + "99.99" : 70727.34078165884, + "99.999" : 70727.34078165884, + "99.9999" : 70727.34078165884, + "100.0" : 70727.34078165884 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70727.34078165884, + 70333.39038528103, + 70469.07400113309 + ], + [ + 70446.7874393602, + 70574.58948612705, + 70377.48010235681 + ], + [ + 70686.9996314109, + 70637.21329216441, + 70680.64712490341 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 333.90502579287846, + "scoreError" : 10.48452847769103, + "scoreConfidence" : [ + 323.42049731518745, + 344.3895542705695 + ], + "scorePercentiles" : { + "0.0" : 323.7340712326594, + "50.0" : 332.554273388344, + "90.0" : 344.35325070599015, + "95.0" : 344.35325070599015, + "99.0" : 344.35325070599015, + "99.9" : 344.35325070599015, + "99.99" : 344.35325070599015, + "99.999" : 344.35325070599015, + "99.9999" : 344.35325070599015, + "100.0" : 344.35325070599015 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 323.7340712326594, + 330.9442044287599, + 332.554273388344 + ], + [ + 344.35325070599015, + 341.53721675036223, + 330.2777034476568 + ], + [ + 337.1697350039635, + 332.963429061658, + 331.611348116512 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.14950954869005, + "scoreError" : 4.836651540160923, + "scoreConfidence" : [ + 100.31285800852912, + 109.98616108885098 + ], + "scorePercentiles" : { + "0.0" : 100.91133191706817, + "50.0" : 106.59798299070972, + "90.0" : 108.39761451537689, + "95.0" : 108.39761451537689, + "99.0" : 108.39761451537689, + "99.9" : 108.39761451537689, + "99.99" : 108.39761451537689, + "99.999" : 108.39761451537689, + "99.9999" : 108.39761451537689, + "100.0" : 108.39761451537689 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.27462527804794, + 100.91133191706817, + 102.60138617565751 + ], + [ + 106.59798299070972, + 104.85781049140613, + 106.73497928138285 + ], + [ + 108.39761451537689, + 108.05399948905632, + 106.91585579950491 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0635880857287969, + "scoreError" : 0.0011326306299092221, + "scoreConfidence" : [ + 0.062455455098887676, + 0.06472071635870612 + ], + "scorePercentiles" : { + "0.0" : 0.062470017516351305, + "50.0" : 0.0637208354944978, + "90.0" : 0.06454115485794684, + "95.0" : 0.06454115485794684, + "99.0" : 0.06454115485794684, + "99.9" : 0.06454115485794684, + "99.99" : 0.06454115485794684, + "99.999" : 0.06454115485794684, + "99.9999" : 0.06454115485794684, + "100.0" : 0.06454115485794684 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.062470017516351305, + 0.06317745563438563, + 0.06288347814522062 + ], + [ + 0.06391383142340362, + 0.06341452927486604, + 0.0637208354944978 + ], + [ + 0.06437003169535384, + 0.06380143751714634, + 0.06454115485794684 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.731061859869773E-4, + "scoreError" : 7.774255833409394E-6, + "scoreConfidence" : [ + 3.6533193015356787E-4, + 3.808804418203867E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6551122994718863E-4, + "50.0" : 3.755504457892557E-4, + "90.0" : 3.7857010140567406E-4, + "95.0" : 3.7857010140567406E-4, + "99.0" : 3.7857010140567406E-4, + "99.9" : 3.7857010140567406E-4, + "99.99" : 3.7857010140567406E-4, + "99.999" : 3.7857010140567406E-4, + "99.9999" : 3.7857010140567406E-4, + "100.0" : 3.7857010140567406E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.757933912683506E-4, + 3.76255239570355E-4, + 3.7088208784642214E-4 + ], + [ + 3.7857010140567406E-4, + 3.755504457892557E-4, + 3.770222975377734E-4 + ], + [ + 3.71370276442085E-4, + 3.670006040756906E-4, + 3.6551122994718863E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014464432942230857, + "scoreError" : 3.773796000125417E-4, + "scoreConfidence" : [ + 0.014087053342218315, + 0.014841812542243399 + ], + "scorePercentiles" : { + "0.0" : 0.01420708790665494, + "50.0" : 0.014423894288491884, + "90.0" : 0.01477697409632679, + "95.0" : 0.01477697409632679, + "99.0" : 0.01477697409632679, + "99.9" : 0.01477697409632679, + "99.99" : 0.01477697409632679, + "99.999" : 0.01477697409632679, + "99.9999" : 0.01477697409632679, + "100.0" : 0.01477697409632679 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014423894288491884, + 0.014402292067465215, + 0.014473567330947153 + ], + [ + 0.01474985725411184, + 0.014677930232216797, + 0.01477697409632679 + ], + [ + 0.01420708790665494, + 0.014254813051832719, + 0.014213480252030371 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0010298916700413, + "scoreError" : 0.015481496915640302, + "scoreConfidence" : [ + 0.985548394754401, + 1.0165113885856816 + ], + "scorePercentiles" : { + "0.0" : 0.991348368259318, + "50.0" : 0.9985827688467299, + "90.0" : 1.022128904333606, + "95.0" : 1.022128904333606, + "99.0" : 1.022128904333606, + "99.9" : 1.022128904333606, + "99.99" : 1.022128904333606, + "99.999" : 1.022128904333606, + "99.9999" : 1.022128904333606, + "100.0" : 1.022128904333606 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9941657343672333, + 0.9980671982035928, + 0.991348368259318 + ], + [ + 0.9985827688467299, + 1.0013906113336004, + 1.022128904333606 + ], + [ + 1.005601708396179, + 1.0039356745306696, + 0.9940480567594433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012962170975303838, + "scoreError" : 3.677345354410526E-4, + "scoreConfidence" : [ + 0.012594436439862786, + 0.01332990551074489 + ], + "scorePercentiles" : { + "0.0" : 0.012833838495399187, + "50.0" : 0.012916732160113319, + "90.0" : 0.01318912247864082, + "95.0" : 0.01318912247864082, + "99.0" : 0.01318912247864082, + "99.9" : 0.01318912247864082, + "99.99" : 0.01318912247864082, + "99.999" : 0.01318912247864082, + "99.9999" : 0.01318912247864082, + "100.0" : 0.01318912247864082 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012908908054701438, + 0.01318912247864082, + 0.01304114794828526 + ], + [ + 0.012833838495399187, + 0.012875452609271113, + 0.012924556265525201 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9034817930410655, + "scoreError" : 0.22224119148390883, + "scoreConfidence" : [ + 3.681240601557157, + 4.125722984524974 + ], + "scorePercentiles" : { + "0.0" : 3.7797827596371882, + "50.0" : 3.8966766567625974, + "90.0" : 3.991222782122905, + "95.0" : 3.991222782122905, + "99.0" : 3.991222782122905, + "99.9" : 3.991222782122905, + "99.99" : 3.991222782122905, + "99.999" : 3.991222782122905, + "99.9999" : 3.991222782122905, + "100.0" : 3.991222782122905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7797827596371882, + 3.868858556071152, + 3.900277293291732 + ], + [ + 3.893076020233463, + 3.9876733468899523, + 3.991222782122905 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9975317276163223, + "scoreError" : 0.10471051985244478, + "scoreConfidence" : [ + 2.8928212077638773, + 3.102242247468767 + ], + "scorePercentiles" : { + "0.0" : 2.902337391468369, + "50.0" : 3.0179460974652987, + "90.0" : 3.090146808773556, + "95.0" : 3.090146808773556, + "99.0" : 3.090146808773556, + "99.9" : 3.090146808773556, + "99.99" : 3.090146808773556, + "99.999" : 3.090146808773556, + "99.9999" : 3.090146808773556, + "100.0" : 3.090146808773556 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.052372484894721, + 3.0179460974652987, + 3.090146808773556 + ], + [ + 2.997661714028777, + 2.902337391468369, + 2.909984528658714 + ], + [ + 3.0189954114095987, + 2.963754678222222, + 3.0245864336256427 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17330625960990392, + "scoreError" : 0.0066047385708272064, + "scoreConfidence" : [ + 0.1667015210390767, + 0.17991099818073114 + ], + "scorePercentiles" : { + "0.0" : 0.1698520789965351, + "50.0" : 0.17148525901982303, + "90.0" : 0.17856710444083354, + "95.0" : 0.17856710444083354, + "99.0" : 0.17856710444083354, + "99.9" : 0.17856710444083354, + "99.99" : 0.17856710444083354, + "99.999" : 0.17856710444083354, + "99.9999" : 0.17856710444083354, + "100.0" : 0.17856710444083354 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17148525901982303, + 0.17180318619753637, + 0.17054395748418233 + ], + [ + 0.17856710444083354, + 0.17850592938488452, + 0.17838055207720163 + ], + [ + 0.17040596131890604, + 0.17021230756923286, + 0.1698520789965351 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3292259542440874, + "scoreError" : 0.012091801546312187, + "scoreConfidence" : [ + 0.31713415269777523, + 0.3413177557903996 + ], + "scorePercentiles" : { + "0.0" : 0.3221258255113545, + "50.0" : 0.3256091559274574, + "90.0" : 0.33965986006385435, + "95.0" : 0.33965986006385435, + "99.0" : 0.33965986006385435, + "99.9" : 0.33965986006385435, + "99.99" : 0.33965986006385435, + "99.999" : 0.33965986006385435, + "99.9999" : 0.33965986006385435, + "100.0" : 0.33965986006385435 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3256091559274574, + 0.32656926765070865, + 0.3250800603972304 + ], + [ + 0.33965986006385435, + 0.33829378360001355, + 0.33800826975596565 + ], + [ + 0.3221258255113545, + 0.32344406209974774, + 0.3242433031904546 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.164591468070587, + "scoreError" : 0.010540941826718983, + "scoreConfidence" : [ + 0.154050526243868, + 0.175132409897306 + ], + "scorePercentiles" : { + "0.0" : 0.15646001839943674, + "50.0" : 0.16499985348468849, + "90.0" : 0.1718761545296736, + "95.0" : 0.1718761545296736, + "99.0" : 0.1718761545296736, + "99.9" : 0.1718761545296736, + "99.99" : 0.1718761545296736, + "99.999" : 0.1718761545296736, + "99.9999" : 0.1718761545296736, + "100.0" : 0.1718761545296736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16499985348468849, + 0.16565805920453228, + 0.16446735321689362 + ], + [ + 0.17158116838529244, + 0.1712827279562894, + 0.1718761545296736 + ], + [ + 0.15763110239435066, + 0.15646001839943674, + 0.15736677506412577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39030310779049593, + "scoreError" : 0.0062346041971935336, + "scoreConfidence" : [ + 0.3840685035933024, + 0.39653771198768945 + ], + "scorePercentiles" : { + "0.0" : 0.3861410541740675, + "50.0" : 0.38990841648471614, + "90.0" : 0.3984212686454183, + "95.0" : 0.3984212686454183, + "99.0" : 0.3984212686454183, + "99.9" : 0.3984212686454183, + "99.99" : 0.3984212686454183, + "99.999" : 0.3984212686454183, + "99.9999" : 0.3984212686454183, + "100.0" : 0.3984212686454183 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38856887371774945, + 0.38621954667284597, + 0.3861410541740675 + ], + [ + 0.3902935326854779, + 0.38990841648471614, + 0.389275338030362 + ], + [ + 0.3984212686454183, + 0.39248510859497643, + 0.39141483110884967 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15973932982259292, + "scoreError" : 0.004125870217414085, + "scoreConfidence" : [ + 0.15561345960517883, + 0.16386520004000701 + ], + "scorePercentiles" : { + "0.0" : 0.15601926915876185, + "50.0" : 0.1600415154837161, + "90.0" : 0.16276038462289638, + "95.0" : 0.16276038462289638, + "99.0" : 0.16276038462289638, + "99.9" : 0.16276038462289638, + "99.99" : 0.16276038462289638, + "99.999" : 0.16276038462289638, + "99.9999" : 0.16276038462289638, + "100.0" : 0.16276038462289638 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16039395408032334, + 0.1600415154837161, + 0.1600059933438935 + ], + [ + 0.1571330822098614, + 0.15717875150495889, + 0.15601926915876185 + ], + [ + 0.16276038462289638, + 0.16258213159049895, + 0.16153888640842567 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04749754239285639, + "scoreError" : 6.638648530745888E-4, + "scoreConfidence" : [ + 0.0468336775397818, + 0.04816140724593098 + ], + "scorePercentiles" : { + "0.0" : 0.04688907084816175, + "50.0" : 0.04767168074233331, + "90.0" : 0.04789557901240481, + "95.0" : 0.04789557901240481, + "99.0" : 0.04789557901240481, + "99.9" : 0.04789557901240481, + "99.99" : 0.04789557901240481, + "99.999" : 0.04789557901240481, + "99.9999" : 0.04789557901240481, + "100.0" : 0.04789557901240481 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046991556753302285, + 0.04688907084816175, + 0.04708833516975091 + ], + [ + 0.047696189976295295, + 0.04767168074233331, + 0.04775386363592952 + ], + [ + 0.04789557901240481, + 0.047608589495784316, + 0.04788301590174531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9596764.60533551, + "scoreError" : 238953.03479679223, + "scoreConfidence" : [ + 9357811.570538716, + 9835717.640132302 + ], + "scorePercentiles" : { + "0.0" : 9416117.540921919, + "50.0" : 9583250.818007663, + "90.0" : 9791073.728962818, + "95.0" : 9791073.728962818, + "99.0" : 9791073.728962818, + "99.9" : 9791073.728962818, + "99.99" : 9791073.728962818, + "99.999" : 9791073.728962818, + "99.9999" : 9791073.728962818, + "100.0" : 9791073.728962818 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9583250.818007663, + 9601638.153550863, + 9492654.818785578 + ], + [ + 9515580.683158897, + 9452075.962192817, + 9416117.540921919 + ], + [ + 9759589.867317073, + 9758899.875121951, + 9791073.728962818 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 18fa1fa30bdcb16d98d0318ab2c6eec60acdeead Mon Sep 17 00:00:00 2001 From: Brad Baker Date: Tue, 1 Apr 2025 12:04:00 +1100 Subject: [PATCH 291/345] Update src/main/java/graphql/execution/SubscriptionExecutionStrategy.java Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../java/graphql/execution/SubscriptionExecutionStrategy.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 7d98a28c9a..1df0e5b78e 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -70,7 +70,6 @@ public CompletableFuture execute(ExecutionContext executionCont // when the upstream source event stream completes, subscribe to it and wire in our adapter CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { executionContext.running(); - ; if (publisher == null) { ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); executionContext.finished(); From 5f3e6326b393eafbdf6f8e419d035c38c1fa35ae Mon Sep 17 00:00:00 2001 From: bbaker Date: Tue, 1 Apr 2025 21:23:33 +1100 Subject: [PATCH 292/345] Added ExecutionInput cancellation --- src/main/java/graphql/ExecutionInput.java | 26 ++++++++++++++++++- src/main/java/graphql/GraphQL.java | 1 - .../AbstractAsyncExecutionStrategy.java | 2 ++ .../execution/AsyncExecutionStrategy.java | 4 +++ .../AsyncSerialExecutionStrategy.java | 4 +++ .../graphql/execution/ExecutionStrategy.java | 21 ++++++++++++--- .../SubscriptionExecutionStrategy.java | 7 +++++ 7 files changed, 60 insertions(+), 5 deletions(-) diff --git a/src/main/java/graphql/ExecutionInput.java b/src/main/java/graphql/ExecutionInput.java index 18456034ca..76e5d3376e 100644 --- a/src/main/java/graphql/ExecutionInput.java +++ b/src/main/java/graphql/ExecutionInput.java @@ -7,8 +7,8 @@ import java.util.Locale; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; -import java.util.function.UnaryOperator; import static graphql.Assert.assertNotNull; import static graphql.execution.instrumentation.dataloader.EmptyDataLoaderRegistryInstance.EMPTY_DATALOADER_REGISTRY; @@ -29,6 +29,7 @@ public class ExecutionInput { private final DataLoaderRegistry dataLoaderRegistry; private final ExecutionId executionId; private final Locale locale; + private final AtomicBoolean cancelled; @Internal @@ -44,6 +45,8 @@ private ExecutionInput(Builder builder) { this.locale = builder.locale != null ? builder.locale : Locale.getDefault(); // always have a locale in place this.localContext = builder.localContext; this.extensions = builder.extensions; + + cancelled = new AtomicBoolean(false); } /** @@ -139,6 +142,27 @@ public Map getExtensions() { return extensions; } + + /** + * The graphql engine will check this frequently and if that is true, it will + * throw a {@link graphql.execution.AbortExecutionException} to cancel the execution. + *

    + * This is a best-efforts cancellation. Asynchronous data fetching code may still continue to + * run. + * + * @return true if the execution should be cancelled + */ + public boolean isCancelled() { + return cancelled.get(); + } + + /** + * This can be called to cancel the graphql execution. + */ + private void cancel() { + cancelled.set(true); + } + /** * This helps you transform the current ExecutionInput object into another one by starting a builder with all * the current values and allows you to transform it how you want. diff --git a/src/main/java/graphql/GraphQL.java b/src/main/java/graphql/GraphQL.java index 096a4f7e26..4443ed9f76 100644 --- a/src/main/java/graphql/GraphQL.java +++ b/src/main/java/graphql/GraphQL.java @@ -483,7 +483,6 @@ private CompletableFuture parseValidateAndExecute(ExecutionInpu private PreparsedDocumentEntry parseAndValidate(AtomicReference executionInputRef, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { ExecutionInput executionInput = executionInputRef.get(); - String query = executionInput.getQuery(); ParseAndValidateResult parseResult = parse(executionInput, graphQLSchema, instrumentationState); if (parseResult.isFailure()) { diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index 863e0d6fad..0a9c73a975 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -28,6 +28,8 @@ protected BiConsumer, Throwable> handleResults(ExecutionContext exe handleNonNullException(executionContext, overallResult, exception); return; } + checkIsCancelled(executionContext); + Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); int ix = 0; for (Object result : results) { diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index bbd4a9cf68..abd5198821 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -38,6 +38,8 @@ public AsyncExecutionStrategy(DataFetcherExceptionHandler exceptionHandler) { @Override @SuppressWarnings("FutureReturnValueIgnored") public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + checkIsCancelled(executionContext); + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -68,6 +70,8 @@ public CompletableFuture execute(ExecutionContext executionCont return; } + checkIsCancelled(executionContext); + Async.CombinedBuilder fieldValuesFutures = Async.ofExpectedSize(completeValueInfos.size()); for (FieldValueInfo completeValueInfo : completeValueInfos) { fieldValuesFutures.addObject(completeValueInfo.getFieldValueObject()); diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index fb871712da..b612b48d73 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -32,6 +32,8 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler @Override @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + checkIsCancelled(executionContext); + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -50,6 +52,8 @@ public CompletableFuture execute(ExecutionContext executionCont } CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> { + checkIsCancelled(executionContext); + MergedField currentField = fields.getSubField(fieldName); ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); ExecutionStrategyParameters newParameters = parameters diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 3b45786533..33a76633c6 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -201,6 +201,8 @@ public static String mkNameForPath(List currentField) { @SuppressWarnings("unchecked") @DuckTyped(shape = "CompletableFuture> | Map") protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + checkIsCancelled(executionContext); + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -229,6 +231,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat handleResultsConsumer.accept(null, throwable); return; } + checkIsCancelled(executionContext); Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); @@ -259,7 +262,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat overallResult.whenComplete(resolveObjectCtx::onCompleted); return overallResult; } else { - Map fieldValueMap = buildFieldValueMap(fieldsExecutedOnInitialResult, (List) completedValuesObject); + Map fieldValueMap = buildFieldValueMap(executionContext, fieldsExecutedOnInitialResult, (List) completedValuesObject); resolveObjectCtx.onCompleted(fieldValueMap, null); return fieldValueMap; } @@ -280,13 +283,15 @@ private BiConsumer, Throwable> buildFieldValueMap(List fiel handleValueException(overallResult, exception, executionContext); return; } - Map resolvedValuesByField = buildFieldValueMap(fieldNames, results); + checkIsCancelled(executionContext); + Map resolvedValuesByField = buildFieldValueMap(executionContext, fieldNames, results); overallResult.complete(resolvedValuesByField); }; } @NonNull - private static Map buildFieldValueMap(List fieldNames, List results) { + private static Map buildFieldValueMap(ExecutionContext executionContext, List fieldNames, List results) { + checkIsCancelled(executionContext); Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); int ix = 0; for (Object fieldValue : results) { @@ -638,6 +643,8 @@ protected FieldValueInfo completeField(ExecutionContext executionContext, Execut } private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { + checkIsCancelled(executionContext); + GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); @@ -681,6 +688,8 @@ private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionC * @throws NonNullableFieldWasNullException if a non null field resolves to a null value */ protected FieldValueInfo completeValue(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + checkIsCancelled(executionContext); + ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); Object result = executionContext.getValueUnboxer().unbox(parameters.getSource()); GraphQLType fieldType = executionStepInfo.getUnwrappedNonNullType(); @@ -1137,6 +1146,12 @@ protected ExecutionStepInfo createExecutionStepInfo(ExecutionContext executionCo .build(); } + protected static void checkIsCancelled(ExecutionContext executionContext) { + if (executionContext.getExecutionInput().isCancelled()) { + throw new AbortExecutionException("Execution has been asked to be cancelled"); + } + } + @NonNull private static Supplier> getArgumentValues(ExecutionContext executionContext, List fieldArgDefs, diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 4cc43963b8..3d26e535d2 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -56,6 +56,7 @@ public SubscriptionExecutionStrategy(DataFetcherExceptionHandler dataFetcherExce @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { + checkIsCancelled(executionContext); Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); @@ -69,6 +70,8 @@ public CompletableFuture execute(ExecutionContext executionCont // // when the upstream source event stream completes, subscribe to it and wire in our adapter CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { + checkIsCancelled(executionContext); + if (publisher == null) { return new ExecutionResultImpl(null, executionContext.getErrors()); } @@ -132,6 +135,10 @@ private CompletableFuture> createSourceEventStream(ExecutionCo */ private CompletableFuture executeSubscriptionEvent(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object eventPayload) { + // this possible exception wil be caught by the reactive Publishers and the + // reactive stream will be made into an error state + checkIsCancelled(executionContext); + Instrumentation instrumentation = executionContext.getInstrumentation(); ExecutionContext newExecutionContext = executionContext.transform(builder -> builder From 7d5308ab17cc6edc4b7cde117587f620b1d17d9e Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 1 Apr 2025 20:23:40 +1000 Subject: [PATCH 293/345] use util method --- .../AbstractAsyncExecutionStrategy.java | 7 +- .../execution/AsyncExecutionStrategy.java | 92 ++++--- .../AsyncSerialExecutionStrategy.java | 67 +++-- .../graphql/execution/ExecutionContext.java | 25 +- .../graphql/execution/ExecutionStrategy.java | 235 +++++++++--------- .../SubscriptionExecutionStrategy.java | 133 +++++----- 6 files changed, 273 insertions(+), 286 deletions(-) diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index 3b1490d3c2..0d8b0da651 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -22,11 +22,9 @@ public AbstractAsyncExecutionStrategy(DataFetcherExceptionHandler dataFetcherExc } protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult) { - return (List results, Throwable exception) -> { - executionContext.running(); + return (List results, Throwable exception) -> executionContext.runnable(() -> { if (exception != null) { handleNonNullException(executionContext, overallResult, exception); - executionContext.finished(); return; } Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); @@ -36,7 +34,6 @@ protected BiConsumer, Throwable> handleResults(ExecutionContext exe resolvedValuesByField.put(fieldName, result); } overallResult.complete(new ExecutionResultImpl(resolvedValuesByField, executionContext.getErrors())); - executionContext.finished(); - }; + }); } } diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index f665938404..68d96d2e38 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -38,62 +38,58 @@ public AsyncExecutionStrategy(DataFetcherExceptionHandler exceptionHandler) { @Override @SuppressWarnings("FutureReturnValueIgnored") public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - executionContext.running(); - DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); - dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + return executionContext.run(() -> { + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); + dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, executionContext.getInstrumentationState())); + ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, executionContext.getInstrumentationState())); - MergedSelectionSet fields = parameters.getFields(); - List fieldNames = fields.getKeys(); + MergedSelectionSet fields = parameters.getFields(); + List fieldNames = fields.getKeys(); - Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); - if (isNotSensible.isPresent()) { - executionContext.finished(); - return CompletableFuture.completedFuture(isNotSensible.get()); - } + Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); + if (isNotSensible.isPresent()) { + return CompletableFuture.completedFuture(isNotSensible.get()); + } - DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); - Async.CombinedBuilder futures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); + DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); + Async.CombinedBuilder futures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); - CompletableFuture overallResult = new CompletableFuture<>(); - executionStrategyCtx.onDispatched(); + CompletableFuture overallResult = new CompletableFuture<>(); + executionStrategyCtx.onDispatched(); - futures.await().whenComplete((completeValueInfos, throwable) -> { - executionContext.running(); - List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); + futures.await().whenComplete((completeValueInfos, throwable) -> { + executionContext.runnable(() -> { + List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); - BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, fieldsExecutedOnInitialResult, overallResult); - if (throwable != null) { - handleResultsConsumer.accept(null, throwable.getCause()); - executionContext.finished(); - return; - } + BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, fieldsExecutedOnInitialResult, overallResult); + if (throwable != null) { + handleResultsConsumer.accept(null, throwable.getCause()); + return; + } - Async.CombinedBuilder fieldValuesFutures = Async.ofExpectedSize(completeValueInfos.size()); - for (FieldValueInfo completeValueInfo : completeValueInfos) { - fieldValuesFutures.addObject(completeValueInfo.getFieldValueObject()); - } - dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos); - executionStrategyCtx.onFieldValuesInfo(completeValueInfos); - fieldValuesFutures.await().whenComplete(handleResultsConsumer); - executionContext.finished(); - }).exceptionally((ex) -> { - executionContext.running(); - // if there are any issues with combining/handling the field results, - // complete the future at all costs and bubble up any thrown exception so - // the execution does not hang. - dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex); - executionStrategyCtx.onFieldValuesException(); - overallResult.completeExceptionally(ex); - executionContext.finished(); - return null; - }); + Async.CombinedBuilder fieldValuesFutures = Async.ofExpectedSize(completeValueInfos.size()); + for (FieldValueInfo completeValueInfo : completeValueInfos) { + fieldValuesFutures.addObject(completeValueInfo.getFieldValueObject()); + } + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos); + executionStrategyCtx.onFieldValuesInfo(completeValueInfos); + fieldValuesFutures.await().whenComplete(handleResultsConsumer); + }); + }).exceptionally((ex) -> executionContext.run(() -> { + // if there are any issues with combining/handling the field results, + // complete the future at all costs and bubble up any thrown exception so + // the execution does not hang. + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex); + executionStrategyCtx.onFieldValuesException(); + overallResult.completeExceptionally(ex); + return null; + })); - overallResult.whenComplete(executionStrategyCtx::onCompleted); - executionContext.finished(); - return overallResult; + overallResult.whenComplete(executionStrategyCtx::onCompleted); + return overallResult; + }); } } diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index da45d9c31a..87ff22e4dc 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -32,44 +32,41 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler @Override @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - executionContext.running(); - DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); + return executionContext.run(() -> { + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - InstrumentationContext executionStrategyCtx = nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, - executionContext.getInstrumentationState()) - ); - MergedSelectionSet fields = parameters.getFields(); - ImmutableList fieldNames = ImmutableList.copyOf(fields.keySet()); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + InstrumentationContext executionStrategyCtx = nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, + executionContext.getInstrumentationState()) + ); + MergedSelectionSet fields = parameters.getFields(); + ImmutableList fieldNames = ImmutableList.copyOf(fields.keySet()); - // this is highly unlikely since Mutations cant do introspection BUT in theory someone could make the query strategy this code - // so belts and braces - Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); - if (isNotSensible.isPresent()) { - executionContext.finished(); - return CompletableFuture.completedFuture(isNotSensible.get()); - } + // this is highly unlikely since Mutations cant do introspection BUT in theory someone could make the query strategy this code + // so belts and braces + Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); + if (isNotSensible.isPresent()) { + return CompletableFuture.completedFuture(isNotSensible.get()); + } - CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> { - executionContext.running(); - MergedField currentField = fields.getSubField(fieldName); - ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); - ExecutionStrategyParameters newParameters = parameters - .transform(builder -> builder.field(currentField).path(fieldPath)); + CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> executionContext.run(() -> { + MergedField currentField = fields.getSubField(fieldName); + ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); + ExecutionStrategyParameters newParameters = parameters + .transform(builder -> builder.field(currentField).path(fieldPath)); - Object resolveSerialField = resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); - executionContext.finished(); - return resolveSerialField; - }); + Object resolveSerialField = resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); + return resolveSerialField; + })); - CompletableFuture overallResult = new CompletableFuture<>(); - executionStrategyCtx.onDispatched(); + CompletableFuture overallResult = new CompletableFuture<>(); + executionStrategyCtx.onDispatched(); - resultsFuture.whenComplete(handleResults(executionContext, fieldNames, overallResult)); - overallResult.whenComplete(executionStrategyCtx::onCompleted); - executionContext.finished(); - return overallResult; + resultsFuture.whenComplete(handleResults(executionContext, fieldNames, overallResult)); + overallResult.whenComplete(executionStrategyCtx::onCompleted); + return overallResult; + }); } private Object resolveSerialField(ExecutionContext executionContext, @@ -80,13 +77,11 @@ private Object resolveSerialField(ExecutionContext executionContext, Object fieldWithInfo = resolveFieldWithInfo(executionContext, newParameters); if (fieldWithInfo instanceof CompletableFuture) { //noinspection unchecked - return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> { - executionContext.running(); + return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> executionContext.run(() -> { dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); CompletableFuture fieldValueFuture = fvi.getFieldValueFuture(); - executionContext.finished(); return fieldValueFuture; - }); + })); } else { FieldValueInfo fvi = (FieldValueInfo) fieldWithInfo; dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index cf2028fbf5..4cc5b3a73b 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -28,6 +28,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; @@ -362,13 +363,27 @@ public boolean isRunning() { return isRunning.get() > 0; } - @Internal - public void running() { + public T run(Callable callable) { isRunning.incrementAndGet(); + try { + return callable.call(); + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + isRunning.decrementAndGet(); + } } - @Internal - public void finished() { - isRunning.decrementAndGet(); + public void runnable(Runnable runnable) { + isRunning.incrementAndGet(); + try { + runnable.run(); + ; + } catch (Exception e) { + throw new RuntimeException(e); + } finally { + isRunning.decrementAndGet(); + } } + } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index c485b8499e..78d1948d88 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -201,78 +201,73 @@ public static String mkNameForPath(List currentField) { @SuppressWarnings("unchecked") @DuckTyped(shape = "CompletableFuture> | Map") protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - executionContext.running(); - DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); - dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + return executionContext.run(() -> { + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); + dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + + ExecuteObjectInstrumentationContext resolveObjectCtx = ExecuteObjectInstrumentationContext.nonNullCtx( + instrumentation.beginExecuteObject(instrumentationParameters, executionContext.getInstrumentationState()) + ); - ExecuteObjectInstrumentationContext resolveObjectCtx = ExecuteObjectInstrumentationContext.nonNullCtx( - instrumentation.beginExecuteObject(instrumentationParameters, executionContext.getInstrumentationState()) - ); + List fieldNames = parameters.getFields().getKeys(); - List fieldNames = parameters.getFields().getKeys(); + DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); + Async.CombinedBuilder resolvedFieldFutures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); - DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); - Async.CombinedBuilder resolvedFieldFutures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); + CompletableFuture> overallResult = new CompletableFuture<>(); + List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); + BiConsumer, Throwable> handleResultsConsumer = buildFieldValueMap(fieldsExecutedOnInitialResult, overallResult, executionContext); - CompletableFuture> overallResult = new CompletableFuture<>(); - List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); - BiConsumer, Throwable> handleResultsConsumer = buildFieldValueMap(fieldsExecutedOnInitialResult, overallResult, executionContext); + resolveObjectCtx.onDispatched(); - resolveObjectCtx.onDispatched(); + Object fieldValueInfosResult = resolvedFieldFutures.awaitPolymorphic(); + if (fieldValueInfosResult instanceof CompletableFuture) { + CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; + fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { + executionContext.runnable(() -> { + if (throwable != null) { + handleResultsConsumer.accept(null, throwable); + return; + } - Object fieldValueInfosResult = resolvedFieldFutures.awaitPolymorphic(); - if (fieldValueInfosResult instanceof CompletableFuture) { - CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; - fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { - executionContext.running(); - if (throwable != null) { - handleResultsConsumer.accept(null, throwable); - executionContext.finished(); - return; - } + Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); + dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); + resolveObjectCtx.onFieldValuesInfo(completeValueInfos); + resultFutures.await().whenComplete(handleResultsConsumer); + }); + }).exceptionally((ex) -> executionContext.run(() -> { + // if there are any issues with combining/handling the field results, + // complete the future at all costs and bubble up any thrown exception so + // the execution does not hang. + dataLoaderDispatcherStrategy.executeObjectOnFieldValuesException(ex, parameters); + resolveObjectCtx.onFieldValuesException(); + overallResult.completeExceptionally(ex); + return null; + })); + overallResult.whenComplete(resolveObjectCtx::onCompleted); + return overallResult; + } else { + List completeValueInfos = (List) fieldValueInfosResult; Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); resolveObjectCtx.onFieldValuesInfo(completeValueInfos); - resultFutures.await().whenComplete(handleResultsConsumer); - executionContext.finished(); - }).exceptionally((ex) -> { - executionContext.running(); - // if there are any issues with combining/handling the field results, - // complete the future at all costs and bubble up any thrown exception so - // the execution does not hang. - dataLoaderDispatcherStrategy.executeObjectOnFieldValuesException(ex, parameters); - resolveObjectCtx.onFieldValuesException(); - overallResult.completeExceptionally(ex); - executionContext.finished(); - return null; - }); - overallResult.whenComplete(resolveObjectCtx::onCompleted); - executionContext.finished(); - return overallResult; - } else { - List completeValueInfos = (List) fieldValueInfosResult; - Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); - dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); - resolveObjectCtx.onFieldValuesInfo(completeValueInfos); - - Object completedValuesObject = resultFutures.awaitPolymorphic(); - if (completedValuesObject instanceof CompletableFuture) { - CompletableFuture> completedValues = (CompletableFuture>) completedValuesObject; - completedValues.whenComplete(handleResultsConsumer); - overallResult.whenComplete(resolveObjectCtx::onCompleted); - executionContext.finished(); - return overallResult; - } else { - Map fieldValueMap = buildFieldValueMap(fieldsExecutedOnInitialResult, (List) completedValuesObject); - resolveObjectCtx.onCompleted(fieldValueMap, null); - executionContext.finished(); - return fieldValueMap; + Object completedValuesObject = resultFutures.awaitPolymorphic(); + if (completedValuesObject instanceof CompletableFuture) { + CompletableFuture> completedValues = (CompletableFuture>) completedValuesObject; + completedValues.whenComplete(handleResultsConsumer); + overallResult.whenComplete(resolveObjectCtx::onCompleted); + return overallResult; + } else { + Map fieldValueMap = buildFieldValueMap(fieldsExecutedOnInitialResult, (List) completedValuesObject); + resolveObjectCtx.onCompleted(fieldValueMap, null); + return fieldValueMap; + } } - } + }); } private static Async.@NonNull CombinedBuilder fieldValuesCombinedBuilder(List completeValueInfos) { @@ -285,15 +280,14 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat private BiConsumer, Throwable> buildFieldValueMap(List fieldNames, CompletableFuture> overallResult, ExecutionContext executionContext) { return (List results, Throwable exception) -> { - executionContext.running(); - if (exception != null) { - handleValueException(overallResult, exception, executionContext); - executionContext.finished(); - return; - } - Map resolvedValuesByField = buildFieldValueMap(fieldNames, results); - overallResult.complete(resolvedValuesByField); - executionContext.finished(); + executionContext.runnable(() -> { + if (exception != null) { + handleValueException(overallResult, exception, executionContext); + return; + } + Map resolvedValuesByField = buildFieldValueMap(fieldNames, results); + overallResult.complete(resolvedValuesByField); + }); }; } @@ -520,19 +514,16 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec @SuppressWarnings("unchecked") CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; return fetchedValue - .handle((result, exception) -> { - executionContext.running(); + .handle((result, exception) -> executionContext.run(() -> { fetchCtx.onCompleted(result, exception); if (exception != null) { CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); - executionContext.finished(); return handleFetchingExceptionResult; } else { // we can simply return the fetched value CF and avoid a allocation - executionContext.finished(); return fetchedValue; } - }) + })) .thenCompose(Function.identity()) .thenApply(result -> unboxPossibleDataFetcherResult(executionContext, parameters, result)); } else { @@ -569,29 +560,26 @@ protected Supplier getNormalizedField(ExecutionContex protected FetchedValue unboxPossibleDataFetcherResult(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object result) { - executionContext.running(); - if (result instanceof DataFetcherResult) { - DataFetcherResult dataFetcherResult = (DataFetcherResult) result; + return executionContext.run(() -> { + if (result instanceof DataFetcherResult) { + DataFetcherResult dataFetcherResult = (DataFetcherResult) result; - addErrorsToRightContext(dataFetcherResult.getErrors(), parameters, executionContext); + addErrorsToRightContext(dataFetcherResult.getErrors(), parameters, executionContext); - addExtensionsIfPresent(executionContext, dataFetcherResult); + addExtensionsIfPresent(executionContext, dataFetcherResult); - Object localContext = dataFetcherResult.getLocalContext(); - if (localContext == null) { - // if the field returns nothing then they get the context of their parent field - localContext = parameters.getLocalContext(); + Object localContext = dataFetcherResult.getLocalContext(); + if (localContext == null) { + // if the field returns nothing then they get the context of their parent field + localContext = parameters.getLocalContext(); + } + Object unBoxedValue = executionContext.getValueUnboxer().unbox(dataFetcherResult.getData()); + return new FetchedValue(unBoxedValue, dataFetcherResult.getErrors(), localContext); + } else { + Object unBoxedValue = executionContext.getValueUnboxer().unbox(result); + return new FetchedValue(unBoxedValue, ImmutableList.of(), parameters.getLocalContext()); } - Object unBoxedValue = executionContext.getValueUnboxer().unbox(dataFetcherResult.getData()); - FetchedValue fetchedValue = new FetchedValue(unBoxedValue, dataFetcherResult.getErrors(), localContext); - executionContext.finished(); - return fetchedValue; - } else { - Object unBoxedValue = executionContext.getValueUnboxer().unbox(result); - FetchedValue fetchedValue = new FetchedValue(unBoxedValue, ImmutableList.of(), parameters.getLocalContext()); - executionContext.finished(); - return fetchedValue; - } + }); } private void addExtensionsIfPresent(ExecutionContext executionContext, DataFetcherResult dataFetcherResult) { @@ -658,32 +646,32 @@ protected FieldValueInfo completeField(ExecutionContext executionContext, Execut } private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { - executionContext.running(); - GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); - ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); + return executionContext.run(() -> { + GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); + ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, () -> executionStepInfo, fetchedValue); - InstrumentationContext ctxCompleteField = nonNullCtx(instrumentation.beginFieldCompletion( - instrumentationParams, executionContext.getInstrumentationState() - )); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, () -> executionStepInfo, fetchedValue); + InstrumentationContext ctxCompleteField = nonNullCtx(instrumentation.beginFieldCompletion( + instrumentationParams, executionContext.getInstrumentationState() + )); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); + NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); - ExecutionStrategyParameters newParameters = parameters.transform(builder -> - builder.executionStepInfo(executionStepInfo) - .source(fetchedValue.getFetchedValue()) - .localContext(fetchedValue.getLocalContext()) - .nonNullFieldValidator(nonNullableFieldValidator) - ); + ExecutionStrategyParameters newParameters = parameters.transform(builder -> + builder.executionStepInfo(executionStepInfo) + .source(fetchedValue.getFetchedValue()) + .localContext(fetchedValue.getLocalContext()) + .nonNullFieldValidator(nonNullableFieldValidator) + ); - FieldValueInfo fieldValueInfo = completeValue(executionContext, newParameters); + FieldValueInfo fieldValueInfo = completeValue(executionContext, newParameters); - CompletableFuture executionResultFuture = fieldValueInfo.getFieldValueFuture(); - ctxCompleteField.onDispatched(); - executionResultFuture.whenComplete(ctxCompleteField::onCompleted); - executionContext.finished(); - return fieldValueInfo; + CompletableFuture executionResultFuture = fieldValueInfo.getFieldValueFuture(); + ctxCompleteField.onDispatched(); + executionResultFuture.whenComplete(ctxCompleteField::onCompleted); + return fieldValueInfo; + }); } /** @@ -855,16 +843,15 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, overallResult.whenComplete(completeListCtx::onCompleted); resultsFuture.whenComplete((results, exception) -> { - executionContext.running(); - if (exception != null) { - handleValueException(overallResult, exception, executionContext); - executionContext.finished(); - return; - } - List completedResults = new ArrayList<>(results.size()); - completedResults.addAll(results); - overallResult.complete(completedResults); - executionContext.finished(); + executionContext.runnable(() -> { + if (exception != null) { + handleValueException(overallResult, exception, executionContext); + return; + } + List completedResults = new ArrayList<>(results.size()); + completedResults.addAll(results); + overallResult.complete(completedResults); + }); }); listOrPromiseToList = overallResult; } else { diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 1df0e5b78e..d842b6e288 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -56,38 +56,37 @@ public SubscriptionExecutionStrategy(DataFetcherExceptionHandler dataFetcherExce @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - executionContext.running(); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy( - instrumentationParameters, - executionContext.getInstrumentationState() - )); - - CompletableFuture> sourceEventStream = createSourceEventStream(executionContext, parameters); - - // - // when the upstream source event stream completes, subscribe to it and wire in our adapter - CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { - executionContext.running(); - if (publisher == null) { - ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); - executionContext.finished(); - return executionResult; - } - Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); - boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); - SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered); - ExecutionResultImpl executionResult = new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); - executionContext.finished(); - return executionResult; + return executionContext.run(() -> { + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy( + instrumentationParameters, + executionContext.getInstrumentationState() + )); + + CompletableFuture> sourceEventStream = createSourceEventStream(executionContext, parameters); + + // + // when the upstream source event stream completes, subscribe to it and wire in our adapter + CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { + return executionContext.run(() -> { + if (publisher == null) { + ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); + return executionResult; + } + Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); + boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); + SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered); + ExecutionResultImpl executionResult = new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); + return executionResult; + }); + }); + + // dispatched the subscription query + executionStrategyCtx.onDispatched(); + overallResult.whenComplete(executionStrategyCtx::onCompleted); + return overallResult; }); - - // dispatched the subscription query - executionStrategyCtx.onDispatched(); - overallResult.whenComplete(executionStrategyCtx::onCompleted); - executionContext.finished(); - return overallResult; } private boolean keepOrdered(GraphQLContext graphQLContext) { @@ -113,16 +112,14 @@ private CompletableFuture> createSourceEventStream(ExecutionCo ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); CompletableFuture fieldFetched = Async.toCompletableFuture(fetchField(executionContext, newParameters)); - return fieldFetched.thenApply(fetchedValue -> { - executionContext.running(); + return fieldFetched.thenApply(fetchedValue -> executionContext.run(() -> { Object publisher = fetchedValue.getFetchedValue(); if (publisher != null) { assertTrue(publisher instanceof Publisher, () -> "Your data fetcher must return a Publisher of events when using graphql subscriptions"); } //noinspection unchecked,DataFlowIssue - executionContext.finished(); return (Publisher) publisher; - }); + })); } /* @@ -139,39 +136,39 @@ private CompletableFuture> createSourceEventStream(ExecutionCo */ private CompletableFuture executeSubscriptionEvent(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object eventPayload) { - executionContext.running(); - Instrumentation instrumentation = executionContext.getInstrumentation(); - - ExecutionContext newExecutionContext = executionContext.transform(builder -> builder - .root(eventPayload) - .resetErrors() - ); - ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); - ExecutionStepInfo subscribedFieldStepInfo = createSubscribedFieldStepInfo(executionContext, newParameters); - - InstrumentationFieldParameters i13nFieldParameters = new InstrumentationFieldParameters(executionContext, () -> subscribedFieldStepInfo); - InstrumentationContext subscribedFieldCtx = nonNullCtx(instrumentation.beginSubscribedFieldEvent( - i13nFieldParameters, executionContext.getInstrumentationState() - )); - - FetchedValue fetchedValue = unboxPossibleDataFetcherResult(newExecutionContext, parameters, eventPayload); - FieldValueInfo fieldValueInfo = completeField(newExecutionContext, newParameters, fetchedValue); - CompletableFuture overallResult = fieldValueInfo - .getFieldValueFuture() - .thenApply(val -> new ExecutionResultImpl(val, newExecutionContext.getErrors())) - .thenApply(executionResult -> wrapWithRootFieldName(newParameters, executionResult)); - - // dispatch instrumentation so they can know about each subscription event - subscribedFieldCtx.onDispatched(); - overallResult.whenComplete(subscribedFieldCtx::onCompleted); - - // allow them to instrument each ER should they want to - InstrumentationExecutionParameters i13nExecutionParameters = new InstrumentationExecutionParameters( - executionContext.getExecutionInput(), executionContext.getGraphQLSchema()); - - overallResult = overallResult.thenCompose(executionResult -> instrumentation.instrumentExecutionResult(executionResult, i13nExecutionParameters, executionContext.getInstrumentationState())); - executionContext.finished(); - return overallResult; + return executionContext.run(() -> { + Instrumentation instrumentation = executionContext.getInstrumentation(); + + ExecutionContext newExecutionContext = executionContext.transform(builder -> builder + .root(eventPayload) + .resetErrors() + ); + ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); + ExecutionStepInfo subscribedFieldStepInfo = createSubscribedFieldStepInfo(executionContext, newParameters); + + InstrumentationFieldParameters i13nFieldParameters = new InstrumentationFieldParameters(executionContext, () -> subscribedFieldStepInfo); + InstrumentationContext subscribedFieldCtx = nonNullCtx(instrumentation.beginSubscribedFieldEvent( + i13nFieldParameters, executionContext.getInstrumentationState() + )); + + FetchedValue fetchedValue = unboxPossibleDataFetcherResult(newExecutionContext, parameters, eventPayload); + FieldValueInfo fieldValueInfo = completeField(newExecutionContext, newParameters, fetchedValue); + CompletableFuture overallResult = fieldValueInfo + .getFieldValueFuture() + .thenApply(val -> new ExecutionResultImpl(val, newExecutionContext.getErrors())) + .thenApply(executionResult -> wrapWithRootFieldName(newParameters, executionResult)); + + // dispatch instrumentation so they can know about each subscription event + subscribedFieldCtx.onDispatched(); + overallResult.whenComplete(subscribedFieldCtx::onCompleted); + + // allow them to instrument each ER should they want to + InstrumentationExecutionParameters i13nExecutionParameters = new InstrumentationExecutionParameters( + executionContext.getExecutionInput(), executionContext.getGraphQLSchema()); + + overallResult = overallResult.thenCompose(executionResult -> instrumentation.instrumentExecutionResult(executionResult, i13nExecutionParameters, executionContext.getInstrumentationState())); + return overallResult; + }); } private ExecutionResult wrapWithRootFieldName(ExecutionStrategyParameters parameters, ExecutionResult executionResult) { From 0f19b69106ce9ffcbd868efbddcffe2bf7e8979b Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Tue, 1 Apr 2025 21:53:12 +1000 Subject: [PATCH 294/345] delete legacy resolve field method --- .../graphql/execution/ExecutionStrategy.java | 27 ---------------- .../execution/ExecutionStrategyTest.groovy | 32 +++---------------- 2 files changed, 5 insertions(+), 54 deletions(-) diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 3b45786533..ebaa90d966 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -339,33 +339,6 @@ DeferredExecutionSupport createDeferredExecutionSupport(ExecutionContext executi return futures; } - /** - * Called to fetch a value for a field and resolve it further in terms of the graphql query. This will call - * #fetchField followed by #completeField and the completed Object is returned. - *

    - * An execution strategy can iterate the fields to be executed and call this method for each one - *

    - * Graphql fragments mean that for any give logical field can have one or more {@link Field} values associated with it - * in the query, hence the fieldList. However, the first entry is representative of the field for most purposes. - * - * @param executionContext contains the top level execution parameters - * @param parameters contains the parameters holding the fields to be executed and source object - * - * @return a {@link CompletableFuture} promise to an {@link Object} or the materialized {@link Object} - * - * @throws NonNullableFieldWasNullException in the future if a non-null field resolved to a null value - */ - @SuppressWarnings("unchecked") - @DuckTyped(shape = " CompletableFuture | Object") - protected Object resolveField(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { - Object fieldWithInfo = resolveFieldWithInfo(executionContext, parameters); - if (fieldWithInfo instanceof CompletableFuture) { - return ((CompletableFuture) fieldWithInfo).thenCompose(FieldValueInfo::getFieldValueFuture); - } else { - return ((FieldValueInfo) fieldWithInfo).getFieldValueObject(); - } - } - /** * Called to fetch a value for a field and its extra runtime info and resolve it further in terms of the graphql query. This will call * #fetchField followed by #completeField and the completed {@link graphql.execution.FieldValueInfo} is returned. diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy index 6a3d72ec07..25b2a022e0 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy @@ -541,7 +541,7 @@ class ExecutionStrategyTest extends Specification { DataFetchingEnvironment environment when: - executionStrategy.resolveField(executionContext, parameters) + executionStrategy.resolveFieldWithInfo(executionContext, parameters) then: 1 * dataFetcher.get(_,_,_) >> { environment = (it[2] as Supplier).get() } @@ -636,7 +636,7 @@ class ExecutionStrategyTest extends Specification { } when: - overridingStrategy.resolveField(executionContext, parameters) + overridingStrategy.resolveFieldWithInfo(executionContext, parameters) then: handlerCalled == true @@ -646,29 +646,6 @@ class ExecutionStrategyTest extends Specification { exceptionWhileDataFetching.getMessage().contains('This is the exception you are looking for') } - def "test that the old legacy method is still useful for those who derive new execution strategies"() { - - def expectedException = new UnsupportedOperationException("This is the exception you are looking for") - - //noinspection GroovyAssignabilityCheck,GroovyUnusedAssignment - def (ExecutionContext executionContext, GraphQLFieldDefinition fieldDefinition, ResultPath expectedPath, ExecutionStrategyParameters parameters, Field field, SourceLocation sourceLocation) = exceptionSetupFixture(expectedException) - - - ExecutionStrategy overridingStrategy = new ExecutionStrategy() { - @Override - CompletableFuture execute(ExecutionContext ec, ExecutionStrategyParameters p) throws NonNullableFieldWasNullException { - null - } - } - - when: - overridingStrategy.resolveField(executionContext, parameters) - - then: - executionContext.errors.size() == 1 - def exceptionWhileDataFetching = executionContext.errors[0] as ExceptionWhileDataFetching - exceptionWhileDataFetching.getMessage().contains('This is the exception you are looking for') - } def "#2519 data fetcher errors for a given field appear in FetchedResult within instrumentation"() { def expectedException = new UnsupportedOperationException("This is the exception you are looking for") @@ -700,7 +677,7 @@ class ExecutionStrategyTest extends Specification { } when: - overridingStrategy.resolveField(instrumentedExecutionContext, params) + overridingStrategy.resolveFieldWithInfo(instrumentedExecutionContext, params) then: FetchedValue fetchedValue = instrumentation.fetchedValues.get("someField") @@ -761,7 +738,8 @@ class ExecutionStrategyTest extends Specification { .build() when: - executionStrategy.resolveField(executionContext, parameters).join() + FieldValueInfo fieldValueInfo = (executionStrategy.resolveFieldWithInfo(executionContext, parameters) as CompletableFuture).join() + (fieldValueInfo.fieldValueObject as CompletableFuture).join() then: thrown(CompletionException) From 6fd0caf634c1db28cbfe65915a9c1cb757c44898 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 21:34:02 +0000 Subject: [PATCH 295/345] Add performance results for commit 12273f47d604fd8003c1cb1a2a8924e8f7626f89 --- ...604fd8003c1cb1a2a8924e8f7626f89-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json diff --git a/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json b/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json new file mode 100644 index 0000000000..93c7bd839e --- /dev/null +++ b/performance-results/2025-04-01T21:33:42Z-12273f47d604fd8003c1cb1a2a8924e8f7626f89-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.420985462330865, + "scoreError" : 0.021308159867503323, + "scoreConfidence" : [ + 3.399677302463362, + 3.442293622198368 + ], + "scorePercentiles" : { + "0.0" : 3.418007258992135, + "50.0" : 3.420373229961676, + "90.0" : 3.425188130407973, + "95.0" : 3.425188130407973, + "99.0" : 3.425188130407973, + "99.9" : 3.425188130407973, + "99.99" : 3.425188130407973, + "99.999" : 3.425188130407973, + "99.9999" : 3.425188130407973, + "100.0" : 3.425188130407973 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.418007258992135, + 3.42200693473186 + ], + [ + 3.4187395251914925, + 3.425188130407973 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7259211816186313, + "scoreError" : 0.011219628682282887, + "scoreConfidence" : [ + 1.7147015529363483, + 1.7371408103009143 + ], + "scorePercentiles" : { + "0.0" : 1.7240481148983835, + "50.0" : 1.7259595429086452, + "90.0" : 1.727717525758852, + "95.0" : 1.727717525758852, + "99.0" : 1.727717525758852, + "99.9" : 1.727717525758852, + "99.99" : 1.727717525758852, + "99.999" : 1.727717525758852, + "99.9999" : 1.727717525758852, + "100.0" : 1.727717525758852 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.724885876907566, + 1.7270332089097247 + ], + [ + 1.7240481148983835, + 1.727717525758852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674466325046533, + "scoreError" : 0.007705896262075907, + "scoreConfidence" : [ + 0.8597407362425773, + 0.8751525287667292 + ], + "scorePercentiles" : { + "0.0" : 0.8666059785196016, + "50.0" : 0.866992153998527, + "90.0" : 0.8691962435019575, + "95.0" : 0.8691962435019575, + "99.0" : 0.8691962435019575, + "99.9" : 0.8691962435019575, + "99.99" : 0.8691962435019575, + "99.999" : 0.8691962435019575, + "99.9999" : 0.8691962435019575, + "100.0" : 0.8691962435019575 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8667857553889012, + 0.8691962435019575 + ], + [ + 0.8666059785196016, + 0.8671985526081527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.154507473954208, + "scoreError" : 0.3032032937894869, + "scoreConfidence" : [ + 15.851304180164721, + 16.457710767743695 + ], + "scorePercentiles" : { + "0.0" : 15.883888547322103, + "50.0" : 16.237351237284106, + "90.0" : 16.350840322494335, + "95.0" : 16.350840322494335, + "99.0" : 16.350840322494335, + "99.9" : 16.350840322494335, + "99.99" : 16.350840322494335, + "99.999" : 16.350840322494335, + "99.9999" : 16.350840322494335, + "100.0" : 16.350840322494335 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.217804435983428, + 16.350840322494335, + 16.237351237284106 + ], + [ + 15.902125351212634, + 15.977259361703576, + 15.883888547322103 + ], + [ + 16.276565741155228, + 16.272309984981842, + 16.272422283450616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2644.344808486787, + "scoreError" : 86.02528562254417, + "scoreConfidence" : [ + 2558.3195228642426, + 2730.370094109331 + ], + "scorePercentiles" : { + "0.0" : 2586.8209241778127, + "50.0" : 2637.5472685222603, + "90.0" : 2708.2319955639605, + "95.0" : 2708.2319955639605, + "99.0" : 2708.2319955639605, + "99.9" : 2708.2319955639605, + "99.99" : 2708.2319955639605, + "99.999" : 2708.2319955639605, + "99.9999" : 2708.2319955639605, + "100.0" : 2708.2319955639605 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2637.5472685222603, + 2634.608120991165, + 2640.9078602226705 + ], + [ + 2707.3095209289977, + 2703.7568171125213, + 2708.2319955639605 + ], + [ + 2587.4985780982424, + 2592.4221907634533, + 2586.8209241778127 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70325.77067177565, + "scoreError" : 1291.3849307178716, + "scoreConfidence" : [ + 69034.38574105778, + 71617.15560249353 + ], + "scorePercentiles" : { + "0.0" : 69322.45195764846, + "50.0" : 70592.4237150667, + "90.0" : 71095.16711300776, + "95.0" : 71095.16711300776, + "99.0" : 71095.16711300776, + "99.9" : 71095.16711300776, + "99.99" : 71095.16711300776, + "99.999" : 71095.16711300776, + "99.9999" : 71095.16711300776, + "100.0" : 71095.16711300776 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70613.44484999884, + 70468.08939852084, + 70592.4237150667 + ], + [ + 71073.30799444801, + 71049.2033306343, + 71095.16711300776 + ], + [ + 69354.70219205428, + 69322.45195764846, + 69363.1454946017 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 340.7577166349173, + "scoreError" : 13.198336746781516, + "scoreConfidence" : [ + 327.55937988813577, + 353.95605338169884 + ], + "scorePercentiles" : { + "0.0" : 330.78040096354056, + "50.0" : 341.8254902127628, + "90.0" : 349.35471838817614, + "95.0" : 349.35471838817614, + "99.0" : 349.35471838817614, + "99.9" : 349.35471838817614, + "99.99" : 349.35471838817614, + "99.999" : 349.35471838817614, + "99.9999" : 349.35471838817614, + "100.0" : 349.35471838817614 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.31589625960527, + 349.35471838817614, + 349.2481281662378 + ], + [ + 330.78040096354056, + 331.33226859378885, + 331.6847680735642 + ], + [ + 342.2954285076341, + 341.8254902127628, + 340.98235054894616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.89965983414605, + "scoreError" : 1.0234192467503809, + "scoreConfidence" : [ + 107.87624058739567, + 109.92307908089643 + ], + "scorePercentiles" : { + "0.0" : 108.37603229365496, + "50.0" : 108.5505522600155, + "90.0" : 109.83768561008253, + "95.0" : 109.83768561008253, + "99.0" : 109.83768561008253, + "99.9" : 109.83768561008253, + "99.99" : 109.83768561008253, + "99.999" : 109.83768561008253, + "99.9999" : 109.83768561008253, + "100.0" : 109.83768561008253 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.37603229365496, + 108.5505522600155, + 108.56280243220073 + ], + [ + 109.55591592645746, + 109.83768561008253, + 109.71555007594219 + ], + [ + 108.48281995549353, + 108.4905998536738, + 108.52498009979388 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06272724120605161, + "scoreError" : 0.0022162873271655403, + "scoreConfidence" : [ + 0.06051095387888607, + 0.06494352853321715 + ], + "scorePercentiles" : { + "0.0" : 0.06136190240535068, + "50.0" : 0.06223583766694465, + "90.0" : 0.06464186464858017, + "95.0" : 0.06464186464858017, + "99.0" : 0.06464186464858017, + "99.9" : 0.06464186464858017, + "99.99" : 0.06464186464858017, + "99.999" : 0.06464186464858017, + "99.9999" : 0.06464186464858017, + "100.0" : 0.06464186464858017 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0640337739962861, + 0.06457937539311984, + 0.06464186464858017 + ], + [ + 0.06165480211595847, + 0.06136190240535068, + 0.061548181982680625 + ], + [ + 0.06226324983967474, + 0.06223583766694465, + 0.062226182805869105 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.710390379094124E-4, + "scoreError" : 1.1928445832262768E-5, + "scoreConfidence" : [ + 3.591105920771496E-4, + 3.829674837416752E-4 + ], + "scorePercentiles" : { + "0.0" : 3.626336021150838E-4, + "50.0" : 3.705256004146279E-4, + "90.0" : 3.799144246528192E-4, + "95.0" : 3.799144246528192E-4, + "99.0" : 3.799144246528192E-4, + "99.9" : 3.799144246528192E-4, + "99.99" : 3.799144246528192E-4, + "99.999" : 3.799144246528192E-4, + "99.9999" : 3.799144246528192E-4, + "100.0" : 3.799144246528192E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.799144246528192E-4, + 3.793384301920466E-4, + 3.7943793885042047E-4 + ], + [ + 3.626336021150838E-4, + 3.6448350332461536E-4, + 3.62749219272948E-4 + ], + [ + 3.70708421954848E-4, + 3.705256004146279E-4, + 3.695602004073025E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014321677295737002, + "scoreError" : 4.099545398900902E-4, + "scoreConfidence" : [ + 0.013911722755846912, + 0.014731631835627092 + ], + "scorePercentiles" : { + "0.0" : 0.014128172541091303, + "50.0" : 0.014189505785698575, + "90.0" : 0.014654304488123552, + "95.0" : 0.014654304488123552, + "99.0" : 0.014654304488123552, + "99.9" : 0.014654304488123552, + "99.99" : 0.014654304488123552, + "99.999" : 0.014654304488123552, + "99.9999" : 0.014654304488123552, + "100.0" : 0.014654304488123552 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014189505785698575, + 0.014186176067956552, + 0.014195022822474986 + ], + [ + 0.014128172541091303, + 0.014130851554584623, + 0.014130318505141966 + ], + [ + 0.014640681621466511, + 0.01464006227509494, + 0.014654304488123552 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.058156856583621, + "scoreError" : 0.15887940561407896, + "scoreConfidence" : [ + 0.899277450969542, + 1.2170362621977 + ], + "scorePercentiles" : { + "0.0" : 0.9879297991702065, + "50.0" : 1.0016554988982371, + "90.0" : 1.18968641232453, + "95.0" : 1.18968641232453, + "99.0" : 1.18968641232453, + "99.9" : 1.18968641232453, + "99.99" : 1.18968641232453, + "99.999" : 1.18968641232453, + "99.9999" : 1.18968641232453, + "100.0" : 1.18968641232453 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.18968641232453, + 1.1785333975960406, + 1.183730490530303 + ], + [ + 1.0016554988982371, + 1.0042734961839728, + 0.9910632743038351 + ], + [ + 0.9879297991702065, + 0.9945502313276977, + 0.9919891089177661 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01328452052372637, + "scoreError" : 9.392093654110593E-4, + "scoreConfidence" : [ + 0.012345311158315312, + 0.01422372988913743 + ], + "scorePercentiles" : { + "0.0" : 0.012975986001863305, + "50.0" : 0.013256764035906334, + "90.0" : 0.01362551115901114, + "95.0" : 0.01362551115901114, + "99.0" : 0.01362551115901114, + "99.9" : 0.01362551115901114, + "99.99" : 0.01362551115901114, + "99.999" : 0.01362551115901114, + "99.9999" : 0.01362551115901114, + "100.0" : 0.01362551115901114 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01362551115901114, + 0.013530204566610382, + 0.013610755139983395 + ], + [ + 0.012975986001863305, + 0.012983323505202288, + 0.012981342769687702 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8199575825224277, + "scoreError" : 0.05323858201215984, + "scoreConfidence" : [ + 3.766719000510268, + 3.8731961645345874 + ], + "scorePercentiles" : { + "0.0" : 3.796875929384966, + "50.0" : 3.819544478009818, + "90.0" : 3.8509473918398767, + "95.0" : 3.8509473918398767, + "99.0" : 3.8509473918398767, + "99.9" : 3.8509473918398767, + "99.99" : 3.8509473918398767, + "99.999" : 3.8509473918398767, + "99.9999" : 3.8509473918398767, + "100.0" : 3.8509473918398767 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8140265087719296, + 3.8509473918398767, + 3.8269707582249426 + ], + [ + 3.796875929384966, + 3.8058624596651445, + 3.8250624472477064 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.901999271654215, + "scoreError" : 0.06511539595555306, + "scoreConfidence" : [ + 2.836883875698662, + 2.9671146676097684 + ], + "scorePercentiles" : { + "0.0" : 2.863777385738832, + "50.0" : 2.8855375709751874, + "90.0" : 2.9610254289520426, + "95.0" : 2.9610254289520426, + "99.0" : 2.9610254289520426, + "99.9" : 2.9610254289520426, + "99.99" : 2.9610254289520426, + "99.999" : 2.9610254289520426, + "99.9999" : 2.9610254289520426, + "100.0" : 2.9610254289520426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.863777385738832, + 2.873600486494253, + 2.8855375709751874 + ], + [ + 2.8745960767461916, + 2.871018776406429, + 2.8936733446180556 + ], + [ + 2.9540984152392205, + 2.9610254289520426, + 2.9406659597177303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18278995623871602, + "scoreError" : 0.01646910130162921, + "scoreConfidence" : [ + 0.16632085493708682, + 0.19925905754034523 + ], + "scorePercentiles" : { + "0.0" : 0.17524887399891348, + "50.0" : 0.17712125903294368, + "90.0" : 0.1963312424658879, + "95.0" : 0.1963312424658879, + "99.0" : 0.1963312424658879, + "99.9" : 0.1963312424658879, + "99.99" : 0.1963312424658879, + "99.999" : 0.1963312424658879, + "99.9999" : 0.1963312424658879, + "100.0" : 0.1963312424658879 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17712125903294368, + 0.17764719309683263, + 0.17682571326519786 + ], + [ + 0.1963312424658879, + 0.19568520027786473, + 0.19540450698555992 + ], + [ + 0.17527204134534494, + 0.17557357567989887, + 0.17524887399891348 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3232566254882523, + "scoreError" : 0.02282913570582237, + "scoreConfidence" : [ + 0.30042748978242995, + 0.34608576119407464 + ], + "scorePercentiles" : { + "0.0" : 0.3092274280148423, + "50.0" : 0.3201938921298668, + "90.0" : 0.3405121527853446, + "95.0" : 0.3405121527853446, + "99.0" : 0.3405121527853446, + "99.9" : 0.3405121527853446, + "99.99" : 0.3405121527853446, + "99.999" : 0.3405121527853446, + "99.9999" : 0.3405121527853446, + "100.0" : 0.3405121527853446 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32029835740823775, + 0.31994934137445613, + 0.3201938921298668 + ], + [ + 0.3405121527853446, + 0.3400584822157236, + 0.34022206205559147 + ], + [ + 0.3092274280148423, + 0.30933073147947665, + 0.30951718193073136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1657651871890437, + "scoreError" : 0.007932720842646653, + "scoreConfidence" : [ + 0.15783246634639705, + 0.17369790803169036 + ], + "scorePercentiles" : { + "0.0" : 0.1593353740320576, + "50.0" : 0.16877857649659922, + "90.0" : 0.16972019656495027, + "95.0" : 0.16972019656495027, + "99.0" : 0.16972019656495027, + "99.9" : 0.16972019656495027, + "99.99" : 0.16972019656495027, + "99.999" : 0.16972019656495027, + "99.9999" : 0.16972019656495027, + "100.0" : 0.16972019656495027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16877857649659922, + 0.16808839190506605, + 0.16972019656495027 + ], + [ + 0.1593642279485586, + 0.15979414727877025, + 0.1593353740320576 + ], + [ + 0.1687985193099723, + 0.16892914557924255, + 0.16907810558617659 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3922519583598169, + "scoreError" : 0.00540791058135611, + "scoreConfidence" : [ + 0.3868440477784608, + 0.397659868941173 + ], + "scorePercentiles" : { + "0.0" : 0.38899327481717755, + "50.0" : 0.3920643285372643, + "90.0" : 0.39907136154674966, + "95.0" : 0.39907136154674966, + "99.0" : 0.39907136154674966, + "99.9" : 0.39907136154674966, + "99.99" : 0.39907136154674966, + "99.999" : 0.39907136154674966, + "99.9999" : 0.39907136154674966, + "100.0" : 0.39907136154674966 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3941107479703634, + 0.39320674989187276, + 0.39292061883619506 + ], + [ + 0.39907136154674966, + 0.3920643285372643, + 0.3918314238304208 + ], + [ + 0.38903332743328406, + 0.38899327481717755, + 0.38903579237502434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15861264541642875, + "scoreError" : 0.003450571682714868, + "scoreConfidence" : [ + 0.15516207373371388, + 0.16206321709914362 + ], + "scorePercentiles" : { + "0.0" : 0.15590977652359644, + "50.0" : 0.15834482064761302, + "90.0" : 0.1617350184858728, + "95.0" : 0.1617350184858728, + "99.0" : 0.1617350184858728, + "99.9" : 0.1617350184858728, + "99.99" : 0.1617350184858728, + "99.999" : 0.1617350184858728, + "99.9999" : 0.1617350184858728, + "100.0" : 0.1617350184858728 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.160611737548785, + 0.15831396635901657, + 0.15834482064761302 + ], + [ + 0.1566366366299104, + 0.15627956014314962, + 0.15590977652359644 + ], + [ + 0.1617350184858728, + 0.16011737287647107, + 0.15956491953344396 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047483792777320843, + "scoreError" : 3.9679518207553995E-4, + "scoreConfidence" : [ + 0.0470869975952453, + 0.047880587959396384 + ], + "scorePercentiles" : { + "0.0" : 0.04715763853285422, + "50.0" : 0.047544488575204914, + "90.0" : 0.047805480103640816, + "95.0" : 0.047805480103640816, + "99.0" : 0.047805480103640816, + "99.9" : 0.047805480103640816, + "99.99" : 0.047805480103640816, + "99.999" : 0.047805480103640816, + "99.9999" : 0.047805480103640816, + "100.0" : 0.047805480103640816 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047805480103640816, + 0.0477210462219762, + 0.04757783843280919 + ], + [ + 0.04722691685832621, + 0.04715763853285422, + 0.04722577149684536 + ], + [ + 0.04766301272586019, + 0.047544488575204914, + 0.04743194204837049 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9409975.270078996, + "scoreError" : 266484.5794582535, + "scoreConfidence" : [ + 9143490.690620743, + 9676459.84953725 + ], + "scorePercentiles" : { + "0.0" : 9229127.362546125, + "50.0" : 9368682.052434457, + "90.0" : 9608553.345821325, + "95.0" : 9608553.345821325, + "99.0" : 9608553.345821325, + "99.9" : 9608553.345821325, + "99.99" : 9608553.345821325, + "99.999" : 9608553.345821325, + "99.9999" : 9608553.345821325, + "100.0" : 9608553.345821325 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9229127.362546125, + 9258536.712303422, + 9247606.292051757 + ], + [ + 9608553.345821325, + 9604708.076775432, + 9604726.285988484 + ], + [ + 9404343.094924811, + 9363494.20786517, + 9368682.052434457 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 9445a407ccdb9247df2f993240df9a9a9b116f38 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 22:24:30 +0000 Subject: [PATCH 296/345] Add performance results for commit dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0 --- ...9ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json diff --git a/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json b/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json new file mode 100644 index 0000000000..cc683602ae --- /dev/null +++ b/performance-results/2025-04-01T22:24:13Z-dff69a4069ce12440d48b3d0bdd6cc1c10d6b6b0-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4194744891916873, + "scoreError" : 0.02554187101683565, + "scoreConfidence" : [ + 3.3939326181748517, + 3.445016360208523 + ], + "scorePercentiles" : { + "0.0" : 3.415566520359219, + "50.0" : 3.4189396043971776, + "90.0" : 3.4244522276131746, + "95.0" : 3.4244522276131746, + "99.0" : 3.4244522276131746, + "99.9" : 3.4244522276131746, + "99.99" : 3.4244522276131746, + "99.999" : 3.4244522276131746, + "99.9999" : 3.4244522276131746, + "100.0" : 3.4244522276131746 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4171721747963577, + 3.4244522276131746 + ], + [ + 3.415566520359219, + 3.4207070339979975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7266663105789197, + "scoreError" : 0.00869904524406742, + "scoreConfidence" : [ + 1.7179672653348523, + 1.7353653558229871 + ], + "scorePercentiles" : { + "0.0" : 1.724945010664874, + "50.0" : 1.7267529382479703, + "90.0" : 1.7282143551548643, + "95.0" : 1.7282143551548643, + "99.0" : 1.7282143551548643, + "99.9" : 1.7282143551548643, + "99.99" : 1.7282143551548643, + "99.999" : 1.7282143551548643, + "99.9999" : 1.7282143551548643, + "100.0" : 1.7282143551548643 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.724945010664874, + 1.7265763975379063 + ], + [ + 1.726929478958034, + 1.7282143551548643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8628031120549917, + "scoreError" : 0.0767462701324756, + "scoreConfidence" : [ + 0.7860568419225161, + 0.9395493821874673 + ], + "scorePercentiles" : { + "0.0" : 0.8451682861185522, + "50.0" : 0.867492884671893, + "90.0" : 0.8710583927576289, + "95.0" : 0.8710583927576289, + "99.0" : 0.8710583927576289, + "99.9" : 0.8710583927576289, + "99.99" : 0.8710583927576289, + "99.999" : 0.8710583927576289, + "99.9999" : 0.8710583927576289, + "100.0" : 0.8710583927576289 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8673623407164245, + 0.8676234286273615 + ], + [ + 0.8710583927576289, + 0.8451682861185522 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.31392561301447, + "scoreError" : 0.1312391844802445, + "scoreConfidence" : [ + 16.182686428534225, + 16.445164797494712 + ], + "scorePercentiles" : { + "0.0" : 16.21093971066763, + "50.0" : 16.302884394353885, + "90.0" : 16.46017338456293, + "95.0" : 16.46017338456293, + "99.0" : 16.46017338456293, + "99.9" : 16.46017338456293, + "99.99" : 16.46017338456293, + "99.999" : 16.46017338456293, + "99.9999" : 16.46017338456293, + "100.0" : 16.46017338456293 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.335544036726933, + 16.3881504707433, + 16.338990592960965 + ], + [ + 16.46017338456293, + 16.300954823858877, + 16.302884394353885 + ], + [ + 16.250290632880514, + 16.23740247037521, + 16.21093971066763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2756.9992365127205, + "scoreError" : 113.15020257290064, + "scoreConfidence" : [ + 2643.84903393982, + 2870.149439085621 + ], + "scorePercentiles" : { + "0.0" : 2698.7491764529773, + "50.0" : 2720.6434970594128, + "90.0" : 2847.352513628344, + "95.0" : 2847.352513628344, + "99.0" : 2847.352513628344, + "99.9" : 2847.352513628344, + "99.99" : 2847.352513628344, + "99.999" : 2847.352513628344, + "99.9999" : 2847.352513628344, + "100.0" : 2847.352513628344 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2708.7644589191254, + 2720.6434970594128, + 2722.404526193519 + ], + [ + 2710.1717555299124, + 2698.7491764529773, + 2713.328570944813 + ], + [ + 2846.681855022229, + 2847.352513628344, + 2844.896774864152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69904.38873607699, + "scoreError" : 1519.5438025687874, + "scoreConfidence" : [ + 68384.8449335082, + 71423.93253864578 + ], + "scorePercentiles" : { + "0.0" : 68682.559730696, + "50.0" : 70478.32467330323, + "90.0" : 70580.13042248992, + "95.0" : 70580.13042248992, + "99.0" : 70580.13042248992, + "99.9" : 70580.13042248992, + "99.99" : 70580.13042248992, + "99.999" : 70580.13042248992, + "99.9999" : 70580.13042248992, + "100.0" : 70580.13042248992 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68682.559730696, + 68708.866932472, + 68707.26495938459 + ], + [ + 70518.02892766449, + 70457.87631837883, + 70478.32467330323 + ], + [ + 70508.3088102308, + 70498.13785007298, + 70580.13042248992 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.97170890665683, + "scoreError" : 8.839750478157988, + "scoreConfidence" : [ + 342.1319584284988, + 359.81145938481484 + ], + "scorePercentiles" : { + "0.0" : 344.2073326740012, + "50.0" : 350.7670243218901, + "90.0" : 357.7030520279713, + "95.0" : 357.7030520279713, + "99.0" : 357.7030520279713, + "99.9" : 357.7030520279713, + "99.99" : 357.7030520279713, + "99.999" : 357.7030520279713, + "99.9999" : 357.7030520279713, + "100.0" : 357.7030520279713 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 356.5023818760904, + 356.86336793959464, + 357.7030520279713 + ], + [ + 344.51655037432863, + 344.2073326740012, + 346.18135193755194 + ], + [ + 351.4179954510821, + 350.7670243218901, + 350.58632355740076 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.13558739995234, + "scoreError" : 0.9471044773107464, + "scoreConfidence" : [ + 106.1884829226416, + 108.08269187726309 + ], + "scorePercentiles" : { + "0.0" : 106.41150472365675, + "50.0" : 106.98591081143343, + "90.0" : 108.05644484593567, + "95.0" : 108.05644484593567, + "99.0" : 108.05644484593567, + "99.9" : 108.05644484593567, + "99.99" : 108.05644484593567, + "99.999" : 108.05644484593567, + "99.9999" : 108.05644484593567, + "100.0" : 108.05644484593567 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.05644484593567, + 106.98591081143343, + 106.86280167853995 + ], + [ + 107.3278838833463, + 107.63659682409566, + 107.66812717658092 + ], + [ + 106.62162483191045, + 106.41150472365675, + 106.64939182407181 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06116770333920915, + "scoreError" : 4.8614906962900385E-4, + "scoreConfidence" : [ + 0.06068155426958015, + 0.06165385240883815 + ], + "scorePercentiles" : { + "0.0" : 0.060782978586450445, + "50.0" : 0.061090301025083386, + "90.0" : 0.06161584813121542, + "95.0" : 0.06161584813121542, + "99.0" : 0.06161584813121542, + "99.9" : 0.06161584813121542, + "99.99" : 0.06161584813121542, + "99.999" : 0.06161584813121542, + "99.9999" : 0.06161584813121542, + "100.0" : 0.06161584813121542 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06153806217731365, + 0.06138916308364743, + 0.06161584813121542 + ], + [ + 0.061090301025083386, + 0.06104354878525211, + 0.061186428299589445 + ], + [ + 0.06095554725825328, + 0.06090745270607725, + 0.060782978586450445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.695521446448638E-4, + "scoreError" : 2.8262222982506193E-5, + "scoreConfidence" : [ + 3.412899216623576E-4, + 3.9781436762737E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5000887232047905E-4, + "50.0" : 3.6917912816374846E-4, + "90.0" : 3.8959380126631364E-4, + "95.0" : 3.8959380126631364E-4, + "99.0" : 3.8959380126631364E-4, + "99.9" : 3.8959380126631364E-4, + "99.99" : 3.8959380126631364E-4, + "99.999" : 3.8959380126631364E-4, + "99.9999" : 3.8959380126631364E-4, + "100.0" : 3.8959380126631364E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5046645867463925E-4, + 3.5000887232047905E-4, + 3.5024093424695045E-4 + ], + [ + 3.8959380126631364E-4, + 3.8892023345357696E-4, + 3.886819629837889E-4 + ], + [ + 3.700855260474804E-4, + 3.6917912816374846E-4, + 3.687923846467969E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014166576121955722, + "scoreError" : 2.1144263631359052E-4, + "scoreConfidence" : [ + 0.01395513348564213, + 0.014378018758269313 + ], + "scorePercentiles" : { + "0.0" : 0.014046923717671385, + "50.0" : 0.014122111461491641, + "90.0" : 0.01439731619304848, + "95.0" : 0.01439731619304848, + "99.0" : 0.01439731619304848, + "99.9" : 0.01439731619304848, + "99.99" : 0.01439731619304848, + "99.999" : 0.01439731619304848, + "99.9999" : 0.01439731619304848, + "100.0" : 0.01439731619304848 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01439731619304848, + 0.014281812945140039, + 0.014289442321377029 + ], + [ + 0.014058839168851619, + 0.014046923717671385, + 0.014048392538699385 + ], + [ + 0.01413298399034446, + 0.014122111461491641, + 0.01412136276097747 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9740776945547436, + "scoreError" : 0.009058175914346716, + "scoreConfidence" : [ + 0.9650195186403968, + 0.9831358704690903 + ], + "scorePercentiles" : { + "0.0" : 0.9649532202817445, + "50.0" : 0.9764470310486233, + "90.0" : 0.979412945255117, + "95.0" : 0.979412945255117, + "99.0" : 0.979412945255117, + "99.9" : 0.979412945255117, + "99.99" : 0.979412945255117, + "99.999" : 0.979412945255117, + "99.9999" : 0.979412945255117, + "100.0" : 0.979412945255117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9791201020168396, + 0.9764470310486233, + 0.9716871637193937 + ], + [ + 0.9707747388856532, + 0.9649532202817445, + 0.9679974266769916 + ], + [ + 0.979412945255117, + 0.9793519523063363, + 0.9769546708019927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013012135619588671, + "scoreError" : 3.106285482246328E-4, + "scoreConfidence" : [ + 0.012701507071364039, + 0.013322764167813304 + ], + "scorePercentiles" : { + "0.0" : 0.012917852429793061, + "50.0" : 0.012971381308933288, + "90.0" : 0.013147150097681156, + "95.0" : 0.013147150097681156, + "99.0" : 0.013147150097681156, + "99.9" : 0.013147150097681156, + "99.99" : 0.013147150097681156, + "99.999" : 0.013147150097681156, + "99.9999" : 0.013147150097681156, + "100.0" : 0.013147150097681156 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012917852429793061, + 0.012919215704208975, + 0.012924454169714609 + ], + [ + 0.013018308448151966, + 0.013145832867982269, + 0.013147150097681156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.632083144066653, + "scoreError" : 0.07389883297062878, + "scoreConfidence" : [ + 3.5581843110960243, + 3.7059819770372817 + ], + "scorePercentiles" : { + "0.0" : 3.590731975592247, + "50.0" : 3.6395454342607834, + "90.0" : 3.6549121504747992, + "95.0" : 3.6549121504747992, + "99.0" : 3.6549121504747992, + "99.9" : 3.6549121504747992, + "99.99" : 3.6549121504747992, + "99.999" : 3.6549121504747992, + "99.9999" : 3.6549121504747992, + "100.0" : 3.6549121504747992 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6517999656934306, + 3.6549121504747992, + 3.6541691212563916 + ], + [ + 3.590731975592247, + 3.613594748554913, + 3.627290902828136 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.814660377440884, + "scoreError" : 0.024490734182133617, + "scoreConfidence" : [ + 2.7901696432587504, + 2.8391511116230173 + ], + "scorePercentiles" : { + "0.0" : 2.797245694825175, + "50.0" : 2.8061119545454547, + "90.0" : 2.8349407777777778, + "95.0" : 2.8349407777777778, + "99.0" : 2.8349407777777778, + "99.9" : 2.8349407777777778, + "99.99" : 2.8349407777777778, + "99.999" : 2.8349407777777778, + "99.9999" : 2.8349407777777778, + "100.0" : 2.8349407777777778 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8255445700564974, + 2.8261645255721954, + 2.8051827203366058 + ], + [ + 2.8037174272497896, + 2.797245694825175, + 2.8016132535014004 + ], + [ + 2.8349407777777778, + 2.831422473103058, + 2.8061119545454547 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18077341062741054, + "scoreError" : 0.014353792857067442, + "scoreConfidence" : [ + 0.1664196177703431, + 0.19512720348447798 + ], + "scorePercentiles" : { + "0.0" : 0.17193353889930024, + "50.0" : 0.1785189516405441, + "90.0" : 0.19204514456905822, + "95.0" : 0.19204514456905822, + "99.0" : 0.19204514456905822, + "99.9" : 0.19204514456905822, + "99.99" : 0.19204514456905822, + "99.999" : 0.19204514456905822, + "99.9999" : 0.19204514456905822, + "100.0" : 0.19204514456905822 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.19204514456905822, + 0.19126840104047127, + 0.19137153131757725 + ], + [ + 0.17851557071707813, + 0.17853092246581212, + 0.1785189516405441 + ], + [ + 0.17207392991603002, + 0.17193353889930024, + 0.17270270508082344 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3255786312013808, + "scoreError" : 0.006781671949494997, + "scoreConfidence" : [ + 0.31879695925188584, + 0.3323603031508758 + ], + "scorePercentiles" : { + "0.0" : 0.3198157626083341, + "50.0" : 0.32745385523903076, + "90.0" : 0.32982301777704487, + "95.0" : 0.32982301777704487, + "99.0" : 0.32982301777704487, + "99.9" : 0.32982301777704487, + "99.99" : 0.32982301777704487, + "99.999" : 0.32982301777704487, + "99.9999" : 0.32982301777704487, + "100.0" : 0.32982301777704487 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32040968607221815, + 0.3207289064143682, + 0.3198157626083341 + ], + [ + 0.32693975477311366, + 0.32745385523903076, + 0.3277725755162242 + ], + [ + 0.32982301777704487, + 0.32863060256325993, + 0.3286335198488334 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16520958330540386, + "scoreError" : 0.003904719990913554, + "scoreConfidence" : [ + 0.16130486331449032, + 0.1691143032963174 + ], + "scorePercentiles" : { + "0.0" : 0.1623530315934735, + "50.0" : 0.1654880534015125, + "90.0" : 0.16782697615211628, + "95.0" : 0.16782697615211628, + "99.0" : 0.16782697615211628, + "99.9" : 0.16782697615211628, + "99.99" : 0.16782697615211628, + "99.999" : 0.16782697615211628, + "99.9999" : 0.16782697615211628, + "100.0" : 0.16782697615211628 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16251762683438156, + 0.1623530315934735, + 0.16235577231548529 + ], + [ + 0.16781707266319854, + 0.16782697615211628, + 0.16760257225220393 + ], + [ + 0.16563840416404413, + 0.1652867403722191, + 0.1654880534015125 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3928930526593304, + "scoreError" : 0.0025513234074087984, + "scoreConfidence" : [ + 0.39034172925192157, + 0.3954443760667392 + ], + "scorePercentiles" : { + "0.0" : 0.3907715779766324, + "50.0" : 0.392861043134944, + "90.0" : 0.39614403272064647, + "95.0" : 0.39614403272064647, + "99.0" : 0.39614403272064647, + "99.9" : 0.39614403272064647, + "99.99" : 0.39614403272064647, + "99.999" : 0.39614403272064647, + "99.9999" : 0.39614403272064647, + "100.0" : 0.39614403272064647 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3937948602087025, + 0.3928797329692779, + 0.3920452974360985 + ], + [ + 0.39313111813035617, + 0.3915590486687549, + 0.3907715779766324 + ], + [ + 0.39614403272064647, + 0.392861043134944, + 0.3928507626885607 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15668086807705478, + "scoreError" : 0.0026468715335953544, + "scoreConfidence" : [ + 0.15403399654345942, + 0.15932773961065014 + ], + "scorePercentiles" : { + "0.0" : 0.15500656603890567, + "50.0" : 0.15602657285507, + "90.0" : 0.1587486827634378, + "95.0" : 0.1587486827634378, + "99.0" : 0.1587486827634378, + "99.9" : 0.1587486827634378, + "99.99" : 0.1587486827634378, + "99.999" : 0.1587486827634378, + "99.9999" : 0.1587486827634378, + "100.0" : 0.1587486827634378 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1564891541844016, + 0.15550979076602495, + 0.15500656603890567 + ], + [ + 0.15869252295412348, + 0.1586838797683275, + 0.1587486827634378 + ], + [ + 0.15602657285507, + 0.15557162095519603, + 0.15539902240800596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047155284663097694, + "scoreError" : 4.936480783222632E-4, + "scoreConfidence" : [ + 0.04666163658477543, + 0.04764893274141996 + ], + "scorePercentiles" : { + "0.0" : 0.04676411413981285, + "50.0" : 0.047194693460316864, + "90.0" : 0.04768852778055957, + "95.0" : 0.04768852778055957, + "99.0" : 0.04768852778055957, + "99.9" : 0.04768852778055957, + "99.99" : 0.04768852778055957, + "99.999" : 0.04768852778055957, + "99.9999" : 0.04768852778055957, + "100.0" : 0.04768852778055957 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04768852778055957, + 0.047379118801701835, + 0.047233946125687834 + ], + [ + 0.047268657425789375, + 0.04714530012776209, + 0.047194693460316864 + ], + [ + 0.04693128750703961, + 0.04679191659920923, + 0.04676411413981285 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9336798.090218965, + "scoreError" : 189887.07302217573, + "scoreConfidence" : [ + 9146911.01719679, + 9526685.16324114 + ], + "scorePercentiles" : { + "0.0" : 9185498.928374656, + "50.0" : 9326856.899347624, + "90.0" : 9472147.553977273, + "95.0" : 9472147.553977273, + "99.0" : 9472147.553977273, + "99.9" : 9472147.553977273, + "99.99" : 9472147.553977273, + "99.999" : 9472147.553977273, + "99.9999" : 9472147.553977273, + "100.0" : 9472147.553977273 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9224735.104147466, + 9185498.928374656, + 9203164.059797607 + ], + [ + 9472147.553977273, + 9452682.468809074, + 9455593.06899811 + ], + [ + 9388428.242964353, + 9326856.899347624, + 9322076.48555452 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 88ee37b0c91715d1dbb9cfb81d40e5f4e9f7113a Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 2 Apr 2025 09:59:47 +1000 Subject: [PATCH 297/345] remove slf4j leftovers --- .../java/graphql/analysis/MaxQueryDepthInstrumentation.java | 6 ------ src/main/java/graphql/schema/PropertyFetchingImpl.java | 4 ---- 2 files changed, 10 deletions(-) diff --git a/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java b/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java index f7c44160d4..f242baf33d 100644 --- a/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java +++ b/src/main/java/graphql/analysis/MaxQueryDepthInstrumentation.java @@ -9,8 +9,6 @@ import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.parameters.InstrumentationExecuteOperationParameters; import org.jspecify.annotations.Nullable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.util.function.Function; @@ -25,7 +23,6 @@ @PublicApi public class MaxQueryDepthInstrumentation extends SimplePerformantInstrumentation { - private static final Logger log = LoggerFactory.getLogger(MaxQueryDepthInstrumentation.class); private final int maxDepth; private final Function maxQueryDepthExceededFunction; @@ -54,9 +51,6 @@ public MaxQueryDepthInstrumentation(int maxDepth, Function beginExecuteOperation(InstrumentationExecuteOperationParameters parameters, InstrumentationState state) { QueryTraverser queryTraverser = newQueryTraverser(parameters.getExecutionContext()); int depth = queryTraverser.reducePreOrder((env, acc) -> Math.max(getPathLength(env.getParentEnvironment()), acc), 0); - if (log.isDebugEnabled()) { - log.debug("Query depth info: {}", depth); - } if (depth > maxDepth) { QueryDepthInfo queryDepthInfo = QueryDepthInfo.newQueryDepthInfo() .depth(depth) diff --git a/src/main/java/graphql/schema/PropertyFetchingImpl.java b/src/main/java/graphql/schema/PropertyFetchingImpl.java index 6126159cf0..c17ba706b6 100644 --- a/src/main/java/graphql/schema/PropertyFetchingImpl.java +++ b/src/main/java/graphql/schema/PropertyFetchingImpl.java @@ -3,10 +3,7 @@ import graphql.GraphQLException; import graphql.Internal; import graphql.schema.fetching.LambdaFetchingSupport; -import graphql.util.EscapeUtil; import graphql.util.StringKit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; @@ -14,7 +11,6 @@ import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Comparator; -import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Optional; From f817bce1ab114939d7475224b94f574c8eecc2cc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 00:54:45 +0000 Subject: [PATCH 298/345] Add performance results for commit 14343b248c8e4c4f6f5e3567656bf546701169c7 --- ...c8e4c4f6f5e3567656bf546701169c7-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json diff --git a/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json b/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json new file mode 100644 index 0000000000..46a74f75af --- /dev/null +++ b/performance-results/2025-04-02T00:54:25Z-14343b248c8e4c4f6f5e3567656bf546701169c7-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.421526384634706, + "scoreError" : 0.024204253048581707, + "scoreConfidence" : [ + 3.397322131586124, + 3.4457306376832877 + ], + "scorePercentiles" : { + "0.0" : 3.4173147730655797, + "50.0" : 3.421193313876114, + "90.0" : 3.426404137721016, + "95.0" : 3.426404137721016, + "99.0" : 3.426404137721016, + "99.9" : 3.426404137721016, + "99.99" : 3.426404137721016, + "99.999" : 3.426404137721016, + "99.9999" : 3.426404137721016, + "100.0" : 3.426404137721016 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.420782629000279, + 3.426404137721016 + ], + [ + 3.4173147730655797, + 3.4216039987519493 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7283454988973057, + "scoreError" : 0.0025880343464985893, + "scoreConfidence" : [ + 1.7257574645508071, + 1.7309335332438043 + ], + "scorePercentiles" : { + "0.0" : 1.7279527704336943, + "50.0" : 1.7282621497493265, + "90.0" : 1.728904925656876, + "95.0" : 1.728904925656876, + "99.0" : 1.728904925656876, + "99.9" : 1.728904925656876, + "99.99" : 1.728904925656876, + "99.999" : 1.728904925656876, + "99.9999" : 1.728904925656876, + "100.0" : 1.728904925656876 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7279527704336943, + 1.7282545511010183 + ], + [ + 1.7282697483976346, + 1.728904925656876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8691224272889502, + "scoreError" : 0.0033289897328440546, + "scoreConfidence" : [ + 0.8657934375561062, + 0.8724514170217942 + ], + "scorePercentiles" : { + "0.0" : 0.8686308534225845, + "50.0" : 0.869010981659937, + "90.0" : 0.8698368924133419, + "95.0" : 0.8698368924133419, + "99.0" : 0.8698368924133419, + "99.9" : 0.8698368924133419, + "99.99" : 0.8698368924133419, + "99.999" : 0.8698368924133419, + "99.9999" : 0.8698368924133419, + "100.0" : 0.8698368924133419 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8686308534225845, + 0.869109060504571 + ], + [ + 0.868912902815303, + 0.8698368924133419 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.309649787987688, + "scoreError" : 0.07794437405308531, + "scoreConfidence" : [ + 16.231705413934602, + 16.387594162040774 + ], + "scorePercentiles" : { + "0.0" : 16.26765662772302, + "50.0" : 16.28656758905185, + "90.0" : 16.38712193348276, + "95.0" : 16.38712193348276, + "99.0" : 16.38712193348276, + "99.9" : 16.38712193348276, + "99.99" : 16.38712193348276, + "99.999" : 16.38712193348276, + "99.9999" : 16.38712193348276, + "100.0" : 16.38712193348276 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.28656758905185, + 16.273200002371972, + 16.299111445359156 + ], + [ + 16.366013192165212, + 16.3540962884704, + 16.38712193348276 + ], + [ + 16.26765662772302, + 16.26851464142473, + 16.28456637184009 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2712.6069740459716, + "scoreError" : 11.038642078368325, + "scoreConfidence" : [ + 2701.568331967603, + 2723.64561612434 + ], + "scorePercentiles" : { + "0.0" : 2703.8693752278577, + "50.0" : 2711.819323271369, + "90.0" : 2722.840900870486, + "95.0" : 2722.840900870486, + "99.0" : 2722.840900870486, + "99.9" : 2722.840900870486, + "99.99" : 2722.840900870486, + "99.999" : 2722.840900870486, + "99.9999" : 2722.840900870486, + "100.0" : 2722.840900870486 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2711.6700217383127, + 2712.519688484181, + 2711.819323271369 + ], + [ + 2722.840900870486, + 2713.2880055354126, + 2722.7197608423567 + ], + [ + 2703.8693752278577, + 2708.9476508866146, + 2705.7880395571538 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70977.29311251568, + "scoreError" : 253.57898466017767, + "scoreConfidence" : [ + 70723.71412785549, + 71230.87209717586 + ], + "scorePercentiles" : { + "0.0" : 70751.37602239971, + "50.0" : 70921.36587253957, + "90.0" : 71183.33947884571, + "95.0" : 71183.33947884571, + "99.0" : 71183.33947884571, + "99.9" : 71183.33947884571, + "99.99" : 71183.33947884571, + "99.999" : 71183.33947884571, + "99.9999" : 71183.33947884571, + "100.0" : 71183.33947884571 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70913.88389465859, + 70969.59237313575, + 70921.36587253957 + ], + [ + 70844.70664555264, + 70751.37602239971, + 70911.93988780752 + ], + [ + 71158.56853347426, + 71140.86530422738, + 71183.33947884571 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 350.31244511380766, + "scoreError" : 6.666002229820555, + "scoreConfidence" : [ + 343.6464428839871, + 356.9784473436282 + ], + "scorePercentiles" : { + "0.0" : 345.20414333375453, + "50.0" : 350.5234018035162, + "90.0" : 355.26663651937116, + "95.0" : 355.26663651937116, + "99.0" : 355.26663651937116, + "99.9" : 355.26663651937116, + "99.99" : 355.26663651937116, + "99.999" : 355.26663651937116, + "99.9999" : 355.26663651937116, + "100.0" : 355.26663651937116 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 354.0198481362827, + 354.58181399517474, + 355.26663651937116 + ], + [ + 350.5234018035162, + 350.38433326530674, + 351.37866449831887 + ], + [ + 345.20414333375453, + 345.84513014838336, + 345.6080343241608 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.87761273102751, + "scoreError" : 2.104556922800753, + "scoreConfidence" : [ + 102.77305580822676, + 106.98216965382827 + ], + "scorePercentiles" : { + "0.0" : 103.59739904226069, + "50.0" : 104.47823668180365, + "90.0" : 106.64228593068609, + "95.0" : 106.64228593068609, + "99.0" : 106.64228593068609, + "99.9" : 106.64228593068609, + "99.99" : 106.64228593068609, + "99.999" : 106.64228593068609, + "99.9999" : 106.64228593068609, + "100.0" : 106.64228593068609 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 103.59739904226069, + 103.72012032272589, + 103.6785773206504 + ], + [ + 104.57502425284017, + 104.47823668180365, + 104.42984806950203 + ], + [ + 106.64228593068609, + 106.3804639830908, + 106.39655897568788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061408572434368404, + "scoreError" : 4.563862938090769E-4, + "scoreConfidence" : [ + 0.06095218614055933, + 0.06186495872817748 + ], + "scorePercentiles" : { + "0.0" : 0.06097075857086242, + "50.0" : 0.061388873282667684, + "90.0" : 0.06178538960661835, + "95.0" : 0.06178538960661835, + "99.0" : 0.06178538960661835, + "99.9" : 0.06178538960661835, + "99.99" : 0.06178538960661835, + "99.999" : 0.06178538960661835, + "99.9999" : 0.06178538960661835, + "100.0" : 0.06178538960661835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06097075857086242, + 0.061146214680974656, + 0.0612855844349249 + ], + [ + 0.061388873282667684, + 0.06155373061392818, + 0.06124024126422281 + ], + [ + 0.06178538960661835, + 0.061691854335031895, + 0.06161450512008478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7316652617251883E-4, + "scoreError" : 8.119757313773042E-6, + "scoreConfidence" : [ + 3.6504676885874577E-4, + 3.812862834862919E-4 + ], + "scorePercentiles" : { + "0.0" : 3.667738323748724E-4, + "50.0" : 3.752289794739548E-4, + "90.0" : 3.778600239409276E-4, + "95.0" : 3.778600239409276E-4, + "99.0" : 3.778600239409276E-4, + "99.9" : 3.778600239409276E-4, + "99.99" : 3.778600239409276E-4, + "99.999" : 3.778600239409276E-4, + "99.9999" : 3.778600239409276E-4, + "100.0" : 3.778600239409276E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.668491935524401E-4, + 3.667738323748724E-4, + 3.6701340072654664E-4 + ], + [ + 3.778600239409276E-4, + 3.7740688490455637E-4, + 3.7720805236979543E-4 + ], + [ + 3.754190644322722E-4, + 3.7473930377730384E-4, + 3.752289794739548E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014008341450335656, + "scoreError" : 1.4498033977860858E-4, + "scoreConfidence" : [ + 0.013863361110557047, + 0.014153321790114266 + ], + "scorePercentiles" : { + "0.0" : 0.013880233651371766, + "50.0" : 0.013988460148024223, + "90.0" : 0.014114319541008596, + "95.0" : 0.014114319541008596, + "99.0" : 0.014114319541008596, + "99.9" : 0.014114319541008596, + "99.99" : 0.014114319541008596, + "99.999" : 0.014114319541008596, + "99.9999" : 0.014114319541008596, + "100.0" : 0.014114319541008596 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014114319541008596, + 0.014112022618451226, + 0.014106586750966642 + ], + [ + 0.013912293381858856, + 0.013880233651371766, + 0.013970244557602174 + ], + [ + 0.013988460148024223, + 0.014002486228898102, + 0.01398842617483931 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9778241649362742, + "scoreError" : 0.004838244956807494, + "scoreConfidence" : [ + 0.9729859199794667, + 0.9826624098930817 + ], + "scorePercentiles" : { + "0.0" : 0.9736546614740531, + "50.0" : 0.9773280237467018, + "90.0" : 0.9821452236299352, + "95.0" : 0.9821452236299352, + "99.0" : 0.9821452236299352, + "99.9" : 0.9821452236299352, + "99.99" : 0.9821452236299352, + "99.999" : 0.9821452236299352, + "99.9999" : 0.9821452236299352, + "100.0" : 0.9821452236299352 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9749890558642879, + 0.9736546614740531, + 0.9772415279976546 + ], + [ + 0.9773280237467018, + 0.9776727197184476, + 0.9762410675517376 + ], + [ + 0.9819867925176747, + 0.9821452236299352, + 0.9791584119259767 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012869722100222638, + "scoreError" : 3.8966084585346096E-4, + "scoreConfidence" : [ + 0.012480061254369177, + 0.013259382946076098 + ], + "scorePercentiles" : { + "0.0" : 0.012669512538736168, + "50.0" : 0.012853368862123522, + "90.0" : 0.013023504013752508, + "95.0" : 0.013023504013752508, + "99.0" : 0.013023504013752508, + "99.9" : 0.013023504013752508, + "99.99" : 0.013023504013752508, + "99.999" : 0.013023504013752508, + "99.9999" : 0.013023504013752508, + "100.0" : 0.013023504013752508 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012900479146832615, + 0.013020436614143498, + 0.013023504013752508 + ], + [ + 0.012669512538736168, + 0.0127981417104566, + 0.012806258577414431 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.5468241771900515, + "scoreError" : 0.21376380574191445, + "scoreConfidence" : [ + 3.333060371448137, + 3.760587982931966 + ], + "scorePercentiles" : { + "0.0" : 3.453652321132597, + "50.0" : 3.551183448477694, + "90.0" : 3.61925639146165, + "95.0" : 3.61925639146165, + "99.0" : 3.61925639146165, + "99.9" : 3.61925639146165, + "99.99" : 3.61925639146165, + "99.999" : 3.61925639146165, + "99.9999" : 3.61925639146165, + "100.0" : 3.61925639146165 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.453652321132597, + 3.4880539741980474, + 3.4936314308659218 + ], + [ + 3.6176154793926245, + 3.61925639146165, + 3.608735466089466 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8304880688757925, + "scoreError" : 0.07599696860642481, + "scoreConfidence" : [ + 2.7544911002693677, + 2.9064850374822173 + ], + "scorePercentiles" : { + "0.0" : 2.780787323324993, + "50.0" : 2.814811319729806, + "90.0" : 2.8892461886192953, + "95.0" : 2.8892461886192953, + "99.0" : 2.8892461886192953, + "99.9" : 2.8892461886192953, + "99.99" : 2.8892461886192953, + "99.999" : 2.8892461886192953, + "99.9999" : 2.8892461886192953, + "100.0" : 2.8892461886192953 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8892461886192953, + 2.8884606503032053, + 2.887350749133949 + ], + [ + 2.793379465083799, + 2.7882133852801783, + 2.780787323324993 + ], + [ + 2.8192035718714767, + 2.814811319729806, + 2.812939966535433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17450209716197213, + "scoreError" : 0.005812830363912847, + "scoreConfidence" : [ + 0.1686892667980593, + 0.18031492752588496 + ], + "scorePercentiles" : { + "0.0" : 0.170191207610749, + "50.0" : 0.1748316288921135, + "90.0" : 0.17852150263312924, + "95.0" : 0.17852150263312924, + "99.0" : 0.17852150263312924, + "99.9" : 0.17852150263312924, + "99.99" : 0.17852150263312924, + "99.999" : 0.17852150263312924, + "99.9999" : 0.17852150263312924, + "100.0" : 0.17852150263312924 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17498419680134386, + 0.1748316288921135, + 0.17469628181611727 + ], + [ + 0.17852150263312924, + 0.17834503670281068, + 0.17807120077281954 + ], + [ + 0.1706394429731759, + 0.170191207610749, + 0.1702383762554901 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33112232276848347, + "scoreError" : 0.01408401635978298, + "scoreConfidence" : [ + 0.3170383064087005, + 0.3452063391282664 + ], + "scorePercentiles" : { + "0.0" : 0.3189610034765413, + "50.0" : 0.33347466086434574, + "90.0" : 0.33958328683486705, + "95.0" : 0.33958328683486705, + "99.0" : 0.33958328683486705, + "99.9" : 0.33958328683486705, + "99.99" : 0.33958328683486705, + "99.999" : 0.33958328683486705, + "99.9999" : 0.33958328683486705, + "100.0" : 0.33958328683486705 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3213060990553913, + 0.3212401773209123, + 0.3189610034765413 + ], + [ + 0.3333820681090812, + 0.3337180653073483, + 0.33347466086434574 + ], + [ + 0.33958328683486705, + 0.3391921009734423, + 0.3392434429744216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15903038363523334, + "scoreError" : 0.0032727032804364393, + "scoreConfidence" : [ + 0.1557576803547969, + 0.16230308691566978 + ], + "scorePercentiles" : { + "0.0" : 0.1568177738748628, + "50.0" : 0.15869251267931953, + "90.0" : 0.16177639883523418, + "95.0" : 0.16177639883523418, + "99.0" : 0.16177639883523418, + "99.9" : 0.16177639883523418, + "99.99" : 0.16177639883523418, + "99.999" : 0.16177639883523418, + "99.9999" : 0.16177639883523418, + "100.0" : 0.16177639883523418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15893024055179428, + 0.1585677964830495, + 0.15869251267931953 + ], + [ + 0.15714625532316107, + 0.15691627485132356, + 0.1568177738748628 + ], + [ + 0.16131501726029165, + 0.16111118285806347, + 0.16177639883523418 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39920263185700916, + "scoreError" : 0.01508577615443086, + "scoreConfidence" : [ + 0.3841168557025783, + 0.41428840801144 + ], + "scorePercentiles" : { + "0.0" : 0.3892273552718639, + "50.0" : 0.3956107737558351, + "90.0" : 0.4115906599991769, + "95.0" : 0.4115906599991769, + "99.0" : 0.4115906599991769, + "99.9" : 0.4115906599991769, + "99.99" : 0.4115906599991769, + "99.999" : 0.4115906599991769, + "99.9999" : 0.4115906599991769, + "100.0" : 0.4115906599991769 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39916488715922244, + 0.394366896561243, + 0.3937410017324199 + ], + [ + 0.4115906599991769, + 0.4101335106016487, + 0.40964308319678844 + ], + [ + 0.3956107737558351, + 0.3893455184348842, + 0.3892273552718639 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15671659954710748, + "scoreError" : 0.002376152157258202, + "scoreConfidence" : [ + 0.15434044738984928, + 0.15909275170436568 + ], + "scorePercentiles" : { + "0.0" : 0.15505241405668568, + "50.0" : 0.1567589684761651, + "90.0" : 0.15864113097069973, + "95.0" : 0.15864113097069973, + "99.0" : 0.15864113097069973, + "99.9" : 0.15864113097069973, + "99.99" : 0.15864113097069973, + "99.999" : 0.15864113097069973, + "99.9999" : 0.15864113097069973, + "100.0" : 0.15864113097069973 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15712338663859474, + 0.1567589684761651, + 0.15637328781410767 + ], + [ + 0.15864113097069973, + 0.15834399254215817, + 0.15792437585079672 + ], + [ + 0.15505241405668568, + 0.15506374830596517, + 0.15516809126879452 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046883255194173766, + "scoreError" : 9.061111451677109E-4, + "scoreConfidence" : [ + 0.045977144049006054, + 0.04778936633934148 + ], + "scorePercentiles" : { + "0.0" : 0.046237800306090364, + "50.0" : 0.046795298544688814, + "90.0" : 0.04808867215992152, + "95.0" : 0.04808867215992152, + "99.0" : 0.04808867215992152, + "99.9" : 0.04808867215992152, + "99.99" : 0.04808867215992152, + "99.999" : 0.04808867215992152, + "99.9999" : 0.04808867215992152, + "100.0" : 0.04808867215992152 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.046750469346061786, + 0.046892388873518806, + 0.047285378485471784 + ], + [ + 0.046619141515195306, + 0.04643861545641564, + 0.046237800306090364 + ], + [ + 0.04808867215992152, + 0.046795298544688814, + 0.04684153206019982 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9241780.57363828, + "scoreError" : 265931.63507504837, + "scoreConfidence" : [ + 8975848.938563233, + 9507712.208713328 + ], + "scorePercentiles" : { + "0.0" : 9038273.207768744, + "50.0" : 9277086.333951762, + "90.0" : 9444023.251180358, + "95.0" : 9444023.251180358, + "99.0" : 9444023.251180358, + "99.9" : 9444023.251180358, + "99.99" : 9444023.251180358, + "99.999" : 9444023.251180358, + "99.9999" : 9444023.251180358, + "100.0" : 9444023.251180358 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9444023.251180358, + 9391734.985915493, + 9381496.035647279 + ], + [ + 9278744.134508349, + 9262558.790740741, + 9277086.333951762 + ], + [ + 9061707.098731885, + 9040401.32429991, + 9038273.207768744 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 9c12ab3ccf357a7c9baa35c57572d826cc692a02 Mon Sep 17 00:00:00 2001 From: bbaker Date: Wed, 2 Apr 2025 12:36:08 +1100 Subject: [PATCH 299/345] Added ExecutionInput cancellation - added tests and tweak the code more --- src/main/java/graphql/ExecutionInput.java | 27 ++++--- .../AbstractAsyncExecutionStrategy.java | 2 +- .../execution/AsyncExecutionStrategy.java | 4 +- .../AsyncSerialExecutionStrategy.java | 4 +- .../graphql/execution/ExecutionContext.java | 10 +++ .../graphql/execution/ExecutionStrategy.java | 21 +++--- .../SubscriptionExecutionStrategy.java | 6 +- .../groovy/graphql/ExecutionInputTest.groovy | 73 ++++++++++++++++++- 8 files changed, 114 insertions(+), 33 deletions(-) diff --git a/src/main/java/graphql/ExecutionInput.java b/src/main/java/graphql/ExecutionInput.java index 76e5d3376e..d0d35dfd30 100644 --- a/src/main/java/graphql/ExecutionInput.java +++ b/src/main/java/graphql/ExecutionInput.java @@ -45,8 +45,7 @@ private ExecutionInput(Builder builder) { this.locale = builder.locale != null ? builder.locale : Locale.getDefault(); // always have a locale in place this.localContext = builder.localContext; this.extensions = builder.extensions; - - cancelled = new AtomicBoolean(false); + this.cancelled = builder.cancelled; } /** @@ -147,8 +146,8 @@ public Map getExtensions() { * The graphql engine will check this frequently and if that is true, it will * throw a {@link graphql.execution.AbortExecutionException} to cancel the execution. *

    - * This is a best-efforts cancellation. Asynchronous data fetching code may still continue to - * run. + * This is a cooperative cancellation. Some asynchronous data fetching code may still continue to + * run but there will be no more efforts run future field fetches say. * * @return true if the execution should be cancelled */ @@ -157,9 +156,10 @@ public boolean isCancelled() { } /** - * This can be called to cancel the graphql execution. + * This can be called to cancel the graphql execution. Remember this is a cooperative cancellation + * and the graphql engine needs to be running on a thread to allow is to respect this flag. */ - private void cancel() { + public void cancel() { cancelled.set(true); } @@ -176,7 +176,8 @@ public ExecutionInput transform(Consumer builderConsumer) { .query(this.query) .operationName(this.operationName) .context(this.context) - .transfer(this.graphQLContext) + .internalTransferContext(this.graphQLContext) + .internalTransferCancelBoolean(this.cancelled) .localContext(this.localContext) .root(this.root) .dataLoaderRegistry(this.dataLoaderRegistry) @@ -232,7 +233,7 @@ public static class Builder { private Object localContext; private Object root; private RawVariables rawVariables = RawVariables.emptyVariables(); - public Map extensions = ImmutableKit.emptyMap(); + private Map extensions = ImmutableKit.emptyMap(); // // this is important - it allows code to later known if we never really set a dataloader and hence it can optimize // dataloader field tracking away. @@ -240,6 +241,7 @@ public static class Builder { private DataLoaderRegistry dataLoaderRegistry = EMPTY_DATALOADER_REGISTRY; private Locale locale = Locale.getDefault(); private ExecutionId executionId; + private AtomicBoolean cancelled = new AtomicBoolean(false); public Builder query(String query) { this.query = assertNotNull(query, () -> "query can't be null"); @@ -330,11 +332,18 @@ public Builder graphQLContext(Map mapOfContext) { } // hidden on purpose - private Builder transfer(GraphQLContext graphQLContext) { + private Builder internalTransferContext(GraphQLContext graphQLContext) { this.graphQLContext = Assert.assertNotNull(graphQLContext); return this; } + // hidden on purpose + private Builder internalTransferCancelBoolean(AtomicBoolean cancelled) { + this.cancelled = cancelled; + return this; + } + + public Builder root(Object root) { this.root = root; return this; diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index 0a9c73a975..884cabd0c5 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -28,7 +28,7 @@ protected BiConsumer, Throwable> handleResults(ExecutionContext exe handleNonNullException(executionContext, overallResult, exception); return; } - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); int ix = 0; diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index abd5198821..7b9d3c0dfd 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -38,7 +38,7 @@ public AsyncExecutionStrategy(DataFetcherExceptionHandler exceptionHandler) { @Override @SuppressWarnings("FutureReturnValueIgnored") public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters); @@ -70,7 +70,7 @@ public CompletableFuture execute(ExecutionContext executionCont return; } - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); Async.CombinedBuilder fieldValuesFutures = Async.ofExpectedSize(completeValueInfos.size()); for (FieldValueInfo completeValueInfo : completeValueInfos) { diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index b612b48d73..24fff32e9f 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -32,7 +32,7 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler @Override @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); @@ -52,7 +52,7 @@ public CompletableFuture execute(ExecutionContext executionCont } CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); MergedField currentField = fields.getSubField(fieldName); ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index b166b19025..bb717ef0d9 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -333,6 +333,16 @@ public DataLoaderDispatchStrategy getDataLoaderDispatcherStrategy() { return dataLoaderDispatcherStrategy; } + /** + * This will abort the execution via {@link AbortExecutionException} if the {@link ExecutionInput} has been cancelled + */ + @Internal + public void checkIsCancelled() { + if (getExecutionInput().isCancelled()) { + throw new AbortExecutionException("Execution has been asked to be cancelled"); + } + } + /** * This helps you transform the current ExecutionContext object into another one by starting a builder with all * the current values and allows you to transform it how you want. diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 33a76633c6..7940387e78 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -201,8 +201,8 @@ public static String mkNameForPath(List currentField) { @SuppressWarnings("unchecked") @DuckTyped(shape = "CompletableFuture> | Map") protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -231,7 +231,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat handleResultsConsumer.accept(null, throwable); return; } - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); @@ -283,7 +283,7 @@ private BiConsumer, Throwable> buildFieldValueMap(List fiel handleValueException(overallResult, exception, executionContext); return; } - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); Map resolvedValuesByField = buildFieldValueMap(executionContext, fieldNames, results); overallResult.complete(resolvedValuesByField); }; @@ -291,7 +291,8 @@ private BiConsumer, Throwable> buildFieldValueMap(List fiel @NonNull private static Map buildFieldValueMap(ExecutionContext executionContext, List fieldNames, List results) { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); + Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); int ix = 0; for (Object fieldValue : results) { @@ -391,6 +392,8 @@ protected Object resolveField(ExecutionContext executionContext, ExecutionStrate @SuppressWarnings("unchecked") @DuckTyped(shape = "CompletableFuture | FieldValueInfo") protected Object resolveFieldWithInfo(ExecutionContext executionContext, ExecutionStrategyParameters parameters) { + executionContext.checkIsCancelled(); + GraphQLFieldDefinition fieldDef = getFieldDef(executionContext, parameters, parameters.getField().getSingleField()); Supplier executionStepInfo = FpKit.intraThreadMemoize(() -> createExecutionStepInfo(executionContext, parameters, fieldDef, null)); @@ -643,7 +646,7 @@ protected FieldValueInfo completeField(ExecutionContext executionContext, Execut } private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); @@ -688,7 +691,7 @@ private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionC * @throws NonNullableFieldWasNullException if a non null field resolves to a null value */ protected FieldValueInfo completeValue(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); ExecutionStepInfo executionStepInfo = parameters.getExecutionStepInfo(); Object result = executionContext.getValueUnboxer().unbox(parameters.getSource()); @@ -1146,12 +1149,6 @@ protected ExecutionStepInfo createExecutionStepInfo(ExecutionContext executionCo .build(); } - protected static void checkIsCancelled(ExecutionContext executionContext) { - if (executionContext.getExecutionInput().isCancelled()) { - throw new AbortExecutionException("Execution has been asked to be cancelled"); - } - } - @NonNull private static Supplier> getArgumentValues(ExecutionContext executionContext, List fieldArgDefs, diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 3d26e535d2..8f1511c114 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -56,7 +56,7 @@ public SubscriptionExecutionStrategy(DataFetcherExceptionHandler dataFetcherExce @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); @@ -70,7 +70,7 @@ public CompletableFuture execute(ExecutionContext executionCont // // when the upstream source event stream completes, subscribe to it and wire in our adapter CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); if (publisher == null) { return new ExecutionResultImpl(null, executionContext.getErrors()); @@ -137,7 +137,7 @@ private CompletableFuture> createSourceEventStream(ExecutionCo private CompletableFuture executeSubscriptionEvent(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object eventPayload) { // this possible exception wil be caught by the reactive Publishers and the // reactive stream will be made into an error state - checkIsCancelled(executionContext); + executionContext.checkIsCancelled(); Instrumentation instrumentation = executionContext.getInstrumentation(); diff --git a/src/test/groovy/graphql/ExecutionInputTest.groovy b/src/test/groovy/graphql/ExecutionInputTest.groovy index b3243e0d26..708c860ab1 100644 --- a/src/test/groovy/graphql/ExecutionInputTest.groovy +++ b/src/test/groovy/graphql/ExecutionInputTest.groovy @@ -3,10 +3,13 @@ package graphql import graphql.execution.ExecutionId import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment +import org.awaitility.Awaitility import org.dataloader.DataLoaderRegistry import spock.lang.Specification -import java.util.function.UnaryOperator +import java.time.Duration +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CountDownLatch class ExecutionInputTest extends Specification { @@ -104,9 +107,11 @@ class ExecutionInputTest extends Specification { .locale(Locale.GERMAN) .build() def graphQLContext = executionInputOld.getGraphQLContext() - def executionInput = executionInputOld.transform({ bldg -> bldg - .query("new query") - .variables(variables) }) + def executionInput = executionInputOld.transform({ bldg -> + bldg + .query("new query") + .variables(variables) + }) then: executionInput.graphQLContext == graphQLContext @@ -162,4 +167,64 @@ class ExecutionInputTest extends Specification { er.errors.isEmpty() er.data["fetch"] == "{locale=German, executionId=ID123, graphqlContext=b}" } + + def "can cancel the execution"() { + def sdl = ''' + type Query { + fetch1 : Inner + fetch2 : Inner + } + + type Inner { + f : String + } + + ''' + + CountDownLatch fieldLatch = new CountDownLatch(1) + + DataFetcher df1Sec = { DataFetchingEnvironment env -> + return CompletableFuture.supplyAsync { + fieldLatch.await() + Thread.sleep(1000) + return [f: "x"] + } + } + DataFetcher df10Sec = { DataFetchingEnvironment env -> + return CompletableFuture.supplyAsync { + fieldLatch.await() + Thread.sleep(10000) + return "x" + } + } + + def fetcherMap = ["Query": ["fetch1": df1Sec, "fetch2": df1Sec], + "Inner": ["f": df10Sec] + ] + def schema = TestUtil.schema(sdl, fetcherMap) + def graphQL = GraphQL.newGraphQL(schema).build() + + when: + ExecutionInput executionInput = ExecutionInput.newExecutionInput() + .query("query q { fetch1 { f } fetch2 { f } }") + .build() + + def cf = graphQL.executeAsync(executionInput) + + Thread.sleep(250) // let it get into the field fetching say + + // lets cancel it + executionInput.cancel() + + // let the DFs run + fieldLatch.countDown() + + Awaitility.await().atMost(Duration.ofSeconds(60)).until({ -> cf.isDone() }) + + def er = cf.join() + + then: + !er.errors.isEmpty() + er.errors[0]["message"] == "Execution has been asked to be cancelled" + } } From 75fe340c1714012a43ae8484cad293d4a8adc2fb Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 2 Apr 2025 11:37:37 +1000 Subject: [PATCH 300/345] fix exception handling, naming --- .../AbstractAsyncExecutionStrategy.java | 2 +- .../execution/AsyncExecutionStrategy.java | 6 +++--- .../execution/AsyncSerialExecutionStrategy.java | 6 +++--- .../execution/CallableWithoutException.java | 16 ++++++++++++++++ .../java/graphql/execution/ExecutionContext.java | 10 ++-------- .../graphql/execution/ExecutionStrategy.java | 16 ++++++++-------- .../execution/SubscriptionExecutionStrategy.java | 8 ++++---- 7 files changed, 37 insertions(+), 27 deletions(-) create mode 100644 src/main/java/graphql/execution/CallableWithoutException.java diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index 0d8b0da651..b38193e51a 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -22,7 +22,7 @@ public AbstractAsyncExecutionStrategy(DataFetcherExceptionHandler dataFetcherExc } protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult) { - return (List results, Throwable exception) -> executionContext.runnable(() -> { + return (List results, Throwable exception) -> executionContext.run(() -> { if (exception != null) { handleNonNullException(executionContext, overallResult, exception); return; diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index 68d96d2e38..77146673fe 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -38,7 +38,7 @@ public AsyncExecutionStrategy(DataFetcherExceptionHandler exceptionHandler) { @Override @SuppressWarnings("FutureReturnValueIgnored") public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - return executionContext.run(() -> { + return executionContext.call(() -> { DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -61,7 +61,7 @@ public CompletableFuture execute(ExecutionContext executionCont executionStrategyCtx.onDispatched(); futures.await().whenComplete((completeValueInfos, throwable) -> { - executionContext.runnable(() -> { + executionContext.run(() -> { List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, fieldsExecutedOnInitialResult, overallResult); @@ -78,7 +78,7 @@ public CompletableFuture execute(ExecutionContext executionCont executionStrategyCtx.onFieldValuesInfo(completeValueInfos); fieldValuesFutures.await().whenComplete(handleResultsConsumer); }); - }).exceptionally((ex) -> executionContext.run(() -> { + }).exceptionally((ex) -> executionContext.call(() -> { // if there are any issues with combining/handling the field results, // complete the future at all costs and bubble up any thrown exception so // the execution does not hang. diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index 87ff22e4dc..040bd12a86 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -32,7 +32,7 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler @Override @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - return executionContext.run(() -> { + return executionContext.call(() -> { DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -50,7 +50,7 @@ public CompletableFuture execute(ExecutionContext executionCont return CompletableFuture.completedFuture(isNotSensible.get()); } - CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> executionContext.run(() -> { + CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> executionContext.call(() -> { MergedField currentField = fields.getSubField(fieldName); ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); ExecutionStrategyParameters newParameters = parameters @@ -77,7 +77,7 @@ private Object resolveSerialField(ExecutionContext executionContext, Object fieldWithInfo = resolveFieldWithInfo(executionContext, newParameters); if (fieldWithInfo instanceof CompletableFuture) { //noinspection unchecked - return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> executionContext.run(() -> { + return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> executionContext.call(() -> { dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); CompletableFuture fieldValueFuture = fvi.getFieldValueFuture(); return fieldValueFuture; diff --git a/src/main/java/graphql/execution/CallableWithoutException.java b/src/main/java/graphql/execution/CallableWithoutException.java new file mode 100644 index 0000000000..35184bfdb1 --- /dev/null +++ b/src/main/java/graphql/execution/CallableWithoutException.java @@ -0,0 +1,16 @@ +package graphql.execution; + +import graphql.Internal; +import org.jspecify.annotations.NullMarked; + +/** + * We just want to be able to call a method that returns a value but doesn't throw any checked exceptions. + * + * @param + */ +@Internal +@NullMarked +@FunctionalInterface +public interface CallableWithoutException { + T call(); +} diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index 4cc5b3a73b..ea91ced79d 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -28,7 +28,6 @@ import java.util.Locale; import java.util.Map; import java.util.Set; -import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; @@ -363,24 +362,19 @@ public boolean isRunning() { return isRunning.get() > 0; } - public T run(Callable callable) { + public T call(CallableWithoutException callable) { isRunning.incrementAndGet(); try { return callable.call(); - } catch (Exception e) { - throw new RuntimeException(e); } finally { isRunning.decrementAndGet(); } } - public void runnable(Runnable runnable) { + public void run(Runnable runnable) { isRunning.incrementAndGet(); try { runnable.run(); - ; - } catch (Exception e) { - throw new RuntimeException(e); } finally { isRunning.decrementAndGet(); } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 78d1948d88..5f0f6aea57 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -201,7 +201,7 @@ public static String mkNameForPath(List currentField) { @SuppressWarnings("unchecked") @DuckTyped(shape = "CompletableFuture> | Map") protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - return executionContext.run(() -> { + return executionContext.call(() -> { DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); Instrumentation instrumentation = executionContext.getInstrumentation(); @@ -226,7 +226,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat if (fieldValueInfosResult instanceof CompletableFuture) { CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { - executionContext.runnable(() -> { + executionContext.run(() -> { if (throwable != null) { handleResultsConsumer.accept(null, throwable); return; @@ -237,7 +237,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat resolveObjectCtx.onFieldValuesInfo(completeValueInfos); resultFutures.await().whenComplete(handleResultsConsumer); }); - }).exceptionally((ex) -> executionContext.run(() -> { + }).exceptionally((ex) -> executionContext.call(() -> { // if there are any issues with combining/handling the field results, // complete the future at all costs and bubble up any thrown exception so // the execution does not hang. @@ -280,7 +280,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat private BiConsumer, Throwable> buildFieldValueMap(List fieldNames, CompletableFuture> overallResult, ExecutionContext executionContext) { return (List results, Throwable exception) -> { - executionContext.runnable(() -> { + executionContext.run(() -> { if (exception != null) { handleValueException(overallResult, exception, executionContext); return; @@ -514,7 +514,7 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec @SuppressWarnings("unchecked") CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; return fetchedValue - .handle((result, exception) -> executionContext.run(() -> { + .handle((result, exception) -> executionContext.call(() -> { fetchCtx.onCompleted(result, exception); if (exception != null) { CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); @@ -560,7 +560,7 @@ protected Supplier getNormalizedField(ExecutionContex protected FetchedValue unboxPossibleDataFetcherResult(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object result) { - return executionContext.run(() -> { + return executionContext.call(() -> { if (result instanceof DataFetcherResult) { DataFetcherResult dataFetcherResult = (DataFetcherResult) result; @@ -646,7 +646,7 @@ protected FieldValueInfo completeField(ExecutionContext executionContext, Execut } private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { - return executionContext.run(() -> { + return executionContext.call(() -> { GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); @@ -843,7 +843,7 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, overallResult.whenComplete(completeListCtx::onCompleted); resultsFuture.whenComplete((results, exception) -> { - executionContext.runnable(() -> { + executionContext.run(() -> { if (exception != null) { handleValueException(overallResult, exception, executionContext); return; diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index d842b6e288..253114e668 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -56,7 +56,7 @@ public SubscriptionExecutionStrategy(DataFetcherExceptionHandler dataFetcherExce @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - return executionContext.run(() -> { + return executionContext.call(() -> { Instrumentation instrumentation = executionContext.getInstrumentation(); InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy( @@ -69,7 +69,7 @@ public CompletableFuture execute(ExecutionContext executionCont // // when the upstream source event stream completes, subscribe to it and wire in our adapter CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { - return executionContext.run(() -> { + return executionContext.call(() -> { if (publisher == null) { ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); return executionResult; @@ -112,7 +112,7 @@ private CompletableFuture> createSourceEventStream(ExecutionCo ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); CompletableFuture fieldFetched = Async.toCompletableFuture(fetchField(executionContext, newParameters)); - return fieldFetched.thenApply(fetchedValue -> executionContext.run(() -> { + return fieldFetched.thenApply(fetchedValue -> executionContext.call(() -> { Object publisher = fetchedValue.getFetchedValue(); if (publisher != null) { assertTrue(publisher instanceof Publisher, () -> "Your data fetcher must return a Publisher of events when using graphql subscriptions"); @@ -136,7 +136,7 @@ private CompletableFuture> createSourceEventStream(ExecutionCo */ private CompletableFuture executeSubscriptionEvent(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object eventPayload) { - return executionContext.run(() -> { + return executionContext.call(() -> { Instrumentation instrumentation = executionContext.getInstrumentation(); ExecutionContext newExecutionContext = executionContext.transform(builder -> builder From 9a1fe997b0ee9704e17d09c89a578637e34c6e00 Mon Sep 17 00:00:00 2001 From: bbaker Date: Wed, 2 Apr 2025 14:04:20 +1100 Subject: [PATCH 301/345] Added ExecutionInput cancellation - fixed tests with null EI --- .../graphql/execution/AsyncExecutionStrategyTest.groovy | 7 ++++++- .../execution/AsyncSerialExecutionStrategyTest.groovy | 3 +++ .../groovy/graphql/execution/ExecutionStrategyTest.groovy | 3 +++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy index 8769bb79a4..5da87378c4 100644 --- a/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy @@ -1,8 +1,8 @@ package graphql.execution import graphql.ErrorType +import graphql.ExecutionInput import graphql.ExecutionResult -import graphql.ExperimentalApi import graphql.GraphQLContext import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext import graphql.execution.instrumentation.InstrumentationState @@ -108,6 +108,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .instrumentation(SimplePerformantInstrumentation.INSTANCE) .valueUnboxer(ValueUnboxer.DEFAULT) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .locale(Locale.getDefault()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters @@ -150,6 +151,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .instrumentation(SimplePerformantInstrumentation.INSTANCE) .locale(Locale.getDefault()) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() @@ -192,6 +194,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .valueUnboxer(ValueUnboxer.DEFAULT) .instrumentation(SimplePerformantInstrumentation.INSTANCE) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .locale(Locale.getDefault()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters @@ -235,6 +238,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .valueUnboxer(ValueUnboxer.DEFAULT) .locale(Locale.getDefault()) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() @@ -274,6 +278,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .operationDefinition(operation) .valueUnboxer(ValueUnboxer.DEFAULT) .graphQLContext(graphqlContextMock) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .locale(Locale.getDefault()) .instrumentation(new SimplePerformantInstrumentation() { diff --git a/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy index 1d811bd3bd..f84fbc701f 100644 --- a/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy @@ -1,5 +1,6 @@ package graphql.execution +import graphql.ExecutionInput import graphql.GraphQLContext import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.language.Field @@ -106,6 +107,7 @@ class AsyncSerialExecutionStrategyTest extends Specification { .valueUnboxer(ValueUnboxer.DEFAULT) .locale(Locale.getDefault()) .graphQLContext(GraphQLContext.getDefault()) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() @@ -152,6 +154,7 @@ class AsyncSerialExecutionStrategyTest extends Specification { .valueUnboxer(ValueUnboxer.DEFAULT) .locale(Locale.getDefault()) .graphQLContext(GraphQLContext.getDefault()) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy index 6a3d72ec07..bcf76b8275 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy @@ -2,6 +2,7 @@ package graphql.execution import graphql.Assert import graphql.ExceptionWhileDataFetching +import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQLContext import graphql.GraphqlErrorBuilder @@ -78,6 +79,7 @@ class ExecutionStrategyTest extends Specification { .subscriptionStrategy(executionStrategy) .coercedVariables(CoercedVariables.of(variables)) .graphQLContext(GraphQLContext.newContext().of("key", "context").build()) + .executionInput(ExecutionInput.newExecutionInput("{}").build()) .root("root") .dataLoaderRegistry(new DataLoaderRegistry()) .locale(Locale.getDefault()) @@ -125,6 +127,7 @@ class ExecutionStrategyTest extends Specification { builder.operationDefinition(operation) builder.executionId(ExecutionId.generate()) + builder.executionInput(ExecutionInput.newExecutionInput("{}").build()) def executionContext = builder.build() def result = new Object() From a2e42f3695c0372da279f6a848f64b92cb98f1f0 Mon Sep 17 00:00:00 2001 From: bbaker Date: Wed, 2 Apr 2025 15:43:44 +1100 Subject: [PATCH 302/345] Added tests for EC is running --- .../execution/CallableWithoutException.java | 16 --- .../graphql/execution/ExecutionContext.java | 4 +- .../ExecutionContextBuilderTest.groovy | 105 +++++++++++++++--- 3 files changed, 92 insertions(+), 33 deletions(-) delete mode 100644 src/main/java/graphql/execution/CallableWithoutException.java diff --git a/src/main/java/graphql/execution/CallableWithoutException.java b/src/main/java/graphql/execution/CallableWithoutException.java deleted file mode 100644 index 35184bfdb1..0000000000 --- a/src/main/java/graphql/execution/CallableWithoutException.java +++ /dev/null @@ -1,16 +0,0 @@ -package graphql.execution; - -import graphql.Internal; -import org.jspecify.annotations.NullMarked; - -/** - * We just want to be able to call a method that returns a value but doesn't throw any checked exceptions. - * - * @param - */ -@Internal -@NullMarked -@FunctionalInterface -public interface CallableWithoutException { - T call(); -} diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index ea91ced79d..32d28c3af7 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -362,10 +362,10 @@ public boolean isRunning() { return isRunning.get() > 0; } - public T call(CallableWithoutException callable) { + public T call(Supplier callable) { isRunning.incrementAndGet(); try { - return callable.call(); + return callable.get(); } finally { isRunning.decrementAndGet(); } diff --git a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy index 49032be15e..09a9a76eba 100644 --- a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy @@ -1,5 +1,6 @@ package graphql.execution +import graphql.ExecutionInput import graphql.GraphQLContext import graphql.execution.instrumentation.Instrumentation import graphql.language.Document @@ -10,6 +11,8 @@ import graphql.schema.GraphQLSchema import org.dataloader.DataLoaderRegistry import spock.lang.Specification +import java.util.concurrent.CountDownLatch + class ExecutionContextBuilderTest extends Specification { Instrumentation instrumentation = Mock(Instrumentation) @@ -137,24 +140,24 @@ class ExecutionContextBuilderTest extends Specification { given: def oldCoercedVariables = CoercedVariables.emptyVariables() def executionContextOld = new ExecutionContextBuilder() - .instrumentation(instrumentation) - .queryStrategy(queryStrategy) - .mutationStrategy(mutationStrategy) - .subscriptionStrategy(subscriptionStrategy) - .graphQLSchema(schema) - .executionId(executionId) - .graphQLContext(graphQLContext) - .root(root) - .operationDefinition(operation) - .coercedVariables(oldCoercedVariables) - .fragmentsByName([MyFragment: fragment]) - .dataLoaderRegistry(dataLoaderRegistry) - .build() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .coercedVariables(oldCoercedVariables) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .build() when: def coercedVariables = CoercedVariables.of([var: 'value']) def executionContext = executionContextOld.transform(builder -> builder - .coercedVariables(coercedVariables)) + .coercedVariables(coercedVariables)) then: executionContext.executionId == executionId @@ -231,7 +234,7 @@ class ExecutionContextBuilderTest extends Specification { when: def executionContext = executionContextOld .transform(builder -> builder - .dataLoaderDispatcherStrategy(mockDataLoaderDispatcherStrategy)) + .dataLoaderDispatcherStrategy(mockDataLoaderDispatcherStrategy)) then: executionContext.getDataLoaderDispatcherStrategy() == mockDataLoaderDispatcherStrategy @@ -265,4 +268,76 @@ class ExecutionContextBuilderTest extends Specification { OperationDefinition.Operation.MUTATION | false | true | false OperationDefinition.Operation.SUBSCRIPTION | false | false | true } + + def "can track if its running or not"() { + + when: + def executionContext = new ExecutionContextBuilder() + .instrumentation(instrumentation) + .queryStrategy(queryStrategy) + .mutationStrategy(mutationStrategy) + .subscriptionStrategy(subscriptionStrategy) + .graphQLSchema(schema) + .executionId(executionId) + .graphQLContext(graphQLContext) + .root(root) + .operationDefinition(operation) + .fragmentsByName([MyFragment: fragment]) + .dataLoaderRegistry(dataLoaderRegistry) + .executionInput(ExecutionInput.newExecutionInput("query q { f }").build()) + .operationDefinition(OperationDefinition.newOperationDefinition().operation(OperationDefinition.Operation.QUERY).build()) + .build() + + then: + !executionContext.isRunning() + + when: + CountDownLatch latch = new CountDownLatch(1) + CountDownLatch threadLatch = new CountDownLatch(1) + offThread({ + executionContext.run { + threadLatch.countDown() + println("running on ${Thread.currentThread().name}") + latch.await() + } + }) + threadLatch.await() + + then: + executionContext.isRunning() + + when: + latch.countDown() + Thread.sleep(10) // time for the runnable to exit + + then: + !executionContext.isRunning() + + when: + latch = new CountDownLatch(1) + threadLatch = new CountDownLatch(1) + offThread({ + executionContext.call { + threadLatch.countDown() + println("running on ${Thread.currentThread().name}") + latch.await() + return "x" + } + }) + then: + threadLatch.await() + executionContext.isRunning() + + when: + latch.countDown() + Thread.sleep(10) // time for the call to exit + + then: + !executionContext.isRunning() + } + + def offThread(Runnable runnable) { + new Thread(runnable).start() + return "x" + } } From 82c4ef340bf73bcc8001b15e90a88938e2d84ff6 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 2 Apr 2025 15:50:28 +1000 Subject: [PATCH 303/345] add an observer for the running state --- .../execution/EngineRunningObserver.java | 15 ++++ .../java/graphql/execution/Execution.java | 6 +- .../graphql/execution/ExecutionContext.java | 25 +++++- .../execution/ExecutionContextBuilder.java | 13 ++- .../groovy/graphql/EngineRunningTest.groovy | 90 +++++++++++++++++++ 5 files changed, 141 insertions(+), 8 deletions(-) create mode 100644 src/main/java/graphql/execution/EngineRunningObserver.java create mode 100644 src/test/groovy/graphql/EngineRunningTest.groovy diff --git a/src/main/java/graphql/execution/EngineRunningObserver.java b/src/main/java/graphql/execution/EngineRunningObserver.java new file mode 100644 index 0000000000..c3f661063d --- /dev/null +++ b/src/main/java/graphql/execution/EngineRunningObserver.java @@ -0,0 +1,15 @@ +package graphql.execution; + +import graphql.ExperimentalApi; +import graphql.GraphQLContext; +import org.jspecify.annotations.NullMarked; + +@ExperimentalApi +@NullMarked +public interface EngineRunningObserver { + + + String ENGINE_RUNNING_OBSERVER_KEY = "__ENGINE_RUNNING_OBSERVER"; + + void runningStateChanged(ExecutionId executionId, GraphQLContext graphQLContext, boolean runningState); +} diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index 634837f987..0373d6564c 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -29,8 +29,8 @@ import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import graphql.schema.impl.SchemaUtil; -import org.jspecify.annotations.NonNull; import graphql.util.FpKit; +import org.jspecify.annotations.NonNull; import org.reactivestreams.Publisher; import java.util.Collections; @@ -89,6 +89,9 @@ public CompletableFuture execute(Document document, GraphQLSche boolean propagateErrorsOnNonNullContractFailure = propagateErrorsOnNonNullContractFailure(getOperationResult.operationDefinition.getDirectives()); + // can be null + EngineRunningObserver engineRunningObserver = executionInput.getGraphQLContext().get(EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY); + ExecutionContext executionContext = newExecutionContextBuilder() .instrumentation(instrumentation) .instrumentationState(instrumentationState) @@ -111,6 +114,7 @@ public CompletableFuture execute(Document document, GraphQLSche .valueUnboxer(valueUnboxer) .executionInput(executionInput) .propagapropagateErrorsOnNonNullContractFailureeErrors(propagateErrorsOnNonNullContractFailure) + .engineRunningObserver(engineRunningObserver) .build(); executionContext.getGraphQLContext().put(ResultNodesInfo.RESULT_NODES_INFO, executionContext.getResultNodesInfo()); diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index 32d28c3af7..26498edf4c 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -22,6 +22,7 @@ import graphql.util.FpKit; import graphql.util.LockKit; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.Nullable; import java.util.HashSet; import java.util.List; @@ -70,6 +71,7 @@ public class ExecutionContext { private volatile DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; private final ResultNodesInfo resultNodesInfo = new ResultNodesInfo(); + private final EngineRunningObserver engineRunningObserver; ExecutionContext(ExecutionContextBuilder builder) { this.graphQLSchema = builder.graphQLSchema; @@ -96,6 +98,7 @@ public class ExecutionContext { this.dataLoaderDispatcherStrategy = builder.dataLoaderDispatcherStrategy; this.queryTree = FpKit.interThreadMemoize(() -> ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(graphQLSchema, operationDefinition, fragmentsByName, coercedVariables)); this.propagateErrorsOnNonNullContractFailure = builder.propagateErrorsOnNonNullContractFailure; + this.engineRunningObserver = builder.engineRunningObserver; } @@ -357,26 +360,40 @@ public ResultNodesInfo getResultNodesInfo() { return resultNodesInfo; } + @Nullable + EngineRunningObserver getEngineRunningObserver() { + return engineRunningObserver; + } + @Internal public boolean isRunning() { return isRunning.get() > 0; } public T call(Supplier callable) { - isRunning.incrementAndGet(); + if (isRunning.incrementAndGet() == 1 && engineRunningObserver != null) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, true); + } try { return callable.get(); } finally { - isRunning.decrementAndGet(); + if (isRunning.decrementAndGet() == 0 && engineRunningObserver != null) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, false); + } } } public void run(Runnable runnable) { - isRunning.incrementAndGet(); + if (isRunning.incrementAndGet() == 1 && engineRunningObserver != null) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, true); + } try { runnable.run(); } finally { - isRunning.decrementAndGet(); + if (isRunning.decrementAndGet() == 0 && engineRunningObserver != null) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, false); + } + } } diff --git a/src/main/java/graphql/execution/ExecutionContextBuilder.java b/src/main/java/graphql/execution/ExecutionContextBuilder.java index 2844e96be4..fbd0cc7bf7 100644 --- a/src/main/java/graphql/execution/ExecutionContextBuilder.java +++ b/src/main/java/graphql/execution/ExecutionContextBuilder.java @@ -7,7 +7,6 @@ import graphql.GraphQLContext; import graphql.GraphQLError; import graphql.Internal; -import graphql.PublicApi; import graphql.collect.ImmutableKit; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationState; @@ -16,6 +15,7 @@ import graphql.language.OperationDefinition; import graphql.schema.GraphQLSchema; import org.dataloader.DataLoaderRegistry; +import org.jspecify.annotations.Nullable; import java.util.Locale; import java.util.Map; @@ -24,7 +24,7 @@ import static graphql.Assert.assertNotNull; import static graphql.collect.ImmutableKit.emptyList; -@PublicApi +@Internal public class ExecutionContextBuilder { Instrumentation instrumentation; @@ -50,6 +50,7 @@ public class ExecutionContextBuilder { ExecutionInput executionInput; DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; boolean propagateErrorsOnNonNullContractFailure = true; + EngineRunningObserver engineRunningObserver; /** * @return a new builder of {@link graphql.execution.ExecutionContext}s @@ -97,6 +98,7 @@ public ExecutionContextBuilder() { executionInput = other.getExecutionInput(); dataLoaderDispatcherStrategy = other.getDataLoaderDispatcherStrategy(); propagateErrorsOnNonNullContractFailure = other.propagateErrorsOnNonNullContractFailure(); + engineRunningObserver = other.getEngineRunningObserver(); } public ExecutionContextBuilder instrumentation(Instrumentation instrumentation) { @@ -138,7 +140,7 @@ public ExecutionContextBuilder subscriptionStrategy(ExecutionStrategy subscripti * @deprecated use {@link #graphQLContext(GraphQLContext)} instead */ @Deprecated(since = "2021-07-05") - public ExecutionContextBuilder context(Object context) { + public ExecutionContextBuilder context(@Nullable Object context) { this.context = context; return this; } @@ -238,4 +240,9 @@ public ExecutionContext build() { assertNotNull(executionId, () -> "You must provide a query identifier"); return new ExecutionContext(this); } + + public ExecutionContextBuilder engineRunningObserver(EngineRunningObserver engineRunningObserver) { + this.engineRunningObserver = engineRunningObserver; + return this; + } } diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy new file mode 100644 index 0000000000..8ac6cc3550 --- /dev/null +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -0,0 +1,90 @@ +package graphql + +import graphql.execution.EngineRunningObserver +import graphql.execution.ExecutionId +import graphql.schema.DataFetcher +import spock.lang.Specification + +import java.util.concurrent.CompletableFuture +import java.util.concurrent.CopyOnWriteArrayList + +import static graphql.ExecutionInput.newExecutionInput +import static graphql.execution.EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY + +class EngineRunningTest extends Specification { + + + def "engine running state is observed"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = new CopyOnWriteArrayList<>(); + ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { + ExecutionId executionId, GraphQLContext context, boolean running -> + states.add(running) + } as EngineRunningObserver); + + when: + def er = graphQL.execute(ei) + then: + er.data == [hello: "world"] + states == [true, false] + } + + def "engine running state is observed with async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + CompletableFuture cf = new CompletableFuture(); + def df = { env -> + return cf; + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = new CopyOnWriteArrayList<>(); + ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { + ExecutionId executionId, GraphQLContext context, boolean running -> + states.add(running) + } as EngineRunningObserver); + + when: + def er = graphQL.executeAsync(ei) + then: + states == [true, false] + + when: + states.clear(); + cf.complete("world") + + then: + //TODO: why is that so much back and forth between true and false? + states == [true, false, true, false, true, false, true, false] + er.get().data == [hello: "world"] + + } + + +} From 61ae7b011999a36596398cbfb3d2977c999becd8 Mon Sep 17 00:00:00 2001 From: bbaker Date: Wed, 2 Apr 2025 22:01:38 +1100 Subject: [PATCH 304/345] Fixed dual cancelled checks --- .../AbstractAsyncExecutionStrategy.java | 2 +- .../execution/AsyncExecutionStrategy.java | 4 ++-- .../graphql/execution/ExecutionContext.java | 17 ++++++++++++++ .../graphql/execution/ExecutionStrategy.java | 8 +++---- .../SubscriptionExecutionStrategy.java | 23 +++++++++---------- .../groovy/graphql/ExecutionInputTest.groovy | 7 ++++++ 6 files changed, 42 insertions(+), 19 deletions(-) diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index b6406d9c82..8084e2ef5e 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -22,7 +22,7 @@ public AbstractAsyncExecutionStrategy(DataFetcherExceptionHandler dataFetcherExc } protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult) { - return (List results, Throwable exception) -> executionContext.run(() -> { + return (List results, Throwable exception) -> executionContext.run(exception, () -> { if (exception != null) { handleNonNullException(executionContext, overallResult, exception); return; diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index 77146673fe..138e4fb973 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -61,7 +61,7 @@ public CompletableFuture execute(ExecutionContext executionCont executionStrategyCtx.onDispatched(); futures.await().whenComplete((completeValueInfos, throwable) -> { - executionContext.run(() -> { + executionContext.run(throwable,() -> { List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, fieldsExecutedOnInitialResult, overallResult); @@ -78,7 +78,7 @@ public CompletableFuture execute(ExecutionContext executionCont executionStrategyCtx.onFieldValuesInfo(completeValueInfos); fieldValuesFutures.await().whenComplete(handleResultsConsumer); }); - }).exceptionally((ex) -> executionContext.call(() -> { + }).exceptionally((ex) -> executionContext.call(ex,() -> { // if there are any issues with combining/handling the field results, // complete the future at all costs and bubble up any thrown exception so // the execution does not hang. diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index ad42e9fafd..d4ea6db120 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -381,9 +381,14 @@ public boolean isRunning() { } public T call(Supplier callable) { + return call(null,callable); + } + + public T call(Throwable currentThrowable, Supplier callable) { if (isRunning.incrementAndGet() == 1 && engineRunningObserver != null) { engineRunningObserver.runningStateChanged(executionId, graphQLContext, true); } + checkIsCancelled(currentThrowable); try { return callable.get(); } finally { @@ -394,9 +399,14 @@ public T call(Supplier callable) { } public void run(Runnable runnable) { + run(null,runnable); + } + + public void run(Throwable currentThrowable, Runnable runnable) { if (isRunning.incrementAndGet() == 1 && engineRunningObserver != null) { engineRunningObserver.runningStateChanged(executionId, graphQLContext, true); } + checkIsCancelled(currentThrowable); try { runnable.run(); } finally { @@ -407,4 +417,11 @@ public void run(Runnable runnable) { } } + private void checkIsCancelled(Throwable currentThrowable) { + // no need to check if we already have an exception in place + if (currentThrowable == null) { + checkIsCancelled(); + } + } + } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 5f0f6aea57..f77bb8a887 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -226,7 +226,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat if (fieldValueInfosResult instanceof CompletableFuture) { CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { - executionContext.run(() -> { + executionContext.run(throwable,() -> { if (throwable != null) { handleResultsConsumer.accept(null, throwable); return; @@ -280,7 +280,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat private BiConsumer, Throwable> buildFieldValueMap(List fieldNames, CompletableFuture> overallResult, ExecutionContext executionContext) { return (List results, Throwable exception) -> { - executionContext.run(() -> { + executionContext.run(exception,() -> { if (exception != null) { handleValueException(overallResult, exception, executionContext); return; @@ -514,7 +514,7 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec @SuppressWarnings("unchecked") CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; return fetchedValue - .handle((result, exception) -> executionContext.call(() -> { + .handle((result, exception) -> executionContext.call(exception,() -> { fetchCtx.onCompleted(result, exception); if (exception != null) { CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); @@ -843,7 +843,7 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, overallResult.whenComplete(completeListCtx::onCompleted); resultsFuture.whenComplete((results, exception) -> { - executionContext.run(() -> { + executionContext.run(exception, () -> { if (exception != null) { handleValueException(overallResult, exception, executionContext); return; diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 253114e668..3ce02d3905 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -68,19 +68,18 @@ public CompletableFuture execute(ExecutionContext executionCont // // when the upstream source event stream completes, subscribe to it and wire in our adapter - CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> { - return executionContext.call(() -> { - if (publisher == null) { - ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); + CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> + executionContext.call(() -> { + if (publisher == null) { + ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); + return executionResult; + } + Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); + boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); + SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered); + ExecutionResultImpl executionResult = new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); return executionResult; - } - Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); - boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); - SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered); - ExecutionResultImpl executionResult = new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); - return executionResult; - }); - }); + })); // dispatched the subscription query executionStrategyCtx.onDispatched(); diff --git a/src/test/groovy/graphql/ExecutionInputTest.groovy b/src/test/groovy/graphql/ExecutionInputTest.groovy index 708c860ab1..f6a68576de 100644 --- a/src/test/groovy/graphql/ExecutionInputTest.groovy +++ b/src/test/groovy/graphql/ExecutionInputTest.groovy @@ -184,14 +184,18 @@ class ExecutionInputTest extends Specification { CountDownLatch fieldLatch = new CountDownLatch(1) DataFetcher df1Sec = { DataFetchingEnvironment env -> + println("Entering DF1") return CompletableFuture.supplyAsync { + println("DF1 async run") fieldLatch.await() Thread.sleep(1000) return [f: "x"] } } DataFetcher df10Sec = { DataFetchingEnvironment env -> + println("Entering DF10") return CompletableFuture.supplyAsync { + println("DF10 async run") fieldLatch.await() Thread.sleep(10000) return "x" @@ -214,11 +218,14 @@ class ExecutionInputTest extends Specification { Thread.sleep(250) // let it get into the field fetching say // lets cancel it + println("cancelling") executionInput.cancel() // let the DFs run + println("make the fields run") fieldLatch.countDown() + println("and await for the overall CF to complete") Awaitility.await().atMost(Duration.ofSeconds(60)).until({ -> cf.isDone() }) def er = cf.join() From 339f657880815357c3b137fd27ac67a1dbeda0e3 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Wed, 2 Apr 2025 21:30:45 +1000 Subject: [PATCH 305/345] increase accuracy of engine running --- .../graphql/execution/ExecutionContext.java | 40 +++++++++---- .../graphql/execution/ExecutionStrategy.java | 5 +- .../groovy/graphql/EngineRunningTest.groovy | 57 ++++++++++++++++++- 3 files changed, 87 insertions(+), 15 deletions(-) diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index 26498edf4c..d1d095c5d2 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -29,6 +29,7 @@ import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; @@ -370,31 +371,48 @@ public boolean isRunning() { return isRunning.get() > 0; } - public T call(Supplier callable) { + public void incrementRunning() { if (isRunning.incrementAndGet() == 1 && engineRunningObserver != null) { engineRunningObserver.runningStateChanged(executionId, graphQLContext, true); } + } + + public void decrementRunning() { + if (isRunning.decrementAndGet() == 0 && engineRunningObserver != null) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, false); + } + } + + public void incrementRunning(CompletableFuture cf) { + cf.whenComplete((result, throwable) -> { + incrementRunning(); + }); + } + + public void decrementRunning(CompletableFuture cf) { + cf.whenComplete((result, throwable) -> { + decrementRunning(); + }); + + } + + public T call(Supplier callable) { + incrementRunning(); try { return callable.get(); } finally { - if (isRunning.decrementAndGet() == 0 && engineRunningObserver != null) { - engineRunningObserver.runningStateChanged(executionId, graphQLContext, false); - } + decrementRunning(); } } public void run(Runnable runnable) { - if (isRunning.incrementAndGet() == 1 && engineRunningObserver != null) { - engineRunningObserver.runningStateChanged(executionId, graphQLContext, true); - } + incrementRunning(); try { runnable.run(); } finally { - if (isRunning.decrementAndGet() == 0 && engineRunningObserver != null) { - engineRunningObserver.runningStateChanged(executionId, graphQLContext, false); - } - + decrementRunning(); } } + } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 5f0f6aea57..62685beabc 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -513,7 +513,8 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec if (fetchedObject instanceof CompletableFuture) { @SuppressWarnings("unchecked") CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; - return fetchedValue + executionContext.decrementRunning(fetchedValue); + CompletableFuture fetchedValueCF = fetchedValue .handle((result, exception) -> executionContext.call(() -> { fetchCtx.onCompleted(result, exception); if (exception != null) { @@ -526,6 +527,8 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec })) .thenCompose(Function.identity()) .thenApply(result -> unboxPossibleDataFetcherResult(executionContext, parameters, result)); + executionContext.incrementRunning(fetchedValue); + return fetchedValueCF; } else { fetchCtx.onCompleted(fetchedObject, null); return unboxPossibleDataFetcherResult(executionContext, parameters, fetchedObject); diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index 8ac6cc3550..d141761f5a 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -45,7 +45,7 @@ class EngineRunningTest extends Specification { states == [true, false] } - def "engine running state is observed with async datafetcher"() { + def "engine running state is observed with one async datafetcher"() { given: def sdl = ''' @@ -80,11 +80,62 @@ class EngineRunningTest extends Specification { cf.complete("world") then: - //TODO: why is that so much back and forth between true and false? - states == [true, false, true, false, true, false, true, false] + states == [true, false] er.get().data == [hello: "world"] } + def "engine running state is observed with two async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + hello2: String + } + ''' + CompletableFuture cf1 = new CompletableFuture(); + CompletableFuture cf2 = new CompletableFuture(); + def df = { env -> + return cf1; + } as DataFetcher + def df2 = { env -> + return cf2 + } as DataFetcher + + def fetchers = ["Query": ["hello": df, "hello2": df2]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello hello2 }" + def ei = newExecutionInput(query).build() + + List states = new CopyOnWriteArrayList<>(); + ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { + ExecutionId executionId, GraphQLContext context, boolean running -> + states.add(running) + } as EngineRunningObserver); + + when: + def er = graphQL.executeAsync(ei) + then: + states == [true, false] + + when: + states.clear(); + cf1.complete("world") + + then: + states == [true, false] + + when: + states.clear(); + cf2.complete("world2") + + then: + states == [true, false] + er.get().data == [hello: "world", hello2: "world2"] + } + } From fd302f03390407a6786802c85de66c982639ed25 Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 3 Apr 2025 09:57:25 +1100 Subject: [PATCH 306/345] Merged in master to get cancellation PR working again with new states --- .../AbstractAsyncExecutionStrategy.java | 1 - .../execution/EngineRunningObserver.java | 32 ++++++++- .../graphql/execution/ExecutionContext.java | 70 +++++++++++++++---- .../groovy/graphql/EngineRunningTest.groovy | 45 ++++++------ 4 files changed, 110 insertions(+), 38 deletions(-) diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index 8084e2ef5e..1ff7151256 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -27,7 +27,6 @@ protected BiConsumer, Throwable> handleResults(ExecutionContext exe handleNonNullException(executionContext, overallResult, exception); return; } - executionContext.checkIsCancelled(); Map resolvedValuesByField = Maps.newLinkedHashMapWithExpectedSize(fieldNames.size()); int ix = 0; diff --git a/src/main/java/graphql/execution/EngineRunningObserver.java b/src/main/java/graphql/execution/EngineRunningObserver.java index c3f661063d..78b8d4dab4 100644 --- a/src/main/java/graphql/execution/EngineRunningObserver.java +++ b/src/main/java/graphql/execution/EngineRunningObserver.java @@ -1,15 +1,45 @@ package graphql.execution; +import graphql.ExecutionInput; import graphql.ExperimentalApi; import graphql.GraphQLContext; import org.jspecify.annotations.NullMarked; +/** + * This class lets you observe the running state of the graphql-java engine. As it processes and dispatches graphql fields, + * the engine moves in and out of a running and not running state. As it does this, the callback is called with information telling you the current + * state. + *

    + * If the engine is cancelled via {@link ExecutionInput#cancel()} then the observer will also be called to indicate that. + */ @ExperimentalApi @NullMarked public interface EngineRunningObserver { + enum RunningState { + /** + * Represents that the engine code is actively running its own code + */ + RUNNING, + /** + * Represents that the engine code is asynchronously waiting for fetching to happen + */ + NOT_RUNNING, + /** + * Represents that the engine code has been cancelled via {@link ExecutionInput#cancel()} + */ + CANCELLED + } + String ENGINE_RUNNING_OBSERVER_KEY = "__ENGINE_RUNNING_OBSERVER"; - void runningStateChanged(ExecutionId executionId, GraphQLContext graphQLContext, boolean runningState); + + /** + * This will be called when the running state of the graphql-java engine changes. + * + * @param executionId the id of the current execution + * @param graphQLContext the graphql context + */ + void runningStateChanged(ExecutionId executionId, GraphQLContext graphQLContext, RunningState runningState); } diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index d1d095c5d2..ff7a0e221a 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -10,6 +10,7 @@ import graphql.Internal; import graphql.PublicApi; import graphql.collect.ImmutableKit; +import graphql.execution.EngineRunningObserver.RunningState; import graphql.execution.incremental.IncrementalCallState; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationState; @@ -35,6 +36,10 @@ import java.util.function.Consumer; import java.util.function.Supplier; +import static graphql.execution.EngineRunningObserver.RunningState.CANCELLED; +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING; +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING; + @SuppressWarnings("TypeParameterUnusedInFormals") @PublicApi public class ExecutionContext { @@ -371,48 +376,89 @@ public boolean isRunning() { return isRunning.get() > 0; } - public void incrementRunning() { - if (isRunning.incrementAndGet() == 1 && engineRunningObserver != null) { - engineRunningObserver.runningStateChanged(executionId, graphQLContext, true); + private void incrementRunning(Throwable throwable) { + checkIsCancelled(throwable); + + if (isRunning.incrementAndGet() == 1) { + changeOfState(RUNNING); } } - public void decrementRunning() { - if (isRunning.decrementAndGet() == 0 && engineRunningObserver != null) { - engineRunningObserver.runningStateChanged(executionId, graphQLContext, false); + private void decrementRunning(Throwable throwable) { + checkIsCancelled(throwable); + + if (isRunning.decrementAndGet() == 0) { + changeOfState(NOT_RUNNING); } } + @Internal public void incrementRunning(CompletableFuture cf) { cf.whenComplete((result, throwable) -> { - incrementRunning(); + incrementRunning(throwable); }); } + @Internal public void decrementRunning(CompletableFuture cf) { cf.whenComplete((result, throwable) -> { - decrementRunning(); + decrementRunning(throwable); }); } + @Internal public T call(Supplier callable) { - incrementRunning(); + return call(null, callable); + } + + @Internal + public T call(Throwable throwable, Supplier callable) { + incrementRunning(throwable); try { return callable.get(); } finally { - decrementRunning(); + decrementRunning(throwable); } } + @Internal public void run(Runnable runnable) { - incrementRunning(); + run(null, runnable); + } + + @Internal + public void run(Throwable throwable, Runnable runnable) { + incrementRunning(throwable); try { runnable.run(); } finally { - decrementRunning(); + decrementRunning(throwable); } } + private void checkIsCancelled(Throwable currentThrowable) { + // no need to check we are cancelled if we already have an exception in play + // since it can lead to an exception being thrown when an exception has already been + // thrown + if (currentThrowable == null) { + checkIsCancelled(); + } + } + /** + * This will abort the execution via {@link AbortExecutionException} if the {@link ExecutionInput} has been cancelled + */ + private void checkIsCancelled() { + if (executionInput.isCancelled()) { + changeOfState(CANCELLED); + throw new AbortExecutionException("Execution has been asked to be cancelled"); + } + } + + private void changeOfState(RunningState runningState) { + if (engineRunningObserver != null) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); + } + } } diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index d141761f5a..5653353532 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -10,10 +10,22 @@ import java.util.concurrent.CopyOnWriteArrayList import static graphql.ExecutionInput.newExecutionInput import static graphql.execution.EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY +import static graphql.execution.EngineRunningObserver.RunningState +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING class EngineRunningTest extends Specification { + private static List trackStates(ExecutionInput ei) { + List states = new CopyOnWriteArrayList<>(); + ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { + ExecutionId executionId, GraphQLContext context, RunningState running -> + states.add(running) + } as EngineRunningObserver); + states + } + def "engine running state is observed"() { given: def sdl = ''' @@ -32,17 +44,13 @@ class EngineRunningTest extends Specification { def query = "{ hello }" def ei = newExecutionInput(query).build() - List states = new CopyOnWriteArrayList<>(); - ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { - ExecutionId executionId, GraphQLContext context, boolean running -> - states.add(running) - } as EngineRunningObserver); + List states = trackStates(ei) when: def er = graphQL.execute(ei) then: er.data == [hello: "world"] - states == [true, false] + states == [RUNNING, NOT_RUNNING] } def "engine running state is observed with one async datafetcher"() { @@ -64,25 +72,20 @@ class EngineRunningTest extends Specification { def query = "{ hello }" def ei = newExecutionInput(query).build() - List states = new CopyOnWriteArrayList<>(); - ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { - ExecutionId executionId, GraphQLContext context, boolean running -> - states.add(running) - } as EngineRunningObserver); + List states = trackStates(ei) when: def er = graphQL.executeAsync(ei) then: - states == [true, false] + states == [RUNNING, NOT_RUNNING] when: states.clear(); cf.complete("world") then: - states == [true, false] + states == [RUNNING, NOT_RUNNING] er.get().data == [hello: "world"] - } def "engine running state is observed with two async datafetcher"() { @@ -110,32 +113,26 @@ class EngineRunningTest extends Specification { def query = "{ hello hello2 }" def ei = newExecutionInput(query).build() - List states = new CopyOnWriteArrayList<>(); - ei.getGraphQLContext().put(ENGINE_RUNNING_OBSERVER_KEY, { - ExecutionId executionId, GraphQLContext context, boolean running -> - states.add(running) - } as EngineRunningObserver); + List states = trackStates(ei) when: def er = graphQL.executeAsync(ei) then: - states == [true, false] + states == [RUNNING, NOT_RUNNING] when: states.clear(); cf1.complete("world") then: - states == [true, false] + states == [RUNNING, NOT_RUNNING] when: states.clear(); cf2.complete("world2") then: - states == [true, false] + states == [RUNNING, NOT_RUNNING] er.get().data == [hello: "world", hello2: "world2"] } - - } From d7a896e57c3df4b4bfaa0ac267ce3ab6ffeddfcd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Apr 2025 23:08:16 +0000 Subject: [PATCH 307/345] Add performance results for commit 5a0354109936c23ea8738604500215b1936cbd6f --- ...936c23ea8738604500215b1936cbd6f-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json diff --git a/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json b/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json new file mode 100644 index 0000000000..41be86bf29 --- /dev/null +++ b/performance-results/2025-04-02T23:08:02Z-5a0354109936c23ea8738604500215b1936cbd6f-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.424479155837928, + "scoreError" : 0.011075372549510833, + "scoreConfidence" : [ + 3.4134037832884174, + 3.435554528387439 + ], + "scorePercentiles" : { + "0.0" : 3.4222286409542613, + "50.0" : 3.424837405471688, + "90.0" : 3.426013171454075, + "95.0" : 3.426013171454075, + "99.0" : 3.426013171454075, + "99.9" : 3.426013171454075, + "99.99" : 3.426013171454075, + "99.999" : 3.426013171454075, + "99.9999" : 3.426013171454075, + "100.0" : 3.426013171454075 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.426013171454075, + 3.4255917004773675 + ], + [ + 3.4222286409542613, + 3.4240831104660083 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.730114924834354, + "scoreError" : 0.015068036624339469, + "scoreConfidence" : [ + 1.7150468882100145, + 1.7451829614586933 + ], + "scorePercentiles" : { + "0.0" : 1.7278191249827204, + "50.0" : 1.7300845809684677, + "90.0" : 1.7324714124177591, + "95.0" : 1.7324714124177591, + "99.0" : 1.7324714124177591, + "99.9" : 1.7324714124177591, + "99.99" : 1.7324714124177591, + "99.999" : 1.7324714124177591, + "99.9999" : 1.7324714124177591, + "100.0" : 1.7324714124177591 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278191249827204, + 1.7317408171276252 + ], + [ + 1.7284283448093105, + 1.7324714124177591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8681857109496245, + "scoreError" : 0.0035043749820760526, + "scoreConfidence" : [ + 0.8646813359675485, + 0.8716900859317005 + ], + "scorePercentiles" : { + "0.0" : 0.8676305266413037, + "50.0" : 0.8682075476996174, + "90.0" : 0.8686972217579596, + "95.0" : 0.8686972217579596, + "99.0" : 0.8686972217579596, + "99.9" : 0.8686972217579596, + "99.99" : 0.8686972217579596, + "99.999" : 0.8686972217579596, + "99.9999" : 0.8686972217579596, + "100.0" : 0.8686972217579596 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8678129209888844, + 0.8686021744103505 + ], + [ + 0.8676305266413037, + 0.8686972217579596 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.387280261757567, + "scoreError" : 0.10028607635809765, + "scoreConfidence" : [ + 16.286994185399468, + 16.487566338115666 + ], + "scorePercentiles" : { + "0.0" : 16.299881227884125, + "50.0" : 16.410224457562155, + "90.0" : 16.457636875301638, + "95.0" : 16.457636875301638, + "99.0" : 16.457636875301638, + "99.9" : 16.457636875301638, + "99.99" : 16.457636875301638, + "99.999" : 16.457636875301638, + "99.9999" : 16.457636875301638, + "100.0" : 16.457636875301638 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.299881227884125, + 16.328028210173624, + 16.30546147881785 + ], + [ + 16.457636875301638, + 16.429821212221743, + 16.410224457562155 + ], + [ + 16.412175542163634, + 16.436125687636725, + 16.406167664056625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2642.0682457066564, + "scoreError" : 114.34022799708357, + "scoreConfidence" : [ + 2527.7280177095727, + 2756.40847370374 + ], + "scorePercentiles" : { + "0.0" : 2555.2046983574915, + "50.0" : 2659.7345801498823, + "90.0" : 2713.6502722405826, + "95.0" : 2713.6502722405826, + "99.0" : 2713.6502722405826, + "99.9" : 2713.6502722405826, + "99.99" : 2713.6502722405826, + "99.999" : 2713.6502722405826, + "99.9999" : 2713.6502722405826, + "100.0" : 2713.6502722405826 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2706.2844882940467, + 2712.2668309135865, + 2713.6502722405826 + ], + [ + 2555.3276391760605, + 2555.2046983574915, + 2558.8986334792153 + ], + [ + 2661.411687999915, + 2655.8353807491285, + 2659.7345801498823 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69729.45525114956, + "scoreError" : 2962.4156855070937, + "scoreConfidence" : [ + 66767.03956564247, + 72691.87093665665 + ], + "scorePercentiles" : { + "0.0" : 67361.01966300381, + "50.0" : 70738.98053842774, + "90.0" : 71080.73631929721, + "95.0" : 71080.73631929721, + "99.0" : 71080.73631929721, + "99.9" : 71080.73631929721, + "99.99" : 71080.73631929721, + "99.999" : 71080.73631929721, + "99.9999" : 71080.73631929721, + "100.0" : 71080.73631929721 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 67411.41767701558, + 67361.01966300381, + 67389.57797458366 + ], + [ + 71080.73631929721, + 71053.29571140243, + 71079.39665194794 + ], + [ + 70705.69662773378, + 70744.97609693388, + 70738.98053842774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.94580919495104, + "scoreError" : 10.159825623076115, + "scoreConfidence" : [ + 343.7859835718749, + 364.10563481802717 + ], + "scorePercentiles" : { + "0.0" : 347.0369763846074, + "50.0" : 353.17931736004226, + "90.0" : 361.39092290805024, + "95.0" : 361.39092290805024, + "99.0" : 361.39092290805024, + "99.9" : 361.39092290805024, + "99.99" : 361.39092290805024, + "99.999" : 361.39092290805024, + "99.9999" : 361.39092290805024, + "100.0" : 361.39092290805024 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 347.3977135026078, + 347.69793010856546, + 347.0369763846074 + ], + [ + 361.2079659440757, + 361.21748163628587, + 361.39092290805024 + ], + [ + 353.2714724807457, + 353.17931736004226, + 353.11250242957925 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.68682541606691, + "scoreError" : 2.1175975242501184, + "scoreConfidence" : [ + 105.5692278918168, + 109.80442294031702 + ], + "scorePercentiles" : { + "0.0" : 106.26146297343669, + "50.0" : 107.34763854854604, + "90.0" : 109.36109832163555, + "95.0" : 109.36109832163555, + "99.0" : 109.36109832163555, + "99.9" : 109.36109832163555, + "99.99" : 109.36109832163555, + "99.999" : 109.36109832163555, + "99.9999" : 109.36109832163555, + "100.0" : 109.36109832163555 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.19339810163474, + 109.30825077522033, + 109.36109832163555 + ], + [ + 107.00354599780425, + 106.4757245889034, + 106.26146297343669 + ], + [ + 106.74918851780693, + 107.34763854854604, + 107.48112091961424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06162681252669893, + "scoreError" : 3.3686119708431755E-4, + "scoreConfidence" : [ + 0.061289951329614616, + 0.061963673723783246 + ], + "scorePercentiles" : { + "0.0" : 0.061328496562593905, + "50.0" : 0.061681442692720474, + "90.0" : 0.06197374492597344, + "95.0" : 0.06197374492597344, + "99.0" : 0.06197374492597344, + "99.9" : 0.06197374492597344, + "99.99" : 0.06197374492597344, + "99.999" : 0.06197374492597344, + "99.9999" : 0.06197374492597344, + "100.0" : 0.06197374492597344 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06197374492597344, + 0.061568095189134614, + 0.061681442692720474 + ], + [ + 0.061702634419482816, + 0.06179707055900928, + 0.06169649623656577 + ], + [ + 0.061328496562593905, + 0.06142226142128862, + 0.061471070733521434 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.601361537296343E-4, + "scoreError" : 1.3735303553208745E-5, + "scoreConfidence" : [ + 3.464008501764256E-4, + 3.7387145728284306E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5257102726447045E-4, + "50.0" : 3.563742360272379E-4, + "90.0" : 3.711108373662132E-4, + "95.0" : 3.711108373662132E-4, + "99.0" : 3.711108373662132E-4, + "99.9" : 3.711108373662132E-4, + "99.99" : 3.711108373662132E-4, + "99.999" : 3.711108373662132E-4, + "99.9999" : 3.711108373662132E-4, + "100.0" : 3.711108373662132E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7094360919965913E-4, + 3.7054810797679537E-4, + 3.711108373662132E-4 + ], + [ + 3.564217083170926E-4, + 3.561934064597772E-4, + 3.563742360272379E-4 + ], + [ + 3.5417943252750647E-4, + 3.5257102726447045E-4, + 3.5288301842795726E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014064441341060416, + "scoreError" : 1.2119529604295307E-4, + "scoreConfidence" : [ + 0.013943246045017463, + 0.01418563663710337 + ], + "scorePercentiles" : { + "0.0" : 0.01398626967601172, + "50.0" : 0.0140487007086081, + "90.0" : 0.014176805886422469, + "95.0" : 0.014176805886422469, + "99.0" : 0.014176805886422469, + "99.9" : 0.014176805886422469, + "99.99" : 0.014176805886422469, + "99.999" : 0.014176805886422469, + "99.9999" : 0.014176805886422469, + "100.0" : 0.014176805886422469 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013999763167326047, + 0.013999175775825382, + 0.01398626967601172 + ], + [ + 0.014029347007575757, + 0.0140487007086081, + 0.01405117447410611 + ], + [ + 0.014176805886422469, + 0.014143796568194129, + 0.014144938805474027 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.009089933464979, + "scoreError" : 0.01145814597855419, + "scoreConfidence" : [ + 0.9976317874864248, + 1.020548079443533 + ], + "scorePercentiles" : { + "0.0" : 1.0003654717415225, + "50.0" : 1.0087827143433528, + "90.0" : 1.0205102271428572, + "95.0" : 1.0205102271428572, + "99.0" : 1.0205102271428572, + "99.9" : 1.0205102271428572, + "99.99" : 1.0205102271428572, + "99.999" : 1.0205102271428572, + "99.9999" : 1.0205102271428572, + "100.0" : 1.0205102271428572 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0153699043557722, + 1.0152101648563598, + 1.0087827143433528 + ], + [ + 1.0026712928614396, + 1.0003654717415225, + 1.0058263027255356 + ], + [ + 1.0031070592718885, + 1.0099662638860836, + 1.0205102271428572 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013063078195670041, + "scoreError" : 3.172213737715068E-4, + "scoreConfidence" : [ + 0.012745856821898535, + 0.013380299569441548 + ], + "scorePercentiles" : { + "0.0" : 0.012905051156776511, + "50.0" : 0.013051076766829785, + "90.0" : 0.013247707986805675, + "95.0" : 0.013247707986805675, + "99.0" : 0.013247707986805675, + "99.9" : 0.013247707986805675, + "99.99" : 0.013247707986805675, + "99.999" : 0.013247707986805675, + "99.9999" : 0.013247707986805675, + "100.0" : 0.013247707986805675 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013015171863042652, + 0.013247707986805675, + 0.013039056843488737 + ], + [ + 0.012905051156776511, + 0.013063096690170833, + 0.013108384633735837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.972506567178479, + "scoreError" : 0.19669975350394048, + "scoreConfidence" : [ + 3.7758068136745386, + 4.169206320682419 + ], + "scorePercentiles" : { + "0.0" : 3.865339341576507, + "50.0" : 3.980264222581429, + "90.0" : 4.068455570382425, + "95.0" : 4.068455570382425, + "99.0" : 4.068455570382425, + "99.9" : 4.068455570382425, + "99.99" : 4.068455570382425, + "99.999" : 4.068455570382425, + "99.9999" : 4.068455570382425, + "100.0" : 4.068455570382425 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.068455570382425, + 3.9299753731343285, + 3.9963807795527155 + ], + [ + 4.010740672814755, + 3.865339341576507, + 3.9641476656101426 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.158331899464004, + "scoreError" : 0.04410759724726521, + "scoreConfidence" : [ + 3.114224302216739, + 3.2024394967112695 + ], + "scorePercentiles" : { + "0.0" : 3.1209627138845555, + "50.0" : 3.151894622439332, + "90.0" : 3.205059529958347, + "95.0" : 3.205059529958347, + "99.0" : 3.205059529958347, + "99.9" : 3.205059529958347, + "99.99" : 3.205059529958347, + "99.999" : 3.205059529958347, + "99.9999" : 3.205059529958347, + "100.0" : 3.205059529958347 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.205059529958347, + 3.151894622439332, + 3.1209627138845555 + ], + [ + 3.1614530736409607, + 3.1490925138539043, + 3.1931810312899107 + ], + [ + 3.138146982428616, + 3.159927334913112, + 3.1452692927672956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17926628376468318, + "scoreError" : 0.0041338115424907305, + "scoreConfidence" : [ + 0.17513247222219244, + 0.1834000953071739 + ], + "scorePercentiles" : { + "0.0" : 0.17606456009788904, + "50.0" : 0.17991486069481677, + "90.0" : 0.1824510914962325, + "95.0" : 0.1824510914962325, + "99.0" : 0.1824510914962325, + "99.9" : 0.1824510914962325, + "99.99" : 0.1824510914962325, + "99.999" : 0.1824510914962325, + "99.9999" : 0.1824510914962325, + "100.0" : 0.1824510914962325 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1762438778308454, + 0.17617481822666173, + 0.17606456009788904 + ], + [ + 0.18154535195338029, + 0.1824510914962325, + 0.18063986376445088 + ], + [ + 0.17991486069481677, + 0.1799070998992552, + 0.18045502991861703 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33563272825190205, + "scoreError" : 0.009558237070581397, + "scoreConfidence" : [ + 0.32607449118132065, + 0.34519096532248345 + ], + "scorePercentiles" : { + "0.0" : 0.3284607007160218, + "50.0" : 0.33644188396581887, + "90.0" : 0.3440445917363333, + "95.0" : 0.3440445917363333, + "99.0" : 0.3440445917363333, + "99.9" : 0.3440445917363333, + "99.99" : 0.3440445917363333, + "99.999" : 0.3440445917363333, + "99.9999" : 0.3440445917363333, + "100.0" : 0.3440445917363333 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.329211396694759, + 0.32936281339129864, + 0.3284607007160218 + ], + [ + 0.3413116095904437, + 0.3403381569615084, + 0.3440445917363333 + ], + [ + 0.33644188396581887, + 0.3350542349984923, + 0.3364691662124424 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16489447994355155, + "scoreError" : 0.012856772971821528, + "scoreConfidence" : [ + 0.15203770697173002, + 0.17775125291537308 + ], + "scorePercentiles" : { + "0.0" : 0.1552361662216703, + "50.0" : 0.16498882176796673, + "90.0" : 0.17424424524323948, + "95.0" : 0.17424424524323948, + "99.0" : 0.17424424524323948, + "99.9" : 0.17424424524323948, + "99.99" : 0.17424424524323948, + "99.999" : 0.17424424524323948, + "99.9999" : 0.17424424524323948, + "100.0" : 0.17424424524323948 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16498882176796673, + 0.1665575346346663, + 0.16489984001714927 + ], + [ + 0.1552361662216703, + 0.15588410461092406, + 0.15634531709452487 + ], + [ + 0.17229772164504403, + 0.17424424524323948, + 0.1735965682567788 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3875551586103285, + "scoreError" : 0.0063050988879517446, + "scoreConfidence" : [ + 0.3812500597223768, + 0.39386025749828024 + ], + "scorePercentiles" : { + "0.0" : 0.38285499134762635, + "50.0" : 0.385947726409633, + "90.0" : 0.39251833351650506, + "95.0" : 0.39251833351650506, + "99.0" : 0.39251833351650506, + "99.9" : 0.39251833351650506, + "99.99" : 0.39251833351650506, + "99.999" : 0.39251833351650506, + "99.9999" : 0.39251833351650506, + "100.0" : 0.39251833351650506 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.385947726409633, + 0.3845023914564749, + 0.38541915674259064 + ], + [ + 0.39251833351650506, + 0.39210625470514426, + 0.39240598979792035 + ], + [ + 0.38285499134762635, + 0.3868541281237911, + 0.3853874553932714 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1597276282520068, + "scoreError" : 0.0046269221140336735, + "scoreConfidence" : [ + 0.1551007061379731, + 0.16435455036604046 + ], + "scorePercentiles" : { + "0.0" : 0.1554737507501438, + "50.0" : 0.1615286003876595, + "90.0" : 0.1617219838281907, + "95.0" : 0.1617219838281907, + "99.0" : 0.1617219838281907, + "99.9" : 0.1617219838281907, + "99.99" : 0.1617219838281907, + "99.999" : 0.1617219838281907, + "99.9999" : 0.1617219838281907, + "100.0" : 0.1617219838281907 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16165860842224378, + 0.1617219838281907, + 0.1615286003876595 + ], + [ + 0.15625568347942936, + 0.15650595923126281, + 0.1554737507501438 + ], + [ + 0.1615476022486794, + 0.16123468213404704, + 0.16162178378640463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04761128317096445, + "scoreError" : 3.479280769183812E-4, + "scoreConfidence" : [ + 0.04726335509404607, + 0.04795921124788283 + ], + "scorePercentiles" : { + "0.0" : 0.04738616306773758, + "50.0" : 0.047527383797194026, + "90.0" : 0.047924545537323164, + "95.0" : 0.047924545537323164, + "99.0" : 0.047924545537323164, + "99.9" : 0.047924545537323164, + "99.99" : 0.047924545537323164, + "99.999" : 0.047924545537323164, + "99.9999" : 0.047924545537323164, + "100.0" : 0.047924545537323164 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047924545537323164, + 0.047923508297830535, + 0.04775109323280267 + ], + [ + 0.04747591117377846, + 0.047487881058774925, + 0.04738616306773758 + ], + [ + 0.047604741071853605, + 0.04742032130138513, + 0.047527383797194026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 1.0398962932366718E7, + "scoreError" : 351179.03066771803, + "scoreConfidence" : [ + 1.0047783901699E7, + 1.0750141963034436E7 + ], + "scorePercentiles" : { + "0.0" : 9973581.754735792, + "50.0" : 1.0443271703549061E7, + "90.0" : 1.0618271176220806E7, + "95.0" : 1.0618271176220806E7, + "99.0" : 1.0618271176220806E7, + "99.9" : 1.0618271176220806E7, + "99.99" : 1.0618271176220806E7, + "99.999" : 1.0618271176220806E7, + "99.9999" : 1.0618271176220806E7, + "100.0" : 1.0618271176220806E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 1.0368837321243523E7, + 1.0231072242331289E7, + 1.028341827954779E7 + ], + [ + 1.0542553845100105E7, + 9973581.754735792, + 1.0552821065400844E7 + ], + [ + 1.0618271176220806E7, + 1.0443271703549061E7, + 1.0576839003171246E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 033ba93f05235f684d163c8969894b8cd2c693d4 Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 3 Apr 2025 12:24:18 +1100 Subject: [PATCH 308/345] Added test for subscriptions --- .../graphql/execution/ExecutionStrategy.java | 8 ++-- .../SubscriptionExecutionStrategyTest.groovy | 42 +++++++++++++++++++ 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 06c40ddf33..297388dcdd 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -226,7 +226,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat if (fieldValueInfosResult instanceof CompletableFuture) { CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { - executionContext.run(() -> { + executionContext.run(throwable,() -> { if (throwable != null) { handleResultsConsumer.accept(null, throwable); return; @@ -280,7 +280,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat private BiConsumer, Throwable> buildFieldValueMap(List fieldNames, CompletableFuture> overallResult, ExecutionContext executionContext) { return (List results, Throwable exception) -> { - executionContext.run(() -> { + executionContext.run(exception,() -> { if (exception != null) { handleValueException(overallResult, exception, executionContext); return; @@ -488,7 +488,7 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; executionContext.decrementRunning(fetchedValue); CompletableFuture fetchedValueCF = fetchedValue - .handle((result, exception) -> executionContext.call(() -> { + .handle((result, exception) -> executionContext.call(exception,() -> { fetchCtx.onCompleted(result, exception); if (exception != null) { CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); @@ -819,7 +819,7 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, overallResult.whenComplete(completeListCtx::onCompleted); resultsFuture.whenComplete((results, exception) -> { - executionContext.run(() -> { + executionContext.run(exception,() -> { if (exception != null) { handleValueException(overallResult, exception, executionContext); return; diff --git a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy index 3d7bb28086..86de136677 100644 --- a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy @@ -710,6 +710,48 @@ class SubscriptionExecutionStrategyTest extends Specification { } } + def "we can cancel the operation and the upstream publisher is told"() { + List promises = [] + Publisher publisher = new RxJavaMessagePublisher(10) + + DataFetcher newMessageDF = { env -> return publisher } + DataFetcher senderDF = dfThatDoesNotComplete("sender", promises) + DataFetcher textDF = PropertyDataFetcher.fetching("text") + + GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, textDF) + + def executionInput = ExecutionInput.newExecutionInput().query(""" + subscription NewMessages { + newMessage(roomId: 123) { + sender + text + } + } + """).graphQLContext([(SubscriptionExecutionStrategy.KEEP_SUBSCRIPTION_EVENTS_ORDERED): true]).build() + + def executionResult = graphQL.execute(executionInput) + + when: + Publisher msgStream = executionResult.getData() + def capturingSubscriber = new CapturingSubscriber(1) + msgStream.subscribe(capturingSubscriber) + + // now cancel the operation + executionInput.cancel() + + // make things over the subscription + promises.forEach {it.run()} + + + then: + Awaitility.await().untilTrue(capturingSubscriber.isDone()) + + def messages = capturingSubscriber.events + messages.size() == 1 + def error = messages[0].errors[0] + assert error.message == "Execution has been asked to be cancelled" + } + private static DataFetcher dfThatDoesNotComplete(String propertyName, List promises) { { env -> def df = PropertyDataFetcher.fetching(propertyName) From bd4a0982ef18f6b535bd89a8441cdb12b10f1602 Mon Sep 17 00:00:00 2001 From: bbaker Date: Thu, 3 Apr 2025 12:49:26 +1100 Subject: [PATCH 309/345] Added test for subscriptions - checking publisher and how many is got asked for --- .../SubscriptionExecutionStrategyTest.groovy | 3 ++- .../execution/pubsub/RxJavaMessagePublisher.java | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy index 86de136677..08a216fe20 100644 --- a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy @@ -712,7 +712,7 @@ class SubscriptionExecutionStrategyTest extends Specification { def "we can cancel the operation and the upstream publisher is told"() { List promises = [] - Publisher publisher = new RxJavaMessagePublisher(10) + RxJavaMessagePublisher publisher = new RxJavaMessagePublisher(10) DataFetcher newMessageDF = { env -> return publisher } DataFetcher senderDF = dfThatDoesNotComplete("sender", promises) @@ -750,6 +750,7 @@ class SubscriptionExecutionStrategyTest extends Specification { messages.size() == 1 def error = messages[0].errors[0] assert error.message == "Execution has been asked to be cancelled" + publisher.counter == 2 } private static DataFetcher dfThatDoesNotComplete(String propertyName, List promises) { diff --git a/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java b/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java index 7d0be05cb4..0c19e90fa2 100644 --- a/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java +++ b/src/test/groovy/graphql/execution/pubsub/RxJavaMessagePublisher.java @@ -4,6 +4,8 @@ import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; +import java.util.concurrent.atomic.AtomicInteger; + /** * This example publisher will create count "messages" and then terminate. Its * uses tRxJava Flowable as a backing publisher @@ -11,10 +13,18 @@ public class RxJavaMessagePublisher implements Publisher { private final Flowable flowable; + private final AtomicInteger counter = new AtomicInteger(); public RxJavaMessagePublisher(final int count) { flowable = Flowable.range(0, count) - .map(at -> examineMessage(new Message("sender" + at, "text" + at), at)); + .map(at -> { + counter.incrementAndGet(); + return examineMessage(new Message("sender" + at, "text" + at), at); + }); + } + + public int getCounter() { + return counter.get(); } @Override From ae742ce9bff46c5321535922cb57f249f5ae4198 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 02:04:08 +0000 Subject: [PATCH 310/345] Bump org.junit.jupiter:junit-jupiter from 5.12.0 to 5.12.1 Bumps [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) from 5.12.0 to 5.12.1. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.12.0...r5.12.1) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- agent-test/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agent-test/build.gradle b/agent-test/build.gradle index 1ce59bfe4f..cb64429502 100644 --- a/agent-test/build.gradle +++ b/agent-test/build.gradle @@ -6,7 +6,7 @@ dependencies { implementation(rootProject) implementation("net.bytebuddy:byte-buddy-agent:1.17.5") - testImplementation 'org.junit.jupiter:junit-jupiter:5.12.0' + testImplementation 'org.junit.jupiter:junit-jupiter:5.12.1' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' testImplementation("org.assertj:assertj-core:3.27.3") From 9a2f0cf82440a47a2e5edcc2f69c0d6245afde53 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 02:51:53 +0000 Subject: [PATCH 311/345] Add performance results for commit e98ca21274456df314a2574b48271e4f236d2970 --- ...4456df314a2574b48271e4f236d2970-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json diff --git a/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..e7e3fde930 --- /dev/null +++ b/performance-results/2025-04-03T02:51:35Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.412009068804363, + "scoreError" : 0.027147540536237486, + "scoreConfidence" : [ + 3.3848615282681256, + 3.4391566093406003 + ], + "scorePercentiles" : { + "0.0" : 3.406407858797982, + "50.0" : 3.412581318388711, + "90.0" : 3.416465779642049, + "95.0" : 3.416465779642049, + "99.0" : 3.416465779642049, + "99.9" : 3.416465779642049, + "99.99" : 3.416465779642049, + "99.999" : 3.416465779642049, + "99.9999" : 3.416465779642049, + "100.0" : 3.416465779642049 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411854248718382, + 3.416465779642049 + ], + [ + 3.406407858797982, + 3.41330838805904 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7247825532086658, + "scoreError" : 0.008412192988375613, + "scoreConfidence" : [ + 1.7163703602202902, + 1.7331947461970414 + ], + "scorePercentiles" : { + "0.0" : 1.7232151056048182, + "50.0" : 1.7247590010147462, + "90.0" : 1.7263971052003526, + "95.0" : 1.7263971052003526, + "99.0" : 1.7263971052003526, + "99.9" : 1.7263971052003526, + "99.99" : 1.7263971052003526, + "99.999" : 1.7263971052003526, + "99.9999" : 1.7263971052003526, + "100.0" : 1.7263971052003526 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7232151056048182, + 1.7263971052003526 + ], + [ + 1.7246609185990969, + 1.7248570834303953 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8665645873428459, + "scoreError" : 0.007980730163315616, + "scoreConfidence" : [ + 0.8585838571795303, + 0.8745453175061615 + ], + "scorePercentiles" : { + "0.0" : 0.8652048329749016, + "50.0" : 0.8665310283763555, + "90.0" : 0.8679914596437709, + "95.0" : 0.8679914596437709, + "99.0" : 0.8679914596437709, + "99.9" : 0.8679914596437709, + "99.99" : 0.8679914596437709, + "99.999" : 0.8679914596437709, + "99.9999" : 0.8679914596437709, + "100.0" : 0.8679914596437709 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8671178524031105, + 0.8679914596437709 + ], + [ + 0.8652048329749016, + 0.8659442043496006 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.190306505865994, + "scoreError" : 0.19886222794442865, + "scoreConfidence" : [ + 15.991444277921566, + 16.389168733810422 + ], + "scorePercentiles" : { + "0.0" : 16.00356710808966, + "50.0" : 16.19719540512624, + "90.0" : 16.338223872579796, + "95.0" : 16.338223872579796, + "99.0" : 16.338223872579796, + "99.9" : 16.338223872579796, + "99.99" : 16.338223872579796, + "99.999" : 16.338223872579796, + "99.9999" : 16.338223872579796, + "100.0" : 16.338223872579796 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.263091004643808, + 16.332625869940873, + 16.338223872579796 + ], + [ + 16.20694779720255, + 16.19719540512624, + 16.18695691399324 + ], + [ + 16.163126086734835, + 16.00356710808966, + 16.02102449448297 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2652.1374561733314, + "scoreError" : 149.48652867483324, + "scoreConfidence" : [ + 2502.6509274984983, + 2801.6239848481646 + ], + "scorePercentiles" : { + "0.0" : 2572.313124395027, + "50.0" : 2615.4625094289067, + "90.0" : 2776.2508648496128, + "95.0" : 2776.2508648496128, + "99.0" : 2776.2508648496128, + "99.9" : 2776.2508648496128, + "99.99" : 2776.2508648496128, + "99.999" : 2776.2508648496128, + "99.9999" : 2776.2508648496128, + "100.0" : 2776.2508648496128 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2572.327591862452, + 2573.670192282608, + 2572.313124395027 + ], + [ + 2763.3332028422533, + 2776.2508648496128, + 2764.5264619939276 + ], + [ + 2617.16311033585, + 2614.190047569343, + 2615.4625094289067 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69244.53393821999, + "scoreError" : 2238.7153835897343, + "scoreConfidence" : [ + 67005.81855463026, + 71483.24932180972 + ], + "scorePercentiles" : { + "0.0" : 68283.01701912875, + "50.0" : 68404.88908740183, + "90.0" : 71025.63666207869, + "95.0" : 71025.63666207869, + "99.0" : 71025.63666207869, + "99.9" : 71025.63666207869, + "99.99" : 71025.63666207869, + "99.999" : 71025.63666207869, + "99.9999" : 71025.63666207869, + "100.0" : 71025.63666207869 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68283.01701912875, + 68299.08646909134, + 68346.94205609483 + ], + [ + 68410.80512801414, + 68396.52696193331, + 68404.88908740183 + ], + [ + 71020.59502416776, + 71025.63666207869, + 71013.30703606934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 352.0495439106279, + "scoreError" : 5.688087554984918, + "scoreConfidence" : [ + 346.361456355643, + 357.7376314656128 + ], + "scorePercentiles" : { + "0.0" : 347.5038937323927, + "50.0" : 352.6586337417818, + "90.0" : 355.9543623081089, + "95.0" : 355.9543623081089, + "99.0" : 355.9543623081089, + "99.9" : 355.9543623081089, + "99.99" : 355.9543623081089, + "99.999" : 355.9543623081089, + "99.9999" : 355.9543623081089, + "100.0" : 355.9543623081089 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.36606065776704, + 355.9543623081089, + 355.44739687765446 + ], + [ + 353.3104547724866, + 352.6586337417818, + 352.0106775017903 + ], + [ + 348.08547373181875, + 348.1089418718505, + 347.5038937323927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.97197788613875, + "scoreError" : 2.7303080728968436, + "scoreConfidence" : [ + 105.2416698132419, + 110.70228595903559 + ], + "scorePercentiles" : { + "0.0" : 105.82762260516864, + "50.0" : 108.34243905974502, + "90.0" : 109.89787443224124, + "95.0" : 109.89787443224124, + "99.0" : 109.89787443224124, + "99.9" : 109.89787443224124, + "99.99" : 109.89787443224124, + "99.999" : 109.89787443224124, + "99.9999" : 109.89787443224124, + "100.0" : 109.89787443224124 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.24278780414237, + 109.77494855538254, + 109.89787443224124 + ], + [ + 108.25668688929966, + 108.34243905974502, + 108.35487959785104 + ], + [ + 105.99650175505398, + 105.82762260516864, + 106.05406027636413 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06264234939734833, + "scoreError" : 0.001940503038725499, + "scoreConfidence" : [ + 0.06070184635862284, + 0.06458285243607384 + ], + "scorePercentiles" : { + "0.0" : 0.061487347325639305, + "50.0" : 0.06224014973548267, + "90.0" : 0.0643154368235226, + "95.0" : 0.0643154368235226, + "99.0" : 0.0643154368235226, + "99.9" : 0.0643154368235226, + "99.99" : 0.0643154368235226, + "99.999" : 0.0643154368235226, + "99.9999" : 0.0643154368235226, + "100.0" : 0.0643154368235226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06234369102198837, + 0.062147674374957274, + 0.06224014973548267 + ], + [ + 0.06389407033371457, + 0.0643154368235226, + 0.06415574181545232 + ], + [ + 0.06163425568567026, + 0.0615627774597077, + 0.061487347325639305 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.693017818862823E-4, + "scoreError" : 1.4251241076151806E-5, + "scoreConfidence" : [ + 3.550505408101305E-4, + 3.8355302296243406E-4 + ], + "scorePercentiles" : { + "0.0" : 3.581285258168051E-4, + "50.0" : 3.7241348116836534E-4, + "90.0" : 3.774987506762271E-4, + "95.0" : 3.774987506762271E-4, + "99.0" : 3.774987506762271E-4, + "99.9" : 3.774987506762271E-4, + "99.99" : 3.774987506762271E-4, + "99.999" : 3.774987506762271E-4, + "99.9999" : 3.774987506762271E-4, + "100.0" : 3.774987506762271E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7728784066109127E-4, + 3.7661322860138834E-4, + 3.774987506762271E-4 + ], + [ + 3.581285258168051E-4, + 3.5816292636233426E-4, + 3.5870577075242295E-4 + ], + [ + 3.7241348116836534E-4, + 3.7278464199828296E-4, + 3.721208709396231E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014251813348747193, + "scoreError" : 2.4133152936300968E-4, + "scoreConfidence" : [ + 0.014010481819384184, + 0.014493144878110202 + ], + "scorePercentiles" : { + "0.0" : 0.014109882265792994, + "50.0" : 0.014200063186653244, + "90.0" : 0.01444335340454787, + "95.0" : 0.01444335340454787, + "99.0" : 0.01444335340454787, + "99.9" : 0.01444335340454787, + "99.99" : 0.01444335340454787, + "99.999" : 0.01444335340454787, + "99.9999" : 0.01444335340454787, + "100.0" : 0.01444335340454787 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014433382154187222, + 0.014433030841594948, + 0.01444335340454787 + ], + [ + 0.014115376225199589, + 0.014109882265792994, + 0.014123692329094866 + ], + [ + 0.014207825716136768, + 0.014199714015517262, + 0.014200063186653244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9922482637732131, + "scoreError" : 0.04060752324069984, + "scoreConfidence" : [ + 0.9516407405325132, + 1.032855787013913 + ], + "scorePercentiles" : { + "0.0" : 0.9736791512024146, + "50.0" : 0.9777998899100508, + "90.0" : 1.0262624400205234, + "95.0" : 1.0262624400205234, + "99.0" : 1.0262624400205234, + "99.9" : 1.0262624400205234, + "99.99" : 1.0262624400205234, + "99.999" : 1.0262624400205234, + "99.9999" : 1.0262624400205234, + "100.0" : 1.0262624400205234 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0262624400205234, + 1.0246107202868853, + 1.0222336996831238 + ], + [ + 0.976044982920164, + 0.9750917759360375, + 0.9736791512024146 + ], + [ + 0.9752420151160522, + 0.9777998899100508, + 0.9792696988836663 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013020478890194788, + "scoreError" : 7.333534194251844E-4, + "scoreConfidence" : [ + 0.012287125470769603, + 0.013753832309619973 + ], + "scorePercentiles" : { + "0.0" : 0.012776612812060816, + "50.0" : 0.013020479729130969, + "90.0" : 0.013262022369869371, + "95.0" : 0.013262022369869371, + "99.0" : 0.013262022369869371, + "99.9" : 0.013262022369869371, + "99.99" : 0.013262022369869371, + "99.999" : 0.013262022369869371, + "99.9999" : 0.013262022369869371, + "100.0" : 0.013262022369869371 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013262022369869371, + 0.013255514599294823, + 0.013260036602118372 + ], + [ + 0.012785444858967114, + 0.012776612812060816, + 0.012783242098858227 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6823549127759994, + "scoreError" : 0.12037344013443266, + "scoreConfidence" : [ + 3.5619814726415666, + 3.802728352910432 + ], + "scorePercentiles" : { + "0.0" : 3.6239961630434783, + "50.0" : 3.674330386428005, + "90.0" : 3.7354224331590737, + "95.0" : 3.7354224331590737, + "99.0" : 3.7354224331590737, + "99.9" : 3.7354224331590737, + "99.99" : 3.7354224331590737, + "99.999" : 3.7354224331590737, + "99.9999" : 3.7354224331590737, + "100.0" : 3.7354224331590737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6239961630434783, + 3.6654824945054947, + 3.6578229041697146 + ], + [ + 3.6831782783505154, + 3.7354224331590737, + 3.72822720342772 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.830217610770232, + "scoreError" : 0.02941764690765332, + "scoreConfidence" : [ + 2.8007999638625787, + 2.859635257677885 + ], + "scorePercentiles" : { + "0.0" : 2.8059439887766553, + "50.0" : 2.8304837555178266, + "90.0" : 2.8638871964490265, + "95.0" : 2.8638871964490265, + "99.0" : 2.8638871964490265, + "99.9" : 2.8638871964490265, + "99.99" : 2.8638871964490265, + "99.999" : 2.8638871964490265, + "99.9999" : 2.8638871964490265, + "100.0" : 2.8638871964490265 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8059439887766553, + 2.80763629365525, + 2.8274634690415605 + ], + [ + 2.8266450850763145, + 2.8334196541076486, + 2.8638871964490265 + ], + [ + 2.8327837142452563, + 2.8304837555178266, + 2.8436953400625535 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1753886762344773, + "scoreError" : 0.0030167678177013334, + "scoreConfidence" : [ + 0.17237190841677597, + 0.17840544405217862 + ], + "scorePercentiles" : { + "0.0" : 0.1728514556469734, + "50.0" : 0.17628545656465944, + "90.0" : 0.17697612007574418, + "95.0" : 0.17697612007574418, + "99.0" : 0.17697612007574418, + "99.9" : 0.17697612007574418, + "99.99" : 0.17697612007574418, + "99.999" : 0.17697612007574418, + "99.9999" : 0.17697612007574418, + "100.0" : 0.17697612007574418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17323752276270657, + 0.17297506889453929, + 0.1728514556469734 + ], + [ + 0.17697612007574418, + 0.17628545656465944, + 0.1761608011520778 + ], + [ + 0.17683352849640147, + 0.17655357137056196, + 0.1766245611466318 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3252011556337465, + "scoreError" : 0.011613804722758634, + "scoreConfidence" : [ + 0.3135873509109879, + 0.33681496035650516 + ], + "scorePercentiles" : { + "0.0" : 0.31793855517756653, + "50.0" : 0.32358584517068434, + "90.0" : 0.3339527306061112, + "95.0" : 0.3339527306061112, + "99.0" : 0.3339527306061112, + "99.9" : 0.3339527306061112, + "99.99" : 0.3339527306061112, + "99.999" : 0.3339527306061112, + "99.9999" : 0.3339527306061112, + "100.0" : 0.3339527306061112 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32359638985244626, + 0.32337204507679873, + 0.32358584517068434 + ], + [ + 0.333943945167969, + 0.33376095434216674, + 0.3339527306061112 + ], + [ + 0.3185725668822274, + 0.31793855517756653, + 0.318087368427749 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16379379419542822, + "scoreError" : 0.011142070500678086, + "scoreConfidence" : [ + 0.15265172369475014, + 0.1749358646961063 + ], + "scorePercentiles" : { + "0.0" : 0.15917055110064143, + "50.0" : 0.15955122844105493, + "90.0" : 0.1727546144039249, + "95.0" : 0.1727546144039249, + "99.0" : 0.1727546144039249, + "99.9" : 0.1727546144039249, + "99.99" : 0.1727546144039249, + "99.999" : 0.1727546144039249, + "99.9999" : 0.1727546144039249, + "100.0" : 0.1727546144039249 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15958058684134938, + 0.15917055110064143, + 0.15917860239717305 + ], + [ + 0.1727546144039249, + 0.17259759036227756, + 0.17254379072415757 + ], + [ + 0.15955122844105493, + 0.15929815637892858, + 0.15946902710934635 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38991118899124244, + "scoreError" : 0.01124237080592444, + "scoreConfidence" : [ + 0.378668818185318, + 0.4011535597971669 + ], + "scorePercentiles" : { + "0.0" : 0.38210326390799326, + "50.0" : 0.39018023211080766, + "90.0" : 0.39966706621907844, + "95.0" : 0.39966706621907844, + "99.0" : 0.39966706621907844, + "99.9" : 0.39966706621907844, + "99.99" : 0.39966706621907844, + "99.999" : 0.39966706621907844, + "99.9999" : 0.39966706621907844, + "100.0" : 0.39966706621907844 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39966706621907844, + 0.39717512927439536, + 0.39558205047468353 + ], + [ + 0.38210326390799326, + 0.38233665801345773, + 0.38222272790857664 + ], + [ + 0.3904339530316636, + 0.39018023211080766, + 0.3894996199805258 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15684870185149255, + "scoreError" : 0.0037258751961398227, + "scoreConfidence" : [ + 0.15312282665535273, + 0.16057457704763237 + ], + "scorePercentiles" : { + "0.0" : 0.15480540073375748, + "50.0" : 0.1556524699052096, + "90.0" : 0.15974400097442532, + "95.0" : 0.15974400097442532, + "99.0" : 0.15974400097442532, + "99.9" : 0.15974400097442532, + "99.99" : 0.15974400097442532, + "99.999" : 0.15974400097442532, + "99.9999" : 0.15974400097442532, + "100.0" : 0.15974400097442532 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1597275829925888, + 0.15974400097442532, + 0.159548770716998 + ], + [ + 0.15493251851392806, + 0.15480540073375748, + 0.1548956253620607 + ], + [ + 0.15698526397915294, + 0.1556524699052096, + 0.15534668348531216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04782230709382967, + "scoreError" : 0.0017082561348700006, + "scoreConfidence" : [ + 0.046114050958959665, + 0.04953056322869967 + ], + "scorePercentiles" : { + "0.0" : 0.04707639163183068, + "50.0" : 0.04721573866013211, + "90.0" : 0.04920717646943044, + "95.0" : 0.04920717646943044, + "99.0" : 0.04920717646943044, + "99.9" : 0.04920717646943044, + "99.99" : 0.04920717646943044, + "99.999" : 0.04920717646943044, + "99.9999" : 0.04920717646943044, + "100.0" : 0.04920717646943044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04721573866013211, + 0.04707639163183068, + 0.047087921274932665 + ], + [ + 0.04726264621172378, + 0.047139337894786464, + 0.047093677427406215 + ], + [ + 0.0491894079390064, + 0.0491284663352182, + 0.04920717646943044 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9281569.0026659, + "scoreError" : 115612.17714641236, + "scoreConfidence" : [ + 9165956.825519487, + 9397181.179812312 + ], + "scorePercentiles" : { + "0.0" : 9196106.576286765, + "50.0" : 9263902.401851851, + "90.0" : 9365629.605805244, + "95.0" : 9365629.605805244, + "99.0" : 9365629.605805244, + "99.9" : 9365629.605805244, + "99.99" : 9365629.605805244, + "99.999" : 9365629.605805244, + "99.9999" : 9365629.605805244, + "100.0" : 9365629.605805244 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9310784.226046512, + 9263902.401851851, + 9258585.227567067 + ], + [ + 9361236.768942937, + 9365629.605805244, + 9355414.256314313 + ], + [ + 9218562.90046083, + 9203899.060717572, + 9196106.576286765 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 4e33c3c7b7ce5007aefcfed01b83df5bd8635f85 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 02:52:31 +0000 Subject: [PATCH 312/345] Add performance results for commit e98ca21274456df314a2574b48271e4f236d2970 --- ...4456df314a2574b48271e4f236d2970-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json diff --git a/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..fe3a7e2f75 --- /dev/null +++ b/performance-results/2025-04-03T02:52:17Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.403194491531668, + "scoreError" : 0.0054344602373101285, + "scoreConfidence" : [ + 3.3977600312943577, + 3.408628951768978 + ], + "scorePercentiles" : { + "0.0" : 3.40204038330392, + "50.0" : 3.403455956648364, + "90.0" : 3.4038256695260225, + "95.0" : 3.4038256695260225, + "99.0" : 3.4038256695260225, + "99.9" : 3.4038256695260225, + "99.99" : 3.4038256695260225, + "99.999" : 3.4038256695260225, + "99.9999" : 3.4038256695260225, + "100.0" : 3.4038256695260225 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4038256695260225, + 3.403812822654316 + ], + [ + 3.403099090642413, + 3.40204038330392 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7219424259297373, + "scoreError" : 0.013541201269863041, + "scoreConfidence" : [ + 1.7084012246598743, + 1.7354836271996004 + ], + "scorePercentiles" : { + "0.0" : 1.7197695025152795, + "50.0" : 1.7218632263632574, + "90.0" : 1.7242737484771553, + "95.0" : 1.7242737484771553, + "99.0" : 1.7242737484771553, + "99.9" : 1.7242737484771553, + "99.99" : 1.7242737484771553, + "99.999" : 1.7242737484771553, + "99.9999" : 1.7242737484771553, + "100.0" : 1.7242737484771553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7197695025152795, + 1.7242737484771553 + ], + [ + 1.7206375929853883, + 1.7230888597411262 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8640697627505329, + "scoreError" : 0.014770242609452224, + "scoreConfidence" : [ + 0.8492995201410807, + 0.8788400053599852 + ], + "scorePercentiles" : { + "0.0" : 0.8624312182679136, + "50.0" : 0.8632019184962488, + "90.0" : 0.8674439957417209, + "95.0" : 0.8674439957417209, + "99.0" : 0.8674439957417209, + "99.9" : 0.8674439957417209, + "99.99" : 0.8674439957417209, + "99.999" : 0.8674439957417209, + "99.9999" : 0.8674439957417209, + "100.0" : 0.8674439957417209 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8624312182679136, + 0.8634219709025568 + ], + [ + 0.8629818660899409, + 0.8674439957417209 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.9436319756992, + "scoreError" : 0.09563035262704961, + "scoreConfidence" : [ + 15.84800162307215, + 16.03926232832625 + ], + "scorePercentiles" : { + "0.0" : 15.84638395040122, + "50.0" : 15.959992832909032, + "90.0" : 16.02254842355818, + "95.0" : 16.02254842355818, + "99.0" : 16.02254842355818, + "99.9" : 16.02254842355818, + "99.99" : 16.02254842355818, + "99.999" : 16.02254842355818, + "99.9999" : 16.02254842355818, + "100.0" : 16.02254842355818 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.02254842355818, + 15.987810841814806, + 15.991277618896921 + ], + [ + 15.912647622226181, + 15.879334862745797, + 15.84638395040122 + ], + [ + 15.928670625550126, + 15.964021003190537, + 15.959992832909032 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2640.280594719942, + "scoreError" : 163.1601437194584, + "scoreConfidence" : [ + 2477.1204510004836, + 2803.440738439401 + ], + "scorePercentiles" : { + "0.0" : 2532.8517014134386, + "50.0" : 2628.7413437275936, + "90.0" : 2765.5166739080864, + "95.0" : 2765.5166739080864, + "99.0" : 2765.5166739080864, + "99.9" : 2765.5166739080864, + "99.99" : 2765.5166739080864, + "99.999" : 2765.5166739080864, + "99.9999" : 2765.5166739080864, + "100.0" : 2765.5166739080864 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2628.7413437275936, + 2624.102851090245, + 2631.2151456928896 + ], + [ + 2747.292980003622, + 2760.780272754581, + 2765.5166739080864 + ], + [ + 2536.3386188386053, + 2532.8517014134386, + 2535.6857650504176 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70561.7075536086, + "scoreError" : 675.1940634943425, + "scoreConfidence" : [ + 69886.51349011426, + 71236.90161710295 + ], + "scorePercentiles" : { + "0.0" : 70054.20588415946, + "50.0" : 70598.37075600476, + "90.0" : 71032.91635748415, + "95.0" : 71032.91635748415, + "99.0" : 71032.91635748415, + "99.9" : 71032.91635748415, + "99.99" : 71032.91635748415, + "99.999" : 71032.91635748415, + "99.9999" : 71032.91635748415, + "100.0" : 71032.91635748415 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70634.05122592344, + 70598.37075600476, + 70573.16509122771 + ], + [ + 70977.18073904366, + 71032.91635748415, + 70999.40010834833 + ], + [ + 70063.63182051902, + 70054.20588415946, + 70122.4459997669 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 337.49420084887447, + "scoreError" : 9.469080745548057, + "scoreConfidence" : [ + 328.0251201033264, + 346.96328159442254 + ], + "scorePercentiles" : { + "0.0" : 330.2899132159104, + "50.0" : 339.15051295464735, + "90.0" : 344.43838779117556, + "95.0" : 344.43838779117556, + "99.0" : 344.43838779117556, + "99.9" : 344.43838779117556, + "99.99" : 344.43838779117556, + "99.999" : 344.43838779117556, + "99.9999" : 344.43838779117556, + "100.0" : 344.43838779117556 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 330.386498161057, + 330.47431679190134, + 330.2899132159104 + ], + [ + 341.3405225744992, + 342.95327223940876, + 344.43838779117556 + ], + [ + 338.54115541959317, + 339.15051295464735, + 339.8732284916776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.33461889685323, + "scoreError" : 5.416508050150125, + "scoreConfidence" : [ + 99.9181108467031, + 110.75112694700336 + ], + "scorePercentiles" : { + "0.0" : 100.52179981974373, + "50.0" : 107.24703425038527, + "90.0" : 107.99725413741437, + "95.0" : 107.99725413741437, + "99.0" : 107.99725413741437, + "99.9" : 107.99725413741437, + "99.99" : 107.99725413741437, + "99.999" : 107.99725413741437, + "99.9999" : 107.99725413741437, + "100.0" : 107.99725413741437 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.86967319741898, + 107.24703425038527, + 107.35165090978742 + ], + [ + 107.99725413741437, + 107.84506179509498, + 107.47085951287897 + ], + [ + 101.69064834493503, + 100.52179981974373, + 101.01758810402046 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06268900704606982, + "scoreError" : 0.001163791376921044, + "scoreConfidence" : [ + 0.06152521566914877, + 0.06385279842299087 + ], + "scorePercentiles" : { + "0.0" : 0.06172657346287506, + "50.0" : 0.06306495052626931, + "90.0" : 0.06333138844979798, + "95.0" : 0.06333138844979798, + "99.0" : 0.06333138844979798, + "99.9" : 0.06333138844979798, + "99.99" : 0.06333138844979798, + "99.999" : 0.06333138844979798, + "99.9999" : 0.06333138844979798, + "100.0" : 0.06333138844979798 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06176310465626177, + 0.06172657346287506, + 0.06184468065776942 + ], + [ + 0.06320055288221502, + 0.06314213385319653, + 0.06292492596997269 + ], + [ + 0.06320275295627058, + 0.06306495052626931, + 0.06333138844979798 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7481237278850056E-4, + "scoreError" : 1.1980570626435157E-5, + "scoreConfidence" : [ + 3.6283180216206543E-4, + 3.867929434149357E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6409876203927915E-4, + "50.0" : 3.7933416066346235E-4, + "90.0" : 3.8019052370467216E-4, + "95.0" : 3.8019052370467216E-4, + "99.0" : 3.8019052370467216E-4, + "99.9" : 3.8019052370467216E-4, + "99.99" : 3.8019052370467216E-4, + "99.999" : 3.8019052370467216E-4, + "99.9999" : 3.8019052370467216E-4, + "100.0" : 3.8019052370467216E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6570256780549384E-4, + 3.6409876203927915E-4, + 3.663767519349152E-4 + ], + [ + 3.8019052370467216E-4, + 3.8017008019173117E-4, + 3.7933416066346235E-4 + ], + [ + 3.797582444148515E-4, + 3.7767420023679903E-4, + 3.800060641053006E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014098005962349182, + "scoreError" : 2.050573003153203E-5, + "scoreConfidence" : [ + 0.01407750023231765, + 0.014118511692380714 + ], + "scorePercentiles" : { + "0.0" : 0.014083777860870986, + "50.0" : 0.014098247163116069, + "90.0" : 0.01412190544660648, + "95.0" : 0.01412190544660648, + "99.0" : 0.01412190544660648, + "99.9" : 0.01412190544660648, + "99.99" : 0.01412190544660648, + "99.999" : 0.01412190544660648, + "99.9999" : 0.01412190544660648, + "100.0" : 0.01412190544660648 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014083777860870986, + 0.014092198276262962, + 0.014087036303267731 + ], + [ + 0.01412190544660648, + 0.014103096767051113, + 0.014105937445252077 + ], + [ + 0.014086103755592116, + 0.014098247163116069, + 0.014103750643123096 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9900720714208604, + "scoreError" : 0.032398284485443664, + "scoreConfidence" : [ + 0.9576737869354167, + 1.022470355906304 + ], + "scorePercentiles" : { + "0.0" : 0.9747853510088703, + "50.0" : 0.9790084789035732, + "90.0" : 1.0185325541297485, + "95.0" : 1.0185325541297485, + "99.0" : 1.0185325541297485, + "99.9" : 1.0185325541297485, + "99.99" : 1.0185325541297485, + "99.999" : 1.0185325541297485, + "99.9999" : 1.0185325541297485, + "100.0" : 1.0185325541297485 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0146146674444556, + 1.013647100851409, + 1.0185325541297485 + ], + [ + 0.9802752494608901, + 0.9790084789035732, + 0.9757974534100888 + ], + [ + 0.9747853510088703, + 0.978946785238841, + 0.9750410023398655 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013014100910331693, + "scoreError" : 2.3206391521088976E-4, + "scoreConfidence" : [ + 0.012782036995120804, + 0.013246164825542582 + ], + "scorePercentiles" : { + "0.0" : 0.012868733088318561, + "50.0" : 0.013027448912159054, + "90.0" : 0.013099782038014646, + "95.0" : 0.013099782038014646, + "99.0" : 0.013099782038014646, + "99.9" : 0.013099782038014646, + "99.99" : 0.013099782038014646, + "99.999" : 0.013099782038014646, + "99.9999" : 0.013099782038014646, + "100.0" : 0.013099782038014646 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012868733088318561, + 0.013014096830110695, + 0.013040800994207413 + ], + [ + 0.012983094574488803, + 0.013078097936850035, + 0.013099782038014646 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.803681758942895, + "scoreError" : 0.058068017082038216, + "scoreConfidence" : [ + 3.745613741860857, + 3.861749776024933 + ], + "scorePercentiles" : { + "0.0" : 3.7688745960813868, + "50.0" : 3.8028532290171775, + "90.0" : 3.828712826952527, + "95.0" : 3.828712826952527, + "99.0" : 3.828712826952527, + "99.9" : 3.828712826952527, + "99.99" : 3.828712826952527, + "99.999" : 3.828712826952527, + "99.9999" : 3.828712826952527, + "100.0" : 3.828712826952527 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7688745960813868, + 3.7987889476082004, + 3.8001995714285712 + ], + [ + 3.8055068866057837, + 3.8200077249809015, + 3.828712826952527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.922983171605901, + "scoreError" : 0.06878756494659564, + "scoreConfidence" : [ + 2.8541956066593053, + 2.9917707365524966 + ], + "scorePercentiles" : { + "0.0" : 2.882975975208994, + "50.0" : 2.899830810089881, + "90.0" : 2.991555425067305, + "95.0" : 2.991555425067305, + "99.0" : 2.991555425067305, + "99.9" : 2.991555425067305, + "99.99" : 2.991555425067305, + "99.999" : 2.991555425067305, + "99.9999" : 2.991555425067305, + "100.0" : 2.991555425067305 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8932728536303154, + 2.882975975208994, + 2.911509500727802 + ], + [ + 2.9790622302651175, + 2.991555425067305, + 2.955098183751846 + ], + [ + 2.899830810089881, + 2.8976569843568947, + 2.895886581354951 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1752739306467576, + "scoreError" : 0.0067926352926449335, + "scoreConfidence" : [ + 0.16848129535411266, + 0.1820665659394025 + ], + "scorePercentiles" : { + "0.0" : 0.16931798284853206, + "50.0" : 0.17703718935330254, + "90.0" : 0.179263765438738, + "95.0" : 0.179263765438738, + "99.0" : 0.179263765438738, + "99.9" : 0.179263765438738, + "99.99" : 0.179263765438738, + "99.999" : 0.179263765438738, + "99.9999" : 0.179263765438738, + "100.0" : 0.179263765438738 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17127871834001301, + 0.16931798284853206, + 0.16951058001525554 + ], + [ + 0.179263765438738, + 0.17873609151027703, + 0.17824298643590475 + ], + [ + 0.17700606642948175, + 0.17703718935330254, + 0.17707199544931385 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3311272051006344, + "scoreError" : 0.02574131802826179, + "scoreConfidence" : [ + 0.30538588707237263, + 0.3568685231288962 + ], + "scorePercentiles" : { + "0.0" : 0.32002414304457744, + "50.0" : 0.3214951376583296, + "90.0" : 0.35274181238095237, + "95.0" : 0.35274181238095237, + "99.0" : 0.35274181238095237, + "99.9" : 0.35274181238095237, + "99.99" : 0.35274181238095237, + "99.999" : 0.35274181238095237, + "99.9999" : 0.35274181238095237, + "100.0" : 0.35274181238095237 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3225040451818885, + 0.3214951376583296, + 0.32122822893578745 + ], + [ + 0.32008386182504883, + 0.3202712323853446, + 0.32002414304457744 + ], + [ + 0.35274181238095237, + 0.35085857753841837, + 0.35093780695536214 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1573598302291365, + "scoreError" : 0.0033830824565148298, + "scoreConfidence" : [ + 0.15397674777262166, + 0.16074291268565133 + ], + "scorePercentiles" : { + "0.0" : 0.15461272411447302, + "50.0" : 0.15828907844627, + "90.0" : 0.1594421173947704, + "95.0" : 0.1594421173947704, + "99.0" : 0.1594421173947704, + "99.9" : 0.1594421173947704, + "99.99" : 0.1594421173947704, + "99.999" : 0.1594421173947704, + "99.9999" : 0.1594421173947704, + "100.0" : 0.1594421173947704 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15461272411447302, + 0.15493705184060486, + 0.15469718323432957 + ], + [ + 0.1586219272265842, + 0.1594421173947704, + 0.15929977722377978 + ], + [ + 0.158008010443988, + 0.15828907844627, + 0.15833060213742875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3929055482587191, + "scoreError" : 0.008874881668847938, + "scoreConfidence" : [ + 0.3840306665898712, + 0.401780429927567 + ], + "scorePercentiles" : { + "0.0" : 0.3861855186329407, + "50.0" : 0.3916299738789896, + "90.0" : 0.39987236290935263, + "95.0" : 0.39987236290935263, + "99.0" : 0.39987236290935263, + "99.9" : 0.39987236290935263, + "99.99" : 0.39987236290935263, + "99.999" : 0.39987236290935263, + "99.9999" : 0.39987236290935263, + "100.0" : 0.39987236290935263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39418789096929324, + 0.3916299738789896, + 0.391009796019706 + ], + [ + 0.3995561204203124, + 0.39987236290935263, + 0.39806413752885916 + ], + [ + 0.38798272721629484, + 0.3876614067527232, + 0.3861855186329407 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15638411625309134, + "scoreError" : 0.0038605736119067847, + "scoreConfidence" : [ + 0.15252354264118456, + 0.16024468986499812 + ], + "scorePercentiles" : { + "0.0" : 0.15314811026371405, + "50.0" : 0.15670415334712298, + "90.0" : 0.159883718659568, + "95.0" : 0.159883718659568, + "99.0" : 0.159883718659568, + "99.9" : 0.159883718659568, + "99.99" : 0.159883718659568, + "99.999" : 0.159883718659568, + "99.9999" : 0.159883718659568, + "100.0" : 0.159883718659568 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1566501469187631, + 0.15670415334712298, + 0.1567198383613597 + ], + [ + 0.1547686963506361, + 0.15314811026371405, + 0.15320902544735873 + ], + [ + 0.159883718659568, + 0.15830709884438815, + 0.15806625808491132 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04731102617255678, + "scoreError" : 5.494062501007604E-4, + "scoreConfidence" : [ + 0.04676161992245602, + 0.04786043242265754 + ], + "scorePercentiles" : { + "0.0" : 0.04687650850095393, + "50.0" : 0.04743667847350695, + "90.0" : 0.047676395332538736, + "95.0" : 0.047676395332538736, + "99.0" : 0.047676395332538736, + "99.9" : 0.047676395332538736, + "99.99" : 0.047676395332538736, + "99.999" : 0.047676395332538736, + "99.9999" : 0.047676395332538736, + "100.0" : 0.047676395332538736 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04749636832506115, + 0.04743667847350695, + 0.04734048231150498 + ], + [ + 0.04691541189661886, + 0.04689057975486013, + 0.04687650850095393 + ], + [ + 0.047676395332538736, + 0.047574515204567076, + 0.04759229575339923 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9441197.85305533, + "scoreError" : 304521.42768585624, + "scoreConfidence" : [ + 9136676.425369473, + 9745719.280741187 + ], + "scorePercentiles" : { + "0.0" : 9249209.369685767, + "50.0" : 9358704.228250701, + "90.0" : 9681377.27589545, + "95.0" : 9681377.27589545, + "99.0" : 9681377.27589545, + "99.9" : 9681377.27589545, + "99.99" : 9681377.27589545, + "99.999" : 9681377.27589545, + "99.9999" : 9681377.27589545, + "100.0" : 9681377.27589545 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9409813.65098777, + 9358704.228250701, + 9353099.48317757 + ], + [ + 9675122.80754352, + 9664841.801932367, + 9681377.27589545 + ], + [ + 9318771.304469274, + 9259840.755555555, + 9249209.369685767 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 286367c1eaa11898266619a89f77320aa8ec3c84 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 02:52:47 +0000 Subject: [PATCH 313/345] Add performance results for commit e98ca21274456df314a2574b48271e4f236d2970 --- ...4456df314a2574b48271e4f236d2970-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json diff --git a/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json b/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json new file mode 100644 index 0000000000..43c4405b48 --- /dev/null +++ b/performance-results/2025-04-03T02:52:33Z-e98ca21274456df314a2574b48271e4f236d2970-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4156356646292396, + "scoreError" : 0.013598054926190144, + "scoreConfidence" : [ + 3.4020376097030494, + 3.42923371955543 + ], + "scorePercentiles" : { + "0.0" : 3.4130888415653047, + "50.0" : 3.415786695895449, + "90.0" : 3.4178804251607553, + "95.0" : 3.4178804251607553, + "99.0" : 3.4178804251607553, + "99.9" : 3.4178804251607553, + "99.99" : 3.4178804251607553, + "99.999" : 3.4178804251607553, + "99.9999" : 3.4178804251607553, + "100.0" : 3.4178804251607553 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4148610786856364, + 3.4178804251607553 + ], + [ + 3.4130888415653047, + 3.4167123131052617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7253259788610695, + "scoreError" : 0.008555086625644845, + "scoreConfidence" : [ + 1.7167708922354248, + 1.7338810654867143 + ], + "scorePercentiles" : { + "0.0" : 1.7241059127032126, + "50.0" : 1.7252574282825233, + "90.0" : 1.726683146176019, + "95.0" : 1.726683146176019, + "99.0" : 1.726683146176019, + "99.9" : 1.726683146176019, + "99.99" : 1.726683146176019, + "99.999" : 1.726683146176019, + "99.9999" : 1.726683146176019, + "100.0" : 1.726683146176019 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7241059127032126, + 1.726683146176019 + ], + [ + 1.7242780552173471, + 1.7262368013476994 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8680284206920243, + "scoreError" : 0.0038235580345896383, + "scoreConfidence" : [ + 0.8642048626574347, + 0.871851978726614 + ], + "scorePercentiles" : { + "0.0" : 0.8672392519716291, + "50.0" : 0.8681156014545766, + "90.0" : 0.8686432278873151, + "95.0" : 0.8686432278873151, + "99.0" : 0.8686432278873151, + "99.9" : 0.8686432278873151, + "99.99" : 0.8686432278873151, + "99.999" : 0.8686432278873151, + "99.9999" : 0.8686432278873151, + "100.0" : 0.8686432278873151 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8682466548186853, + 0.8679845480904678 + ], + [ + 0.8672392519716291, + 0.8686432278873151 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.266398884740102, + "scoreError" : 0.12089071736767489, + "scoreConfidence" : [ + 16.145508167372427, + 16.387289602107778 + ], + "scorePercentiles" : { + "0.0" : 16.16215887190314, + "50.0" : 16.2909633020778, + "90.0" : 16.35367633567486, + "95.0" : 16.35367633567486, + "99.0" : 16.35367633567486, + "99.9" : 16.35367633567486, + "99.99" : 16.35367633567486, + "99.999" : 16.35367633567486, + "99.9999" : 16.35367633567486, + "100.0" : 16.35367633567486 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.30206765152038, + 16.2909633020778, + 16.35367633567486 + ], + [ + 16.286595407788486, + 16.32141250450957, + 16.319740312132282 + ], + [ + 16.181694193122404, + 16.16215887190314, + 16.17928138393201 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2708.4379672756168, + "scoreError" : 52.77435647527872, + "scoreConfidence" : [ + 2655.663610800338, + 2761.2123237508954 + ], + "scorePercentiles" : { + "0.0" : 2678.8808548562843, + "50.0" : 2690.720282550591, + "90.0" : 2759.421890618881, + "95.0" : 2759.421890618881, + "99.0" : 2759.421890618881, + "99.9" : 2759.421890618881, + "99.99" : 2759.421890618881, + "99.999" : 2759.421890618881, + "99.9999" : 2759.421890618881, + "100.0" : 2759.421890618881 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2678.8808548562843, + 2680.4724669738675, + 2683.5451766372953 + ], + [ + 2733.344157571987, + 2759.421890618881, + 2750.126719125809 + ], + [ + 2709.4928928539957, + 2690.720282550591, + 2689.9372642918393 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 71058.98757792657, + "scoreError" : 822.5121592927409, + "scoreConfidence" : [ + 70236.47541863383, + 71881.49973721932 + ], + "scorePercentiles" : { + "0.0" : 70334.4708128567, + "50.0" : 71230.61338609025, + "90.0" : 71513.68980710543, + "95.0" : 71513.68980710543, + "99.0" : 71513.68980710543, + "99.9" : 71513.68980710543, + "99.99" : 71513.68980710543, + "99.999" : 71513.68980710543, + "99.9999" : 71513.68980710543, + "100.0" : 71513.68980710543 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71368.81270009922, + 71230.61338609025, + 71190.58903098464 + ], + [ + 70334.4708128567, + 70389.2239357189, + 70557.90033738017 + ], + [ + 71513.68980710543, + 71475.07240288406, + 71470.51578821983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.8880754496758, + "scoreError" : 2.8872515097664553, + "scoreConfidence" : [ + 351.00082393990937, + 356.7753269594422 + ], + "scorePercentiles" : { + "0.0" : 350.7947815417503, + "50.0" : 354.64335969623687, + "90.0" : 355.8222124963307, + "95.0" : 355.8222124963307, + "99.0" : 355.8222124963307, + "99.9" : 355.8222124963307, + "99.99" : 355.8222124963307, + "99.999" : 355.8222124963307, + "99.9999" : 355.8222124963307, + "100.0" : 355.8222124963307 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.56970556775656, + 355.8222124963307, + 354.9352269121157 + ], + [ + 354.6486608825263, + 353.1706551915284, + 354.64335969623687 + ], + [ + 350.7947815417503, + 353.6826154737699, + 351.7254612850681 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.725544877288, + "scoreError" : 1.8828817446497361, + "scoreConfidence" : [ + 105.84266313263826, + 109.60842662193774 + ], + "scorePercentiles" : { + "0.0" : 106.20111805060321, + "50.0" : 108.05817565088162, + "90.0" : 108.91316264233733, + "95.0" : 108.91316264233733, + "99.0" : 108.91316264233733, + "99.9" : 108.91316264233733, + "99.99" : 108.91316264233733, + "99.999" : 108.91316264233733, + "99.9999" : 108.91316264233733, + "100.0" : 108.91316264233733 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.08754446696082, + 107.92893729958848, + 108.05817565088162 + ], + [ + 108.91316264233733, + 108.80524904880716, + 108.7959124505325 + ], + [ + 106.51012019955222, + 106.22968408632865, + 106.20111805060321 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06139367548232111, + "scoreError" : 3.540999759717375E-4, + "scoreConfidence" : [ + 0.06103957550634937, + 0.061747775458292846 + ], + "scorePercentiles" : { + "0.0" : 0.06110012819854828, + "50.0" : 0.061308202516047156, + "90.0" : 0.061741893811702385, + "95.0" : 0.061741893811702385, + "99.0" : 0.061741893811702385, + "99.9" : 0.061741893811702385, + "99.99" : 0.061741893811702385, + "99.999" : 0.061741893811702385, + "99.9999" : 0.061741893811702385, + "100.0" : 0.061741893811702385 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061263466611938835, + 0.06129953820738525, + 0.06110012819854828 + ], + [ + 0.061741893811702385, + 0.06153386918050137, + 0.06166293546437777 + ], + [ + 0.061243678443693196, + 0.06138936690669564, + 0.061308202516047156 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.694689698392999E-4, + "scoreError" : 9.255300635961062E-6, + "scoreConfidence" : [ + 3.602136692033388E-4, + 3.7872427047526094E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6217798291792163E-4, + "50.0" : 3.7218480085890395E-4, + "90.0" : 3.7506734062791447E-4, + "95.0" : 3.7506734062791447E-4, + "99.0" : 3.7506734062791447E-4, + "99.9" : 3.7506734062791447E-4, + "99.99" : 3.7506734062791447E-4, + "99.999" : 3.7506734062791447E-4, + "99.9999" : 3.7506734062791447E-4, + "100.0" : 3.7506734062791447E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.622063955463637E-4, + 3.6227118109386175E-4, + 3.6217798291792163E-4 + ], + [ + 3.7320771985383417E-4, + 3.7278784840373975E-4, + 3.7506734062791447E-4 + ], + [ + 3.7218480085890395E-4, + 3.719860773868182E-4, + 3.733313818643414E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014185911212594595, + "scoreError" : 3.2603556268247393E-4, + "scoreConfidence" : [ + 0.013859875649912121, + 0.01451194677527707 + ], + "scorePercentiles" : { + "0.0" : 0.014013460115357451, + "50.0" : 0.014108437662597841, + "90.0" : 0.014442271787354495, + "95.0" : 0.014442271787354495, + "99.0" : 0.014442271787354495, + "99.9" : 0.014442271787354495, + "99.99" : 0.014442271787354495, + "99.999" : 0.014442271787354495, + "99.9999" : 0.014442271787354495, + "100.0" : 0.014442271787354495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014110861143644116, + 0.014108437662597841, + 0.014073766856660334 + ], + [ + 0.014013460115357451, + 0.014017406076755624, + 0.014028585135753145 + ], + [ + 0.014441690347867277, + 0.014442271787354495, + 0.014436721787361084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.000218969280612, + "scoreError" : 0.028304821762359534, + "scoreConfidence" : [ + 0.9719141475182526, + 1.0285237910429716 + ], + "scorePercentiles" : { + "0.0" : 0.971517003011463, + "50.0" : 1.006556415601409, + "90.0" : 1.0175622131664632, + "95.0" : 1.0175622131664632, + "99.0" : 1.0175622131664632, + "99.9" : 1.0175622131664632, + "99.99" : 1.0175622131664632, + "99.999" : 1.0175622131664632, + "99.9999" : 1.0175622131664632, + "100.0" : 1.0175622131664632 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9864229748471098, + 0.9793540111644305, + 0.971517003011463 + ], + [ + 1.0175622131664632, + 1.0142364593306288, + 1.0141052803690935 + ], + [ + 1.0029004894705174, + 1.006556415601409, + 1.0093158765643924 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013081022622499473, + "scoreError" : 3.378864151227627E-4, + "scoreConfidence" : [ + 0.01274313620737671, + 0.013418909037622237 + ], + "scorePercentiles" : { + "0.0" : 0.012912455037290306, + "50.0" : 0.013086725894439325, + "90.0" : 0.013221848698075737, + "95.0" : 0.013221848698075737, + "99.0" : 0.013221848698075737, + "99.9" : 0.013221848698075737, + "99.99" : 0.013221848698075737, + "99.999" : 0.013221848698075737, + "99.9999" : 0.013221848698075737, + "100.0" : 0.013221848698075737 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013221848698075737, + 0.013161446690900669, + 0.013169755604253201 + ], + [ + 0.012912455037290306, + 0.013008624606498946, + 0.013012005097977983 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6645016367361083, + "scoreError" : 0.13736673724963294, + "scoreConfidence" : [ + 3.5271348994864753, + 3.8018683739857413 + ], + "scorePercentiles" : { + "0.0" : 3.6035412175792505, + "50.0" : 3.6690025230107586, + "90.0" : 3.720898994791667, + "95.0" : 3.720898994791667, + "99.0" : 3.720898994791667, + "99.9" : 3.720898994791667, + "99.99" : 3.720898994791667, + "99.999" : 3.720898994791667, + "99.9999" : 3.720898994791667, + "100.0" : 3.720898994791667 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6035412175792505, + 3.638543946909091, + 3.6223095568428674 + ], + [ + 3.720898994791667, + 3.699461099112426, + 3.702255005181347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.8352983613756226, + "scoreError" : 0.08666946035359768, + "scoreConfidence" : [ + 2.748628901022025, + 2.92196782172922 + ], + "scorePercentiles" : { + "0.0" : 2.765421011611833, + "50.0" : 2.8449870605802046, + "90.0" : 2.8918537652500724, + "95.0" : 2.8918537652500724, + "99.0" : 2.8918537652500724, + "99.9" : 2.8918537652500724, + "99.99" : 2.8918537652500724, + "99.999" : 2.8918537652500724, + "99.9999" : 2.8918537652500724, + "100.0" : 2.8918537652500724 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.835161081632653, + 2.8449870605802046, + 2.855578256996002 + ], + [ + 2.7817287532684283, + 2.768810570598007, + 2.765421011611833 + ], + [ + 2.8824682089337177, + 2.8918537652500724, + 2.8916765435096847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17668539768407285, + "scoreError" : 0.0038052870787773085, + "scoreConfidence" : [ + 0.17288011060529554, + 0.18049068476285016 + ], + "scorePercentiles" : { + "0.0" : 0.17355092122663612, + "50.0" : 0.1777485684322787, + "90.0" : 0.17866238191628106, + "95.0" : 0.17866238191628106, + "99.0" : 0.17866238191628106, + "99.9" : 0.17866238191628106, + "99.99" : 0.17866238191628106, + "99.999" : 0.17866238191628106, + "99.9999" : 0.17866238191628106, + "100.0" : 0.17866238191628106 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17391668427826087, + 0.17365871248220052, + 0.17355092122663612 + ], + [ + 0.1777485684322787, + 0.17777599557349072, + 0.17773426860392785 + ], + [ + 0.17863249555214175, + 0.17866238191628106, + 0.17848855109143805 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32587688199055964, + "scoreError" : 0.019338886180817538, + "scoreConfidence" : [ + 0.3065379958097421, + 0.34521576817137717 + ], + "scorePercentiles" : { + "0.0" : 0.3141145466453072, + "50.0" : 0.32231344068069745, + "90.0" : 0.3408148210074296, + "95.0" : 0.3408148210074296, + "99.0" : 0.3408148210074296, + "99.9" : 0.3408148210074296, + "99.99" : 0.3408148210074296, + "99.999" : 0.3408148210074296, + "99.9999" : 0.3408148210074296, + "100.0" : 0.3408148210074296 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3235398579054644, + 0.32227414531098936, + 0.32231344068069745 + ], + [ + 0.3408148210074296, + 0.34049507483827035, + 0.3400488105617519 + ], + [ + 0.3141145466453072, + 0.31483124140536456, + 0.3144599995597623 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1623926354338566, + "scoreError" : 0.012456786224923444, + "scoreConfidence" : [ + 0.14993584920893316, + 0.17484942165878004 + ], + "scorePercentiles" : { + "0.0" : 0.1533380093227226, + "50.0" : 0.16319451313685174, + "90.0" : 0.17073326242914702, + "95.0" : 0.17073326242914702, + "99.0" : 0.17073326242914702, + "99.9" : 0.17073326242914702, + "99.99" : 0.17073326242914702, + "99.999" : 0.17073326242914702, + "99.9999" : 0.17073326242914702, + "100.0" : 0.17073326242914702 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15338722272838826, + 0.15366977726043396, + 0.1533380093227226 + ], + [ + 0.16311651067577929, + 0.1632495087255334, + 0.16319451313685174 + ], + [ + 0.17073326242914702, + 0.17037008702318687, + 0.17047482760266616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39736623534599325, + "scoreError" : 0.0072331898616597515, + "scoreConfidence" : [ + 0.3901330454843335, + 0.404599425207653 + ], + "scorePercentiles" : { + "0.0" : 0.39367914727186837, + "50.0" : 0.3956107970567292, + "90.0" : 0.40649457729360594, + "95.0" : 0.40649457729360594, + "99.0" : 0.40649457729360594, + "99.9" : 0.40649457729360594, + "99.99" : 0.40649457729360594, + "99.999" : 0.40649457729360594, + "99.9999" : 0.40649457729360594, + "100.0" : 0.40649457729360594 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3956107970567292, + 0.39441284527706566, + 0.3941601015726617 + ], + [ + 0.40649457729360594, + 0.39985587800879646, + 0.400734263273893 + ], + [ + 0.39739873168017803, + 0.3939497766791412, + 0.39367914727186837 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15825399365071202, + "scoreError" : 0.0013317635767325676, + "scoreConfidence" : [ + 0.15692223007397946, + 0.15958575722744459 + ], + "scorePercentiles" : { + "0.0" : 0.15673044195595956, + "50.0" : 0.1583845141196408, + "90.0" : 0.1593887585470426, + "95.0" : 0.1593887585470426, + "99.0" : 0.1593887585470426, + "99.9" : 0.1593887585470426, + "99.99" : 0.1593887585470426, + "99.999" : 0.1593887585470426, + "99.9999" : 0.1593887585470426, + "100.0" : 0.1593887585470426 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1583845141196408, + 0.15735447831696878, + 0.15673044195595956 + ], + [ + 0.15894453801039465, + 0.1582970085161617, + 0.15822979096518988 + ], + [ + 0.1593887585470426, + 0.1585478360180106, + 0.15840857640703956 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04790902474190342, + "scoreError" : 9.884302829136805E-4, + "scoreConfidence" : [ + 0.046920594458989745, + 0.0488974550248171 + ], + "scorePercentiles" : { + "0.0" : 0.04700120233216146, + "50.0" : 0.048178018003912006, + "90.0" : 0.04842747581320794, + "95.0" : 0.04842747581320794, + "99.0" : 0.04842747581320794, + "99.9" : 0.04842747581320794, + "99.99" : 0.04842747581320794, + "99.999" : 0.04842747581320794, + "99.9999" : 0.04842747581320794, + "100.0" : 0.04842747581320794 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047425067774184065, + 0.0470235094445202, + 0.04700120233216146 + ], + [ + 0.04842747581320794, + 0.04839052659746921, + 0.04833344739220586 + ], + [ + 0.04817166911375088, + 0.048178018003912006, + 0.04823030620571908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9340768.943235474, + "scoreError" : 334580.2702463491, + "scoreConfidence" : [ + 9006188.672989124, + 9675349.213481823 + ], + "scorePercentiles" : { + "0.0" : 9167080.854262145, + "50.0" : 9249256.829944547, + "90.0" : 9604620.571976967, + "95.0" : 9604620.571976967, + "99.0" : 9604620.571976967, + "99.9" : 9604620.571976967, + "99.99" : 9604620.571976967, + "99.999" : 9604620.571976967, + "99.9999" : 9604620.571976967, + "100.0" : 9604620.571976967 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9603299.714971209, + 9604620.571976967, + 9599769.868522072 + ], + [ + 9176881.251376146, + 9171812.810265811, + 9167080.854262145 + ], + [ + 9250278.53789279, + 9243920.049907578, + 9249256.829944547 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 45b4f7d85dba830a4017d06d79a53d63bbb14d13 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 03:21:25 +0000 Subject: [PATCH 314/345] Add performance results for commit 9099f7a1b442ee3cec5e62c9ac2172649b0e9303 --- ...442ee3cec5e62c9ac2172649b0e9303-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json diff --git a/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json b/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json new file mode 100644 index 0000000000..3968fb62a0 --- /dev/null +++ b/performance-results/2025-04-03T03:21:08Z-9099f7a1b442ee3cec5e62c9ac2172649b0e9303-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4206904700900105, + "scoreError" : 0.02183667760750563, + "scoreConfidence" : [ + 3.398853792482505, + 3.442527147697516 + ], + "scorePercentiles" : { + "0.0" : 3.4169173445120937, + "50.0" : 3.4204712443645153, + "90.0" : 3.4249020471189184, + "95.0" : 3.4249020471189184, + "99.0" : 3.4249020471189184, + "99.9" : 3.4249020471189184, + "99.99" : 3.4249020471189184, + "99.999" : 3.4249020471189184, + "99.9999" : 3.4249020471189184, + "100.0" : 3.4249020471189184 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4169173445120937, + 3.42151719244912 + ], + [ + 3.4194252962799103, + 3.4249020471189184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7252335363338895, + "scoreError" : 0.008307105083911945, + "scoreConfidence" : [ + 1.7169264312499777, + 1.7335406414178014 + ], + "scorePercentiles" : { + "0.0" : 1.7239610059033839, + "50.0" : 1.7249873882714315, + "90.0" : 1.7269983628893113, + "95.0" : 1.7269983628893113, + "99.0" : 1.7269983628893113, + "99.9" : 1.7269983628893113, + "99.99" : 1.7269983628893113, + "99.999" : 1.7269983628893113, + "99.9999" : 1.7269983628893113, + "100.0" : 1.7269983628893113 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.725213956729067, + 1.7269983628893113 + ], + [ + 1.7239610059033839, + 1.7247608198137958 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8684343770623647, + "scoreError" : 0.007317786949523727, + "scoreConfidence" : [ + 0.861116590112841, + 0.8757521640118884 + ], + "scorePercentiles" : { + "0.0" : 0.867179793041212, + "50.0" : 0.8684535805333289, + "90.0" : 0.8696505541415892, + "95.0" : 0.8696505541415892, + "99.0" : 0.8696505541415892, + "99.9" : 0.8696505541415892, + "99.99" : 0.8696505541415892, + "99.999" : 0.8696505541415892, + "99.9999" : 0.8696505541415892, + "100.0" : 0.8696505541415892 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.867179793041212, + 0.8690834321319288 + ], + [ + 0.867823728934729, + 0.8696505541415892 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.17909126766679, + "scoreError" : 0.2559768985488164, + "scoreConfidence" : [ + 15.923114369117975, + 16.435068166215608 + ], + "scorePercentiles" : { + "0.0" : 15.95867060528112, + "50.0" : 16.219606732032062, + "90.0" : 16.34178668248754, + "95.0" : 16.34178668248754, + "99.0" : 16.34178668248754, + "99.9" : 16.34178668248754, + "99.99" : 16.34178668248754, + "99.999" : 16.34178668248754, + "99.9999" : 16.34178668248754, + "100.0" : 16.34178668248754 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.33268306277049, + 16.34178668248754, + 16.317455598781788 + ], + [ + 16.222099039014896, + 16.21617211413328, + 16.219606732032062 + ], + [ + 15.998538550283158, + 16.0048090242168, + 15.95867060528112 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2741.393458861405, + "scoreError" : 128.33119256683457, + "scoreConfidence" : [ + 2613.0622662945707, + 2869.7246514282397 + ], + "scorePercentiles" : { + "0.0" : 2652.278337073892, + "50.0" : 2734.203485973766, + "90.0" : 2835.992818278071, + "95.0" : 2835.992818278071, + "99.0" : 2835.992818278071, + "99.9" : 2835.992818278071, + "99.99" : 2835.992818278071, + "99.999" : 2835.992818278071, + "99.9999" : 2835.992818278071, + "100.0" : 2835.992818278071 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2661.1713934815975, + 2657.433088914789, + 2652.278337073892 + ], + [ + 2832.7345846544295, + 2829.543160848537, + 2835.992818278071 + ], + [ + 2737.992023875842, + 2731.192236651723, + 2734.203485973766 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69626.51006344466, + "scoreError" : 1442.2282000666273, + "scoreConfidence" : [ + 68184.28186337803, + 71068.73826351129 + ], + "scorePercentiles" : { + "0.0" : 68747.77960524686, + "50.0" : 69415.45501954913, + "90.0" : 70718.66289611543, + "95.0" : 70718.66289611543, + "99.0" : 70718.66289611543, + "99.9" : 70718.66289611543, + "99.99" : 70718.66289611543, + "99.999" : 70718.66289611543, + "99.9999" : 70718.66289611543, + "100.0" : 70718.66289611543 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69508.20422837307, + 69329.92052768177, + 69415.45501954913 + ], + [ + 68759.44810168311, + 68766.27396576387, + 68747.77960524686 + ], + [ + 70718.66289611543, + 70696.14519876917, + 70696.7010278194 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.62313474254336, + "scoreError" : 7.606529656984937, + "scoreConfidence" : [ + 347.0166050855584, + 362.2296643995283 + ], + "scorePercentiles" : { + "0.0" : 349.0330227618401, + "50.0" : 354.7798397775166, + "90.0" : 359.74298642059154, + "95.0" : 359.74298642059154, + "99.0" : 359.74298642059154, + "99.9" : 359.74298642059154, + "99.99" : 359.74298642059154, + "99.999" : 359.74298642059154, + "99.9999" : 359.74298642059154, + "100.0" : 359.74298642059154 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 359.23653220898484, + 358.78449189912214, + 359.74298642059154 + ], + [ + 349.12833515981123, + 349.0330227618401, + 349.0772965711547 + ], + [ + 354.7798397775166, + 354.58012610305406, + 357.245581780815 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.85075131510806, + "scoreError" : 2.625356711099751, + "scoreConfidence" : [ + 105.2253946040083, + 110.47610802620781 + ], + "scorePercentiles" : { + "0.0" : 106.59276942871568, + "50.0" : 107.03915029820716, + "90.0" : 109.93824920257076, + "95.0" : 109.93824920257076, + "99.0" : 109.93824920257076, + "99.9" : 109.93824920257076, + "99.99" : 109.93824920257076, + "99.999" : 109.93824920257076, + "99.9999" : 109.93824920257076, + "100.0" : 109.93824920257076 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.64717439112054, + 106.74946925270864, + 106.74222649575631 + ], + [ + 106.59276942871568, + 107.03915029820716, + 107.12172718231646 + ], + [ + 109.92123791555389, + 109.93824920257076, + 109.90475766902303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06159594570780158, + "scoreError" : 8.981845003630485E-4, + "scoreConfidence" : [ + 0.060697761207438534, + 0.062494130208164626 + ], + "scorePercentiles" : { + "0.0" : 0.061129065987737714, + "50.0" : 0.06128236699738327, + "90.0" : 0.062467338455580126, + "95.0" : 0.062467338455580126, + "99.0" : 0.062467338455580126, + "99.9" : 0.062467338455580126, + "99.99" : 0.062467338455580126, + "99.999" : 0.062467338455580126, + "99.9999" : 0.062467338455580126, + "100.0" : 0.062467338455580126 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06209102383642957, + 0.06232024442865689, + 0.062467338455580126 + ], + [ + 0.06126727419097916, + 0.06119005713219277, + 0.061129065987737714 + ], + [ + 0.061336540454007375, + 0.06128236699738327, + 0.0612795998872473 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.696119107404097E-4, + "scoreError" : 9.97721816459628E-6, + "scoreConfidence" : [ + 3.596346925758134E-4, + 3.79589128905006E-4 + ], + "scorePercentiles" : { + "0.0" : 3.626888560288343E-4, + "50.0" : 3.686331515365253E-4, + "90.0" : 3.773193622138792E-4, + "95.0" : 3.773193622138792E-4, + "99.0" : 3.773193622138792E-4, + "99.9" : 3.773193622138792E-4, + "99.99" : 3.773193622138792E-4, + "99.999" : 3.773193622138792E-4, + "99.9999" : 3.773193622138792E-4, + "100.0" : 3.773193622138792E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7698920463475277E-4, + 3.773193622138792E-4, + 3.762850259338338E-4 + ], + [ + 3.626888560288343E-4, + 3.637296742969206E-4, + 3.63402454815387E-4 + ], + [ + 3.6888732463155117E-4, + 3.686331515365253E-4, + 3.685721425720028E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01429124971939135, + "scoreError" : 4.7653081770894496E-4, + "scoreConfidence" : [ + 0.013814718901682404, + 0.014767780537100294 + ], + "scorePercentiles" : { + "0.0" : 0.014011771877022926, + "50.0" : 0.014203055541826094, + "90.0" : 0.014662239724822296, + "95.0" : 0.014662239724822296, + "99.0" : 0.014662239724822296, + "99.9" : 0.014662239724822296, + "99.99" : 0.014662239724822296, + "99.999" : 0.014662239724822296, + "99.9999" : 0.014662239724822296, + "100.0" : 0.014662239724822296 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0142007654630245, + 0.014205766461443175, + 0.014203055541826094 + ], + [ + 0.014025981748205747, + 0.014011771877022926, + 0.014013038340596667 + ], + [ + 0.01464161089498721, + 0.01465701742259353, + 0.014662239724822296 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9781382338333438, + "scoreError" : 0.01588711632877792, + "scoreConfidence" : [ + 0.9622511175045658, + 0.9940253501621217 + ], + "scorePercentiles" : { + "0.0" : 0.9687070489151491, + "50.0" : 0.9749398667381556, + "90.0" : 0.9923944358440012, + "95.0" : 0.9923944358440012, + "99.0" : 0.9923944358440012, + "99.9" : 0.9923944358440012, + "99.99" : 0.9923944358440012, + "99.999" : 0.9923944358440012, + "99.9999" : 0.9923944358440012, + "100.0" : 0.9923944358440012 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9905149994057052, + 0.9877674571315685, + 0.9923944358440012 + ], + [ + 0.9687070489151491, + 0.9702613015426409, + 0.9690745838178294 + ], + [ + 0.9750571266575663, + 0.9749398667381556, + 0.9745272844474762 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012951543349691617, + "scoreError" : 7.17908173353132E-5, + "scoreConfidence" : [ + 0.012879752532356304, + 0.01302333416702693 + ], + "scorePercentiles" : { + "0.0" : 0.012927962256345552, + "50.0" : 0.012945963688038627, + "90.0" : 0.012992789849235263, + "95.0" : 0.012992789849235263, + "99.0" : 0.012992789849235263, + "99.9" : 0.012992789849235263, + "99.99" : 0.012992789849235263, + "99.999" : 0.012992789849235263, + "99.9999" : 0.012992789849235263, + "100.0" : 0.012992789849235263 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01293589796652265, + 0.012929136678630163, + 0.012927962256345552 + ], + [ + 0.012992789849235263, + 0.012956029409554606, + 0.012967443937861459 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6448004708793054, + "scoreError" : 0.23658004422340556, + "scoreConfidence" : [ + 3.4082204266559, + 3.8813805151027108 + ], + "scorePercentiles" : { + "0.0" : 3.5409849886765747, + "50.0" : 3.650745095226265, + "90.0" : 3.722874720982143, + "95.0" : 3.722874720982143, + "99.0" : 3.722874720982143, + "99.9" : 3.722874720982143, + "99.99" : 3.722874720982143, + "99.999" : 3.722874720982143, + "99.9999" : 3.722874720982143, + "100.0" : 3.722874720982143 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7169321567607727, + 3.722874720982143, + 3.7216814717261903 + ], + [ + 3.5409849886765747, + 3.5817714534383955, + 3.5845580336917564 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.792517699935429, + "scoreError" : 0.02652058118597728, + "scoreConfidence" : [ + 2.7659971187494516, + 2.819038281121406 + ], + "scorePercentiles" : { + "0.0" : 2.7707105880886425, + "50.0" : 2.791919388051368, + "90.0" : 2.811218851602024, + "95.0" : 2.811218851602024, + "99.0" : 2.811218851602024, + "99.9" : 2.811218851602024, + "99.99" : 2.811218851602024, + "99.999" : 2.811218851602024, + "99.9999" : 2.811218851602024, + "100.0" : 2.811218851602024 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8110501843732436, + 2.811218851602024, + 2.8094077328651688 + ], + [ + 2.771137926018288, + 2.7707105880886425, + 2.7836048469245758 + ], + [ + 2.791919388051368, + 2.792374098548297, + 2.791235682947251 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1742432157856465, + "scoreError" : 0.004875078290119533, + "scoreConfidence" : [ + 0.16936813749552695, + 0.17911829407576604 + ], + "scorePercentiles" : { + "0.0" : 0.17208208915388984, + "50.0" : 0.17246391856514615, + "90.0" : 0.17818732172766474, + "95.0" : 0.17818732172766474, + "99.0" : 0.17818732172766474, + "99.9" : 0.17818732172766474, + "99.99" : 0.17818732172766474, + "99.999" : 0.17818732172766474, + "99.9999" : 0.17818732172766474, + "100.0" : 0.17818732172766474 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17262994255036337, + 0.1722843506761995, + 0.17215549340655556 + ], + [ + 0.1722585692803252, + 0.17208208915388984, + 0.17246391856514615 + ], + [ + 0.17818732172766474, + 0.17799467089689053, + 0.17813258581378363 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3333449063182734, + "scoreError" : 0.005905235020739848, + "scoreConfidence" : [ + 0.32743967129753354, + 0.33925014133901327 + ], + "scorePercentiles" : { + "0.0" : 0.329350732446318, + "50.0" : 0.33232254492888474, + "90.0" : 0.33807079141311697, + "95.0" : 0.33807079141311697, + "99.0" : 0.33807079141311697, + "99.9" : 0.33807079141311697, + "99.99" : 0.33807079141311697, + "99.999" : 0.33807079141311697, + "99.9999" : 0.33807079141311697, + "100.0" : 0.33807079141311697 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3301769634508716, + 0.329350732446318, + 0.32948116519504483 + ], + [ + 0.33404202852657244, + 0.33232254492888474, + 0.33195924776763486 + ], + [ + 0.33807079141311697, + 0.33732083306348243, + 0.3373798500725347 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16205925527522547, + "scoreError" : 0.005801548356563951, + "scoreConfidence" : [ + 0.1562577069186615, + 0.16786080363178943 + ], + "scorePercentiles" : { + "0.0" : 0.15775786740810854, + "50.0" : 0.162711726244712, + "90.0" : 0.16611034483904188, + "95.0" : 0.16611034483904188, + "99.0" : 0.16611034483904188, + "99.9" : 0.16611034483904188, + "99.99" : 0.16611034483904188, + "99.999" : 0.16611034483904188, + "99.9999" : 0.16611034483904188, + "100.0" : 0.16611034483904188 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15784430243863942, + 0.15775786740810854, + 0.1578714414309169 + ], + [ + 0.16611034483904188, + 0.1653657661931771, + 0.16567923764475886 + ], + [ + 0.16281569179922176, + 0.162711726244712, + 0.1623769194784529 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38844540306756375, + "scoreError" : 0.007554763837641979, + "scoreConfidence" : [ + 0.3808906392299218, + 0.39600016690520573 + ], + "scorePercentiles" : { + "0.0" : 0.38233104985471783, + "50.0" : 0.38763725885727573, + "90.0" : 0.3965965093793377, + "95.0" : 0.3965965093793377, + "99.0" : 0.3965965093793377, + "99.9" : 0.3965965093793377, + "99.99" : 0.3965965093793377, + "99.999" : 0.3965965093793377, + "99.9999" : 0.3965965093793377, + "100.0" : 0.3965965093793377 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3913939590215264, + 0.3826024790343561, + 0.38233104985471783 + ], + [ + 0.39190607030607044, + 0.38736799585528353, + 0.38763725885727573 + ], + [ + 0.3965965093793377, + 0.38878835813700335, + 0.38738494716250244 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15717731845538507, + "scoreError" : 0.0025445160448387513, + "scoreConfidence" : [ + 0.15463280241054633, + 0.1597218345002238 + ], + "scorePercentiles" : { + "0.0" : 0.15498779949474598, + "50.0" : 0.1574507210334892, + "90.0" : 0.15957643376896932, + "95.0" : 0.15957643376896932, + "99.0" : 0.15957643376896932, + "99.9" : 0.15957643376896932, + "99.99" : 0.15957643376896932, + "99.999" : 0.15957643376896932, + "99.9999" : 0.15957643376896932, + "100.0" : 0.15957643376896932 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15595670473472442, + 0.1553044715721141, + 0.15498779949474598 + ], + [ + 0.15957643376896932, + 0.15827448316794074, + 0.15837715270343036 + ], + [ + 0.15745232445326154, + 0.1574507210334892, + 0.15721577516978996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04712556397907962, + "scoreError" : 0.0015890684722958284, + "scoreConfidence" : [ + 0.04553649550678379, + 0.048714632451375445 + ], + "scorePercentiles" : { + "0.0" : 0.045865031742610134, + "50.0" : 0.047629415089756474, + "90.0" : 0.048132523928707226, + "95.0" : 0.048132523928707226, + "99.0" : 0.048132523928707226, + "99.9" : 0.048132523928707226, + "99.99" : 0.048132523928707226, + "99.999" : 0.048132523928707226, + "99.9999" : 0.048132523928707226, + "100.0" : 0.048132523928707226 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047704076315776923, + 0.04758969826585194, + 0.047651035980787376 + ], + [ + 0.045865031742610134, + 0.04587505893929455, + 0.04590735107926219 + ], + [ + 0.048132523928707226, + 0.04777588446966982, + 0.047629415089756474 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9287425.275754306, + "scoreError" : 673064.5173172944, + "scoreConfidence" : [ + 8614360.758437011, + 9960489.793071602 + ], + "scorePercentiles" : { + "0.0" : 8931976.855357142, + "50.0" : 9097843.042727273, + "90.0" : 9823178.722276742, + "95.0" : 9823178.722276742, + "99.0" : 9823178.722276742, + "99.9" : 9823178.722276742, + "99.99" : 9823178.722276742, + "99.999" : 9823178.722276742, + "99.9999" : 9823178.722276742, + "100.0" : 9823178.722276742 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9798666.694417238, + 9815992.58390579, + 9823178.722276742 + ], + [ + 9135345.167123288, + 9097843.042727273, + 9086959.946412353 + ], + [ + 8957876.223813787, + 8938988.245755138, + 8931976.855357142 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 0abcab236fdaf1949f07ee372b4f37e12ccb0fc5 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 3 Apr 2025 13:34:27 +1000 Subject: [PATCH 315/345] remove ExecutorInstrumentation and test --- .../threadpools/ExecutorInstrumentation.java | 166 -------------- .../ExecutorInstrumentationTest.groovy | 213 ------------------ 2 files changed, 379 deletions(-) delete mode 100644 src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java delete mode 100644 src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy diff --git a/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java b/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java deleted file mode 100644 index 9727801305..0000000000 --- a/src/main/java/graphql/execution/instrumentation/threadpools/ExecutorInstrumentation.java +++ /dev/null @@ -1,166 +0,0 @@ -package graphql.execution.instrumentation.threadpools; - -import com.google.common.annotations.Beta; -import graphql.Assert; -import graphql.Internal; -import graphql.TrivialDataFetcher; -import graphql.execution.Async; -import graphql.execution.instrumentation.InstrumentationState; -import graphql.execution.instrumentation.SimplePerformantInstrumentation; -import graphql.execution.instrumentation.parameters.InstrumentationFieldFetchParameters; -import graphql.schema.DataFetcher; -import graphql.schema.DataFetchingEnvironment; -import org.jspecify.annotations.NonNull; - -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.CompletionStage; -import java.util.concurrent.Executor; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Supplier; - -import static graphql.execution.instrumentation.threadpools.ExecutorInstrumentation.Action.FETCHING; -import static graphql.execution.instrumentation.threadpools.ExecutorInstrumentation.Action.PROCESSING; - -/** - * This instrumentation can be used to control on what thread calls to {@link DataFetcher}s happen on. - *

    - * If your data fetching is inherently IO bound then you could use a IO oriented thread pool for your fetches and transfer control - * back to a CPU oriented thread pool and allow graphql-java code to run the post-processing of results there. - *

    - * An IO oriented thread pool is typically a multiple of {@link Runtime#availableProcessors()} while a CPU oriented thread pool - * is typically no more than {@link Runtime#availableProcessors()}. - *

    - * The instrumentation will use the {@link graphql.execution.instrumentation.Instrumentation#instrumentDataFetcher(DataFetcher, InstrumentationFieldFetchParameters, InstrumentationState)} - * method to change your data fetchers, so they are executed on a thread pool dedicated to fetching (if you provide one). - *

    - * Once the data fetcher value is returns it will transfer control back to a processing thread pool (if you provide one). - *

    - * This code uses {@link CompletableFuture#supplyAsync(Supplier, Executor)} and {@link CompletableFuture#thenApplyAsync(Function, Executor)} to transfer - * control between thread pools. - */ -@Internal -@Beta -public class ExecutorInstrumentation extends SimplePerformantInstrumentation { - - private static final Consumer NOOP = a -> { - }; - - /** - * This describes what action is currently being done. This is mostly intended for testing. - */ - enum Action {FETCHING, PROCESSING} - - private final Executor fetchExecutor; - private final Executor processingExecutor; - private final Consumer actionObserver; - - private ExecutorInstrumentation(Executor fetchExecutor, Executor processingExecutor, Consumer actionObserver) { - this.fetchExecutor = fetchExecutor; - this.processingExecutor = processingExecutor; - this.actionObserver = actionObserver; - } - - public Executor getFetchExecutor() { - return fetchExecutor; - } - - public Executor getProcessingExecutor() { - return processingExecutor; - } - - public static Builder newThreadPoolExecutionInstrumentation() { - return new Builder(); - } - - public static class Builder { - Executor fetchExecutor; - Executor processingExecutor; - private Consumer actionObserver; - - public Builder fetchExecutor(Executor fetchExecutor) { - this.fetchExecutor = fetchExecutor; - return this; - } - - public Builder processingExecutor(Executor processingExecutor) { - this.processingExecutor = processingExecutor; - return this; - } - - /** - * This is really intended for testing but this consumer will be called during - * stages to indicate what is happening. - * - * @param actionObserver the observer code - * - * @return this builder - */ - public Builder actionObserver(Consumer actionObserver) { - this.actionObserver = Assert.assertNotNull(actionObserver); - return this; - } - - public ExecutorInstrumentation build() { - return new ExecutorInstrumentation(fetchExecutor, processingExecutor, actionObserver != null ? actionObserver : NOOP); - } - - } - - @Override - public @NonNull DataFetcher instrumentDataFetcher(DataFetcher originalDataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { - if (originalDataFetcher instanceof TrivialDataFetcher) { - return originalDataFetcher; - } - return environment -> { - CompletableFuture> invokedCF; - if (fetchExecutor != null) { - // run the fetch asynchronously via the fetch executor - // the CF will be left running on that fetch executors thread - invokedCF = CompletableFuture.supplyAsync(invokedAsync(originalDataFetcher, environment), fetchExecutor); - } else { - invokedCF = invokedSync(originalDataFetcher, environment); - } - if (processingExecutor != null) { - invokedCF = invokedCF.thenApplyAsync(processingControl(), processingExecutor); - } else { - invokedCF = invokedCF.thenApply(processingControl()); - } - return invokedCF.thenCompose(cs -> cs); - }; - } - - - private Supplier> invokedAsync(DataFetcher originalDataFetcher, DataFetchingEnvironment environment) { - return () -> { - actionObserver.accept(FETCHING); - return invokeOriginalDF(originalDataFetcher, environment); - }; - } - - private CompletableFuture> invokedSync(DataFetcher originalDataFetcher, DataFetchingEnvironment environment) { - actionObserver.accept(FETCHING); - return CompletableFuture.completedFuture(invokeOriginalDF(originalDataFetcher, environment)); - } - - private Function, CompletionStage> processingControl() { - return completionStage -> { - actionObserver.accept(PROCESSING); - return completionStage; - }; - } - - private CompletionStage invokeOriginalDF(DataFetcher originalDataFetcher, DataFetchingEnvironment environment) { - Object value; - try { - value = originalDataFetcher.get(environment); - } catch (Exception e) { - return Async.exceptionallyCompletedFuture(e); - } - if (value instanceof CompletionStage) { - return ((CompletionStage) value); - } else { - return CompletableFuture.completedFuture(value); - } - } -} diff --git a/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy deleted file mode 100644 index eb70c9be98..0000000000 --- a/src/test/groovy/graphql/execution/instrumentation/threadpools/ExecutorInstrumentationTest.groovy +++ /dev/null @@ -1,213 +0,0 @@ -package graphql.execution.instrumentation.threadpools - - -import graphql.TestUtil -import graphql.schema.DataFetcher -import graphql.schema.DataFetchingEnvironment -import graphql.schema.DataFetchingEnvironmentImpl -import graphql.schema.PropertyDataFetcher -import spock.lang.Ignore -import spock.lang.Specification - -import java.util.concurrent.CompletableFuture -import java.util.concurrent.Executor -import java.util.concurrent.Executors -import java.util.concurrent.ThreadFactory -import java.util.function.Consumer - -import static ExecutorInstrumentation.Action -import static java.lang.Thread.currentThread - -class ExecutorInstrumentationTest extends Specification { - - private static ThreadFactory threadFactory(String name) { - new ThreadFactory() { - @Override - Thread newThread(Runnable r) { - return new Thread(r, name) - } - } - } - - static class TestingObserver implements Consumer { - def actions = [] - - @Override - void accept(Action action) { - actions.add(action.toString() + " on " + currentThread().getName()) - } - } - - def FetchExecutor = Executors.newSingleThreadExecutor(threadFactory("FetchThread")) - def ProcessingExecutor = Executors.newSingleThreadExecutor(threadFactory("ProcessingThread")) - - ExecutorInstrumentation instrumentation - def observer = new TestingObserver() - - - ExecutorInstrumentation build(Executor fetchExecutor, Executor processingExecutor, Consumer observer) { - def builder = ExecutorInstrumentation.newThreadPoolExecutionInstrumentation() - if (fetchExecutor != null) { - builder.fetchExecutor(fetchExecutor) - } - if (processingExecutor != null) { - builder.processingExecutor(processingExecutor) - } - builder.actionObserver(observer).build() - } - - DataFetchingEnvironment dfEnv(Object s) { - DataFetchingEnvironmentImpl.newDataFetchingEnvironment().source(s).build() - } - - CompletableFuture asCF(returnedValue) { - (CompletableFuture) returnedValue - } - - void setup() { - observer = new TestingObserver() - instrumentation = build(FetchExecutor, ProcessingExecutor, observer) - } - - def "basic building works"() { - expect: - instrumentation.getFetchExecutor() == FetchExecutor - instrumentation.getProcessingExecutor() == ProcessingExecutor - } - - def "can handle a data fetcher that throws exceptions"() { - when: - DataFetcher df = { env -> throw new RuntimeException("BANG") } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null,null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - asCF(returnedValue).join() - - then: - def e = thrown(RuntimeException) - e.getMessage().contains("BANG") - } - - - def "will leave trivial data fetchers as is"() { - - when: - DataFetcher df = PropertyDataFetcher.fetching({ o -> "trivial" }) - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null,null) - def returnedValue = modifiedDataFetcher.get(dfEnv("source")) - - then: - modifiedDataFetcher == df - returnedValue == "trivial" - } - - - def "will execute on another thread and transfer execution back to the processing thread"() { - - when: - instrumentation = build(FetchExecutor, ProcessingExecutor, observer) - - DataFetcher df = { env -> currentThread().getName() } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null, null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - def value = asCF(returnedValue).join() - - then: - value == "FetchThread" - observer.actions == ["FETCHING on FetchThread", "PROCESSING on ProcessingThread"] - } - - @Ignore("This test is flaky on GitHub pipelines") - def "will execute on another thread and stay there without a processing executor"() { - - when: - instrumentation = build(FetchExecutor, null, observer) - - DataFetcher df = { env -> currentThread().getName() } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null, null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - def value = asCF(returnedValue).join() - - then: - value == "FetchThread" - observer.actions == ["FETCHING on FetchThread", "PROCESSING on FetchThread"] - } - - def "will fetch on current thread if the executor is null but transfer control back"() { - - when: - def currentThreadName = currentThread().getName() - instrumentation = build(null, ProcessingExecutor, observer) - - DataFetcher df = { env -> currentThread().getName() } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null, null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - def value = asCF(returnedValue).join() - - then: - value == "${currentThreadName}" - observer.actions == ["FETCHING on ${currentThreadName}", "PROCESSING on ProcessingThread"] - } - - def "a data fetcher can return a CF and that is handled"() { - when: - instrumentation = build(FetchExecutor, ProcessingExecutor, observer) - - DataFetcher df = { env -> CompletableFuture.completedFuture(currentThread().getName()) } - def modifiedDataFetcher = instrumentation.instrumentDataFetcher(df, null, null) - def returnedValue = modifiedDataFetcher.get(null) - - then: - returnedValue instanceof CompletableFuture - - when: - def value = asCF(returnedValue).join() - - then: - value == "FetchThread" - observer.actions == ["FETCHING on FetchThread", "PROCESSING on ProcessingThread"] - } - - def "can work in a full schema"() { - def sdl = """ - type Query { - field1 : String - field2 : String - } - """ - DataFetcher df1 = { env -> CompletableFuture.completedFuture("f1" + currentThread().getName()) } - DataFetcher df2 = { env -> "f2" + currentThread().getName() } - - def graphQL = TestUtil.graphQL(sdl, [Query: [field1: df1, field2: df2]]).instrumentation(instrumentation).build() - - when: - def er = graphQL.execute("{field1, field2}") - then: - er.errors.isEmpty() - er.data["field1"] == "f1FetchThread" - er.data["field2"] == "f2FetchThread" - observer.actions.sort() == [ - "FETCHING on FetchThread", "FETCHING on FetchThread", - "PROCESSING on ProcessingThread", "PROCESSING on ProcessingThread" - ] - } -} From 1cb72748ce0c2681c0144e11c1d292bb63c61745 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 04:18:54 +0000 Subject: [PATCH 316/345] Add performance results for commit bfd7b46570071ef5cb5edd7377fbc51fb477ee3d --- ...0071ef5cb5edd7377fbc51fb477ee3d-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json diff --git a/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..0fe671611f --- /dev/null +++ b/performance-results/2025-04-03T04:18:38Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4069670399174807, + "scoreError" : 0.01377711284446077, + "scoreConfidence" : [ + 3.39318992707302, + 3.4207441527619413 + ], + "scorePercentiles" : { + "0.0" : 3.4045192638077895, + "50.0" : 3.4072206524360227, + "90.0" : 3.408907590990087, + "95.0" : 3.408907590990087, + "99.0" : 3.408907590990087, + "99.9" : 3.408907590990087, + "99.99" : 3.408907590990087, + "99.999" : 3.408907590990087, + "99.9999" : 3.408907590990087, + "100.0" : 3.408907590990087 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4045192638077895, + 3.4085900660281925 + ], + [ + 3.405851238843853, + 3.408907590990087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.719648412053527, + "scoreError" : 0.02809970741527712, + "scoreConfidence" : [ + 1.6915487046382498, + 1.747748119468804 + ], + "scorePercentiles" : { + "0.0" : 1.7142389493573933, + "50.0" : 1.7197343077505653, + "90.0" : 1.724886083355584, + "95.0" : 1.724886083355584, + "99.0" : 1.724886083355584, + "99.9" : 1.724886083355584, + "99.99" : 1.724886083355584, + "99.999" : 1.724886083355584, + "99.9999" : 1.724886083355584, + "100.0" : 1.724886083355584 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7198267502215996, + 1.724886083355584 + ], + [ + 1.7142389493573933, + 1.719641865279531 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8662654811505468, + "scoreError" : 0.00672456953410522, + "scoreConfidence" : [ + 0.8595409116164415, + 0.8729900506846521 + ], + "scorePercentiles" : { + "0.0" : 0.8653473559404564, + "50.0" : 0.8660314345774419, + "90.0" : 0.8676516995068471, + "95.0" : 0.8676516995068471, + "99.0" : 0.8676516995068471, + "99.9" : 0.8676516995068471, + "99.99" : 0.8676516995068471, + "99.999" : 0.8676516995068471, + "99.9999" : 0.8676516995068471, + "100.0" : 0.8676516995068471 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8653473559404564, + 0.8664642452472594 + ], + [ + 0.8655986239076244, + 0.8676516995068471 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.881613268860953, + "scoreError" : 0.16972371039592618, + "scoreConfidence" : [ + 15.711889558465026, + 16.051336979256877 + ], + "scorePercentiles" : { + "0.0" : 15.742701283030245, + "50.0" : 15.901656590162244, + "90.0" : 15.99973571476549, + "95.0" : 15.99973571476549, + "99.0" : 15.99973571476549, + "99.9" : 15.99973571476549, + "99.99" : 15.99973571476549, + "99.999" : 15.99973571476549, + "99.9999" : 15.99973571476549, + "100.0" : 15.99973571476549 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.935344863973986, + 15.972098879330911, + 15.901656590162244 + ], + [ + 15.757391679403302, + 15.871936389357284, + 15.773600580677298 + ], + [ + 15.742701283030245, + 15.980053439047829, + 15.99973571476549 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2573.939325064266, + "scoreError" : 66.9181072449432, + "scoreConfidence" : [ + 2507.021217819323, + 2640.8574323092093 + ], + "scorePercentiles" : { + "0.0" : 2515.2229208854337, + "50.0" : 2569.4866319365015, + "90.0" : 2639.1359506980743, + "95.0" : 2639.1359506980743, + "99.0" : 2639.1359506980743, + "99.9" : 2639.1359506980743, + "99.99" : 2639.1359506980743, + "99.999" : 2639.1359506980743, + "99.9999" : 2639.1359506980743, + "100.0" : 2639.1359506980743 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2560.1238720819943, + 2515.2229208854337, + 2554.682790491716 + ], + [ + 2569.4866319365015, + 2607.02742513819, + 2586.839165945245 + ], + [ + 2527.5210870802625, + 2605.414081320981, + 2639.1359506980743 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68846.59384431818, + "scoreError" : 1148.764589611738, + "scoreConfidence" : [ + 67697.82925470645, + 69995.35843392991 + ], + "scorePercentiles" : { + "0.0" : 68007.01410414431, + "50.0" : 68771.41539379892, + "90.0" : 69848.51628355683, + "95.0" : 69848.51628355683, + "99.0" : 69848.51628355683, + "99.9" : 69848.51628355683, + "99.99" : 69848.51628355683, + "99.999" : 69848.51628355683, + "99.9999" : 69848.51628355683, + "100.0" : 69848.51628355683 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69523.41353028912, + 69848.51628355683, + 69556.08312562345 + ], + [ + 68007.01410414431, + 68771.41539379892, + 69007.79544421007 + ], + [ + 68034.56775354304, + 68574.90101325582, + 68295.63795044218 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 342.9326843032323, + "scoreError" : 5.632654178479563, + "scoreConfidence" : [ + 337.3000301247527, + 348.5653384817119 + ], + "scorePercentiles" : { + "0.0" : 338.22134638914224, + "50.0" : 342.65657276820275, + "90.0" : 348.7118127353454, + "95.0" : 348.7118127353454, + "99.0" : 348.7118127353454, + "99.9" : 348.7118127353454, + "99.99" : 348.7118127353454, + "99.999" : 348.7118127353454, + "99.9999" : 348.7118127353454, + "100.0" : 348.7118127353454 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 346.2396737614174, + 344.4937949433161, + 348.7118127353454 + ], + [ + 338.22134638914224, + 339.50568888443763, + 344.2246711810125 + ], + [ + 342.65657276820275, + 340.39185850752824, + 341.9487395586887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 104.41664466797751, + "scoreError" : 3.4239410559884464, + "scoreConfidence" : [ + 100.99270361198906, + 107.84058572396596 + ], + "scorePercentiles" : { + "0.0" : 101.34074595436566, + "50.0" : 105.26679530526971, + "90.0" : 106.52285125107282, + "95.0" : 106.52285125107282, + "99.0" : 106.52285125107282, + "99.9" : 106.52285125107282, + "99.99" : 106.52285125107282, + "99.999" : 106.52285125107282, + "99.9999" : 106.52285125107282, + "100.0" : 106.52285125107282 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.03512173310942, + 101.34074595436566, + 102.14607145041818 + ], + [ + 105.99328845197857, + 106.09573198089387, + 104.36496507781024 + ], + [ + 105.26679530526971, + 105.98423080687914, + 106.52285125107282 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06291601396860064, + "scoreError" : 0.0010268130772880873, + "scoreConfidence" : [ + 0.06188920089131255, + 0.06394282704588873 + ], + "scorePercentiles" : { + "0.0" : 0.06190691776395209, + "50.0" : 0.06296611601329824, + "90.0" : 0.0638439230946027, + "95.0" : 0.0638439230946027, + "99.0" : 0.0638439230946027, + "99.9" : 0.0638439230946027, + "99.99" : 0.0638439230946027, + "99.999" : 0.0638439230946027, + "99.9999" : 0.0638439230946027, + "100.0" : 0.0638439230946027 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06264503327653603, + 0.06243686636905691, + 0.06332339414394447 + ], + [ + 0.06244408786981879, + 0.06190691776395209, + 0.0638439230946027 + ], + [ + 0.06317183357022381, + 0.06296611601329824, + 0.06350595361597276 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.772918445712037E-4, + "scoreError" : 1.3750074525357626E-5, + "scoreConfidence" : [ + 3.635417700458461E-4, + 3.910419190965613E-4 + ], + "scorePercentiles" : { + "0.0" : 3.67455808549216E-4, + "50.0" : 3.758903578714715E-4, + "90.0" : 3.898184364874329E-4, + "95.0" : 3.898184364874329E-4, + "99.0" : 3.898184364874329E-4, + "99.9" : 3.898184364874329E-4, + "99.99" : 3.898184364874329E-4, + "99.999" : 3.898184364874329E-4, + "99.9999" : 3.898184364874329E-4, + "100.0" : 3.898184364874329E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.822310819920716E-4, + 3.8398533949458825E-4, + 3.898184364874329E-4 + ], + [ + 3.7456247794088814E-4, + 3.758903578714715E-4, + 3.844980090532881E-4 + ], + [ + 3.684198426518969E-4, + 3.6876524709997987E-4, + 3.67455808549216E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014692487168159126, + "scoreError" : 1.0890921120123715E-4, + "scoreConfidence" : [ + 0.014583577956957888, + 0.014801396379360364 + ], + "scorePercentiles" : { + "0.0" : 0.014623069662020972, + "50.0" : 0.014686299765904265, + "90.0" : 0.01481580967669291, + "95.0" : 0.01481580967669291, + "99.0" : 0.01481580967669291, + "99.9" : 0.01481580967669291, + "99.99" : 0.01481580967669291, + "99.999" : 0.01481580967669291, + "99.9999" : 0.01481580967669291, + "100.0" : 0.01481580967669291 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01481580967669291, + 0.014761402142737998, + 0.01471955471785874 + ], + [ + 0.014686299765904265, + 0.014623069662020972, + 0.01464070584084271 + ], + [ + 0.014698066747505035, + 0.014626562814467248, + 0.014660913145402247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.991542696406702, + "scoreError" : 0.023328699477302327, + "scoreConfidence" : [ + 0.9682139969293997, + 1.0148713958840043 + ], + "scorePercentiles" : { + "0.0" : 0.9696445302501454, + "50.0" : 0.9992563994804157, + "90.0" : 1.0060960282696176, + "95.0" : 1.0060960282696176, + "99.0" : 1.0060960282696176, + "99.9" : 1.0060960282696176, + "99.99" : 1.0060960282696176, + "99.999" : 1.0060960282696176, + "99.9999" : 1.0060960282696176, + "100.0" : 1.0060960282696176 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9999140340965903, + 0.9992563994804157, + 0.9996002698650674 + ], + [ + 1.001559894241362, + 1.0060960282696176, + 0.9970750286141575 + ], + [ + 0.9696445302501454, + 0.9763279108659573, + 0.9744101719770047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013056361858015402, + "scoreError" : 9.322779867712266E-4, + "scoreConfidence" : [ + 0.012124083871244177, + 0.013988639844786628 + ], + "scorePercentiles" : { + "0.0" : 0.01265293295628519, + "50.0" : 0.013073918976377876, + "90.0" : 0.013424728910260541, + "95.0" : 0.013424728910260541, + "99.0" : 0.013424728910260541, + "99.9" : 0.013424728910260541, + "99.99" : 0.013424728910260541, + "99.999" : 0.013424728910260541, + "99.9999" : 0.013424728910260541, + "100.0" : 0.013424728910260541 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01265293295628519, + 0.012762067769615975, + 0.01287342819259179 + ], + [ + 0.013274409760163962, + 0.013424728910260541, + 0.013350603559174955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7533453814696007, + "scoreError" : 0.07221931908733174, + "scoreConfidence" : [ + 3.681126062382269, + 3.8255647005569324 + ], + "scorePercentiles" : { + "0.0" : 3.715878045319465, + "50.0" : 3.7647120831820504, + "90.0" : 3.7759736120754717, + "95.0" : 3.7759736120754717, + "99.0" : 3.7759736120754717, + "99.9" : 3.7759736120754717, + "99.99" : 3.7759736120754717, + "99.999" : 3.7759736120754717, + "99.9999" : 3.7759736120754717, + "100.0" : 3.7759736120754717 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7583392802404205, + 3.715878045319465, + 3.726707458271237 + ], + [ + 3.7710848861236803, + 3.7720890067873305, + 3.7759736120754717 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.889554648811101, + "scoreError" : 0.10180974707315243, + "scoreConfidence" : [ + 2.7877449017379483, + 2.9913643958842533 + ], + "scorePercentiles" : { + "0.0" : 2.8047336149747615, + "50.0" : 2.9016337911227152, + "90.0" : 2.970081754083754, + "95.0" : 2.970081754083754, + "99.0" : 2.970081754083754, + "99.9" : 2.970081754083754, + "99.99" : 2.970081754083754, + "99.999" : 2.970081754083754, + "99.9999" : 2.970081754083754, + "100.0" : 2.970081754083754 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.970081754083754, + 2.9444875981748604, + 2.90051821287703 + ], + [ + 2.8047336149747615, + 2.8152427427526034, + 2.822288823927765 + ], + [ + 2.9185109804493727, + 2.9284943209370424, + 2.9016337911227152 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1805457075975223, + "scoreError" : 0.0032906053591940008, + "scoreConfidence" : [ + 0.1772551022383283, + 0.18383631295671632 + ], + "scorePercentiles" : { + "0.0" : 0.1789229324936036, + "50.0" : 0.1797346438469419, + "90.0" : 0.18514838317410945, + "95.0" : 0.18514838317410945, + "99.0" : 0.18514838317410945, + "99.9" : 0.18514838317410945, + "99.99" : 0.18514838317410945, + "99.999" : 0.18514838317410945, + "99.9999" : 0.18514838317410945, + "100.0" : 0.18514838317410945 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18514838317410945, + 0.18192817100858683, + 0.18085476485694651 + ], + [ + 0.1797346438469419, + 0.17923391680108972, + 0.18011414041280935 + ], + [ + 0.1789229324936036, + 0.17933638023420548, + 0.1796380355494081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33802979936950583, + "scoreError" : 0.007790846575675005, + "scoreConfidence" : [ + 0.3302389527938308, + 0.34582064594518086 + ], + "scorePercentiles" : { + "0.0" : 0.33224624904481875, + "50.0" : 0.3363953684405275, + "90.0" : 0.3439181182681065, + "95.0" : 0.3439181182681065, + "99.0" : 0.3439181182681065, + "99.9" : 0.3439181182681065, + "99.99" : 0.3439181182681065, + "99.999" : 0.3439181182681065, + "99.9999" : 0.3439181182681065, + "100.0" : 0.3439181182681065 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3363953684405275, + 0.3355822697651007, + 0.33907762964093174 + ], + [ + 0.3438371653142621, + 0.3439181182681065, + 0.34326591658943467 + ], + [ + 0.33389524587646074, + 0.3340502313859104, + 0.33224624904481875 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16610825006196098, + "scoreError" : 0.005481242770670671, + "scoreConfidence" : [ + 0.1606270072912903, + 0.17158949283263164 + ], + "scorePercentiles" : { + "0.0" : 0.16116178712671833, + "50.0" : 0.16686997396876252, + "90.0" : 0.16965193444847826, + "95.0" : 0.16965193444847826, + "99.0" : 0.16965193444847826, + "99.9" : 0.16965193444847826, + "99.99" : 0.16965193444847826, + "99.999" : 0.16965193444847826, + "99.9999" : 0.16965193444847826, + "100.0" : 0.16965193444847826 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16686997396876252, + 0.1677147124744239, + 0.1665400422502373 + ], + [ + 0.16275387152529133, + 0.16116178712671833, + 0.16213362620989316 + ], + [ + 0.16965193444847826, + 0.1692971778936498, + 0.16885112466019417 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3900476853359935, + "scoreError" : 0.013179482989262305, + "scoreConfidence" : [ + 0.3768682023467312, + 0.4032271683252558 + ], + "scorePercentiles" : { + "0.0" : 0.378498379168086, + "50.0" : 0.39198960250078396, + "90.0" : 0.401988626281304, + "95.0" : 0.401988626281304, + "99.0" : 0.401988626281304, + "99.9" : 0.401988626281304, + "99.99" : 0.401988626281304, + "99.999" : 0.401988626281304, + "99.9999" : 0.401988626281304, + "100.0" : 0.401988626281304 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39413079210184054, + 0.378498379168086, + 0.37850229889103365 + ], + [ + 0.401988626281304, + 0.39198960250078396, + 0.3924206083032491 + ], + [ + 0.39697791433448454, + 0.38790818863460047, + 0.38801275780855937 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1558497393759247, + "scoreError" : 0.005886044703965503, + "scoreConfidence" : [ + 0.1499636946719592, + 0.1617357840798902 + ], + "scorePercentiles" : { + "0.0" : 0.1525339157870653, + "50.0" : 0.15429124798654612, + "90.0" : 0.16052009594054478, + "95.0" : 0.16052009594054478, + "99.0" : 0.16052009594054478, + "99.9" : 0.16052009594054478, + "99.99" : 0.16052009594054478, + "99.999" : 0.16052009594054478, + "99.9999" : 0.16052009594054478, + "100.0" : 0.16052009594054478 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15263621707343134, + 0.15287506503195034, + 0.1525339157870653 + ], + [ + 0.16052009594054478, + 0.1603939217617245, + 0.16025259234331682 + ], + [ + 0.15504192820155038, + 0.15429124798654612, + 0.1541026702571926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046866688633485816, + "scoreError" : 4.7205703256350144E-4, + "scoreConfidence" : [ + 0.04639463160092232, + 0.047338745666049314 + ], + "scorePercentiles" : { + "0.0" : 0.0465004971821031, + "50.0" : 0.04677862280611481, + "90.0" : 0.047195328475420975, + "95.0" : 0.047195328475420975, + "99.0" : 0.047195328475420975, + "99.9" : 0.047195328475420975, + "99.99" : 0.047195328475420975, + "99.999" : 0.047195328475420975, + "99.9999" : 0.047195328475420975, + "100.0" : 0.047195328475420975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04677862280611481, + 0.0465004971821031, + 0.04658195166248987 + ], + [ + 0.047106999882234345, + 0.04674651273349414, + 0.046599830365755344 + ], + [ + 0.04717519188221475, + 0.04711526271154499, + 0.047195328475420975 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9274065.194162289, + "scoreError" : 255674.20191399023, + "scoreConfidence" : [ + 9018390.992248299, + 9529739.396076279 + ], + "scorePercentiles" : { + "0.0" : 9054173.222624434, + "50.0" : 9343782.669467786, + "90.0" : 9467276.662251655, + "95.0" : 9467276.662251655, + "99.0" : 9467276.662251655, + "99.9" : 9467276.662251655, + "99.99" : 9467276.662251655, + "99.999" : 9467276.662251655, + "99.9999" : 9467276.662251655, + "100.0" : 9467276.662251655 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9370335.287453184, + 9343782.669467786, + 9419851.420507995 + ], + [ + 9199186.877757354, + 9373907.444236176, + 9467276.662251655 + ], + [ + 9054173.222624434, + 9103496.834394904, + 9134576.328767123 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 3fba0d426ffb4f5c136798933d1f39d4f3a83e51 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 04:19:17 +0000 Subject: [PATCH 317/345] Add performance results for commit bfd7b46570071ef5cb5edd7377fbc51fb477ee3d --- ...0071ef5cb5edd7377fbc51fb477ee3d-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json diff --git a/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..4f6416e5a3 --- /dev/null +++ b/performance-results/2025-04-03T04:19:02Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4207323250526915, + "scoreError" : 0.0319456484452798, + "scoreConfidence" : [ + 3.388786676607412, + 3.452677973497971 + ], + "scorePercentiles" : { + "0.0" : 3.4148720216622768, + "50.0" : 3.420843722069556, + "90.0" : 3.4263698344093774, + "95.0" : 3.4263698344093774, + "99.0" : 3.4263698344093774, + "99.9" : 3.4263698344093774, + "99.99" : 3.4263698344093774, + "99.999" : 3.4263698344093774, + "99.9999" : 3.4263698344093774, + "100.0" : 3.4263698344093774 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4148720216622768, + 3.4227369708906776 + ], + [ + 3.4189504732484335, + 3.4263698344093774 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7277102944001554, + "scoreError" : 0.0031271802076314223, + "scoreConfidence" : [ + 1.724583114192524, + 1.7308374746077868 + ], + "scorePercentiles" : { + "0.0" : 1.7273150184436197, + "50.0" : 1.7276098423405877, + "90.0" : 1.7283064744758272, + "95.0" : 1.7283064744758272, + "99.0" : 1.7283064744758272, + "99.9" : 1.7283064744758272, + "99.99" : 1.7283064744758272, + "99.999" : 1.7283064744758272, + "99.9999" : 1.7283064744758272, + "100.0" : 1.7283064744758272 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7273150184436197, + 1.7279020093223763 + ], + [ + 1.7273176753587989, + 1.7283064744758272 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8682495052702349, + "scoreError" : 0.003949470062662093, + "scoreConfidence" : [ + 0.8643000352075728, + 0.872198975332897 + ], + "scorePercentiles" : { + "0.0" : 0.8677494428788252, + "50.0" : 0.8680539988529801, + "90.0" : 0.8691405804961545, + "95.0" : 0.8691405804961545, + "99.0" : 0.8691405804961545, + "99.9" : 0.8691405804961545, + "99.99" : 0.8691405804961545, + "99.999" : 0.8691405804961545, + "99.9999" : 0.8691405804961545, + "100.0" : 0.8691405804961545 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8680616748545228, + 0.8677494428788252 + ], + [ + 0.8680463228514372, + 0.8691405804961545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.129063634777115, + "scoreError" : 0.08527819871813747, + "scoreConfidence" : [ + 16.04378543605898, + 16.21434183349525 + ], + "scorePercentiles" : { + "0.0" : 16.059264510157075, + "50.0" : 16.108068079257407, + "90.0" : 16.214119925984104, + "95.0" : 16.214119925984104, + "99.0" : 16.214119925984104, + "99.9" : 16.214119925984104, + "99.99" : 16.214119925984104, + "99.999" : 16.214119925984104, + "99.9999" : 16.214119925984104, + "100.0" : 16.214119925984104 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.0925343717999, + 16.09984081671261, + 16.108068079257407 + ], + [ + 16.214119925984104, + 16.159726236461857, + 16.19100512182415 + ], + [ + 16.059264510157075, + 16.097684680162253, + 16.139328970634665 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2690.9112918289243, + "scoreError" : 89.11642467727573, + "scoreConfidence" : [ + 2601.7948671516488, + 2780.0277165062 + ], + "scorePercentiles" : { + "0.0" : 2652.044232240892, + "50.0" : 2657.6655237443792, + "90.0" : 2763.516905739167, + "95.0" : 2763.516905739167, + "99.0" : 2763.516905739167, + "99.9" : 2763.516905739167, + "99.99" : 2763.516905739167, + "99.999" : 2763.516905739167, + "99.9999" : 2763.516905739167, + "100.0" : 2763.516905739167 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2763.516905739167, + 2757.9183269925015, + 2763.176354709843 + ], + [ + 2659.1776750958593, + 2652.044232240892, + 2657.6655237443792 + ], + [ + 2653.991151912376, + 2655.9615935642164, + 2654.7498624610816 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70813.59294604426, + "scoreError" : 285.425501314716, + "scoreConfidence" : [ + 70528.16744472954, + 71099.01844735898 + ], + "scorePercentiles" : { + "0.0" : 70628.70211461508, + "50.0" : 70783.99135660434, + "90.0" : 71040.45930720455, + "95.0" : 71040.45930720455, + "99.0" : 71040.45930720455, + "99.9" : 71040.45930720455, + "99.99" : 71040.45930720455, + "99.999" : 71040.45930720455, + "99.9999" : 71040.45930720455, + "100.0" : 71040.45930720455 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 71040.45930720455, + 71024.63676656474, + 71018.19681898014 + ], + [ + 70800.4921040496, + 70689.3527485353, + 70783.99135660434 + ], + [ + 70670.66800835967, + 70628.70211461508, + 70665.83728948496 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 353.25425258646266, + "scoreError" : 7.344410731177084, + "scoreConfidence" : [ + 345.90984185528555, + 360.59866331763976 + ], + "scorePercentiles" : { + "0.0" : 347.27155054221925, + "50.0" : 355.65845226413325, + "90.0" : 357.51761485639236, + "95.0" : 357.51761485639236, + "99.0" : 357.51761485639236, + "99.9" : 357.51761485639236, + "99.99" : 357.51761485639236, + "99.999" : 357.51761485639236, + "99.9999" : 357.51761485639236, + "100.0" : 357.51761485639236 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 355.7057941305003, + 355.65845226413325, + 356.40599321473053 + ], + [ + 357.51761485639236, + 356.7266455150841, + 354.7055422687994 + ], + [ + 347.27155054221925, + 347.42020970279657, + 347.8764707835086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.2220803435144, + "scoreError" : 1.3778531511347178, + "scoreConfidence" : [ + 106.84422719237969, + 109.59993349464912 + ], + "scorePercentiles" : { + "0.0" : 107.19737504715748, + "50.0" : 108.38482161616515, + "90.0" : 109.49844061242605, + "95.0" : 109.49844061242605, + "99.0" : 109.49844061242605, + "99.9" : 109.49844061242605, + "99.99" : 109.49844061242605, + "99.999" : 109.49844061242605, + "99.9999" : 109.49844061242605, + "100.0" : 109.49844061242605 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 109.49844061242605, + 108.855934976009, + 108.84497615431408 + ], + [ + 108.27115702933337, + 108.41776316427838, + 108.38482161616515 + ], + [ + 107.32316112420783, + 107.20509336773831, + 107.19737504715748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06187979929930037, + "scoreError" : 4.89919681720745E-4, + "scoreConfidence" : [ + 0.06138987961757962, + 0.062369718981021116 + ], + "scorePercentiles" : { + "0.0" : 0.06156398933727337, + "50.0" : 0.06173390797466479, + "90.0" : 0.062283656367169496, + "95.0" : 0.062283656367169496, + "99.0" : 0.062283656367169496, + "99.9" : 0.062283656367169496, + "99.99" : 0.062283656367169496, + "99.999" : 0.062283656367169496, + "99.9999" : 0.062283656367169496, + "100.0" : 0.062283656367169496 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.061646123259297615, + 0.06173390797466479, + 0.06196862166148202 + ], + [ + 0.062283656367169496, + 0.06225505770954729, + 0.06216190292903675 + ], + [ + 0.061721765325268484, + 0.06156398933727337, + 0.06158316912996354 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.724198382138392E-4, + "scoreError" : 8.699200781534305E-6, + "scoreConfidence" : [ + 3.637206374323049E-4, + 3.8111903899537347E-4 + ], + "scorePercentiles" : { + "0.0" : 3.651132355641374E-4, + "50.0" : 3.7532956662498937E-4, + "90.0" : 3.770072542482455E-4, + "95.0" : 3.770072542482455E-4, + "99.0" : 3.770072542482455E-4, + "99.9" : 3.770072542482455E-4, + "99.99" : 3.770072542482455E-4, + "99.999" : 3.770072542482455E-4, + "99.9999" : 3.770072542482455E-4, + "100.0" : 3.770072542482455E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7532956662498937E-4, + 3.7440243865318883E-4, + 3.754156135124096E-4 + ], + [ + 3.770072542482455E-4, + 3.7648122859236174E-4, + 3.763393834485371E-4 + ], + [ + 3.6621271513166535E-4, + 3.6547710814901834E-4, + 3.651132355641374E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014120962875839724, + "scoreError" : 1.5472298051941275E-4, + "scoreConfidence" : [ + 0.013966239895320311, + 0.014275685856359138 + ], + "scorePercentiles" : { + "0.0" : 0.014002392716320438, + "50.0" : 0.014128934788690208, + "90.0" : 0.0142317715103421, + "95.0" : 0.0142317715103421, + "99.0" : 0.0142317715103421, + "99.9" : 0.0142317715103421, + "99.99" : 0.0142317715103421, + "99.999" : 0.0142317715103421, + "99.9999" : 0.0142317715103421, + "100.0" : 0.0142317715103421 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014128934788690208, + 0.014126580095325006, + 0.014130934258050294 + ], + [ + 0.014205468612696974, + 0.014230774158935892, + 0.0142317715103421 + ], + [ + 0.014018518749561925, + 0.014002392716320438, + 0.014013290992634694 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9710586987458186, + "scoreError" : 0.010987316611614452, + "scoreConfidence" : [ + 0.9600713821342042, + 0.9820460153574331 + ], + "scorePercentiles" : { + "0.0" : 0.955936307111451, + "50.0" : 0.9733839632080981, + "90.0" : 0.9767457063189765, + "95.0" : 0.9767457063189765, + "99.0" : 0.9767457063189765, + "99.9" : 0.9767457063189765, + "99.99" : 0.9767457063189765, + "99.999" : 0.9767457063189765, + "99.9999" : 0.9767457063189765, + "100.0" : 0.9767457063189765 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9752175705509507, + 0.9749185228114642, + 0.973517640221941 + ], + [ + 0.9652071514332593, + 0.9733839632080981, + 0.955936307111451 + ], + [ + 0.9767457063189765, + 0.9722837267159246, + 0.9723177003403014 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012983448700691527, + "scoreError" : 2.576521228683663E-4, + "scoreConfidence" : [ + 0.01272579657782316, + 0.013241100823559894 + ], + "scorePercentiles" : { + "0.0" : 0.012864549208333976, + "50.0" : 0.01295442629267363, + "90.0" : 0.013094527081456496, + "95.0" : 0.013094527081456496, + "99.0" : 0.013094527081456496, + "99.9" : 0.013094527081456496, + "99.99" : 0.013094527081456496, + "99.999" : 0.013094527081456496, + "99.9999" : 0.013094527081456496, + "100.0" : 0.013094527081456496 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012967554409251349, + 0.013094527081456496, + 0.01309233181204047 + ], + [ + 0.012864549208333976, + 0.012940431516970975, + 0.012941298176095909 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.695386946419859, + "scoreError" : 0.017234151890428238, + "scoreConfidence" : [ + 3.6781527945294306, + 3.7126210983102874 + ], + "scorePercentiles" : { + "0.0" : 3.689411109882006, + "50.0" : 3.6941566158227035, + "90.0" : 3.706890833951075, + "95.0" : 3.706890833951075, + "99.0" : 3.706890833951075, + "99.9" : 3.706890833951075, + "99.99" : 3.706890833951075, + "99.999" : 3.706890833951075, + "99.9999" : 3.706890833951075, + "100.0" : 3.706890833951075 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6956624397634887, + 3.69178669298893, + 3.6959198100517368 + ], + [ + 3.706890833951075, + 3.689411109882006, + 3.6926507918819187 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.836029495688691, + "scoreError" : 0.08247781158293523, + "scoreConfidence" : [ + 2.7535516841057555, + 2.9185073072716263 + ], + "scorePercentiles" : { + "0.0" : 2.780162533500139, + "50.0" : 2.8326620141602947, + "90.0" : 2.896600083405734, + "95.0" : 2.896600083405734, + "99.0" : 2.896600083405734, + "99.9" : 2.896600083405734, + "99.99" : 2.896600083405734, + "99.999" : 2.896600083405734, + "99.9999" : 2.896600083405734, + "100.0" : 2.896600083405734 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.896600083405734, + 2.89330250390512, + 2.8909107427745666 + ], + [ + 2.8418196442171073, + 2.826841927077445, + 2.8326620141602947 + ], + [ + 2.780162533500139, + 2.7807002805115375, + 2.7812657316462737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17517850014596284, + "scoreError" : 0.0037486979732552785, + "scoreConfidence" : [ + 0.17142980217270756, + 0.17892719811921812 + ], + "scorePercentiles" : { + "0.0" : 0.1717836128766276, + "50.0" : 0.17623950894383447, + "90.0" : 0.17721852954102427, + "95.0" : 0.17721852954102427, + "99.0" : 0.17721852954102427, + "99.9" : 0.17721852954102427, + "99.99" : 0.17721852954102427, + "99.999" : 0.17721852954102427, + "99.9999" : 0.17721852954102427, + "100.0" : 0.17721852954102427 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.172831079570004, + 0.17218152398415978, + 0.1717836128766276 + ], + [ + 0.17621121955560254, + 0.17623950894383447, + 0.17624023835959254 + ], + [ + 0.17707964202362192, + 0.17721852954102427, + 0.176821146459199 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32290382875128587, + "scoreError" : 0.019311333448506423, + "scoreConfidence" : [ + 0.30359249530277943, + 0.3422151621997923 + ], + "scorePercentiles" : { + "0.0" : 0.31114121480352197, + "50.0" : 0.3198565041100272, + "90.0" : 0.33750574249071885, + "95.0" : 0.33750574249071885, + "99.0" : 0.33750574249071885, + "99.9" : 0.33750574249071885, + "99.99" : 0.33750574249071885, + "99.999" : 0.33750574249071885, + "99.9999" : 0.33750574249071885, + "100.0" : 0.33750574249071885 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3373749518588489, + 0.33750574249071885, + 0.3373804223541716 + ], + [ + 0.31175855700346045, + 0.31131111596052674, + 0.31114121480352197 + ], + [ + 0.3197633228240711, + 0.3200426273562262, + 0.3198565041100272 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1583957563563813, + "scoreError" : 0.0027862408712994364, + "scoreConfidence" : [ + 0.15560951548508187, + 0.16118199722768076 + ], + "scorePercentiles" : { + "0.0" : 0.1563399570070665, + "50.0" : 0.15848177283676704, + "90.0" : 0.16027697366691776, + "95.0" : 0.16027697366691776, + "99.0" : 0.16027697366691776, + "99.9" : 0.16027697366691776, + "99.99" : 0.16027697366691776, + "99.999" : 0.16027697366691776, + "99.9999" : 0.16027697366691776, + "100.0" : 0.16027697366691776 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1565101095703889, + 0.1564862471637587, + 0.1563399570070665 + ], + [ + 0.15829687175103682, + 0.15848177283676704, + 0.15865207415281127 + ], + [ + 0.16027111858131932, + 0.1602466824773656, + 0.16027697366691776 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3868561814412517, + "scoreError" : 0.0069254109492785645, + "scoreConfidence" : [ + 0.37993077049197316, + 0.3937815923905303 + ], + "scorePercentiles" : { + "0.0" : 0.38157141117216115, + "50.0" : 0.3869765164460955, + "90.0" : 0.39176893238266863, + "95.0" : 0.39176893238266863, + "99.0" : 0.39176893238266863, + "99.9" : 0.39176893238266863, + "99.99" : 0.39176893238266863, + "99.999" : 0.39176893238266863, + "99.9999" : 0.39176893238266863, + "100.0" : 0.39176893238266863 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3870978555392119, + 0.3869765164460955, + 0.3851402720970537 + ], + [ + 0.3840976532493471, + 0.381694085610687, + 0.38157141117216115 + ], + [ + 0.3917450901363209, + 0.39176893238266863, + 0.3916138163377193 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15523830175393216, + "scoreError" : 0.0026270894280356724, + "scoreConfidence" : [ + 0.1526112123258965, + 0.15786539118196782 + ], + "scorePercentiles" : { + "0.0" : 0.15325871712310923, + "50.0" : 0.15492024173134422, + "90.0" : 0.15720893628460486, + "95.0" : 0.15720893628460486, + "99.0" : 0.15720893628460486, + "99.9" : 0.15720893628460486, + "99.99" : 0.15720893628460486, + "99.999" : 0.15720893628460486, + "99.9999" : 0.15720893628460486, + "100.0" : 0.15720893628460486 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15564634977431907, + 0.15492024173134422, + 0.15463564016762282 + ], + [ + 0.15720893628460486, + 0.15707466542581597, + 0.1569684785584228 + ], + [ + 0.15395843413800536, + 0.15325871712310923, + 0.15347325258214523 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04755786559883292, + "scoreError" : 0.0014208049396587064, + "scoreConfidence" : [ + 0.04613706065917421, + 0.04897867053849163 + ], + "scorePercentiles" : { + "0.0" : 0.04647786951045506, + "50.0" : 0.04765763511935682, + "90.0" : 0.04853239242226439, + "95.0" : 0.04853239242226439, + "99.0" : 0.04853239242226439, + "99.9" : 0.04853239242226439, + "99.99" : 0.04853239242226439, + "99.999" : 0.04853239242226439, + "99.9999" : 0.04853239242226439, + "100.0" : 0.04853239242226439 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04780514980997681, + 0.04758781751300317, + 0.04765763511935682 + ], + [ + 0.048491284037900165, + 0.04853239242226439, + 0.04836042689473073 + ], + [ + 0.046539819069869176, + 0.04656839601193997, + 0.04647786951045506 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9210789.606424699, + "scoreError" : 67701.16141275437, + "scoreConfidence" : [ + 9143088.445011944, + 9278490.767837454 + ], + "scorePercentiles" : { + "0.0" : 9137590.056621004, + "50.0" : 9214177.742173113, + "90.0" : 9257430.554116558, + "95.0" : 9257430.554116558, + "99.0" : 9257430.554116558, + "99.9" : 9257430.554116558, + "99.99" : 9257430.554116558, + "99.999" : 9257430.554116558, + "99.9999" : 9257430.554116558, + "100.0" : 9257430.554116558 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9185812.64003673, + 9189725.07805326, + 9137590.056621004 + ], + [ + 9257430.554116558, + 9256689.355226642, + 9251173.079555966 + ], + [ + 9186617.759412305, + 9217890.192626728, + 9214177.742173113 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 0852ae198748e0eea702525e96739290b2eedc7d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 04:20:22 +0000 Subject: [PATCH 318/345] Add performance results for commit bfd7b46570071ef5cb5edd7377fbc51fb477ee3d --- ...0071ef5cb5edd7377fbc51fb477ee3d-jdk17.json | 1310 +++++++++++++++++ ...0071ef5cb5edd7377fbc51fb477ee3d-jdk17.json | 1310 +++++++++++++++++ 2 files changed, 2620 insertions(+) create mode 100644 performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json create mode 100644 performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json diff --git a/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..98ae378714 --- /dev/null +++ b/performance-results/2025-04-03T04:20:01Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3992092882886666, + "scoreError" : 0.028178246222827573, + "scoreConfidence" : [ + 3.371031042065839, + 3.427387534511494 + ], + "scorePercentiles" : { + "0.0" : 3.395005069255314, + "50.0" : 3.3986561825358588, + "90.0" : 3.4045197188276344, + "95.0" : 3.4045197188276344, + "99.0" : 3.4045197188276344, + "99.9" : 3.4045197188276344, + "99.99" : 3.4045197188276344, + "99.999" : 3.4045197188276344, + "99.9999" : 3.4045197188276344, + "100.0" : 3.4045197188276344 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.395005069255314, + 3.4045197188276344 + ], + [ + 3.396358694557847, + 3.4009536705138705 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7185863296289448, + "scoreError" : 0.0226247904680873, + "scoreConfidence" : [ + 1.6959615391608573, + 1.7412111200970322 + ], + "scorePercentiles" : { + "0.0" : 1.713896569825601, + "50.0" : 1.7191667413071396, + "90.0" : 1.7221152660758985, + "95.0" : 1.7221152660758985, + "99.0" : 1.7221152660758985, + "99.9" : 1.7221152660758985, + "99.99" : 1.7221152660758985, + "99.999" : 1.7221152660758985, + "99.9999" : 1.7221152660758985, + "100.0" : 1.7221152660758985 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.713896569825601, + 1.718257222681635 + ], + [ + 1.7200762599326442, + 1.7221152660758985 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8638131333573812, + "scoreError" : 0.005739607080341613, + "scoreConfidence" : [ + 0.8580735262770396, + 0.8695527404377228 + ], + "scorePercentiles" : { + "0.0" : 0.8629604388633407, + "50.0" : 0.8637508804684315, + "90.0" : 0.8647903336293211, + "95.0" : 0.8647903336293211, + "99.0" : 0.8647903336293211, + "99.9" : 0.8647903336293211, + "99.99" : 0.8647903336293211, + "99.999" : 0.8647903336293211, + "99.9999" : 0.8647903336293211, + "100.0" : 0.8647903336293211 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8629604388633407, + 0.8647903336293211 + ], + [ + 0.8631690751649713, + 0.8643326857718918 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.875310471082843, + "scoreError" : 0.26777051507050426, + "scoreConfidence" : [ + 15.607539956012339, + 16.143080986153347 + ], + "scorePercentiles" : { + "0.0" : 15.612288653326042, + "50.0" : 15.832222806276663, + "90.0" : 16.106444002568377, + "95.0" : 16.106444002568377, + "99.0" : 16.106444002568377, + "99.9" : 16.106444002568377, + "99.99" : 16.106444002568377, + "99.999" : 16.106444002568377, + "99.9999" : 16.106444002568377, + "100.0" : 16.106444002568377 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.106444002568377, + 16.047190666002482, + 16.011487463515408 + ], + [ + 15.753348985453242, + 15.78377177928709, + 15.925255493182311 + ], + [ + 15.832222806276663, + 15.805784390133978, + 15.612288653326042 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2667.7601557240364, + "scoreError" : 119.67998425181611, + "scoreConfidence" : [ + 2548.08017147222, + 2787.4401399758526 + ], + "scorePercentiles" : { + "0.0" : 2558.413530316072, + "50.0" : 2697.246014837451, + "90.0" : 2745.2269193723982, + "95.0" : 2745.2269193723982, + "99.0" : 2745.2269193723982, + "99.9" : 2745.2269193723982, + "99.99" : 2745.2269193723982, + "99.999" : 2745.2269193723982, + "99.9999" : 2745.2269193723982, + "100.0" : 2745.2269193723982 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2601.2023290761535, + 2568.775645722441, + 2558.413530316072 + ], + [ + 2692.6922111857752, + 2708.3682091572205, + 2745.2269193723982 + ], + [ + 2721.1608852061686, + 2716.755656642648, + 2697.246014837451 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69653.26025364155, + "scoreError" : 837.2247301229313, + "scoreConfidence" : [ + 68816.03552351861, + 70490.48498376449 + ], + "scorePercentiles" : { + "0.0" : 69143.04281828675, + "50.0" : 69490.61975836863, + "90.0" : 70297.39157492763, + "95.0" : 70297.39157492763, + "99.0" : 70297.39157492763, + "99.9" : 70297.39157492763, + "99.99" : 70297.39157492763, + "99.999" : 70297.39157492763, + "99.9999" : 70297.39157492763, + "100.0" : 70297.39157492763 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69673.21206564475, + 69226.62057270289, + 69143.04281828675 + ], + [ + 69360.11899118814, + 69148.32384924784, + 69490.61975836863 + ], + [ + 70265.82211287168, + 70274.19053953572, + 70297.39157492763 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 325.76357997471234, + "scoreError" : 15.438554362778062, + "scoreConfidence" : [ + 310.3250256119343, + 341.2021343374904 + ], + "scorePercentiles" : { + "0.0" : 312.51355700005786, + "50.0" : 329.8447893587314, + "90.0" : 335.30161127464805, + "95.0" : 335.30161127464805, + "99.0" : 335.30161127464805, + "99.9" : 335.30161127464805, + "99.99" : 335.30161127464805, + "99.999" : 335.30161127464805, + "99.9999" : 335.30161127464805, + "100.0" : 335.30161127464805 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 335.30161127464805, + 333.0629081494773, + 330.14557873677194 + ], + [ + 329.8447893587314, + 333.10079335684634, + 328.95696746140584 + ], + [ + 313.93428796549847, + 312.51355700005786, + 315.0117264689737 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.49485554121512, + "scoreError" : 3.793394744918793, + "scoreConfidence" : [ + 99.70146079629632, + 107.28825028613392 + ], + "scorePercentiles" : { + "0.0" : 100.45672061279393, + "50.0" : 102.92956348814475, + "90.0" : 106.59142705404575, + "95.0" : 106.59142705404575, + "99.0" : 106.59142705404575, + "99.9" : 106.59142705404575, + "99.99" : 106.59142705404575, + "99.999" : 106.59142705404575, + "99.9999" : 106.59142705404575, + "100.0" : 106.59142705404575 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 106.59142705404575, + 106.51678823289815, + 105.1312372742135 + ], + [ + 102.92956348814475, + 100.45672061279393, + 100.84404127845603 + ], + [ + 102.08705881148529, + 104.08286168477012, + 102.81400143412843 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0631853564618406, + "scoreError" : 0.0015354385052261798, + "scoreConfidence" : [ + 0.061649917956614425, + 0.06472079496706679 + ], + "scorePercentiles" : { + "0.0" : 0.0622281343053248, + "50.0" : 0.06272677993903052, + "90.0" : 0.0644954543314501, + "95.0" : 0.0644954543314501, + "99.0" : 0.0644954543314501, + "99.9" : 0.0644954543314501, + "99.99" : 0.0644954543314501, + "99.999" : 0.0644954543314501, + "99.9999" : 0.0644954543314501, + "100.0" : 0.0644954543314501 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06427183367932593, + 0.0644954543314501, + 0.06438153322045247 + ], + [ + 0.06272677993903052, + 0.06272599818724675, + 0.0627533352870303 + ], + [ + 0.06256258656673465, + 0.0622281343053248, + 0.06252255263996999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.8448266611457985E-4, + "scoreError" : 4.210014110702952E-6, + "scoreConfidence" : [ + 3.802726520038769E-4, + 3.886926802252828E-4 + ], + "scorePercentiles" : { + "0.0" : 3.813840175864892E-4, + "50.0" : 3.838468919576846E-4, + "90.0" : 3.8902695347126055E-4, + "95.0" : 3.8902695347126055E-4, + "99.0" : 3.8902695347126055E-4, + "99.9" : 3.8902695347126055E-4, + "99.99" : 3.8902695347126055E-4, + "99.999" : 3.8902695347126055E-4, + "99.9999" : 3.8902695347126055E-4, + "100.0" : 3.8902695347126055E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8159715463319407E-4, + 3.830467416295346E-4, + 3.813840175864892E-4 + ], + [ + 3.8554534892830454E-4, + 3.833462317780834E-4, + 3.838468919576846E-4 + ], + [ + 3.866754638332235E-4, + 3.8587519121344437E-4, + 3.8902695347126055E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014356945249008832, + "scoreError" : 4.749203126173207E-4, + "scoreConfidence" : [ + 0.013882024936391511, + 0.014831865561626153 + ], + "scorePercentiles" : { + "0.0" : 0.014186610823678286, + "50.0" : 0.014250738606324111, + "90.0" : 0.015081788841130516, + "95.0" : 0.015081788841130516, + "99.0" : 0.015081788841130516, + "99.9" : 0.015081788841130516, + "99.99" : 0.015081788841130516, + "99.999" : 0.015081788841130516, + "99.9999" : 0.015081788841130516, + "100.0" : 0.015081788841130516 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014211193623522056, + 0.014198740368054954, + 0.014186610823678286 + ], + [ + 0.014194806765726226, + 0.014383023576350585, + 0.014250738606324111 + ], + [ + 0.014355401821679275, + 0.014350202814613489, + 0.015081788841130516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9889173184430794, + "scoreError" : 0.020906436622996124, + "scoreConfidence" : [ + 0.9680108818200833, + 1.0098237550660756 + ], + "scorePercentiles" : { + "0.0" : 0.9751137195787831, + "50.0" : 0.9838115681259223, + "90.0" : 1.0076507319899244, + "95.0" : 1.0076507319899244, + "99.0" : 1.0076507319899244, + "99.9" : 1.0076507319899244, + "99.99" : 1.0076507319899244, + "99.999" : 1.0076507319899244, + "99.9999" : 1.0076507319899244, + "100.0" : 1.0076507319899244 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0076507319899244, + 1.006104635915493, + 1.0008279665732587 + ], + [ + 0.9845124068714314, + 0.9838115681259223, + 0.9837508866810939 + ], + [ + 0.9790087858051885, + 0.9751137195787831, + 0.979475164446621 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013070564786537432, + "scoreError" : 3.312438477869377E-4, + "scoreConfidence" : [ + 0.012739320938750494, + 0.01340180863432437 + ], + "scorePercentiles" : { + "0.0" : 0.01294236621136469, + "50.0" : 0.013038706144191437, + "90.0" : 0.0132176846025943, + "95.0" : 0.0132176846025943, + "99.0" : 0.0132176846025943, + "99.9" : 0.0132176846025943, + "99.99" : 0.0132176846025943, + "99.999" : 0.0132176846025943, + "99.9999" : 0.0132176846025943, + "100.0" : 0.0132176846025943 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01294236621136469, + 0.013041755751930787, + 0.013035656536452087 + ], + [ + 0.012973304387985968, + 0.013212621228896751, + 0.0132176846025943 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9320503683012595, + "scoreError" : 0.13073817145027877, + "scoreConfidence" : [ + 3.8013121968509807, + 4.062788539751538 + ], + "scorePercentiles" : { + "0.0" : 3.886556063714064, + "50.0" : 3.9285158029082803, + "90.0" : 3.9836880589171972, + "95.0" : 3.9836880589171972, + "99.0" : 3.9836880589171972, + "99.9" : 3.9836880589171972, + "99.99" : 3.9836880589171972, + "99.999" : 3.9836880589171972, + "99.9999" : 3.9836880589171972, + "100.0" : 3.9836880589171972 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9627668122028528, + 3.975874643879173, + 3.9836880589171972 + ], + [ + 3.886556063714064, + 3.8942647936137074, + 3.88915183748056 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.004364586156701, + "scoreError" : 0.14161123897060376, + "scoreConfidence" : [ + 2.8627533471860973, + 3.145975825127305 + ], + "scorePercentiles" : { + "0.0" : 2.899472187880545, + "50.0" : 2.9752824544913743, + "90.0" : 3.116214405919003, + "95.0" : 3.116214405919003, + "99.0" : 3.116214405919003, + "99.9" : 3.116214405919003, + "99.99" : 3.116214405919003, + "99.999" : 3.116214405919003, + "99.9999" : 3.116214405919003, + "100.0" : 3.116214405919003 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.1080275556246115, + 3.116214405919003, + 3.1107170768273718 + ], + [ + 2.94470944581861, + 2.9752824544913743, + 2.982728600954369 + ], + [ + 2.969614950415677, + 2.9325145974787454, + 2.899472187880545 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17564792482371683, + "scoreError" : 0.002974252867516921, + "scoreConfidence" : [ + 0.1726736719561999, + 0.17862217769123376 + ], + "scorePercentiles" : { + "0.0" : 0.1731033127055565, + "50.0" : 0.1768566043965761, + "90.0" : 0.17698233668412855, + "95.0" : 0.17698233668412855, + "99.0" : 0.17698233668412855, + "99.9" : 0.17698233668412855, + "99.99" : 0.17698233668412855, + "99.999" : 0.17698233668412855, + "99.9999" : 0.17698233668412855, + "100.0" : 0.17698233668412855 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17686704975150774, + 0.1768795816898668, + 0.1769473231708396 + ], + [ + 0.1768566043965761, + 0.1763903096094825, + 0.17698233668412855 + ], + [ + 0.17349474921929217, + 0.17331005618620127, + 0.1731033127055565 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3224626777755301, + "scoreError" : 0.016155882614857214, + "scoreConfidence" : [ + 0.3063067951606729, + 0.33861856039038735 + ], + "scorePercentiles" : { + "0.0" : 0.3106331735470444, + "50.0" : 0.32324063284633786, + "90.0" : 0.333969142098584, + "95.0" : 0.333969142098584, + "99.0" : 0.333969142098584, + "99.9" : 0.333969142098584, + "99.99" : 0.333969142098584, + "99.999" : 0.333969142098584, + "99.9999" : 0.333969142098584, + "100.0" : 0.333969142098584 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32324063284633786, + 0.3228341037221164, + 0.32352256436220117 + ], + [ + 0.333969142098584, + 0.3330036538909793, + 0.3325125170074813 + ], + [ + 0.31173687711587017, + 0.31071143538915647, + 0.3106331735470444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16336138611669254, + "scoreError" : 0.013309637759159056, + "scoreConfidence" : [ + 0.1500517483575335, + 0.1766710238758516 + ], + "scorePercentiles" : { + "0.0" : 0.15236389503915654, + "50.0" : 0.16749676753651346, + "90.0" : 0.17041830118777798, + "95.0" : 0.17041830118777798, + "99.0" : 0.17041830118777798, + "99.9" : 0.17041830118777798, + "99.99" : 0.17041830118777798, + "99.999" : 0.17041830118777798, + "99.9999" : 0.17041830118777798, + "100.0" : 0.17041830118777798 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16764070001508727, + 0.1672745904688624, + 0.16749676753651346 + ], + [ + 0.15236389503915654, + 0.15341220566081154, + 0.15290987807153014 + ], + [ + 0.17041830118777798, + 0.16932816888482508, + 0.1694079681856683 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3916901877748583, + "scoreError" : 0.013066770761379609, + "scoreConfidence" : [ + 0.3786234170134787, + 0.40475695853623794 + ], + "scorePercentiles" : { + "0.0" : 0.3831963658274897, + "50.0" : 0.3880605029491657, + "90.0" : 0.40703388969840043, + "95.0" : 0.40703388969840043, + "99.0" : 0.40703388969840043, + "99.9" : 0.40703388969840043, + "99.99" : 0.40703388969840043, + "99.999" : 0.40703388969840043, + "99.9999" : 0.40703388969840043, + "100.0" : 0.40703388969840043 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.40703388969840043, + 0.3974855021264756, + 0.3967198541336084 + ], + [ + 0.3880605029491657, + 0.3875346873086611, + 0.3875294380546406 + ], + [ + 0.39397768474963557, + 0.38367376512564744, + 0.3831963658274897 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15989002361063018, + "scoreError" : 0.004543996585626853, + "scoreConfidence" : [ + 0.15534602702500333, + 0.16443402019625702 + ], + "scorePercentiles" : { + "0.0" : 0.15594041546594312, + "50.0" : 0.1613597867688584, + "90.0" : 0.1622719936715023, + "95.0" : 0.1622719936715023, + "99.0" : 0.1622719936715023, + "99.9" : 0.1622719936715023, + "99.99" : 0.1622719936715023, + "99.999" : 0.1622719936715023, + "99.9999" : 0.1622719936715023, + "100.0" : 0.1622719936715023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15676905651356013, + 0.15594041546594312, + 0.15631288311241714 + ], + [ + 0.16217939525153255, + 0.1622719936715023, + 0.16147748038883236 + ], + [ + 0.1618514822211792, + 0.1613597867688584, + 0.1608477191018465 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04783453527496373, + "scoreError" : 7.974832162056922E-4, + "scoreConfidence" : [ + 0.047037052058758036, + 0.048632018491169424 + ], + "scorePercentiles" : { + "0.0" : 0.04737623978226162, + "50.0" : 0.04774475477679637, + "90.0" : 0.04894417089131105, + "95.0" : 0.04894417089131105, + "99.0" : 0.04894417089131105, + "99.9" : 0.04894417089131105, + "99.99" : 0.04894417089131105, + "99.999" : 0.04894417089131105, + "99.9999" : 0.04894417089131105, + "100.0" : 0.04894417089131105 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04749892322380233, + 0.047416286812295816, + 0.04737623978226162 + ], + [ + 0.04774475477679637, + 0.047800833626508096, + 0.04774200215790931 + ], + [ + 0.04894417089131105, + 0.04804041357891248, + 0.04794719262487654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9631059.90526732, + "scoreError" : 171531.34109600133, + "scoreConfidence" : [ + 9459528.56417132, + 9802591.246363321 + ], + "scorePercentiles" : { + "0.0" : 9512877.128326995, + "50.0" : 9688628.696030978, + "90.0" : 9758324.88195122, + "95.0" : 9758324.88195122, + "99.0" : 9758324.88195122, + "99.9" : 9758324.88195122, + "99.99" : 9758324.88195122, + "99.999" : 9758324.88195122, + "99.9999" : 9758324.88195122, + "100.0" : 9758324.88195122 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9758324.88195122, + 9737305.494644595, + 9534123.904671116 + ], + [ + 9694253.833333334, + 9696302.620155038, + 9688628.696030978 + ], + [ + 9534044.147759771, + 9523678.440532826, + 9512877.128326995 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + diff --git a/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..7d0bb435fc --- /dev/null +++ b/performance-results/2025-04-03T04:20:12Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4141460140654183, + "scoreError" : 0.02523433949722112, + "scoreConfidence" : [ + 3.388911674568197, + 3.4393803535626395 + ], + "scorePercentiles" : { + "0.0" : 3.4109114729011334, + "50.0" : 3.412942036862178, + "90.0" : 3.419788509636182, + "95.0" : 3.419788509636182, + "99.0" : 3.419788509636182, + "99.9" : 3.419788509636182, + "99.99" : 3.419788509636182, + "99.999" : 3.419788509636182, + "99.9999" : 3.419788509636182, + "100.0" : 3.419788509636182 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4109114729011334, + 3.413465927756727 + ], + [ + 3.412418145967629, + 3.419788509636182 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7201150901156992, + "scoreError" : 0.028373580112449958, + "scoreConfidence" : [ + 1.6917415100032491, + 1.7484886702281492 + ], + "scorePercentiles" : { + "0.0" : 1.715451119237048, + "50.0" : 1.7205134919863199, + "90.0" : 1.7239822572531092, + "95.0" : 1.7239822572531092, + "99.0" : 1.7239822572531092, + "99.9" : 1.7239822572531092, + "99.99" : 1.7239822572531092, + "99.999" : 1.7239822572531092, + "99.9999" : 1.7239822572531092, + "100.0" : 1.7239822572531092 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7239822572531092, + 1.7237394376447464 + ], + [ + 1.715451119237048, + 1.7172875463278934 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8659551304749118, + "scoreError" : 0.010436027041818195, + "scoreConfidence" : [ + 0.8555191034330936, + 0.87639115751673 + ], + "scorePercentiles" : { + "0.0" : 0.8639684361227421, + "50.0" : 0.8662045209892448, + "90.0" : 0.8674430437984155, + "95.0" : 0.8674430437984155, + "99.0" : 0.8674430437984155, + "99.9" : 0.8674430437984155, + "99.99" : 0.8674430437984155, + "99.999" : 0.8674430437984155, + "99.9999" : 0.8674430437984155, + "100.0" : 0.8674430437984155 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8639684361227421, + 0.8653272198110116 + ], + [ + 0.8674430437984155, + 0.867081822167478 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.252654676449723, + "scoreError" : 0.10537930227104682, + "scoreConfidence" : [ + 16.147275374178676, + 16.35803397872077 + ], + "scorePercentiles" : { + "0.0" : 16.168129744860877, + "50.0" : 16.268725836178465, + "90.0" : 16.355642468960376, + "95.0" : 16.355642468960376, + "99.0" : 16.355642468960376, + "99.9" : 16.355642468960376, + "99.99" : 16.355642468960376, + "99.999" : 16.355642468960376, + "99.9999" : 16.355642468960376, + "100.0" : 16.355642468960376 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.355642468960376, + 16.272526956761183, + 16.268725836178465 + ], + [ + 16.168129744860877, + 16.274173548129912, + 16.318351985527347 + ], + [ + 16.17852783509764, + 16.23478021354547, + 16.203033498986223 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2711.90349954842, + "scoreError" : 92.62280441102727, + "scoreConfidence" : [ + 2619.2806951373927, + 2804.526303959447 + ], + "scorePercentiles" : { + "0.0" : 2649.300552891204, + "50.0" : 2690.6946489145466, + "90.0" : 2797.8890502273834, + "95.0" : 2797.8890502273834, + "99.0" : 2797.8890502273834, + "99.9" : 2797.8890502273834, + "99.99" : 2797.8890502273834, + "99.999" : 2797.8890502273834, + "99.9999" : 2797.8890502273834, + "100.0" : 2797.8890502273834 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2666.717149029226, + 2649.300552891204, + 2669.5037781743854 + ], + [ + 2680.457249875851, + 2705.622885659174, + 2690.6946489145466 + ], + [ + 2797.8890502273834, + 2766.6792631764147, + 2780.266917987591 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69111.95639690965, + "scoreError" : 83.29528789521649, + "scoreConfidence" : [ + 69028.66110901443, + 69195.25168480487 + ], + "scorePercentiles" : { + "0.0" : 69046.25547453541, + "50.0" : 69118.4881065913, + "90.0" : 69182.46390916892, + "95.0" : 69182.46390916892, + "99.0" : 69182.46390916892, + "99.9" : 69182.46390916892, + "99.99" : 69182.46390916892, + "99.999" : 69182.46390916892, + "99.9999" : 69182.46390916892, + "100.0" : 69182.46390916892 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69162.28535818945, + 69182.46390916892, + 69118.4881065913 + ], + [ + 69136.79708672072, + 69054.3599191844, + 69046.25547453541 + ], + [ + 69060.3327196236, + 69101.69400475129, + 69144.93099342177 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 347.3278857421012, + "scoreError" : 11.852637802821008, + "scoreConfidence" : [ + 335.4752479392802, + 359.1805235449222 + ], + "scorePercentiles" : { + "0.0" : 337.69633644382174, + "50.0" : 349.8230392811812, + "90.0" : 354.5053703216764, + "95.0" : 354.5053703216764, + "99.0" : 354.5053703216764, + "99.9" : 354.5053703216764, + "99.99" : 354.5053703216764, + "99.999" : 354.5053703216764, + "99.9999" : 354.5053703216764, + "100.0" : 354.5053703216764 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.8230392811812, + 349.75558705623996, + 350.2228570416806 + ], + [ + 353.86196935718107, + 354.5053703216764, + 353.13588747335746 + ], + [ + 338.3428057877555, + 338.60711891601716, + 337.69633644382174 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.73978567279248, + "scoreError" : 2.23951667478191, + "scoreConfidence" : [ + 105.50026899801057, + 109.97930234757439 + ], + "scorePercentiles" : { + "0.0" : 105.94123260786559, + "50.0" : 108.09616081351409, + "90.0" : 109.21003352792893, + "95.0" : 109.21003352792893, + "99.0" : 109.21003352792893, + "99.9" : 109.21003352792893, + "99.99" : 109.21003352792893, + "99.999" : 109.21003352792893, + "99.9999" : 109.21003352792893, + "100.0" : 109.21003352792893 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 105.97381347858634, + 105.94123260786559, + 106.4660416765197 + ], + [ + 109.21003352792893, + 109.12797422747417, + 109.0807392320912 + ], + [ + 107.58179783757122, + 108.09616081351409, + 108.18027765358097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061909221750764645, + "scoreError" : 7.93118736000689E-4, + "scoreConfidence" : [ + 0.06111610301476396, + 0.06270234048676533 + ], + "scorePercentiles" : { + "0.0" : 0.06120587202007528, + "50.0" : 0.06209829328042624, + "90.0" : 0.06241124775010922, + "95.0" : 0.06241124775010922, + "99.0" : 0.06241124775010922, + "99.9" : 0.06241124775010922, + "99.99" : 0.06241124775010922, + "99.999" : 0.06241124775010922, + "99.9999" : 0.06241124775010922, + "100.0" : 0.06241124775010922 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06120587202007528, + 0.06131094404831244, + 0.061437342034772996 + ], + [ + 0.06209829328042624, + 0.06231152692741468, + 0.0619119299166677 + ], + [ + 0.06241124775010922, + 0.06213026141468112, + 0.06236557836442216 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7692210394697193E-4, + "scoreError" : 1.9364149312350478E-5, + "scoreConfidence" : [ + 3.5755795463462145E-4, + 3.962862532593224E-4 + ], + "scorePercentiles" : { + "0.0" : 3.610834907005055E-4, + "50.0" : 3.804653194718181E-4, + "90.0" : 3.906616198985073E-4, + "95.0" : 3.906616198985073E-4, + "99.0" : 3.906616198985073E-4, + "99.9" : 3.906616198985073E-4, + "99.99" : 3.906616198985073E-4, + "99.999" : 3.906616198985073E-4, + "99.9999" : 3.906616198985073E-4, + "100.0" : 3.906616198985073E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8721810412907065E-4, + 3.906616198985073E-4, + 3.866140347051792E-4 + ], + [ + 3.6320046181129455E-4, + 3.610834907005055E-4, + 3.628257406006513E-4 + ], + [ + 3.789365386107795E-4, + 3.804653194718181E-4, + 3.8129362559494065E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014347172959238966, + "scoreError" : 5.008339226000911E-4, + "scoreConfidence" : [ + 0.013846339036638875, + 0.014848006881839057 + ], + "scorePercentiles" : { + "0.0" : 0.014093595788880276, + "50.0" : 0.014189940964876059, + "90.0" : 0.01476075187496033, + "95.0" : 0.01476075187496033, + "99.0" : 0.01476075187496033, + "99.9" : 0.01476075187496033, + "99.99" : 0.01476075187496033, + "99.999" : 0.01476075187496033, + "99.9999" : 0.01476075187496033, + "100.0" : 0.01476075187496033 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014122154853159652, + 0.014099223867423879, + 0.014093595788880276 + ], + [ + 0.01418198724770538, + 0.014189940964876059, + 0.014215869308036984 + ], + [ + 0.014730909794904051, + 0.01476075187496033, + 0.014730122933204103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9851786290563604, + "scoreError" : 0.007389816834762871, + "scoreConfidence" : [ + 0.9777888122215975, + 0.9925684458911234 + ], + "scorePercentiles" : { + "0.0" : 0.9780690916381418, + "50.0" : 0.986488261195502, + "90.0" : 0.9905183169572108, + "95.0" : 0.9905183169572108, + "99.0" : 0.9905183169572108, + "99.9" : 0.9905183169572108, + "99.99" : 0.9905183169572108, + "99.999" : 0.9905183169572108, + "99.9999" : 0.9905183169572108, + "100.0" : 0.9905183169572108 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9838497288735858, + 0.986488261195502, + 0.9877146994567901 + ], + [ + 0.9813227989402414, + 0.9807172931254291, + 0.9780690916381418 + ], + [ + 0.9900390989010989, + 0.9905183169572108, + 0.9878883724192433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013110931908467226, + "scoreError" : 3.1593701265900207E-4, + "scoreConfidence" : [ + 0.012794994895808223, + 0.013426868921126229 + ], + "scorePercentiles" : { + "0.0" : 0.012994717709554265, + "50.0" : 0.013109973759007349, + "90.0" : 0.013229475688776117, + "95.0" : 0.013229475688776117, + "99.0" : 0.013229475688776117, + "99.9" : 0.013229475688776117, + "99.99" : 0.013229475688776117, + "99.999" : 0.013229475688776117, + "99.9999" : 0.013229475688776117, + "100.0" : 0.013229475688776117 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01302357288717445, + 0.013008309857432749, + 0.012994717709554265 + ], + [ + 0.013229475688776117, + 0.013213140677025528, + 0.013196374630840247 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.7185666837587, + "scoreError" : 0.059501212486211645, + "scoreConfidence" : [ + 3.659065471272488, + 3.7780678962449117 + ], + "scorePercentiles" : { + "0.0" : 3.6901369336283185, + "50.0" : 3.71791115056773, + "90.0" : 3.748282396551724, + "95.0" : 3.748282396551724, + "99.0" : 3.748282396551724, + "99.9" : 3.748282396551724, + "99.99" : 3.748282396551724, + "99.999" : 3.748282396551724, + "99.9999" : 3.748282396551724, + "100.0" : 3.748282396551724 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7134024246473647, + 3.702479917838638, + 3.6901369336283185 + ], + [ + 3.734678553398058, + 3.748282396551724, + 3.7224198764880954 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.808103327650971, + "scoreError" : 0.038645407159203296, + "scoreConfidence" : [ + 2.7694579204917673, + 2.8467487348101743 + ], + "scorePercentiles" : { + "0.0" : 2.776432284564131, + "50.0" : 2.8192024323562572, + "90.0" : 2.8317730673839185, + "95.0" : 2.8317730673839185, + "99.0" : 2.8317730673839185, + "99.9" : 2.8317730673839185, + "99.99" : 2.8317730673839185, + "99.999" : 2.8317730673839185, + "99.9999" : 2.8317730673839185, + "100.0" : 2.8317730673839185 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8192024323562572, + 2.812318770528684, + 2.825893922576999 + ], + [ + 2.8219859692437925, + 2.8317730673839185, + 2.826690167326173 + ], + [ + 2.782025319054242, + 2.776432284564131, + 2.776608015824542 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17652238855933255, + "scoreError" : 0.003125705040678961, + "scoreConfidence" : [ + 0.1733966835186536, + 0.17964809360001152 + ], + "scorePercentiles" : { + "0.0" : 0.17452421106457242, + "50.0" : 0.17574864547196006, + "90.0" : 0.17961467400675335, + "95.0" : 0.17961467400675335, + "99.0" : 0.17961467400675335, + "99.9" : 0.17961467400675335, + "99.99" : 0.17961467400675335, + "99.999" : 0.17961467400675335, + "99.9999" : 0.17961467400675335, + "100.0" : 0.17961467400675335 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17961467400675335, + 0.17849365485667368, + 0.17829464331051206 + ], + [ + 0.17667822780516246, + 0.175622275771838, + 0.17574864547196006 + ], + [ + 0.175139794949035, + 0.17452421106457242, + 0.17458536979748604 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33159081262614715, + "scoreError" : 0.012872917742416154, + "scoreConfidence" : [ + 0.318717894883731, + 0.3444637303685633 + ], + "scorePercentiles" : { + "0.0" : 0.32417070874258486, + "50.0" : 0.327614753407155, + "90.0" : 0.34253819167665694, + "95.0" : 0.34253819167665694, + "99.0" : 0.34253819167665694, + "99.9" : 0.34253819167665694, + "99.99" : 0.34253819167665694, + "99.999" : 0.34253819167665694, + "99.9999" : 0.34253819167665694, + "100.0" : 0.34253819167665694 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.327614753407155, + 0.32804313826472037, + 0.3272351357657068 + ], + [ + 0.32650751772887554, + 0.32417070874258486, + 0.3257033246482543 + ], + [ + 0.34253819167665694, + 0.3412840927923009, + 0.3412204506090695 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16257438283358802, + "scoreError" : 0.0015079171733187204, + "scoreConfidence" : [ + 0.1610664656602693, + 0.16408230000690674 + ], + "scorePercentiles" : { + "0.0" : 0.16145170934306333, + "50.0" : 0.16253732088872996, + "90.0" : 0.16372694721590073, + "95.0" : 0.16372694721590073, + "99.0" : 0.16372694721590073, + "99.9" : 0.16372694721590073, + "99.99" : 0.16372694721590073, + "99.999" : 0.16372694721590073, + "99.9999" : 0.16372694721590073, + "100.0" : 0.16372694721590073 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16217501864975756, + 0.16253732088872996, + 0.16269733150573498 + ], + [ + 0.16175499032722448, + 0.1616261715800362, + 0.16145170934306333 + ], + [ + 0.16363694076449797, + 0.16372694721590073, + 0.16356301522734706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3891936853118775, + "scoreError" : 0.005998609157386771, + "scoreConfidence" : [ + 0.3831950761544907, + 0.39519229446926424 + ], + "scorePercentiles" : { + "0.0" : 0.3858164131558642, + "50.0" : 0.38843062722858807, + "90.0" : 0.39801564624875624, + "95.0" : 0.39801564624875624, + "99.0" : 0.39801564624875624, + "99.9" : 0.39801564624875624, + "99.99" : 0.39801564624875624, + "99.999" : 0.39801564624875624, + "99.9999" : 0.39801564624875624, + "100.0" : 0.39801564624875624 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39801564624875624, + 0.3878194711859148, + 0.38843062722858807 + ], + [ + 0.3893662909593521, + 0.38925788793741, + 0.3895342826705099 + ], + [ + 0.3883784769505612, + 0.38612407146994093, + 0.3858164131558642 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15658902672809438, + "scoreError" : 0.003943926804707067, + "scoreConfidence" : [ + 0.15264509992338732, + 0.16053295353280145 + ], + "scorePercentiles" : { + "0.0" : 0.15414155185967293, + "50.0" : 0.15551880479611832, + "90.0" : 0.16021518488256592, + "95.0" : 0.16021518488256592, + "99.0" : 0.16021518488256592, + "99.9" : 0.16021518488256592, + "99.99" : 0.16021518488256592, + "99.999" : 0.16021518488256592, + "99.9999" : 0.16021518488256592, + "100.0" : 0.16021518488256592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1564305789794769, + 0.15551880479611832, + 0.15540823026356684 + ], + [ + 0.15484570807655385, + 0.1542891126745352, + 0.15414155185967293 + ], + [ + 0.16021518488256592, + 0.15947678614486652, + 0.1589752828754928 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04743935270487015, + "scoreError" : 0.0014339295540742704, + "scoreConfidence" : [ + 0.04600542315079588, + 0.048873282258944425 + ], + "scorePercentiles" : { + "0.0" : 0.04618683700436459, + "50.0" : 0.0473992635310958, + "90.0" : 0.04867919720586088, + "95.0" : 0.04867919720586088, + "99.0" : 0.04867919720586088, + "99.9" : 0.04867919720586088, + "99.99" : 0.04867919720586088, + "99.999" : 0.04867919720586088, + "99.9999" : 0.04867919720586088, + "100.0" : 0.04867919720586088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0473992635310958, + 0.04618683700436459, + 0.04625727953835835 + ], + [ + 0.047923044246684976, + 0.04867919720586088, + 0.04845878558760249 + ], + [ + 0.04747248577504973, + 0.047303504564719684, + 0.047273776890094876 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9071703.616870854, + "scoreError" : 160321.0639152296, + "scoreConfidence" : [ + 8911382.552955624, + 9232024.680786084 + ], + "scorePercentiles" : { + "0.0" : 8985842.091644205, + "50.0" : 9013161.59009009, + "90.0" : 9212517.708103132, + "95.0" : 9212517.708103132, + "99.0" : 9212517.708103132, + "99.9" : 9212517.708103132, + "99.99" : 9212517.708103132, + "99.999" : 9212517.708103132, + "99.9999" : 9212517.708103132, + "100.0" : 9212517.708103132 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9172326.609532539, + 9212517.708103132, + 9203796.53449862 + ], + [ + 9047417.420433996, + 9013161.59009009, + 9006460.631863186 + ], + [ + 9005402.827182718, + 8985842.091644205, + 8998407.13848921 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 38cfb71c86891fc301801ce22c7f6fa9859fe799 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 04:20:31 +0000 Subject: [PATCH 319/345] Add performance results for commit bfd7b46570071ef5cb5edd7377fbc51fb477ee3d --- ...0071ef5cb5edd7377fbc51fb477ee3d-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json diff --git a/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json b/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json new file mode 100644 index 0000000000..69a93bc83d --- /dev/null +++ b/performance-results/2025-04-03T04:20:22Z-bfd7b46570071ef5cb5edd7377fbc51fb477ee3d-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4171100486983814, + "scoreError" : 0.029050359197470347, + "scoreConfidence" : [ + 3.388059689500911, + 3.4461604078958517 + ], + "scorePercentiles" : { + "0.0" : 3.4120508869424384, + "50.0" : 3.417248324070669, + "90.0" : 3.4218926597097488, + "95.0" : 3.4218926597097488, + "99.0" : 3.4218926597097488, + "99.9" : 3.4218926597097488, + "99.99" : 3.4218926597097488, + "99.999" : 3.4218926597097488, + "99.9999" : 3.4218926597097488, + "100.0" : 3.4218926597097488 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4120508869424384, + 3.4147862249287275 + ], + [ + 3.4197104232126105, + 3.4218926597097488 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7291216308035666, + "scoreError" : 0.010634177230505332, + "scoreConfidence" : [ + 1.7184874535730612, + 1.739755808034072 + ], + "scorePercentiles" : { + "0.0" : 1.7278385132821346, + "50.0" : 1.7286578762881986, + "90.0" : 1.7313322573557348, + "95.0" : 1.7313322573557348, + "99.0" : 1.7313322573557348, + "99.9" : 1.7313322573557348, + "99.99" : 1.7313322573557348, + "99.999" : 1.7313322573557348, + "99.9999" : 1.7313322573557348, + "100.0" : 1.7313322573557348 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7278385132821346, + 1.7278959373704097 + ], + [ + 1.7313322573557348, + 1.7294198152059874 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8672043251385466, + "scoreError" : 0.006581078982478564, + "scoreConfidence" : [ + 0.860623246156068, + 0.8737854041210252 + ], + "scorePercentiles" : { + "0.0" : 0.8660632068022843, + "50.0" : 0.8671657259458264, + "90.0" : 0.8684226418602491, + "95.0" : 0.8684226418602491, + "99.0" : 0.8684226418602491, + "99.9" : 0.8684226418602491, + "99.99" : 0.8684226418602491, + "99.999" : 0.8684226418602491, + "99.9999" : 0.8684226418602491, + "100.0" : 0.8684226418602491 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8667643732520639, + 0.8675670786395889 + ], + [ + 0.8660632068022843, + 0.8684226418602491 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.162001317325213, + "scoreError" : 0.12285363357149377, + "scoreConfidence" : [ + 16.03914768375372, + 16.284854950896708 + ], + "scorePercentiles" : { + "0.0" : 16.08098225063554, + "50.0" : 16.158180279448743, + "90.0" : 16.264393757728516, + "95.0" : 16.264393757728516, + "99.0" : 16.264393757728516, + "99.9" : 16.264393757728516, + "99.99" : 16.264393757728516, + "99.999" : 16.264393757728516, + "99.9999" : 16.264393757728516, + "100.0" : 16.264393757728516 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.2498132766456, + 16.232697591247195, + 16.264393757728516 + ], + [ + 16.167029538529444, + 16.158180279448743, + 16.13834542567008 + ], + [ + 16.08543601225834, + 16.08098225063554, + 16.08113372376346 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2713.372153938922, + "scoreError" : 38.77531189294057, + "scoreConfidence" : [ + 2674.5968420459817, + 2752.1474658318625 + ], + "scorePercentiles" : { + "0.0" : 2691.019153774729, + "50.0" : 2702.636105906266, + "90.0" : 2748.609138326982, + "95.0" : 2748.609138326982, + "99.0" : 2748.609138326982, + "99.9" : 2748.609138326982, + "99.99" : 2748.609138326982, + "99.999" : 2748.609138326982, + "99.9999" : 2748.609138326982, + "100.0" : 2748.609138326982 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2740.4996046953506, + 2748.609138326982, + 2741.3544851741417 + ], + [ + 2695.644525570017, + 2695.7406319067013, + 2691.019153774729 + ], + [ + 2705.513011761636, + 2699.332728334476, + 2702.636105906266 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70136.62092217, + "scoreError" : 1833.6126634576278, + "scoreConfidence" : [ + 68303.00825871238, + 71970.23358562762 + ], + "scorePercentiles" : { + "0.0" : 68636.20359353884, + "50.0" : 70840.18396558113, + "90.0" : 70914.97550703726, + "95.0" : 70914.97550703726, + "99.0" : 70914.97550703726, + "99.9" : 70914.97550703726, + "99.99" : 70914.97550703726, + "99.999" : 70914.97550703726, + "99.9999" : 70914.97550703726, + "100.0" : 70914.97550703726 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70884.08944043725, + 70894.06686001566, + 70759.17612968457 + ], + [ + 70887.07004709519, + 70840.18396558113, + 70914.97550703726 + ], + [ + 68636.20359353884, + 68734.45468992933, + 68679.36806621081 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 357.3760123281292, + "scoreError" : 8.909817000066589, + "scoreConfidence" : [ + 348.4661953280626, + 366.2858293281958 + ], + "scorePercentiles" : { + "0.0" : 351.1186240805577, + "50.0" : 357.0735177853829, + "90.0" : 363.5453188941034, + "95.0" : 363.5453188941034, + "99.0" : 363.5453188941034, + "99.9" : 363.5453188941034, + "99.99" : 363.5453188941034, + "99.999" : 363.5453188941034, + "99.9999" : 363.5453188941034, + "100.0" : 363.5453188941034 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 351.3800725684625, + 351.1186240805577, + 351.14898598830297 + ], + [ + 356.46301856590736, + 357.0735177853829, + 359.1732893240755 + ], + [ + 363.5453188941034, + 363.31735936112716, + 363.1639243852433 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 108.21095768888088, + "scoreError" : 1.728555284357556, + "scoreConfidence" : [ + 106.48240240452333, + 109.93951297323844 + ], + "scorePercentiles" : { + "0.0" : 106.6361791958133, + "50.0" : 108.34945308402088, + "90.0" : 109.38279632848486, + "95.0" : 109.38279632848486, + "99.0" : 109.38279632848486, + "99.9" : 109.38279632848486, + "99.99" : 109.38279632848486, + "99.999" : 109.38279632848486, + "99.9999" : 109.38279632848486, + "100.0" : 109.38279632848486 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.21218065367852, + 108.34945308402088, + 108.46737250455398 + ], + [ + 106.6361791958133, + 107.10942310914471, + 107.19210526928929 + ], + [ + 109.1947139384956, + 109.35439511644663, + 109.38279632848486 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06169959127089957, + "scoreError" : 0.0010302074088845569, + "scoreConfidence" : [ + 0.060669383862015015, + 0.06272979867978414 + ], + "scorePercentiles" : { + "0.0" : 0.06091269048924299, + "50.0" : 0.0620058904927547, + "90.0" : 0.0622928827164339, + "95.0" : 0.0622928827164339, + "99.0" : 0.0622928827164339, + "99.9" : 0.0622928827164339, + "99.99" : 0.0622928827164339, + "99.999" : 0.0622928827164339, + "99.9999" : 0.0622928827164339, + "100.0" : 0.0622928827164339 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06222775979141516, + 0.0622928827164339, + 0.0622715326828114 + ], + [ + 0.06091787278719283, + 0.06091326277029908, + 0.06091269048924299 + ], + [ + 0.0617303522657827, + 0.0620058904927547, + 0.06202407744216337 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6798945543601994E-4, + "scoreError" : 1.651439730618763E-5, + "scoreConfidence" : [ + 3.514750581298323E-4, + 3.845038527422076E-4 + ], + "scorePercentiles" : { + "0.0" : 3.5445183380887837E-4, + "50.0" : 3.6962223546356776E-4, + "90.0" : 3.7913274260289705E-4, + "95.0" : 3.7913274260289705E-4, + "99.0" : 3.7913274260289705E-4, + "99.9" : 3.7913274260289705E-4, + "99.99" : 3.7913274260289705E-4, + "99.999" : 3.7913274260289705E-4, + "99.9999" : 3.7913274260289705E-4, + "100.0" : 3.7913274260289705E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7913274260289705E-4, + 3.772585944041239E-4, + 3.7845987324760806E-4 + ], + [ + 3.6962223546356776E-4, + 3.698791820859403E-4, + 3.695285413619942E-4 + ], + [ + 3.5902273255519643E-4, + 3.5445183380887837E-4, + 3.545493633939737E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014403353417093919, + "scoreError" : 5.362041725711555E-4, + "scoreConfidence" : [ + 0.013867149244522764, + 0.014939557589665075 + ], + "scorePercentiles" : { + "0.0" : 0.01398167059872964, + "50.0" : 0.014544293900340769, + "90.0" : 0.014684813553348615, + "95.0" : 0.014684813553348615, + "99.0" : 0.014684813553348615, + "99.9" : 0.014684813553348615, + "99.99" : 0.014684813553348615, + "99.999" : 0.014684813553348615, + "99.9999" : 0.014684813553348615, + "100.0" : 0.014684813553348615 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014683949145623569, + 0.014679144894583022, + 0.014684813553348615 + ], + [ + 0.014533443404507641, + 0.014544293900340769, + 0.014547071132853868 + ], + [ + 0.013982993723109276, + 0.01398167059872964, + 0.013992800400748885 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9704870782068402, + "scoreError" : 0.010541865346184598, + "scoreConfidence" : [ + 0.9599452128606556, + 0.9810289435530248 + ], + "scorePercentiles" : { + "0.0" : 0.9624246163025695, + "50.0" : 0.9728594578793774, + "90.0" : 0.9772800762239813, + "95.0" : 0.9772800762239813, + "99.0" : 0.9772800762239813, + "99.9" : 0.9772800762239813, + "99.99" : 0.9772800762239813, + "99.999" : 0.9772800762239813, + "99.9999" : 0.9772800762239813, + "100.0" : 0.9772800762239813 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9760755084911185, + 0.9772800762239813, + 0.9765354366761059 + ], + [ + 0.9710249972812894, + 0.9728594578793774, + 0.9729500664461523 + ], + [ + 0.9625655503368624, + 0.9624246163025695, + 0.9626679942241048 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013325571908170615, + "scoreError" : 4.7289741439673064E-4, + "scoreConfidence" : [ + 0.012852674493773884, + 0.013798469322567345 + ], + "scorePercentiles" : { + "0.0" : 0.013084378469896164, + "50.0" : 0.013347866633788563, + "90.0" : 0.013475767826630661, + "95.0" : 0.013475767826630661, + "99.0" : 0.013475767826630661, + "99.9" : 0.013475767826630661, + "99.99" : 0.013475767826630661, + "99.999" : 0.013475767826630661, + "99.9999" : 0.013475767826630661, + "100.0" : 0.013475767826630661 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013084378469896164, + 0.013225057919112142, + 0.013227907234958916 + ], + [ + 0.01347249396580759, + 0.01346782603261821, + 0.013475767826630661 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.51804067922278, + "scoreError" : 0.10090682815622272, + "scoreConfidence" : [ + 3.417133851066557, + 3.6189475073790027 + ], + "scorePercentiles" : { + "0.0" : 3.4634543123268697, + "50.0" : 3.5154336537433952, + "90.0" : 3.556867966571835, + "95.0" : 3.556867966571835, + "99.0" : 3.556867966571835, + "99.9" : 3.556867966571835, + "99.99" : 3.556867966571835, + "99.999" : 3.556867966571835, + "99.9999" : 3.556867966571835, + "100.0" : 3.556867966571835 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.4634543123268697, + 3.5054302095304837, + 3.5006572841147654 + ], + [ + 3.525437097956307, + 3.556867966571835, + 3.5563972048364154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.788730153094184, + "scoreError" : 0.06903096873348752, + "scoreConfidence" : [ + 2.719699184360697, + 2.8577611218276715 + ], + "scorePercentiles" : { + "0.0" : 2.7437548197530863, + "50.0" : 2.783771960478709, + "90.0" : 2.849354674928775, + "95.0" : 2.849354674928775, + "99.0" : 2.849354674928775, + "99.9" : 2.849354674928775, + "99.99" : 2.849354674928775, + "99.999" : 2.849354674928775, + "99.9999" : 2.849354674928775, + "100.0" : 2.849354674928775 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.7891072551589513, + 2.783771960478709, + 2.775938651124063 + ], + [ + 2.824776698107879, + 2.840119266609881, + 2.849354674928775 + ], + [ + 2.7456887584408456, + 2.7460592932454695, + 2.7437548197530863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17712537921057037, + "scoreError" : 0.007302705141392033, + "scoreConfidence" : [ + 0.16982267406917834, + 0.1844280843519624 + ], + "scorePercentiles" : { + "0.0" : 0.17273654465997618, + "50.0" : 0.17481974593989827, + "90.0" : 0.18281082563708823, + "95.0" : 0.18281082563708823, + "99.0" : 0.18281082563708823, + "99.9" : 0.18281082563708823, + "99.99" : 0.18281082563708823, + "99.999" : 0.18281082563708823, + "99.9999" : 0.18281082563708823, + "100.0" : 0.18281082563708823 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1745027607273108, + 0.1769361178187866, + 0.17273654465997618 + ], + [ + 0.17481974593989827, + 0.17345907777700686, + 0.1735599226283453 + ], + [ + 0.18281082563708823, + 0.18277720421106503, + 0.18252621349565598 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32447753868441737, + "scoreError" : 0.005001733991219815, + "scoreConfidence" : [ + 0.31947580469319753, + 0.3294792726756372 + ], + "scorePercentiles" : { + "0.0" : 0.3203402676660901, + "50.0" : 0.3253693742964047, + "90.0" : 0.32748490490224974, + "95.0" : 0.32748490490224974, + "99.0" : 0.32748490490224974, + "99.9" : 0.32748490490224974, + "99.99" : 0.32748490490224974, + "99.999" : 0.32748490490224974, + "99.9999" : 0.32748490490224974, + "100.0" : 0.32748490490224974 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.32748490490224974, + 0.3271972053396152, + 0.3270538788304935 + ], + [ + 0.3260087019396903, + 0.3252007965269422, + 0.3253693742964047 + ], + [ + 0.321195865324083, + 0.3203402676660901, + 0.3204468533341878 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16340967242962043, + "scoreError" : 0.011490652019065893, + "scoreConfidence" : [ + 0.15191902041055452, + 0.17490032444868633 + ], + "scorePercentiles" : { + "0.0" : 0.15772524404208002, + "50.0" : 0.15996247744577388, + "90.0" : 0.17276041387233307, + "95.0" : 0.17276041387233307, + "99.0" : 0.17276041387233307, + "99.9" : 0.17276041387233307, + "99.99" : 0.17276041387233307, + "99.999" : 0.17276041387233307, + "99.9999" : 0.17276041387233307, + "100.0" : 0.17276041387233307 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15996247744577388, + 0.15985878575995907, + 0.16040340945399717 + ], + [ + 0.15772524404208002, + 0.157725860035961, + 0.1577472638735527 + ], + [ + 0.17276041387233307, + 0.17239612719154584, + 0.17210747019138098 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38778148958174263, + "scoreError" : 0.007870026339949909, + "scoreConfidence" : [ + 0.3799114632417927, + 0.39565151592169256 + ], + "scorePercentiles" : { + "0.0" : 0.38187174053001377, + "50.0" : 0.388548793379439, + "90.0" : 0.39541730797516905, + "95.0" : 0.39541730797516905, + "99.0" : 0.39541730797516905, + "99.9" : 0.39541730797516905, + "99.99" : 0.39541730797516905, + "99.999" : 0.39541730797516905, + "99.9999" : 0.39541730797516905, + "100.0" : 0.39541730797516905 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3931338122026969, + 0.3896887151819811, + 0.38912040210116733 + ], + [ + 0.39541730797516905, + 0.388548793379439, + 0.38593098062673664 + ], + [ + 0.38401105663927504, + 0.38187174053001377, + 0.3823105975992048 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15859959775618343, + "scoreError" : 0.004781731731620883, + "scoreConfidence" : [ + 0.15381786602456254, + 0.16338132948780432 + ], + "scorePercentiles" : { + "0.0" : 0.15511315565379247, + "50.0" : 0.15770749495347736, + "90.0" : 0.16296427483092968, + "95.0" : 0.16296427483092968, + "99.0" : 0.16296427483092968, + "99.9" : 0.16296427483092968, + "99.99" : 0.16296427483092968, + "99.999" : 0.16296427483092968, + "99.9999" : 0.16296427483092968, + "100.0" : 0.16296427483092968 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15585705683961162, + 0.1566942354747728, + 0.15511315565379247 + ], + [ + 0.16296427483092968, + 0.16186691430883782, + 0.16168290255614298 + ], + [ + 0.15766940961765866, + 0.15784093557042742, + 0.15770749495347736 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04710584983796012, + "scoreError" : 5.002445975454384E-4, + "scoreConfidence" : [ + 0.04660560524041468, + 0.047606094435505564 + ], + "scorePercentiles" : { + "0.0" : 0.04662526819408893, + "50.0" : 0.047111269473208144, + "90.0" : 0.04774415838473731, + "95.0" : 0.04774415838473731, + "99.0" : 0.04774415838473731, + "99.9" : 0.04774415838473731, + "99.99" : 0.04774415838473731, + "99.999" : 0.04774415838473731, + "99.9999" : 0.04774415838473731, + "100.0" : 0.04774415838473731 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04774415838473731, + 0.04719217090366819, + 0.04711298183822594 + ], + [ + 0.04718592201198509, + 0.047111269473208144, + 0.046999683827607275 + ], + [ + 0.0470874619162421, + 0.046893731991878115, + 0.04662526819408893 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9443774.941414071, + "scoreError" : 307746.71388554137, + "scoreConfidence" : [ + 9136028.22752853, + 9751521.655299613 + ], + "scorePercentiles" : { + "0.0" : 9286955.811513463, + "50.0" : 9365019.601123596, + "90.0" : 9707768.672162948, + "95.0" : 9707768.672162948, + "99.0" : 9707768.672162948, + "99.9" : 9707768.672162948, + "99.99" : 9707768.672162948, + "99.999" : 9707768.672162948, + "99.9999" : 9707768.672162948, + "100.0" : 9707768.672162948 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9286955.811513463, + 9303999.322790697, + 9307733.983255815 + ], + [ + 9309956.244651163, + 9365232.038389513, + 9365019.601123596 + ], + [ + 9707768.672162948, + 9675951.720502902, + 9671357.078336557 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 74c7e0492f4fd249c9609cba0db653807bfea41c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 04:37:30 +0000 Subject: [PATCH 320/345] Add performance results for commit 064de5fd6e70ca895fb1a652ac7d4f27423b2831 --- ...e70ca895fb1a652ac7d4f27423b2831-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json diff --git a/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json b/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json new file mode 100644 index 0000000000..967434fc3e --- /dev/null +++ b/performance-results/2025-04-03T04:37:11Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.398063238727424, + "scoreError" : 0.01846794614525216, + "scoreConfidence" : [ + 3.379595292582172, + 3.4165311848726763 + ], + "scorePercentiles" : { + "0.0" : 3.394463481045468, + "50.0" : 3.3981746276446567, + "90.0" : 3.401440218574916, + "95.0" : 3.401440218574916, + "99.0" : 3.401440218574916, + "99.9" : 3.401440218574916, + "99.99" : 3.401440218574916, + "99.999" : 3.401440218574916, + "99.9999" : 3.401440218574916, + "100.0" : 3.401440218574916 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394463481045468, + 3.3979334679294224 + ], + [ + 3.398415787359891, + 3.401440218574916 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7155884162836184, + "scoreError" : 0.01669652478284702, + "scoreConfidence" : [ + 1.6988918915007714, + 1.7322849410664654 + ], + "scorePercentiles" : { + "0.0" : 1.7121557905255511, + "50.0" : 1.715993604740984, + "90.0" : 1.7182106651269544, + "95.0" : 1.7182106651269544, + "99.0" : 1.7182106651269544, + "99.9" : 1.7182106651269544, + "99.99" : 1.7182106651269544, + "99.999" : 1.7182106651269544, + "99.9999" : 1.7182106651269544, + "100.0" : 1.7182106651269544 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7121557905255511, + 1.7167149547253382 + ], + [ + 1.7152722547566301, + 1.7182106651269544 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.860582322212074, + "scoreError" : 0.007014266752437115, + "scoreConfidence" : [ + 0.8535680554596369, + 0.8675965889645111 + ], + "scorePercentiles" : { + "0.0" : 0.8590306137321312, + "50.0" : 0.8609782904232638, + "90.0" : 0.8613420942696371, + "95.0" : 0.8613420942696371, + "99.0" : 0.8613420942696371, + "99.9" : 0.8613420942696371, + "99.99" : 0.8613420942696371, + "99.999" : 0.8613420942696371, + "99.9999" : 0.8613420942696371, + "100.0" : 0.8613420942696371 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8613218540335297, + 0.8613420942696371 + ], + [ + 0.8590306137321312, + 0.8606347268129979 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.761189069739004, + "scoreError" : 0.15368336132423224, + "scoreConfidence" : [ + 15.607505708414772, + 15.914872431063236 + ], + "scorePercentiles" : { + "0.0" : 15.647324344216493, + "50.0" : 15.774902689094654, + "90.0" : 15.862001171401516, + "95.0" : 15.862001171401516, + "99.0" : 15.862001171401516, + "99.9" : 15.862001171401516, + "99.99" : 15.862001171401516, + "99.999" : 15.862001171401516, + "99.9999" : 15.862001171401516, + "100.0" : 15.862001171401516 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.691891086008026, + 15.647324344216493, + 15.648750806162413 + ], + [ + 15.691263256496491, + 15.834115149372924, + 15.843618460484318 + ], + [ + 15.862001171401516, + 15.856834664414194, + 15.774902689094654 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2605.564647314867, + "scoreError" : 71.75800348528772, + "scoreConfidence" : [ + 2533.8066438295796, + 2677.322650800155 + ], + "scorePercentiles" : { + "0.0" : 2549.627018607967, + "50.0" : 2605.008813064446, + "90.0" : 2656.065490907737, + "95.0" : 2656.065490907737, + "99.0" : 2656.065490907737, + "99.9" : 2656.065490907737, + "99.99" : 2656.065490907737, + "99.999" : 2656.065490907737, + "99.9999" : 2656.065490907737, + "100.0" : 2656.065490907737 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2656.065490907737, + 2650.5415035008077, + 2639.3811388336094 + ], + [ + 2549.627018607967, + 2554.9937206067393, + 2560.1159714856094 + ], + [ + 2637.7776962860908, + 2596.5704725407954, + 2605.008813064446 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69899.48411961367, + "scoreError" : 1599.6195809567562, + "scoreConfidence" : [ + 68299.86453865691, + 71499.10370057043 + ], + "scorePercentiles" : { + "0.0" : 68635.08400989581, + "50.0" : 70097.78329072687, + "90.0" : 70958.29943121137, + "95.0" : 70958.29943121137, + "99.0" : 70958.29943121137, + "99.9" : 70958.29943121137, + "99.99" : 70958.29943121137, + "99.999" : 70958.29943121137, + "99.9999" : 70958.29943121137, + "100.0" : 70958.29943121137 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70897.41237148685, + 70958.29943121137, + 70827.88010165881 + ], + [ + 70034.7228781272, + 70111.79570507018, + 70097.78329072687 + ], + [ + 68771.26924276495, + 68635.08400989581, + 68761.11004558101 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 318.2890154966056, + "scoreError" : 3.5026047930382624, + "scoreConfidence" : [ + 314.78641070356736, + 321.79162028964384 + ], + "scorePercentiles" : { + "0.0" : 313.54494204120397, + "50.0" : 318.3475360395479, + "90.0" : 321.16303018492044, + "95.0" : 321.16303018492044, + "99.0" : 321.16303018492044, + "99.9" : 321.16303018492044, + "99.99" : 321.16303018492044, + "99.999" : 321.16303018492044, + "99.9999" : 321.16303018492044, + "100.0" : 321.16303018492044 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 319.28675349502834, + 319.88635243263707, + 321.16303018492044 + ], + [ + 318.3475360395479, + 317.7739042163214, + 317.9026036071082 + ], + [ + 318.4421318678474, + 318.25388558483576, + 313.54494204120397 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 99.19790546048765, + "scoreError" : 4.922560682981105, + "scoreConfidence" : [ + 94.27534477750655, + 104.12046614346875 + ], + "scorePercentiles" : { + "0.0" : 95.29875350183407, + "50.0" : 99.31747082669419, + "90.0" : 102.77934146542273, + "95.0" : 102.77934146542273, + "99.0" : 102.77934146542273, + "99.9" : 102.77934146542273, + "99.99" : 102.77934146542273, + "99.999" : 102.77934146542273, + "99.9999" : 102.77934146542273, + "100.0" : 102.77934146542273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 95.5248125728636, + 95.29875350183407, + 96.26365728304859 + ], + [ + 99.02528655018615, + 100.36379191537276, + 99.31747082669419 + ], + [ + 102.43738296774471, + 102.77934146542273, + 101.77065206122195 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06388822878506939, + "scoreError" : 9.979567518627098E-4, + "scoreConfidence" : [ + 0.06289027203320668, + 0.0648861855369321 + ], + "scorePercentiles" : { + "0.0" : 0.06305835662668836, + "50.0" : 0.06389496701787117, + "90.0" : 0.06479736363636364, + "95.0" : 0.06479736363636364, + "99.0" : 0.06479736363636364, + "99.9" : 0.06479736363636364, + "99.99" : 0.06479736363636364, + "99.999" : 0.06479736363636364, + "99.9999" : 0.06479736363636364, + "100.0" : 0.06479736363636364 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06374456063947781, + 0.06419815483084035, + 0.06389496701787117 + ], + [ + 0.06406173624296935, + 0.06479736363636364, + 0.06459939156217903 + ], + [ + 0.0632592709037082, + 0.06338025760552668, + 0.06305835662668836 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.83019606931175E-4, + "scoreError" : 1.3784581850369122E-5, + "scoreConfidence" : [ + 3.6923502508080585E-4, + 3.968041887815441E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7020701441402385E-4, + "50.0" : 3.844138049114324E-4, + "90.0" : 3.934721148100017E-4, + "95.0" : 3.934721148100017E-4, + "99.0" : 3.934721148100017E-4, + "99.9" : 3.934721148100017E-4, + "99.99" : 3.934721148100017E-4, + "99.999" : 3.934721148100017E-4, + "99.9999" : 3.934721148100017E-4, + "100.0" : 3.934721148100017E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8526200194871147E-4, + 3.8127326824683404E-4, + 3.844138049114324E-4 + ], + [ + 3.934721148100017E-4, + 3.9015963338102455E-4, + 3.9196502741253386E-4 + ], + [ + 3.7619870712614367E-4, + 3.7422489012986976E-4, + 3.7020701441402385E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014507169573223098, + "scoreError" : 5.580762315377476E-4, + "scoreConfidence" : [ + 0.01394909334168535, + 0.015065245804760846 + ], + "scorePercentiles" : { + "0.0" : 0.014197896179254592, + "50.0" : 0.014309983227464544, + "90.0" : 0.014960949395286768, + "95.0" : 0.014960949395286768, + "99.0" : 0.014960949395286768, + "99.9" : 0.014960949395286768, + "99.99" : 0.014960949395286768, + "99.999" : 0.014960949395286768, + "99.9999" : 0.014960949395286768, + "100.0" : 0.014960949395286768 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014448763521694528, + 0.014238935660798879, + 0.014197896179254592 + ], + [ + 0.014309983227464544, + 0.014273343558159617, + 0.014274491531762492 + ], + [ + 0.014931303598997824, + 0.014960949395286768, + 0.01492885948558863 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9907268310671148, + "scoreError" : 0.02012586950490829, + "scoreConfidence" : [ + 0.9706009615622065, + 1.0108527005720231 + ], + "scorePercentiles" : { + "0.0" : 0.9740569874354729, + "50.0" : 0.9971856530062818, + "90.0" : 1.0045795006529383, + "95.0" : 1.0045795006529383, + "99.0" : 1.0045795006529383, + "99.9" : 1.0045795006529383, + "99.99" : 1.0045795006529383, + "99.999" : 1.0045795006529383, + "99.9999" : 1.0045795006529383, + "100.0" : 1.0045795006529383 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9986444846215299, + 0.9971856530062818, + 1.0045795006529383 + ], + [ + 0.9973045451735142, + 0.9972825439768648, + 0.9962513022213367 + ], + [ + 0.9757165716655284, + 0.9755198908505658, + 0.9740569874354729 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013343001108488255, + "scoreError" : 1.603246869937958E-4, + "scoreConfidence" : [ + 0.01318267642149446, + 0.01350332579548205 + ], + "scorePercentiles" : { + "0.0" : 0.013283585089821314, + "50.0" : 0.013325930652973463, + "90.0" : 0.01342174419659634, + "95.0" : 0.01342174419659634, + "99.0" : 0.01342174419659634, + "99.9" : 0.01342174419659634, + "99.99" : 0.01342174419659634, + "99.999" : 0.01342174419659634, + "99.9999" : 0.01342174419659634, + "100.0" : 0.01342174419659634 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013296058110407913, + 0.01342174419659634, + 0.013404757948157025 + ], + [ + 0.013328466066544758, + 0.013323395239402168, + 0.013283585089821314 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.9281097096224347, + "scoreError" : 0.19831393229042082, + "scoreConfidence" : [ + 3.729795777332014, + 4.126423641912855 + ], + "scorePercentiles" : { + "0.0" : 3.8423004477726574, + "50.0" : 3.9272893627166936, + "90.0" : 3.9999446554756197, + "95.0" : 3.9999446554756197, + "99.0" : 3.9999446554756197, + "99.9" : 3.9999446554756197, + "99.99" : 3.9999446554756197, + "99.999" : 3.9999446554756197, + "99.9999" : 3.9999446554756197, + "100.0" : 3.9999446554756197 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.9999446554756197, + 3.978067418456643, + 3.9959317412140574 + ], + [ + 3.8423004477726574, + 3.8765113069767443, + 3.8759026878388845 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.1320001021459305, + "scoreError" : 0.1305735498002403, + "scoreConfidence" : [ + 3.00142655234569, + 3.262573651946171 + ], + "scorePercentiles" : { + "0.0" : 3.0153515375339164, + "50.0" : 3.1369162976787957, + "90.0" : 3.216451787459807, + "95.0" : 3.216451787459807, + "99.0" : 3.216451787459807, + "99.9" : 3.216451787459807, + "99.99" : 3.216451787459807, + "99.999" : 3.216451787459807, + "99.9999" : 3.216451787459807, + "100.0" : 3.216451787459807 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.160231842022117, + 3.1369162976787957, + 3.1275856741713572 + ], + [ + 3.216451787459807, + 3.2145117405978785, + 3.214671719061395 + ], + [ + 3.0153515375339164, + 3.052139432102533, + 3.0501408886855748 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1797257930507823, + "scoreError" : 0.006638397579902533, + "scoreConfidence" : [ + 0.17308739547087976, + 0.18636419063068482 + ], + "scorePercentiles" : { + "0.0" : 0.1743994850107253, + "50.0" : 0.18180634640487228, + "90.0" : 0.18315693981574754, + "95.0" : 0.18315693981574754, + "99.0" : 0.18315693981574754, + "99.9" : 0.18315693981574754, + "99.99" : 0.18315693981574754, + "99.999" : 0.18315693981574754, + "99.9999" : 0.18315693981574754, + "100.0" : 0.18315693981574754 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18180634640487228, + 0.1818186315703351, + 0.18180463257885646 + ], + [ + 0.1746522944566698, + 0.1743994850107253, + 0.1744420070472901 + ], + [ + 0.18315693981574754, + 0.18280616558204152, + 0.18264563499050263 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3383194540641472, + "scoreError" : 0.020423803604438278, + "scoreConfidence" : [ + 0.3178956504597089, + 0.3587432576685855 + ], + "scorePercentiles" : { + "0.0" : 0.3253307799863366, + "50.0" : 0.3337108633163146, + "90.0" : 0.355636786656709, + "95.0" : 0.355636786656709, + "99.0" : 0.355636786656709, + "99.9" : 0.355636786656709, + "99.99" : 0.355636786656709, + "99.999" : 0.355636786656709, + "99.9999" : 0.355636786656709, + "100.0" : 0.355636786656709 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3275824299331761, + 0.3281772648661066, + 0.3253307799863366 + ], + [ + 0.3352680090854231, + 0.3337108633163146, + 0.33307845443645084 + ], + [ + 0.3517657857117732, + 0.354324712585034, + 0.355636786656709 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16835279831565275, + "scoreError" : 0.008841408090625332, + "scoreConfidence" : [ + 0.15951139022502742, + 0.1771942064062781 + ], + "scorePercentiles" : { + "0.0" : 0.16128091963551328, + "50.0" : 0.1713425613734494, + "90.0" : 0.1726306326992128, + "95.0" : 0.1726306326992128, + "99.0" : 0.1726306326992128, + "99.9" : 0.1726306326992128, + "99.99" : 0.1726306326992128, + "99.999" : 0.1726306326992128, + "99.9999" : 0.1726306326992128, + "100.0" : 0.1726306326992128 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1713425613734494, + 0.17160019881254718, + 0.17104700237749082 + ], + [ + 0.17248626498439038, + 0.1726306326992128, + 0.17196016485538398 + ], + [ + 0.16128091963551328, + 0.16137944565655912, + 0.16144799444632796 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3952465346387055, + "scoreError" : 0.003297160570744365, + "scoreConfidence" : [ + 0.39194937406796115, + 0.3985436952094499 + ], + "scorePercentiles" : { + "0.0" : 0.39318401466540853, + "50.0" : 0.3945501908387911, + "90.0" : 0.3986785879843725, + "95.0" : 0.3986785879843725, + "99.0" : 0.3986785879843725, + "99.9" : 0.3986785879843725, + "99.99" : 0.3986785879843725, + "99.999" : 0.3986785879843725, + "99.9999" : 0.3986785879843725, + "100.0" : 0.3986785879843725 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3945501908387911, + 0.39391868401150193, + 0.3934821552626402 + ], + [ + 0.3986785879843725, + 0.39347827231949634, + 0.39318401466540853 + ], + [ + 0.3968952295999365, + 0.39692631868698897, + 0.39610535837921335 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1593310385581499, + "scoreError" : 0.0028442450259137868, + "scoreConfidence" : [ + 0.1564867935322361, + 0.1621752835840637 + ], + "scorePercentiles" : { + "0.0" : 0.15777442514554377, + "50.0" : 0.15874837003524145, + "90.0" : 0.1624385157156084, + "95.0" : 0.1624385157156084, + "99.0" : 0.1624385157156084, + "99.9" : 0.1624385157156084, + "99.99" : 0.1624385157156084, + "99.999" : 0.1624385157156084, + "99.9999" : 0.1624385157156084, + "100.0" : 0.1624385157156084 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1624385157156084, + 0.16167678781950753, + 0.16008429511109687 + ], + [ + 0.15874837003524145, + 0.1587637378548295, + 0.1582909996992529 + ], + [ + 0.1581139882998403, + 0.1580882273424285, + 0.15777442514554377 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04777432791293147, + "scoreError" : 0.0013125816839008406, + "scoreConfidence" : [ + 0.04646174622903063, + 0.04908690959683231 + ], + "scorePercentiles" : { + "0.0" : 0.04719819954218289, + "50.0" : 0.04727648992076549, + "90.0" : 0.04886981457571789, + "95.0" : 0.04886981457571789, + "99.0" : 0.04886981457571789, + "99.9" : 0.04886981457571789, + "99.99" : 0.04886981457571789, + "99.999" : 0.04886981457571789, + "99.9999" : 0.04886981457571789, + "100.0" : 0.04886981457571789 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04727648992076549, + 0.04726375017723625, + 0.04729652034904344 + ], + [ + 0.047260753382641366, + 0.04722931846261382, + 0.04719819954218289 + ], + [ + 0.04878328790044441, + 0.04886981457571789, + 0.04879081690573771 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9854902.347201487, + "scoreError" : 395549.2532945072, + "scoreConfidence" : [ + 9459353.09390698, + 1.0250451600495994E7 + ], + "scorePercentiles" : { + "0.0" : 9519942.573739296, + "50.0" : 9846367.802165354, + "90.0" : 1.0131742660931174E7, + "95.0" : 1.0131742660931174E7, + "99.0" : 1.0131742660931174E7, + "99.9" : 1.0131742660931174E7, + "99.99" : 1.0131742660931174E7, + "99.999" : 1.0131742660931174E7, + "99.9999" : 1.0131742660931174E7, + "100.0" : 1.0131742660931174E7 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9718148.198058253, + 9563246.647227533, + 9519942.573739296 + ], + [ + 9846367.802165354, + 9882046.2023692, + 9784536.290322581 + ], + [ + 1.012611225708502E7, + 1.0131742660931174E7, + 1.012197849291498E7 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 1e531ba0606c631f1ec12007b931a2d7156c21ec Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Apr 2025 04:39:42 +0000 Subject: [PATCH 321/345] Add performance results for commit 064de5fd6e70ca895fb1a652ac7d4f27423b2831 --- ...e70ca895fb1a652ac7d4f27423b2831-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json diff --git a/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json b/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json new file mode 100644 index 0000000000..0831530274 --- /dev/null +++ b/performance-results/2025-04-03T04:39:22Z-064de5fd6e70ca895fb1a652ac7d4f27423b2831-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4028158052032147, + "scoreError" : 0.02698436626698203, + "scoreConfidence" : [ + 3.3758314389362325, + 3.429800171470197 + ], + "scorePercentiles" : { + "0.0" : 3.3984327814572493, + "50.0" : 3.4024482494709245, + "90.0" : 3.40793394041376, + "95.0" : 3.40793394041376, + "99.0" : 3.40793394041376, + "99.9" : 3.40793394041376, + "99.99" : 3.40793394041376, + "99.999" : 3.40793394041376, + "99.9999" : 3.40793394041376, + "100.0" : 3.40793394041376 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.3984327814572493, + 3.400626569701109 + ], + [ + 3.40426992924074, + 3.40793394041376 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7217318691895986, + "scoreError" : 0.010243454629387177, + "scoreConfidence" : [ + 1.7114884145602114, + 1.731975323818986 + ], + "scorePercentiles" : { + "0.0" : 1.719393836215952, + "50.0" : 1.7223979685910846, + "90.0" : 1.722737703360273, + "95.0" : 1.722737703360273, + "99.0" : 1.722737703360273, + "99.9" : 1.722737703360273, + "99.99" : 1.722737703360273, + "99.999" : 1.722737703360273, + "99.9999" : 1.722737703360273, + "100.0" : 1.722737703360273 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7221038886454691, + 1.722737703360273 + ], + [ + 1.719393836215952, + 1.7226920485366999 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8654434507790818, + "scoreError" : 0.008438986629075771, + "scoreConfidence" : [ + 0.8570044641500061, + 0.8738824374081575 + ], + "scorePercentiles" : { + "0.0" : 0.8645342532584883, + "50.0" : 0.8649425572522541, + "90.0" : 0.8673544353533303, + "95.0" : 0.8673544353533303, + "99.0" : 0.8673544353533303, + "99.9" : 0.8673544353533303, + "99.99" : 0.8673544353533303, + "99.999" : 0.8673544353533303, + "99.9999" : 0.8673544353533303, + "100.0" : 0.8673544353533303 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8645342532584883, + 0.8652034852013738 + ], + [ + 0.8646816293031344, + 0.8673544353533303 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.856852526851778, + "scoreError" : 0.22239508840105984, + "scoreConfidence" : [ + 15.634457438450719, + 16.07924761525284 + ], + "scorePercentiles" : { + "0.0" : 15.655595185675983, + "50.0" : 15.897855959962087, + "90.0" : 16.075434896788032, + "95.0" : 16.075434896788032, + "99.0" : 16.075434896788032, + "99.9" : 16.075434896788032, + "99.99" : 16.075434896788032, + "99.999" : 16.075434896788032, + "99.9999" : 16.075434896788032, + "100.0" : 16.075434896788032 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.795514884463312, + 15.734436696789428, + 15.655595185675983 + ], + [ + 15.961511976581217, + 15.748292618608652, + 15.933875666964484 + ], + [ + 16.075434896788032, + 15.897855959962087, + 15.909154855832826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2627.694997644631, + "scoreError" : 100.4623977422994, + "scoreConfidence" : [ + 2527.2325999023315, + 2728.15739538693 + ], + "scorePercentiles" : { + "0.0" : 2546.832028910364, + "50.0" : 2617.358010776736, + "90.0" : 2726.1959070049306, + "95.0" : 2726.1959070049306, + "99.0" : 2726.1959070049306, + "99.9" : 2726.1959070049306, + "99.99" : 2726.1959070049306, + "99.999" : 2726.1959070049306, + "99.9999" : 2726.1959070049306, + "100.0" : 2726.1959070049306 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2682.3819623737045, + 2686.3172658046005, + 2726.1959070049306 + ], + [ + 2617.358010776736, + 2566.8713813030668, + 2611.7854559352445 + ], + [ + 2626.9936504978727, + 2546.832028910364, + 2584.5193161951593 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69994.63854814746, + "scoreError" : 914.8097763908709, + "scoreConfidence" : [ + 69079.82877175658, + 70909.44832453833 + ], + "scorePercentiles" : { + "0.0" : 68967.6464426141, + "50.0" : 70207.4304985715, + "90.0" : 70500.16253561925, + "95.0" : 70500.16253561925, + "99.0" : 70500.16253561925, + "99.9" : 70500.16253561925, + "99.99" : 70500.16253561925, + "99.999" : 70500.16253561925, + "99.9999" : 70500.16253561925, + "100.0" : 70500.16253561925 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 69828.42820603953, + 69413.01432131404, + 69734.47790099871 + ], + [ + 70448.36211536035, + 70207.4304985715, + 70500.16253561925 + ], + [ + 70468.08488030932, + 68967.6464426141, + 70384.14003250026 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 346.7931852807508, + "scoreError" : 3.3342629800102954, + "scoreConfidence" : [ + 343.4589223007405, + 350.12744826076107 + ], + "scorePercentiles" : { + "0.0" : 343.7680474475259, + "50.0" : 346.25243329497414, + "90.0" : 349.58594626041577, + "95.0" : 349.58594626041577, + "99.0" : 349.58594626041577, + "99.9" : 349.58594626041577, + "99.99" : 349.58594626041577, + "99.999" : 349.58594626041577, + "99.9999" : 349.58594626041577, + "100.0" : 349.58594626041577 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 343.7680474475259, + 345.8715452517336, + 347.96462884988966 + ], + [ + 346.07920593473517, + 346.25243329497414, + 347.765244689211 + ], + [ + 344.63011611183293, + 349.22149968643856, + 349.58594626041577 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 103.84830895680096, + "scoreError" : 2.853451773658508, + "scoreConfidence" : [ + 100.99485718314246, + 106.70176073045947 + ], + "scorePercentiles" : { + "0.0" : 101.71035761699841, + "50.0" : 103.04915723582602, + "90.0" : 106.43837078897053, + "95.0" : 106.43837078897053, + "99.0" : 106.43837078897053, + "99.9" : 106.43837078897053, + "99.99" : 106.43837078897053, + "99.999" : 106.43837078897053, + "99.9999" : 106.43837078897053, + "100.0" : 106.43837078897053 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.71035761699841, + 102.96619234811652, + 103.04915723582602 + ], + [ + 106.43837078897053, + 106.37364400433496, + 105.10326118216283 + ], + [ + 103.40392088198075, + 102.76412725260485, + 102.82574930021367 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06326091308772883, + "scoreError" : 6.878635265646218E-4, + "scoreConfidence" : [ + 0.0625730495611642, + 0.06394877661429345 + ], + "scorePercentiles" : { + "0.0" : 0.06274002661396574, + "50.0" : 0.06328955167525284, + "90.0" : 0.06400515197772658, + "95.0" : 0.06400515197772658, + "99.0" : 0.06400515197772658, + "99.9" : 0.06400515197772658, + "99.99" : 0.06400515197772658, + "99.999" : 0.06400515197772658, + "99.9999" : 0.06400515197772658, + "100.0" : 0.06400515197772658 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06287397867350723, + 0.06279671892543612, + 0.06346642787149512 + ], + [ + 0.06337502196548643, + 0.06274002661396574, + 0.06328955167525284 + ], + [ + 0.06356635234142094, + 0.06400515197772658, + 0.06323498774526852 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.855581819461642E-4, + "scoreError" : 6.921607125895276E-6, + "scoreConfidence" : [ + 3.786365748202689E-4, + 3.924797890720594E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7792593484907937E-4, + "50.0" : 3.8691700719416E-4, + "90.0" : 3.913857062366774E-4, + "95.0" : 3.913857062366774E-4, + "99.0" : 3.913857062366774E-4, + "99.9" : 3.913857062366774E-4, + "99.99" : 3.913857062366774E-4, + "99.999" : 3.913857062366774E-4, + "99.9999" : 3.913857062366774E-4, + "100.0" : 3.913857062366774E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7792593484907937E-4, + 3.8200901836640285E-4, + 3.8237432355374515E-4 + ], + [ + 3.855961513716939E-4, + 3.877975459473206E-4, + 3.913857062366774E-4 + ], + [ + 3.8691700719416E-4, + 3.8703300435309726E-4, + 3.8898494564330134E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01446867119144881, + "scoreError" : 3.071290232277809E-4, + "scoreConfidence" : [ + 0.01416154216822103, + 0.014775800214676591 + ], + "scorePercentiles" : { + "0.0" : 0.01424524991666643, + "50.0" : 0.014418233085102549, + "90.0" : 0.01471546875142554, + "95.0" : 0.01471546875142554, + "99.0" : 0.01471546875142554, + "99.9" : 0.01471546875142554, + "99.99" : 0.01471546875142554, + "99.999" : 0.01471546875142554, + "99.9999" : 0.01471546875142554, + "100.0" : 0.01471546875142554 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01441417423497701, + 0.014418233085102549, + 0.014425451218720563 + ], + [ + 0.014347761017875667, + 0.01427606893824538, + 0.01424524991666643 + ], + [ + 0.01471291030230269, + 0.01471546875142554, + 0.014662723257723494 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 1.0029323812394497, + "scoreError" : 0.008664048351075164, + "scoreConfidence" : [ + 0.9942683328883746, + 1.0115964295905249 + ], + "scorePercentiles" : { + "0.0" : 0.995025286240175, + "50.0" : 1.0018026926775518, + "90.0" : 1.0113044462534129, + "95.0" : 1.0113044462534129, + "99.0" : 1.0113044462534129, + "99.9" : 1.0113044462534129, + "99.99" : 1.0113044462534129, + "99.999" : 1.0113044462534129, + "99.9999" : 1.0113044462534129, + "100.0" : 1.0113044462534129 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0113044462534129, + 0.9978523330672521, + 1.0008790364291433 + ], + [ + 1.0075035067499496, + 1.0012708366039247, + 1.0079401847409797 + ], + [ + 0.995025286240175, + 1.0018026926775518, + 1.0028131083926601 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01299504090943715, + "scoreError" : 5.276041924888734E-4, + "scoreConfidence" : [ + 0.012467436716948277, + 0.013522645101926023 + ], + "scorePercentiles" : { + "0.0" : 0.012795588516489282, + "50.0" : 0.01293060720421979, + "90.0" : 0.013293538975678752, + "95.0" : 0.013293538975678752, + "99.0" : 0.013293538975678752, + "99.9" : 0.013293538975678752, + "99.99" : 0.013293538975678752, + "99.999" : 0.013293538975678752, + "99.9999" : 0.013293538975678752, + "100.0" : 0.013293538975678752 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012966117529756502, + 0.013293538975678752, + 0.01314568560822162 + ], + [ + 0.012795588516489282, + 0.012874217947793667, + 0.01289509687868308 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.734757970815448, + "scoreError" : 0.10371285218767395, + "scoreConfidence" : [ + 3.631045118627774, + 3.838470823003122 + ], + "scorePercentiles" : { + "0.0" : 3.6964419098300074, + "50.0" : 3.7301802576484198, + "90.0" : 3.8028869977186313, + "95.0" : 3.8028869977186313, + "99.0" : 3.8028869977186313, + "99.9" : 3.8028869977186313, + "99.99" : 3.8028869977186313, + "99.999" : 3.8028869977186313, + "99.9999" : 3.8028869977186313, + "100.0" : 3.8028869977186313 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.726333251117735, + 3.7340272641791046, + 3.8028869977186313 + ], + [ + 3.6964419098300074, + 3.7393437959641256, + 3.709514606083086 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.915910361825667, + "scoreError" : 0.07793360653432067, + "scoreConfidence" : [ + 2.837976755291346, + 2.993843968359988 + ], + "scorePercentiles" : { + "0.0" : 2.867956468597648, + "50.0" : 2.8936321148726853, + "90.0" : 2.9790791128984213, + "95.0" : 2.9790791128984213, + "99.0" : 2.9790791128984213, + "99.9" : 2.9790791128984213, + "99.99" : 2.9790791128984213, + "99.999" : 2.9790791128984213, + "99.9999" : 2.9790791128984213, + "100.0" : 2.9790791128984213 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.896652921227918, + 2.89269080075188, + 2.8936321148726853 + ], + [ + 2.9790791128984213, + 2.9724285346210997, + 2.977471262578148 + ], + [ + 2.867956468597648, + 2.8722168515221136, + 2.891065189361087 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1781156711732394, + "scoreError" : 0.006079830536500371, + "scoreConfidence" : [ + 0.17203584063673902, + 0.18419550170973978 + ], + "scorePercentiles" : { + "0.0" : 0.17460855640528697, + "50.0" : 0.17648928387631924, + "90.0" : 0.1839968523827047, + "95.0" : 0.1839968523827047, + "99.0" : 0.1839968523827047, + "99.9" : 0.1839968523827047, + "99.99" : 0.1839968523827047, + "99.999" : 0.1839968523827047, + "99.9999" : 0.1839968523827047, + "100.0" : 0.1839968523827047 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17637950940966896, + 0.17687212596614726, + 0.17648928387631924 + ], + [ + 0.17460855640528697, + 0.17498917958633722, + 0.17535292089989304 + ], + [ + 0.1825232611473106, + 0.18182935088548674, + 0.1839968523827047 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.33701370251603385, + "scoreError" : 0.009438468960818618, + "scoreConfidence" : [ + 0.32757523355521523, + 0.3464521714768525 + ], + "scorePercentiles" : { + "0.0" : 0.3287976433010028, + "50.0" : 0.3379593185197702, + "90.0" : 0.34396548885602257, + "95.0" : 0.34396548885602257, + "99.0" : 0.34396548885602257, + "99.9" : 0.34396548885602257, + "99.99" : 0.34396548885602257, + "99.999" : 0.34396548885602257, + "99.9999" : 0.34396548885602257, + "100.0" : 0.34396548885602257 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3379593185197702, + 0.33675483223329744, + 0.3381346030092984 + ], + [ + 0.3313426720453265, + 0.33083449103480217, + 0.3287976433010028 + ], + [ + 0.34284380513558915, + 0.34396548885602257, + 0.3424904685091955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16854884601881842, + "scoreError" : 0.009004225213796735, + "scoreConfidence" : [ + 0.1595446208050217, + 0.17755307123261516 + ], + "scorePercentiles" : { + "0.0" : 0.1625799294249622, + "50.0" : 0.16720458142723382, + "90.0" : 0.17602810589684914, + "95.0" : 0.17602810589684914, + "99.0" : 0.17602810589684914, + "99.9" : 0.17602810589684914, + "99.99" : 0.17602810589684914, + "99.999" : 0.17602810589684914, + "99.9999" : 0.17602810589684914, + "100.0" : 0.17602810589684914 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16455403246560915, + 0.16276767064893635, + 0.1625799294249622 + ], + [ + 0.17602810589684914, + 0.17495130307907628, + 0.1749156841460855 + ], + [ + 0.1674244847647748, + 0.16720458142723382, + 0.16651382231583856 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.391641101994612, + "scoreError" : 0.005342483206538888, + "scoreConfidence" : [ + 0.3862986187880731, + 0.3969835852011509 + ], + "scorePercentiles" : { + "0.0" : 0.38694450398545116, + "50.0" : 0.39131360545468774, + "90.0" : 0.3956067646965741, + "95.0" : 0.3956067646965741, + "99.0" : 0.3956067646965741, + "99.9" : 0.3956067646965741, + "99.99" : 0.3956067646965741, + "99.999" : 0.3956067646965741, + "99.9999" : 0.3956067646965741, + "100.0" : 0.3956067646965741 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39131360545468774, + 0.3917293123114889, + 0.39113433987797247 + ], + [ + 0.3896956932818954, + 0.3879598262792412, + 0.38694450398545116 + ], + [ + 0.3956067646965741, + 0.3949321541347445, + 0.3954537179294527 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1615410805047081, + "scoreError" : 0.0036366686572976447, + "scoreConfidence" : [ + 0.15790441184741047, + 0.16517774916200575 + ], + "scorePercentiles" : { + "0.0" : 0.158518118710966, + "50.0" : 0.16221693251901959, + "90.0" : 0.16381021045734503, + "95.0" : 0.16381021045734503, + "99.0" : 0.16381021045734503, + "99.9" : 0.16381021045734503, + "99.99" : 0.16381021045734503, + "99.999" : 0.16381021045734503, + "99.9999" : 0.16381021045734503, + "100.0" : 0.16381021045734503 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1627364314819938, + 0.16221693251901959, + 0.16200593401590876 + ], + [ + 0.15881188489574236, + 0.15897466935330026, + 0.158518118710966 + ], + [ + 0.16381021045734503, + 0.1636706063666121, + 0.16312493674148507 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.048394316920121444, + "scoreError" : 9.371383005411213E-4, + "scoreConfidence" : [ + 0.04745717861958032, + 0.04933145522066257 + ], + "scorePercentiles" : { + "0.0" : 0.047463494195318284, + "50.0" : 0.04846126208487398, + "90.0" : 0.04896047807333206, + "95.0" : 0.04896047807333206, + "99.0" : 0.04896047807333206, + "99.9" : 0.04896047807333206, + "99.99" : 0.04896047807333206, + "99.999" : 0.04896047807333206, + "99.9999" : 0.04896047807333206, + "100.0" : 0.04896047807333206 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04894498875750071, + 0.04896047807333206, + 0.04881620786612839 + ], + [ + 0.048715233678231475, + 0.04844254924358024, + 0.04846126208487398 + ], + [ + 0.04815959974379596, + 0.04758503863833189, + 0.047463494195318284 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9323662.9841781, + "scoreError" : 138556.00966994776, + "scoreConfidence" : [ + 9185106.974508151, + 9462218.993848048 + ], + "scorePercentiles" : { + "0.0" : 9180911.86055046, + "50.0" : 9361837.434050515, + "90.0" : 9421453.089453861, + "95.0" : 9421453.089453861, + "99.0" : 9421453.089453861, + "99.9" : 9421453.089453861, + "99.99" : 9421453.089453861, + "99.999" : 9421453.089453861, + "99.9999" : 9421453.089453861, + "100.0" : 9421453.089453861 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9370760.92977528, + 9361837.434050515, + 9305615.085581396 + ], + [ + 9421453.089453861, + 9368289.597378276, + 9369009.029026218 + ], + [ + 9180911.86055046, + 9338604.646125117, + 9196485.185661765 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 15a61e1fdfb52022783d4d4281ee65d8e83f30f6 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 3 Apr 2025 20:53:23 +1000 Subject: [PATCH 322/345] make sure async exception handler are handled correctly for the engine tracking also make sure that CF dependent on other CF returned by the DF are handled correctly --- .../graphql/execution/ExecutionContext.java | 5 +- .../graphql/execution/ExecutionStrategy.java | 26 +++--- .../groovy/graphql/EngineRunningTest.groovy | 85 +++++++++++++++++++ 3 files changed, 102 insertions(+), 14 deletions(-) diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index ff7a0e221a..1b573b0379 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -36,6 +36,7 @@ import java.util.function.Consumer; import java.util.function.Supplier; +import static graphql.Assert.assertTrue; import static graphql.execution.EngineRunningObserver.RunningState.CANCELLED; import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING; import static graphql.execution.EngineRunningObserver.RunningState.RUNNING; @@ -378,7 +379,7 @@ public boolean isRunning() { private void incrementRunning(Throwable throwable) { checkIsCancelled(throwable); - + assertTrue(isRunning.get() >= 0); if (isRunning.incrementAndGet() == 1) { changeOfState(RUNNING); } @@ -386,7 +387,7 @@ private void incrementRunning(Throwable throwable) { private void decrementRunning(Throwable throwable) { checkIsCancelled(throwable); - + assertTrue(isRunning.get() > 0); if (isRunning.decrementAndGet() == 0) { changeOfState(NOT_RUNNING); } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 297388dcdd..ec84481528 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -226,7 +226,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat if (fieldValueInfosResult instanceof CompletableFuture) { CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { - executionContext.run(throwable,() -> { + executionContext.run(throwable, () -> { if (throwable != null) { handleResultsConsumer.accept(null, throwable); return; @@ -280,7 +280,7 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat private BiConsumer, Throwable> buildFieldValueMap(List fieldNames, CompletableFuture> overallResult, ExecutionContext executionContext) { return (List results, Throwable exception) -> { - executionContext.run(exception,() -> { + executionContext.run(exception, () -> { if (exception != null) { handleValueException(overallResult, exception, executionContext); return; @@ -485,22 +485,26 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec } if (fetchedObject instanceof CompletableFuture) { @SuppressWarnings("unchecked") - CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; - executionContext.decrementRunning(fetchedValue); - CompletableFuture fetchedValueCF = fetchedValue - .handle((result, exception) -> executionContext.call(exception,() -> { + CompletableFuture originalFetchValue = (CompletableFuture) fetchedObject; + CompletableFuture fetchedValue = originalFetchValue.thenApply(Function.identity()); + executionContext.incrementRunning(fetchedValue); + CompletableFuture rawResultCF = fetchedValue + .handle((result, exception) -> executionContext.call(exception, () -> { fetchCtx.onCompleted(result, exception); if (exception != null) { CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); return handleFetchingExceptionResult; } else { // we can simply return the fetched value CF and avoid a allocation - return fetchedValue; + return originalFetchValue; } })) - .thenCompose(Function.identity()) + .thenCompose(Function.identity()); + executionContext.incrementRunning(rawResultCF); + CompletableFuture fetchedValueCF = rawResultCF .thenApply(result -> unboxPossibleDataFetcherResult(executionContext, parameters, result)); - executionContext.incrementRunning(fetchedValue); + executionContext.decrementRunning(rawResultCF); + executionContext.decrementRunning(fetchedValue); return fetchedValueCF; } else { fetchCtx.onCompleted(fetchedObject, null); @@ -819,7 +823,7 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, overallResult.whenComplete(completeListCtx::onCompleted); resultsFuture.whenComplete((results, exception) -> { - executionContext.run(exception,() -> { + executionContext.run(exception, () -> { if (exception != null) { handleValueException(overallResult, exception, executionContext); return; @@ -1161,6 +1165,4 @@ private static void addErrorsToRightContext(List errors, Execution executionContext.addErrors(errors); } } - - } diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index 5653353532..8d0cc8b1cf 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -1,5 +1,7 @@ package graphql +import graphql.execution.DataFetcherExceptionHandler +import graphql.execution.DataFetcherExceptionHandlerResult import graphql.execution.EngineRunningObserver import graphql.execution.ExecutionId import graphql.schema.DataFetcher @@ -7,6 +9,7 @@ import spock.lang.Specification import java.util.concurrent.CompletableFuture import java.util.concurrent.CopyOnWriteArrayList +import java.util.concurrent.locks.ReentrantLock import static graphql.ExecutionInput.newExecutionInput import static graphql.execution.EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY @@ -88,6 +91,88 @@ class EngineRunningTest extends Specification { er.get().data == [hello: "world"] } + def "engine running state is observed with one dependent async datafetcher"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + CompletableFuture cf = new CompletableFuture(); + def df = { env -> + return cf.thenApply { it -> it } + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cf.complete("world") + + then: + er.get().data == [hello: "world"] + states == [RUNNING, NOT_RUNNING] + } + + + def "datafetcher failing with async exception handler"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + throw new RuntimeException("boom") + } as DataFetcher + + ReentrantLock reentrantLock = new ReentrantLock() + reentrantLock.lock(); + + def exceptionHandler = { param -> + def async = CompletableFuture.supplyAsync { + reentrantLock.lock(); + return DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder + .newError(param.dataFetchingEnvironment).message("recovered").build()).build() + } + return async + } as DataFetcherExceptionHandler + + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).defaultDataFetcherExceptionHandler(exceptionHandler).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + states.clear() + reentrantLock.unlock() + def result = er.get() + + then: + result.errors.collect { it.message } == ["recovered"] + // we expect simply going from running to finshed + states == [RUNNING, NOT_RUNNING] + } + + def "engine running state is observed with two async datafetcher"() { given: def sdl = ''' From 2bfd809316bc341de14b9887947ecb31bbd64ded Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 3 Apr 2025 20:59:57 +1000 Subject: [PATCH 323/345] comment --- src/main/java/graphql/execution/ExecutionStrategy.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index ec84481528..e248d12301 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -486,6 +486,10 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec if (fetchedObject instanceof CompletableFuture) { @SuppressWarnings("unchecked") CompletableFuture originalFetchValue = (CompletableFuture) fetchedObject; + // the completion order of dependent CFs is in stack order for + // directly dependent CFs, but in reverse stack order for indirect dependent ones + // By creating one dependent CF on originalFetchValue, we make sure the order it is always + // in reverse stack order CompletableFuture fetchedValue = originalFetchValue.thenApply(Function.identity()); executionContext.incrementRunning(fetchedValue); CompletableFuture rawResultCF = fetchedValue From a68f39cdac0b9196ee34e6d581b4c408589eb423 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 3 Apr 2025 21:08:37 +1000 Subject: [PATCH 324/345] fix exception chaining --- src/main/java/graphql/execution/ExecutionStrategy.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index e248d12301..05f6af816d 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -496,7 +496,9 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec .handle((result, exception) -> executionContext.call(exception, () -> { fetchCtx.onCompleted(result, exception); if (exception != null) { - CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); + // because we added an artificial CF, we need to unwrap the exception + Throwable cause = exception.getCause(); + CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, cause); return handleFetchingExceptionResult; } else { // we can simply return the fetched value CF and avoid a allocation From 987b7192ba9e6b409421b02a81adc761f4a549e2 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 3 Apr 2025 21:15:19 +1000 Subject: [PATCH 325/345] fix exception wrapping --- src/main/java/graphql/execution/ExecutionStrategy.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 05f6af816d..44a086899e 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -493,12 +493,12 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec CompletableFuture fetchedValue = originalFetchValue.thenApply(Function.identity()); executionContext.incrementRunning(fetchedValue); CompletableFuture rawResultCF = fetchedValue - .handle((result, exception) -> executionContext.call(exception, () -> { + .handle((result, wrapperExceptionOrNull) -> executionContext.call(wrapperExceptionOrNull, () -> { + // because we added an artificial CF, we need to unwrap the exception + Throwable exception = wrapperExceptionOrNull != null ? wrapperExceptionOrNull.getCause() : null; fetchCtx.onCompleted(result, exception); if (exception != null) { - // because we added an artificial CF, we need to unwrap the exception - Throwable cause = exception.getCause(); - CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, cause); + CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); return handleFetchingExceptionResult; } else { // we can simply return the fetched value CF and avoid a allocation From a753b26580b8ed93d93064cf81b6a5248ee020ff Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Thu, 3 Apr 2025 21:24:32 +1000 Subject: [PATCH 326/345] tests --- .../groovy/graphql/EngineRunningTest.groovy | 107 ++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index 8d0cc8b1cf..b974b17e57 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -56,6 +56,55 @@ class EngineRunningTest extends Specification { states == [RUNNING, NOT_RUNNING] } + def "multiple async DF"() { + given: + def sdl = ''' + + type Query { + hello: String + hello2: String + } + ''' + CompletableFuture cf1 = new CompletableFuture(); + def df1 = { env -> + return cf1; + } as DataFetcher + CompletableFuture cf2 = new CompletableFuture(); + def df2 = { env -> + return cf2; + } as DataFetcher + + def fetchers = ["Query": ["hello": df1, "hello2": df2]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).build() + + def query = "{ hello hello2 }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear(); + cf1.complete("world") + + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf2.complete("world2") + + then: + states == [RUNNING, NOT_RUNNING] + er.get().data == [hello: "world", hello2: "world2"] + } + + def "engine running state is observed with one async datafetcher"() { given: def sdl = ''' @@ -172,6 +221,64 @@ class EngineRunningTest extends Specification { states == [RUNNING, NOT_RUNNING] } + def "async datafetcher failing with async exception handler"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def cf = new CompletableFuture(); + def df = { env -> + return cf.thenApply { it -> throw new RuntimeException("boom") } + } as DataFetcher + + ReentrantLock reentrantLock = new ReentrantLock() + reentrantLock.lock(); + + def exceptionHandler = { param -> + def async = CompletableFuture.supplyAsync { + reentrantLock.lock(); + return DataFetcherExceptionHandlerResult.newResult(GraphqlErrorBuilder + .newError(param.dataFetchingEnvironment).message("recovered").build()).build() + } + return async + } as DataFetcherExceptionHandler + + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + def graphQL = GraphQL.newGraphQL(schema).defaultDataFetcherExceptionHandler(exceptionHandler).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf.complete("foo") + + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + reentrantLock.unlock() + def result = er.get() + + then: + result.errors.collect { it.message } == ["recovered"] + // we expect simply going from running to finshed + states == [RUNNING, NOT_RUNNING] + } + def "engine running state is observed with two async datafetcher"() { given: From a918e609d09dc34f442705a3514be232fbf71c3b Mon Sep 17 00:00:00 2001 From: rafearnold Date: Thu, 3 Apr 2025 20:55:32 +0100 Subject: [PATCH 327/345] filter out null error location in toSpecification --- src/main/java/graphql/GraphqlErrorHelper.java | 3 +++ .../groovy/graphql/GraphQLErrorTest.groovy | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/main/java/graphql/GraphqlErrorHelper.java b/src/main/java/graphql/GraphqlErrorHelper.java index 8dd8773d47..35a20d03f7 100644 --- a/src/main/java/graphql/GraphqlErrorHelper.java +++ b/src/main/java/graphql/GraphqlErrorHelper.java @@ -65,6 +65,9 @@ public static Object locations(List locations) { * @return a value for source location of the error */ public static Object location(SourceLocation location) { + if (location == null) { + return null; + } int line = location.getLine(); int column = location.getColumn(); if (line < 1 || column < 1) { diff --git a/src/test/groovy/graphql/GraphQLErrorTest.groovy b/src/test/groovy/graphql/GraphQLErrorTest.groovy index f9c2a2358f..cf80eb845f 100644 --- a/src/test/groovy/graphql/GraphQLErrorTest.groovy +++ b/src/test/groovy/graphql/GraphQLErrorTest.groovy @@ -94,6 +94,26 @@ class GraphQLErrorTest extends Specification { error.toSpecification() == expectedMap } + def "toSpecification filters out null error locations"() { + given: + def error = ValidationError.newValidationError() + .validationErrorType(ValidationErrorType.UnknownType) + .sourceLocations([null, mkLocation(333, 1)]) + .description("Test ValidationError") + .build() + + def expectedMap = [ + locations: [ + [line: 333, column: 1] + ], + message: "Test ValidationError", + extensions: [classification:"ValidationError"] + ] + + expect: + error.toSpecification() == expectedMap + } + class CustomException extends RuntimeException implements GraphQLError { private LinkedHashMap map From 1662f0a2755aec673899a0bab6441cbc1bd744c4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Apr 2025 00:51:43 +0000 Subject: [PATCH 328/345] Add performance results for commit 95742271c556d7833837a8bb84b519969b097d10 --- ...556d7833837a8bb84b519969b097d10-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json diff --git a/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json b/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json new file mode 100644 index 0000000000..1158c0d2e2 --- /dev/null +++ b/performance-results/2025-04-04T00:51:24Z-95742271c556d7833837a8bb84b519969b097d10-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.410055263437113, + "scoreError" : 0.044175216312736174, + "scoreConfidence" : [ + 3.3658800471243766, + 3.454230479749849 + ], + "scorePercentiles" : { + "0.0" : 3.4022423915588753, + "50.0" : 3.4096308464644025, + "90.0" : 3.4187169692607715, + "95.0" : 3.4187169692607715, + "99.0" : 3.4187169692607715, + "99.9" : 3.4187169692607715, + "99.99" : 3.4187169692607715, + "99.999" : 3.4187169692607715, + "99.9999" : 3.4187169692607715, + "100.0" : 3.4187169692607715 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.411004350188826, + 3.4187169692607715 + ], + [ + 3.4022423915588753, + 3.4082573427399785 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7222751587969176, + "scoreError" : 0.020331821722778594, + "scoreConfidence" : [ + 1.701943337074139, + 1.7426069805196962 + ], + "scorePercentiles" : { + "0.0" : 1.7197942687239545, + "50.0" : 1.7213092858607992, + "90.0" : 1.7266877947421173, + "95.0" : 1.7266877947421173, + "99.0" : 1.7266877947421173, + "99.9" : 1.7266877947421173, + "99.99" : 1.7266877947421173, + "99.999" : 1.7266877947421173, + "99.9999" : 1.7266877947421173, + "100.0" : 1.7266877947421173 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7202588154580092, + 1.7197942687239545 + ], + [ + 1.722359756263589, + 1.7266877947421173 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8674677837492119, + "scoreError" : 0.0032325394754821957, + "scoreConfidence" : [ + 0.8642352442737297, + 0.870700323224694 + ], + "scorePercentiles" : { + "0.0" : 0.8667362217669433, + "50.0" : 0.8676693253640158, + "90.0" : 0.8677962625018725, + "95.0" : 0.8677962625018725, + "99.0" : 0.8677962625018725, + "99.9" : 0.8677962625018725, + "99.99" : 0.8677962625018725, + "99.999" : 0.8677962625018725, + "99.9999" : 0.8677962625018725, + "100.0" : 0.8677962625018725 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8677962625018725, + 0.8677842124557796 + ], + [ + 0.8667362217669433, + 0.867554438272252 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.2586900425068, + "scoreError" : 0.13636078587224731, + "scoreConfidence" : [ + 16.12232925663455, + 16.39505082837905 + ], + "scorePercentiles" : { + "0.0" : 16.135512844186522, + "50.0" : 16.273833465528117, + "90.0" : 16.34983499696942, + "95.0" : 16.34983499696942, + "99.0" : 16.34983499696942, + "99.9" : 16.34983499696942, + "99.99" : 16.34983499696942, + "99.999" : 16.34983499696942, + "99.9999" : 16.34983499696942, + "100.0" : 16.34983499696942 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.303901131535557, + 16.273833465528117, + 16.24110655705213 + ], + [ + 16.176868280921056, + 16.135512844186522, + 16.17233484324961 + ], + [ + 16.33151180545686, + 16.34983499696942, + 16.343306457661935 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2672.9855538524826, + "scoreError" : 14.616387865211415, + "scoreConfidence" : [ + 2658.369165987271, + 2687.601941717694 + ], + "scorePercentiles" : { + "0.0" : 2661.079080442354, + "50.0" : 2671.607818200002, + "90.0" : 2687.040356143568, + "95.0" : 2687.040356143568, + "99.0" : 2687.040356143568, + "99.9" : 2687.040356143568, + "99.99" : 2687.040356143568, + "99.999" : 2687.040356143568, + "99.9999" : 2687.040356143568, + "100.0" : 2687.040356143568 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2661.079080442354, + 2663.538227857365, + 2666.4540926531217 + ], + [ + 2671.607818200002, + 2671.283841175784, + 2674.8653706116493 + ], + [ + 2683.025033592116, + 2677.9761639963845, + 2687.040356143568 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 70775.80766872116, + "scoreError" : 742.2818518809171, + "scoreConfidence" : [ + 70033.52581684024, + 71518.08952060208 + ], + "scorePercentiles" : { + "0.0" : 70142.75578283423, + "50.0" : 70954.80008396578, + "90.0" : 71195.13156890463, + "95.0" : 71195.13156890463, + "99.0" : 71195.13156890463, + "99.9" : 71195.13156890463, + "99.99" : 71195.13156890463, + "99.999" : 71195.13156890463, + "99.9999" : 71195.13156890463, + "100.0" : 71195.13156890463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70142.75578283423, + 70226.43035099976, + 70232.69147423247 + ], + [ + 70950.31244706645, + 70954.80008396578, + 70973.0529781649 + ], + [ + 71173.35377017567, + 71133.74056214653, + 71195.13156890463 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 354.3389211609874, + "scoreError" : 5.666682962041467, + "scoreConfidence" : [ + 348.67223819894593, + 360.0056041230289 + ], + "scorePercentiles" : { + "0.0" : 349.8278019785032, + "50.0" : 356.1210976315482, + "90.0" : 357.67017227481824, + "95.0" : 357.67017227481824, + "99.0" : 357.67017227481824, + "99.9" : 357.67017227481824, + "99.99" : 357.67017227481824, + "99.999" : 357.67017227481824, + "99.9999" : 357.67017227481824, + "100.0" : 357.67017227481824 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 349.8548042520111, + 349.98260316975643, + 349.8278019785032 + ], + [ + 356.2227738236618, + 356.0560147982399, + 356.1210976315482 + ], + [ + 356.57428086763986, + 356.74074165270775, + 357.67017227481824 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.66346338200165, + "scoreError" : 0.9408238124872885, + "scoreConfidence" : [ + 106.72263956951436, + 108.60428719448895 + ], + "scorePercentiles" : { + "0.0" : 106.93014223867108, + "50.0" : 107.65326652205152, + "90.0" : 108.490211199469, + "95.0" : 108.490211199469, + "99.0" : 108.490211199469, + "99.9" : 108.490211199469, + "99.99" : 108.490211199469, + "99.999" : 108.490211199469, + "99.9999" : 108.490211199469, + "100.0" : 108.490211199469 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.65326652205152, + 107.71425907277816, + 107.6000277167281 + ], + [ + 107.89863468304631, + 108.45276519843372, + 108.490211199469 + ], + [ + 106.93014223867108, + 107.14562496679335, + 107.08623884004336 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.061783570798361755, + "scoreError" : 2.919212182128583E-4, + "scoreConfidence" : [ + 0.0614916495801489, + 0.06207549201657461 + ], + "scorePercentiles" : { + "0.0" : 0.06148453356082265, + "50.0" : 0.061730150100618525, + "90.0" : 0.06201947467161161, + "95.0" : 0.06201947467161161, + "99.0" : 0.06201947467161161, + "99.9" : 0.06201947467161161, + "99.99" : 0.06201947467161161, + "99.999" : 0.06201947467161161, + "99.9999" : 0.06201947467161161, + "100.0" : 0.06201947467161161 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06167753843070015, + 0.0616939214339916, + 0.06148453356082265 + ], + [ + 0.061730150100618525, + 0.06168849578981784, + 0.06183821364878737 + ], + [ + 0.0619587773110285, + 0.06201947467161161, + 0.061961032237877495 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7475232240008607E-4, + "scoreError" : 1.2599051816234049E-5, + "scoreConfidence" : [ + 3.62153270583852E-4, + 3.873513742163201E-4 + ], + "scorePercentiles" : { + "0.0" : 3.6686498471328336E-4, + "50.0" : 3.731783481611584E-4, + "90.0" : 3.8423162303683427E-4, + "95.0" : 3.8423162303683427E-4, + "99.0" : 3.8423162303683427E-4, + "99.9" : 3.8423162303683427E-4, + "99.99" : 3.8423162303683427E-4, + "99.999" : 3.8423162303683427E-4, + "99.9999" : 3.8423162303683427E-4, + "100.0" : 3.8423162303683427E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7298764866361634E-4, + 3.731783481611584E-4, + 3.735189434301613E-4 + ], + [ + 3.8423162303683427E-4, + 3.84173949945471E-4, + 3.8379800995952856E-4 + ], + [ + 3.6686498471328336E-4, + 3.6702205385880045E-4, + 3.6699533983192086E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014140536648291398, + "scoreError" : 2.9374731934949075E-5, + "scoreConfidence" : [ + 0.01411116191635645, + 0.014169911380226347 + ], + "scorePercentiles" : { + "0.0" : 0.014115446296996832, + "50.0" : 0.014134114425519104, + "90.0" : 0.014178302476496185, + "95.0" : 0.014178302476496185, + "99.0" : 0.014178302476496185, + "99.9" : 0.014178302476496185, + "99.99" : 0.014178302476496185, + "99.999" : 0.014178302476496185, + "99.9999" : 0.014178302476496185, + "100.0" : 0.014178302476496185 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014115446296996832, + 0.01413876408802675, + 0.014134114425519104 + ], + [ + 0.014178302476496185, + 0.014151227157331673, + 0.014148102450991488 + ], + [ + 0.01413344815772737, + 0.014132977418616285, + 0.014132447362916902 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9932611928230904, + "scoreError" : 0.024257323453275522, + "scoreConfidence" : [ + 0.969003869369815, + 1.017518516276366 + ], + "scorePercentiles" : { + "0.0" : 0.9739963147643164, + "50.0" : 0.9965134862495018, + "90.0" : 1.0099352177337912, + "95.0" : 1.0099352177337912, + "99.0" : 1.0099352177337912, + "99.9" : 1.0099352177337912, + "99.99" : 1.0099352177337912, + "99.999" : 1.0099352177337912, + "99.9999" : 1.0099352177337912, + "100.0" : 1.0099352177337912 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9739963147643164, + 0.9766263461914062, + 0.9746201055452685 + ], + [ + 1.0033032107744784, + 1.0099352177337912, + 1.0079804976312872 + ], + [ + 0.9952722825437899, + 0.9965134862495018, + 1.001103273973974 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.012913305599668646, + "scoreError" : 1.3451547784434068E-4, + "scoreConfidence" : [ + 0.012778790121824306, + 0.013047821077512987 + ], + "scorePercentiles" : { + "0.0" : 0.012815936662497309, + "50.0" : 0.012931272408566084, + "90.0" : 0.012941176037145452, + "95.0" : 0.012941176037145452, + "99.0" : 0.012941176037145452, + "99.9" : 0.012941176037145452, + "99.99" : 0.012941176037145452, + "99.999" : 0.012941176037145452, + "99.9999" : 0.012941176037145452, + "100.0" : 0.012941176037145452 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.012815936662497309, + 0.012941176037145452, + 0.012925974531250405 + ], + [ + 0.012934201549986549, + 0.012932876422251133, + 0.012929668394881038 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.621569585832803, + "scoreError" : 0.06695805853852926, + "scoreConfidence" : [ + 3.554611527294274, + 3.6885276443713324 + ], + "scorePercentiles" : { + "0.0" : 3.5804726342161777, + "50.0" : 3.619984607755292, + "90.0" : 3.646612061953353, + "95.0" : 3.646612061953353, + "99.0" : 3.646612061953353, + "99.9" : 3.646612061953353, + "99.99" : 3.646612061953353, + "99.999" : 3.646612061953353, + "99.9999" : 3.646612061953353, + "100.0" : 3.646612061953353 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.6192033798842256, + 3.64428997596504, + 3.646612061953353 + ], + [ + 3.5804726342161777, + 3.620765835626358, + 3.6180736273516643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.817315562985054, + "scoreError" : 0.06309278853592672, + "scoreConfidence" : [ + 2.754222774449127, + 2.880408351520981 + ], + "scorePercentiles" : { + "0.0" : 2.7663685322268328, + "50.0" : 2.8407819358136894, + "90.0" : 2.8458255546385884, + "95.0" : 2.8458255546385884, + "99.0" : 2.8458255546385884, + "99.9" : 2.8458255546385884, + "99.99" : 2.8458255546385884, + "99.999" : 2.8458255546385884, + "99.9999" : 2.8458255546385884, + "100.0" : 2.8458255546385884 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.8458255546385884, + 2.842856151506538, + 2.845687959601707 + ], + [ + 2.7663685322268328, + 2.7678247785773595, + 2.768014618045945 + ], + [ + 2.8407819358136894, + 2.84237150951975, + 2.8361090269350724 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17466291628472425, + "scoreError" : 0.0010892299205336289, + "scoreConfidence" : [ + 0.17357368636419063, + 0.17575214620525786 + ], + "scorePercentiles" : { + "0.0" : 0.1736334279959718, + "50.0" : 0.17477649892514463, + "90.0" : 0.17539436958046864, + "95.0" : 0.17539436958046864, + "99.0" : 0.17539436958046864, + "99.9" : 0.17539436958046864, + "99.99" : 0.17539436958046864, + "99.999" : 0.17539436958046864, + "99.9999" : 0.17539436958046864, + "100.0" : 0.17539436958046864 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17439916790777976, + 0.17477649892514463, + 0.1743388813479542 + ], + [ + 0.17520865829770832, + 0.17515058082143795, + 0.17524262767020066 + ], + [ + 0.17539436958046864, + 0.17382203401585206, + 0.1736334279959718 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3274353774579488, + "scoreError" : 0.016014656619373645, + "scoreConfidence" : [ + 0.3114207208385752, + 0.34345003407732244 + ], + "scorePercentiles" : { + "0.0" : 0.31721999308485327, + "50.0" : 0.32569945065789474, + "90.0" : 0.33981387947262903, + "95.0" : 0.33981387947262903, + "99.0" : 0.33981387947262903, + "99.9" : 0.33981387947262903, + "99.99" : 0.33981387947262903, + "99.999" : 0.33981387947262903, + "99.9999" : 0.33981387947262903, + "100.0" : 0.33981387947262903 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.31730455720903666, + 0.31721999308485327, + 0.31775410793721404 + ], + [ + 0.3257833393927548, + 0.3255280544596354, + 0.32569945065789474 + ], + [ + 0.33981387947262903, + 0.3387748820759511, + 0.33904013283157036 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16641532323284058, + "scoreError" : 0.017350118915669347, + "scoreConfidence" : [ + 0.14906520431717124, + 0.18376544214850993 + ], + "scorePercentiles" : { + "0.0" : 0.15270957588760786, + "50.0" : 0.17205132084853073, + "90.0" : 0.174647807174418, + "95.0" : 0.174647807174418, + "99.0" : 0.174647807174418, + "99.9" : 0.174647807174418, + "99.99" : 0.174647807174418, + "99.999" : 0.174647807174418, + "99.9999" : 0.174647807174418, + "100.0" : 0.174647807174418 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17205132084853073, + 0.17206169996558843, + 0.17200997505934157 + ], + [ + 0.1527471536910599, + 0.1527100326945102, + 0.15270957588760786 + ], + [ + 0.17458898942020637, + 0.174647807174418, + 0.17421135435430204 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.38986128538799675, + "scoreError" : 0.00979797094307402, + "scoreConfidence" : [ + 0.38006331444492275, + 0.39965925633107074 + ], + "scorePercentiles" : { + "0.0" : 0.3846523111393184, + "50.0" : 0.3872767771280304, + "90.0" : 0.3985590201665936, + "95.0" : 0.3985590201665936, + "99.0" : 0.3985590201665936, + "99.9" : 0.3985590201665936, + "99.99" : 0.3985590201665936, + "99.999" : 0.3985590201665936, + "99.9999" : 0.3985590201665936, + "100.0" : 0.3985590201665936 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3872767771280304, + 0.38737736459422817, + 0.3867428934565705 + ], + [ + 0.3985590201665936, + 0.39697225658939345, + 0.39697280100035726 + ], + [ + 0.38533757949291, + 0.384860564924569, + 0.3846523111393184 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15609274809169155, + "scoreError" : 0.0036412484112455373, + "scoreConfidence" : [ + 0.15245149968044602, + 0.15973399650293707 + ], + "scorePercentiles" : { + "0.0" : 0.15436526028433387, + "50.0" : 0.15480616190903743, + "90.0" : 0.15913727148313175, + "95.0" : 0.15913727148313175, + "99.0" : 0.15913727148313175, + "99.9" : 0.15913727148313175, + "99.99" : 0.15913727148313175, + "99.999" : 0.15913727148313175, + "99.9999" : 0.15913727148313175, + "100.0" : 0.15913727148313175 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15436526028433387, + 0.1544817916550808, + 0.15470838450471078 + ], + [ + 0.15882465640683566, + 0.15913727148313175, + 0.15895154913928758 + ], + [ + 0.15495011549784624, + 0.1546095419449598, + 0.15480616190903743 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04758667191926049, + "scoreError" : 0.0023739868350441734, + "scoreConfidence" : [ + 0.04521268508421632, + 0.049960658754304665 + ], + "scorePercentiles" : { + "0.0" : 0.04611377217810733, + "50.0" : 0.04710306553369477, + "90.0" : 0.04951102378960189, + "95.0" : 0.04951102378960189, + "99.0" : 0.04951102378960189, + "99.9" : 0.04951102378960189, + "99.99" : 0.04951102378960189, + "99.999" : 0.04951102378960189, + "99.9999" : 0.04951102378960189, + "100.0" : 0.04951102378960189 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04951102378960189, + 0.049440907275109386, + 0.0491906721874339 + ], + [ + 0.047310086098574095, + 0.04710306553369477, + 0.047064187063192126 + ], + [ + 0.04642925747502136, + 0.04611377217810733, + 0.04611707567260955 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9395685.427692974, + "scoreError" : 239163.15498882558, + "scoreConfidence" : [ + 9156522.272704149, + 9634848.5826818 + ], + "scorePercentiles" : { + "0.0" : 9199383.375919119, + "50.0" : 9405962.368421054, + "90.0" : 9559300.52244508, + "95.0" : 9559300.52244508, + "99.0" : 9559300.52244508, + "99.9" : 9559300.52244508, + "99.99" : 9559300.52244508, + "99.999" : 9559300.52244508, + "99.9999" : 9559300.52244508, + "100.0" : 9559300.52244508 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9410055.000940735, + 9405962.368421054, + 9405348.242481204 + ], + [ + 9268332.786839666, + 9214277.049723757, + 9199383.375919119 + ], + [ + 9559300.52244508, + 9544774.91793893, + 9553734.58452722 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 91f1967f5e3bfd21561e465b757b3d719b7b97a7 Mon Sep 17 00:00:00 2001 From: bbaker Date: Fri, 4 Apr 2025 15:26:38 +1100 Subject: [PATCH 329/345] Removed cancel operation support --- src/main/java/graphql/ExecutionInput.java | 23 +------ .../execution/EngineRunningObserver.java | 7 -- .../graphql/execution/ExecutionContext.java | 22 ------ .../groovy/graphql/ExecutionInputTest.groovy | 67 ------------------- .../SubscriptionExecutionStrategyTest.groovy | 43 ------------ 5 files changed, 1 insertion(+), 161 deletions(-) diff --git a/src/main/java/graphql/ExecutionInput.java b/src/main/java/graphql/ExecutionInput.java index d0d35dfd30..59efc4f48d 100644 --- a/src/main/java/graphql/ExecutionInput.java +++ b/src/main/java/graphql/ExecutionInput.java @@ -29,6 +29,7 @@ public class ExecutionInput { private final DataLoaderRegistry dataLoaderRegistry; private final ExecutionId executionId; private final Locale locale; + // this is currently not used but we want it back soon after the v23 release private final AtomicBoolean cancelled; @@ -141,28 +142,6 @@ public Map getExtensions() { return extensions; } - - /** - * The graphql engine will check this frequently and if that is true, it will - * throw a {@link graphql.execution.AbortExecutionException} to cancel the execution. - *

    - * This is a cooperative cancellation. Some asynchronous data fetching code may still continue to - * run but there will be no more efforts run future field fetches say. - * - * @return true if the execution should be cancelled - */ - public boolean isCancelled() { - return cancelled.get(); - } - - /** - * This can be called to cancel the graphql execution. Remember this is a cooperative cancellation - * and the graphql engine needs to be running on a thread to allow is to respect this flag. - */ - public void cancel() { - cancelled.set(true); - } - /** * This helps you transform the current ExecutionInput object into another one by starting a builder with all * the current values and allows you to transform it how you want. diff --git a/src/main/java/graphql/execution/EngineRunningObserver.java b/src/main/java/graphql/execution/EngineRunningObserver.java index 78b8d4dab4..008623eedc 100644 --- a/src/main/java/graphql/execution/EngineRunningObserver.java +++ b/src/main/java/graphql/execution/EngineRunningObserver.java @@ -1,6 +1,5 @@ package graphql.execution; -import graphql.ExecutionInput; import graphql.ExperimentalApi; import graphql.GraphQLContext; import org.jspecify.annotations.NullMarked; @@ -9,8 +8,6 @@ * This class lets you observe the running state of the graphql-java engine. As it processes and dispatches graphql fields, * the engine moves in and out of a running and not running state. As it does this, the callback is called with information telling you the current * state. - *

    - * If the engine is cancelled via {@link ExecutionInput#cancel()} then the observer will also be called to indicate that. */ @ExperimentalApi @NullMarked @@ -25,10 +22,6 @@ enum RunningState { * Represents that the engine code is asynchronously waiting for fetching to happen */ NOT_RUNNING, - /** - * Represents that the engine code has been cancelled via {@link ExecutionInput#cancel()} - */ - CANCELLED } diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index 1b573b0379..95abf8c6e3 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -37,7 +37,6 @@ import java.util.function.Supplier; import static graphql.Assert.assertTrue; -import static graphql.execution.EngineRunningObserver.RunningState.CANCELLED; import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING; import static graphql.execution.EngineRunningObserver.RunningState.RUNNING; @@ -378,7 +377,6 @@ public boolean isRunning() { } private void incrementRunning(Throwable throwable) { - checkIsCancelled(throwable); assertTrue(isRunning.get() >= 0); if (isRunning.incrementAndGet() == 1) { changeOfState(RUNNING); @@ -386,7 +384,6 @@ private void incrementRunning(Throwable throwable) { } private void decrementRunning(Throwable throwable) { - checkIsCancelled(throwable); assertTrue(isRunning.get() > 0); if (isRunning.decrementAndGet() == 0) { changeOfState(NOT_RUNNING); @@ -438,25 +435,6 @@ public void run(Throwable throwable, Runnable runnable) { } } - private void checkIsCancelled(Throwable currentThrowable) { - // no need to check we are cancelled if we already have an exception in play - // since it can lead to an exception being thrown when an exception has already been - // thrown - if (currentThrowable == null) { - checkIsCancelled(); - } - } - - /** - * This will abort the execution via {@link AbortExecutionException} if the {@link ExecutionInput} has been cancelled - */ - private void checkIsCancelled() { - if (executionInput.isCancelled()) { - changeOfState(CANCELLED); - throw new AbortExecutionException("Execution has been asked to be cancelled"); - } - } - private void changeOfState(RunningState runningState) { if (engineRunningObserver != null) { engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); diff --git a/src/test/groovy/graphql/ExecutionInputTest.groovy b/src/test/groovy/graphql/ExecutionInputTest.groovy index f6a68576de..d2cb3bc930 100644 --- a/src/test/groovy/graphql/ExecutionInputTest.groovy +++ b/src/test/groovy/graphql/ExecutionInputTest.groovy @@ -167,71 +167,4 @@ class ExecutionInputTest extends Specification { er.errors.isEmpty() er.data["fetch"] == "{locale=German, executionId=ID123, graphqlContext=b}" } - - def "can cancel the execution"() { - def sdl = ''' - type Query { - fetch1 : Inner - fetch2 : Inner - } - - type Inner { - f : String - } - - ''' - - CountDownLatch fieldLatch = new CountDownLatch(1) - - DataFetcher df1Sec = { DataFetchingEnvironment env -> - println("Entering DF1") - return CompletableFuture.supplyAsync { - println("DF1 async run") - fieldLatch.await() - Thread.sleep(1000) - return [f: "x"] - } - } - DataFetcher df10Sec = { DataFetchingEnvironment env -> - println("Entering DF10") - return CompletableFuture.supplyAsync { - println("DF10 async run") - fieldLatch.await() - Thread.sleep(10000) - return "x" - } - } - - def fetcherMap = ["Query": ["fetch1": df1Sec, "fetch2": df1Sec], - "Inner": ["f": df10Sec] - ] - def schema = TestUtil.schema(sdl, fetcherMap) - def graphQL = GraphQL.newGraphQL(schema).build() - - when: - ExecutionInput executionInput = ExecutionInput.newExecutionInput() - .query("query q { fetch1 { f } fetch2 { f } }") - .build() - - def cf = graphQL.executeAsync(executionInput) - - Thread.sleep(250) // let it get into the field fetching say - - // lets cancel it - println("cancelling") - executionInput.cancel() - - // let the DFs run - println("make the fields run") - fieldLatch.countDown() - - println("and await for the overall CF to complete") - Awaitility.await().atMost(Duration.ofSeconds(60)).until({ -> cf.isDone() }) - - def er = cf.join() - - then: - !er.errors.isEmpty() - er.errors[0]["message"] == "Execution has been asked to be cancelled" - } } diff --git a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy index 08a216fe20..3d7bb28086 100644 --- a/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/SubscriptionExecutionStrategyTest.groovy @@ -710,49 +710,6 @@ class SubscriptionExecutionStrategyTest extends Specification { } } - def "we can cancel the operation and the upstream publisher is told"() { - List promises = [] - RxJavaMessagePublisher publisher = new RxJavaMessagePublisher(10) - - DataFetcher newMessageDF = { env -> return publisher } - DataFetcher senderDF = dfThatDoesNotComplete("sender", promises) - DataFetcher textDF = PropertyDataFetcher.fetching("text") - - GraphQL graphQL = buildSubscriptionQL(newMessageDF, senderDF, textDF) - - def executionInput = ExecutionInput.newExecutionInput().query(""" - subscription NewMessages { - newMessage(roomId: 123) { - sender - text - } - } - """).graphQLContext([(SubscriptionExecutionStrategy.KEEP_SUBSCRIPTION_EVENTS_ORDERED): true]).build() - - def executionResult = graphQL.execute(executionInput) - - when: - Publisher msgStream = executionResult.getData() - def capturingSubscriber = new CapturingSubscriber(1) - msgStream.subscribe(capturingSubscriber) - - // now cancel the operation - executionInput.cancel() - - // make things over the subscription - promises.forEach {it.run()} - - - then: - Awaitility.await().untilTrue(capturingSubscriber.isDone()) - - def messages = capturingSubscriber.events - messages.size() == 1 - def error = messages[0].errors[0] - assert error.message == "Execution has been asked to be cancelled" - publisher.counter == 2 - } - private static DataFetcher dfThatDoesNotComplete(String propertyName, List promises) { { env -> def df = PropertyDataFetcher.fetching(propertyName) From a25f93bc82822777c9f2c114d1348a4fa1a8a3b5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Apr 2025 05:27:45 +0000 Subject: [PATCH 330/345] Add performance results for commit 6eb2616cb700661d6c433a8ffbc7e0feb045b19a --- ...700661d6c433a8ffbc7e0feb045b19a-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json diff --git a/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json b/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json new file mode 100644 index 0000000000..863d559e57 --- /dev/null +++ b/performance-results/2025-04-04T05:27:30Z-6eb2616cb700661d6c433a8ffbc7e0feb045b19a-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.41547431211834, + "scoreError" : 0.02013445470791421, + "scoreConfidence" : [ + 3.395339857410426, + 3.4356087668262543 + ], + "scorePercentiles" : { + "0.0" : 3.411373024163593, + "50.0" : 3.415796403863652, + "90.0" : 3.418931416582463, + "95.0" : 3.418931416582463, + "99.0" : 3.418931416582463, + "99.9" : 3.418931416582463, + "99.99" : 3.418931416582463, + "99.999" : 3.418931416582463, + "99.9999" : 3.418931416582463, + "100.0" : 3.418931416582463 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4160661756130946, + 3.418931416582463 + ], + [ + 3.411373024163593, + 3.4155266321142097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7257794060486682, + "scoreError" : 0.014829676059242635, + "scoreConfidence" : [ + 1.7109497299894256, + 1.7406090821079108 + ], + "scorePercentiles" : { + "0.0" : 1.7229459392720967, + "50.0" : 1.7260640883842262, + "90.0" : 1.728043508154123, + "95.0" : 1.728043508154123, + "99.0" : 1.728043508154123, + "99.9" : 1.728043508154123, + "99.99" : 1.728043508154123, + "99.999" : 1.728043508154123, + "99.9999" : 1.728043508154123, + "100.0" : 1.728043508154123 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7229459392720967, + 1.7249498535300087 + ], + [ + 1.728043508154123, + 1.727178323238444 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8670239652165881, + "scoreError" : 0.0038232692313808036, + "scoreConfidence" : [ + 0.8632006959852073, + 0.8708472344479689 + ], + "scorePercentiles" : { + "0.0" : 0.8664786283013596, + "50.0" : 0.8669751735844602, + "90.0" : 0.8676668853960727, + "95.0" : 0.8676668853960727, + "99.0" : 0.8676668853960727, + "99.9" : 0.8676668853960727, + "99.99" : 0.8676668853960727, + "99.999" : 0.8676668853960727, + "99.9999" : 0.8676668853960727, + "100.0" : 0.8676668853960727 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8664786283013596, + 0.8665661091157533 + ], + [ + 0.867384238053167, + 0.8676668853960727 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.257614896779337, + "scoreError" : 0.2156823417456936, + "scoreConfidence" : [ + 16.041932555033643, + 16.47329723852503 + ], + "scorePercentiles" : { + "0.0" : 16.046117112775594, + "50.0" : 16.351278502311153, + "90.0" : 16.358823560420063, + "95.0" : 16.358823560420063, + "99.0" : 16.358823560420063, + "99.9" : 16.358823560420063, + "99.99" : 16.358823560420063, + "99.999" : 16.358823560420063, + "99.9999" : 16.358823560420063, + "100.0" : 16.358823560420063 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 16.132712758895906, + 16.105581835399015, + 16.046117112775594 + ], + [ + 16.356463835561264, + 16.358823560420063, + 16.351278502311153 + ], + [ + 16.254642767027285, + 16.35464668287753, + 16.3582670157462 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2657.7695720704037, + "scoreError" : 148.2972269158939, + "scoreConfidence" : [ + 2509.4723451545096, + 2806.0667989862977 + ], + "scorePercentiles" : { + "0.0" : 2539.768121859389, + "50.0" : 2706.007591520502, + "90.0" : 2728.2643986587595, + "95.0" : 2728.2643986587595, + "99.0" : 2728.2643986587595, + "99.9" : 2728.2643986587595, + "99.99" : 2728.2643986587595, + "99.999" : 2728.2643986587595, + "99.9999" : 2728.2643986587595, + "100.0" : 2728.2643986587595 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2702.1623484921656, + 2707.919946005747, + 2706.007591520502 + ], + [ + 2540.1588945402596, + 2539.768121859389, + 2542.476993406105 + ], + [ + 2725.722525637147, + 2728.2643986587595, + 2727.4453285135583 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69187.62949561818, + "scoreError" : 1950.2487427776907, + "scoreConfidence" : [ + 67237.38075284049, + 71137.87823839588 + ], + "scorePercentiles" : { + "0.0" : 67811.69749602833, + "50.0" : 69182.75188864459, + "90.0" : 70554.04343863564, + "95.0" : 70554.04343863564, + "99.0" : 70554.04343863564, + "99.9" : 70554.04343863564, + "99.99" : 70554.04343863564, + "99.999" : 70554.04343863564, + "99.9999" : 70554.04343863564, + "100.0" : 70554.04343863564 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70489.37946132944, + 70554.04343863564, + 70515.75586998963 + ], + [ + 67864.5403327218, + 67811.69749602833, + 67845.50582086251 + ], + [ + 69182.75188864459, + 69171.5162798034, + 69253.47487254828 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 351.14686595143564, + "scoreError" : 12.402276547808718, + "scoreConfidence" : [ + 338.74458940362695, + 363.54914249924434 + ], + "scorePercentiles" : { + "0.0" : 341.4050740261924, + "50.0" : 350.9959831827741, + "90.0" : 361.14535751562823, + "95.0" : 361.14535751562823, + "99.0" : 361.14535751562823, + "99.9" : 361.14535751562823, + "99.99" : 361.14535751562823, + "99.999" : 361.14535751562823, + "99.9999" : 361.14535751562823, + "100.0" : 361.14535751562823 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 341.4050740261924, + 341.75306137898, + 345.9414385143761 + ], + [ + 349.9015669158507, + 350.9959831827741, + 351.72342119398223 + ], + [ + 360.81338018128395, + 361.14535751562823, + 356.64251065385264 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 105.33465576346994, + "scoreError" : 5.16876703445678, + "scoreConfidence" : [ + 100.16588872901316, + 110.50342279792672 + ], + "scorePercentiles" : { + "0.0" : 101.2422526340046, + "50.0" : 105.98517929748999, + "90.0" : 108.60769860695804, + "95.0" : 108.60769860695804, + "99.0" : 108.60769860695804, + "99.9" : 108.60769860695804, + "99.99" : 108.60769860695804, + "99.999" : 108.60769860695804, + "99.9999" : 108.60769860695804, + "100.0" : 108.60769860695804 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 108.47585305815755, + 108.51299893266345, + 108.60769860695804 + ], + [ + 101.2422526340046, + 101.66996889742603, + 101.63790810097589 + ], + [ + 105.88856190695395, + 105.98517929748999, + 105.99148043659996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.0613835700776904, + "scoreError" : 5.30970211986948E-4, + "scoreConfidence" : [ + 0.060852599865703454, + 0.06191454028967735 + ], + "scorePercentiles" : { + "0.0" : 0.06095189772408665, + "50.0" : 0.061378639564216665, + "90.0" : 0.06184695769116592, + "95.0" : 0.06184695769116592, + "99.0" : 0.06184695769116592, + "99.9" : 0.06184695769116592, + "99.99" : 0.06184695769116592, + "99.999" : 0.06184695769116592, + "99.9999" : 0.06184695769116592, + "100.0" : 0.06184695769116592 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06144970979555971, + 0.06122663911100226, + 0.061378639564216665 + ], + [ + 0.061581722824346624, + 0.06179943338112424, + 0.06184695769116592 + ], + [ + 0.06095189772408665, + 0.06105782843047466, + 0.06115930217723686 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.6792774673077264E-4, + "scoreError" : 9.52400144527695E-6, + "scoreConfidence" : [ + 3.584037452854957E-4, + 3.774517481760496E-4 + ], + "scorePercentiles" : { + "0.0" : 3.601947262437733E-4, + "50.0" : 3.710066787160918E-4, + "90.0" : 3.7284325731862846E-4, + "95.0" : 3.7284325731862846E-4, + "99.0" : 3.7284325731862846E-4, + "99.9" : 3.7284325731862846E-4, + "99.99" : 3.7284325731862846E-4, + "99.999" : 3.7284325731862846E-4, + "99.9999" : 3.7284325731862846E-4, + "100.0" : 3.7284325731862846E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.606764144071223E-4, + 3.601947262437733E-4, + 3.603632293866587E-4 + ], + [ + 3.716483250039227E-4, + 3.721081112498685E-4, + 3.7284325731862846E-4 + ], + [ + 3.70884520477737E-4, + 3.71624457773151E-4, + 3.710066787160918E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01402845854457803, + "scoreError" : 4.044676667384548E-5, + "scoreConfidence" : [ + 0.013988011777904185, + 0.014068905311251876 + ], + "scorePercentiles" : { + "0.0" : 0.013993197164454371, + "50.0" : 0.01404240319713314, + "90.0" : 0.014049538132783347, + "95.0" : 0.014049538132783347, + "99.0" : 0.014049538132783347, + "99.9" : 0.014049538132783347, + "99.99" : 0.014049538132783347, + "99.999" : 0.014049538132783347, + "99.9999" : 0.014049538132783347, + "100.0" : 0.014049538132783347 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014000710592155463, + 0.013993197164454371, + 0.013996113428682996 + ], + [ + 0.014042536027781405, + 0.014049538132783347, + 0.01404240319713314 + ], + [ + 0.0140474361495304, + 0.014043828995948403, + 0.014040363212732769 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9794412564438721, + "scoreError" : 0.01637443287226072, + "scoreConfidence" : [ + 0.9630668235716114, + 0.9958156893161328 + ], + "scorePercentiles" : { + "0.0" : 0.9663152830225142, + "50.0" : 0.9845775188539924, + "90.0" : 0.9877359903209877, + "95.0" : 0.9877359903209877, + "99.0" : 0.9877359903209877, + "99.9" : 0.9877359903209877, + "99.99" : 0.9877359903209877, + "99.999" : 0.9877359903209877, + "99.9999" : 0.9877359903209877, + "100.0" : 0.9877359903209877 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9665899604678136, + 0.9669146041767379, + 0.9663152830225142 + ], + [ + 0.9829151665028504, + 0.9853623369790128, + 0.9845775188539924 + ], + [ + 0.9871915410661402, + 0.9873689066047981, + 0.9877359903209877 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013066821965947481, + "scoreError" : 1.4899924544193566E-4, + "scoreConfidence" : [ + 0.012917822720505545, + 0.013215821211389417 + ], + "scorePercentiles" : { + "0.0" : 0.013011505698910181, + "50.0" : 0.01306633020899141, + "90.0" : 0.013123710692154048, + "95.0" : 0.013123710692154048, + "99.0" : 0.013123710692154048, + "99.9" : 0.013123710692154048, + "99.99" : 0.013123710692154048, + "99.999" : 0.013123710692154048, + "99.9999" : 0.013123710692154048, + "100.0" : 0.013123710692154048 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0131095357868546, + 0.013123710692154048, + 0.013111727565707873 + ], + [ + 0.01302312463112822, + 0.013011505698910181, + 0.01302132742092996 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.6016004776114623, + "scoreError" : 0.04408562358601525, + "scoreConfidence" : [ + 3.557514854025447, + 3.6456861011974775 + ], + "scorePercentiles" : { + "0.0" : 3.5702578772305498, + "50.0" : 3.6067730656092287, + "90.0" : 3.613936494219653, + "95.0" : 3.613936494219653, + "99.0" : 3.613936494219653, + "99.9" : 3.613936494219653, + "99.99" : 3.613936494219653, + "99.999" : 3.613936494219653, + "99.9999" : 3.613936494219653, + "100.0" : 3.613936494219653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.5702578772305498, + 3.613936494219653, + 3.6067297692862295 + ], + [ + 3.608194422077922, + 3.606816361932228, + 3.60366794092219 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.7855132821873965, + "scoreError" : 0.026726483277009803, + "scoreConfidence" : [ + 2.7587867989103865, + 2.8122397654644065 + ], + "scorePercentiles" : { + "0.0" : 2.759536437637969, + "50.0" : 2.786476934522151, + "90.0" : 2.8075433060078607, + "95.0" : 2.8075433060078607, + "99.0" : 2.8075433060078607, + "99.9" : 2.8075433060078607, + "99.99" : 2.8075433060078607, + "99.999" : 2.8075433060078607, + "99.9999" : 2.8075433060078607, + "100.0" : 2.8075433060078607 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.786476934522151, + 2.7926873155543146, + 2.7885715913019236 + ], + [ + 2.759536437637969, + 2.7736968960066557, + 2.7713081041839844 + ], + [ + 2.8075433060078607, + 2.806818850687623, + 2.7829801037840847 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1761613666321471, + "scoreError" : 0.002516338259768568, + "scoreConfidence" : [ + 0.17364502837237852, + 0.17867770489191567 + ], + "scorePercentiles" : { + "0.0" : 0.17409059075953554, + "50.0" : 0.1760895962564491, + "90.0" : 0.17804075546574563, + "95.0" : 0.17804075546574563, + "99.0" : 0.17804075546574563, + "99.9" : 0.17804075546574563, + "99.99" : 0.17804075546574563, + "99.999" : 0.17804075546574563, + "99.9999" : 0.17804075546574563, + "100.0" : 0.17804075546574563 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17804075546574563, + 0.1777888090954345, + 0.17770007303290924 + ], + [ + 0.17501571777594988, + 0.17409059075953554, + 0.1742418977227188 + ], + [ + 0.1764508362211949, + 0.1760895962564491, + 0.176034023359386 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32730021817444466, + "scoreError" : 0.017163920712541466, + "scoreConfidence" : [ + 0.3101362974619032, + 0.3444641388869861 + ], + "scorePercentiles" : { + "0.0" : 0.31596479819905215, + "50.0" : 0.3256441752906314, + "90.0" : 0.3405568089562404, + "95.0" : 0.3405568089562404, + "99.0" : 0.3405568089562404, + "99.9" : 0.3405568089562404, + "99.99" : 0.3405568089562404, + "99.999" : 0.3405568089562404, + "99.9999" : 0.3405568089562404, + "100.0" : 0.3405568089562404 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3388611753244553, + 0.3405568089562404, + 0.33991513701563564 + ], + [ + 0.3256005505160681, + 0.3259885275287675, + 0.3256441752906314 + ], + [ + 0.31713970326324803, + 0.316031087475903, + 0.31596479819905215 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.1652042889286885, + "scoreError" : 0.0017617414374246191, + "scoreConfidence" : [ + 0.16344254749126388, + 0.1669660303661131 + ], + "scorePercentiles" : { + "0.0" : 0.163923576657651, + "50.0" : 0.16483931719579337, + "90.0" : 0.16660534148007464, + "95.0" : 0.16660534148007464, + "99.0" : 0.16660534148007464, + "99.9" : 0.16660534148007464, + "99.99" : 0.16660534148007464, + "99.999" : 0.16660534148007464, + "99.9999" : 0.16660534148007464, + "100.0" : 0.16660534148007464 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16660534148007464, + 0.16656146767934177, + 0.1663387481328698 + ], + [ + 0.16394726561962064, + 0.163923576657651, + 0.16483931719579337 + ], + [ + 0.16482515006922469, + 0.16480627729527514, + 0.16499145622834516 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.39010744239973744, + "scoreError" : 0.01670421567031333, + "scoreConfidence" : [ + 0.3734032267294241, + 0.40681165807005076 + ], + "scorePercentiles" : { + "0.0" : 0.37962961616430035, + "50.0" : 0.38764850711323023, + "90.0" : 0.40918921207905395, + "95.0" : 0.40918921207905395, + "99.0" : 0.40918921207905395, + "99.9" : 0.40918921207905395, + "99.99" : 0.40918921207905395, + "99.999" : 0.40918921207905395, + "99.9999" : 0.40918921207905395, + "100.0" : 0.40918921207905395 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3897532790552654, + 0.3830618254807324, + 0.38492263564280216 + ], + [ + 0.40918921207905395, + 0.3987026886213221, + 0.39790933049498645 + ], + [ + 0.38764850711323023, + 0.38014988694594387, + 0.37962961616430035 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15589403072362684, + "scoreError" : 0.0019617589008532423, + "scoreConfidence" : [ + 0.1539322718227736, + 0.15785578962448008 + ], + "scorePercentiles" : { + "0.0" : 0.15429051936310056, + "50.0" : 0.15572938609359183, + "90.0" : 0.15757248833984622, + "95.0" : 0.15757248833984622, + "99.0" : 0.15757248833984622, + "99.9" : 0.15757248833984622, + "99.99" : 0.15757248833984622, + "99.999" : 0.15757248833984622, + "99.9999" : 0.15757248833984622, + "100.0" : 0.15757248833984622 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15757248833984622, + 0.15724325976068054, + 0.15697942648813262 + ], + [ + 0.1552752374578824, + 0.15445985558284292, + 0.15429051936310056 + ], + [ + 0.15580430851445043, + 0.1556917949121141, + 0.15572938609359183 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.046893268004107674, + "scoreError" : 0.001162133260808305, + "scoreConfidence" : [ + 0.045731134743299366, + 0.04805540126491598 + ], + "scorePercentiles" : { + "0.0" : 0.04607961999179795, + "50.0" : 0.04681437227603189, + "90.0" : 0.04772420759282237, + "95.0" : 0.04772420759282237, + "99.0" : 0.04772420759282237, + "99.9" : 0.04772420759282237, + "99.99" : 0.04772420759282237, + "99.999" : 0.04772420759282237, + "99.9999" : 0.04772420759282237, + "100.0" : 0.04772420759282237 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.047255712641233925, + 0.04681437227603189, + 0.04675393894029146 + ], + [ + 0.04772420759282237, + 0.0476040818683385, + 0.0476215452255324 + ], + [ + 0.04608960344652766, + 0.04609633005439292, + 0.04607961999179795 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9247386.677157959, + "scoreError" : 103775.56890511974, + "scoreConfidence" : [ + 9143611.10825284, + 9351162.246063078 + ], + "scorePercentiles" : { + "0.0" : 9170927.29422548, + "50.0" : 9251081.91119334, + "90.0" : 9346239.112149533, + "95.0" : 9346239.112149533, + "99.0" : 9346239.112149533, + "99.9" : 9346239.112149533, + "99.99" : 9346239.112149533, + "99.999" : 9346239.112149533, + "99.9999" : 9346239.112149533, + "100.0" : 9346239.112149533 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9251081.91119334, + 9249757.321626617, + 9258786.827012027 + ], + [ + 9170927.29422548, + 9172337.738771768, + 9183301.19651056 + ], + [ + 9346239.112149533, + 9303166.288104089, + 9290882.404828226 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From a590cfa00beab409fcef0777270e2e2b4fd74d4e Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sat, 5 Apr 2025 21:10:44 +1000 Subject: [PATCH 331/345] refactor engine tracking and simplify it --- src/main/java/graphql/EngineRunningState.java | 203 ++++++++++++++ src/main/java/graphql/GraphQL.java | 76 +++--- .../AbstractAsyncExecutionStrategy.java | 4 +- .../execution/AsyncExecutionStrategy.java | 91 +++---- .../AsyncSerialExecutionStrategy.java | 60 ++-- .../java/graphql/execution/Execution.java | 8 +- .../graphql/execution/ExecutionContext.java | 158 ++++++----- .../execution/ExecutionContextBuilder.java | 9 +- .../graphql/execution/ExecutionStrategy.java | 256 ++++++++---------- .../SubscriptionExecutionStrategy.java | 124 ++++----- .../groovy/graphql/EngineRunningTest.groovy | 5 + .../AsyncExecutionStrategyTest.groovy | 6 + .../AsyncSerialExecutionStrategyTest.groovy | 27 +- .../ExecutionContextBuilderTest.groovy | 75 +---- .../execution/ExecutionStrategyTest.groovy | 4 +- .../graphql/execution/ExecutionTest.groovy | 9 +- .../FieldValidationTest.groovy | 5 +- 17 files changed, 617 insertions(+), 503 deletions(-) create mode 100644 src/main/java/graphql/EngineRunningState.java diff --git a/src/main/java/graphql/EngineRunningState.java b/src/main/java/graphql/EngineRunningState.java new file mode 100644 index 0000000000..2ec36129f3 --- /dev/null +++ b/src/main/java/graphql/EngineRunningState.java @@ -0,0 +1,203 @@ +package graphql; + +import graphql.execution.EngineRunningObserver; +import graphql.execution.ExecutionId; +import org.jspecify.annotations.Nullable; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Supplier; + +import static graphql.Assert.assertTrue; +import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING; +import static graphql.execution.EngineRunningObserver.RunningState.RUNNING; + +@Internal +public class EngineRunningState { + + @Nullable + private final EngineRunningObserver engineRunningObserver; + @Nullable + private final GraphQLContext graphQLContext; + @Nullable + private volatile ExecutionId executionId; + + private final AtomicInteger isRunning = new AtomicInteger(0); + + @VisibleForTesting + public EngineRunningState() { + this.engineRunningObserver = null; + this.graphQLContext = null; + this.executionId = null; + } + + public EngineRunningState(ExecutionInput executionInput) { + EngineRunningObserver engineRunningObserver = executionInput.getGraphQLContext().get(EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY); + if (engineRunningObserver != null) { + this.engineRunningObserver = engineRunningObserver; + this.graphQLContext = executionInput.getGraphQLContext(); + this.executionId = executionInput.getExecutionId(); + } else { + this.engineRunningObserver = null; + this.graphQLContext = null; + this.executionId = null; + } + } + + public CompletableFuture handle(CompletableFuture src, BiFunction fn) { + if (engineRunningObserver == null) { + return src.handle(fn); + } + src = observeCompletableFutureStart(src); + CompletableFuture result = src.handle((t, throwable) -> { + // because we added an artificial dependent CF on src (in observeCompletableFutureStart) , a throwable is a CompletionException + // that needs to be unwrapped + if (throwable != null) { + throwable = throwable.getCause(); + } + return fn.apply(t, throwable); + }); + observerCompletableFutureEnd(src); + return result; + } + + public CompletableFuture whenComplete(CompletableFuture src, BiConsumer fn) { + if (engineRunningObserver == null) { + return src.whenComplete(fn); + } + src = observeCompletableFutureStart(src); + CompletableFuture result = src.whenComplete((t, throwable) -> { + // because we added an artificial dependent CF on src (in observeCompletableFutureStart) , a throwable is a CompletionException + // that needs to be unwrapped + if (throwable != null) { + throwable = throwable.getCause(); + } + fn.accept(t, throwable); + }); + observerCompletableFutureEnd(src); + return result; + } + + public CompletableFuture compose(CompletableFuture src, Function> fn) { + if (engineRunningObserver == null) { + return src.thenCompose(fn); + } + CompletableFuture result = new CompletableFuture<>(); + src = observeCompletableFutureStart(src); + src.whenComplete((u, t) -> run(() -> { + CompletionStage innerCF = fn.apply(u).toCompletableFuture(); + innerCF.whenComplete((u1, t1) -> run(() -> { + if (t1 != null) { + result.completeExceptionally(t1); + } else { + result.complete(u1); + } + })); + })); + observerCompletableFutureEnd(src); + return result; + } + + public CompletableFuture chain(CompletableFuture src, Function, CompletableFuture> fn) { + if (engineRunningObserver == null) { + return fn.apply(src); + } + src = observeCompletableFutureStart(src); + CompletableFuture result = fn.apply(src); + observerCompletableFutureEnd(result); + return result; + } + + + public CompletableFuture observeCompletableFutureStart(CompletableFuture future) { + if (engineRunningObserver == null) { + return future; + } + future = future.thenApply(Function.identity()); + incrementRunningWhenCompleted(future); + return future; + } + + public void observerCompletableFutureEnd(CompletableFuture future) { + if (engineRunningObserver == null) { + return; + } + decrementRunningWhenCompleted(future); + } + + + private void incrementRunningWhenCompleted(CompletableFuture cf) { + cf.whenComplete((result, throwable) -> { + incrementRunning(); + }); + } + + private void decrementRunningWhenCompleted(CompletableFuture cf) { + cf.whenComplete((result, throwable) -> { + decrementRunning(); + }); + + } + + private void decrementRunning() { + assertTrue(isRunning.get() > 0); + if (isRunning.decrementAndGet() == 0) { + changeOfState(NOT_RUNNING); + } + } + + + private void incrementRunning() { + if (engineRunningObserver == null) { + return; + } + assertTrue(isRunning.get() >= 0); + if (isRunning.incrementAndGet() == 1) { + changeOfState(RUNNING); + } + + } + + + public void updateExecutionId(ExecutionId executionId) { + if (engineRunningObserver == null) { + return; + } + this.executionId = executionId; + } + + private void changeOfState(EngineRunningObserver.RunningState runningState) { + engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); + } + + public void run(Runnable runnable) { + if (engineRunningObserver == null) { + runnable.run(); + return; + } + incrementRunning(); + try { + runnable.run(); + } finally { + decrementRunning(); + } + } + + public T call(Supplier supplier) { + if (engineRunningObserver == null) { + return supplier.get(); + } + incrementRunning(); + try { + return supplier.get(); + } finally { + decrementRunning(); + } + } + + +} diff --git a/src/main/java/graphql/GraphQL.java b/src/main/java/graphql/GraphQL.java index 4443ed9f76..8c077a2a53 100644 --- a/src/main/java/graphql/GraphQL.java +++ b/src/main/java/graphql/GraphQL.java @@ -412,41 +412,44 @@ public CompletableFuture executeAsync(UnaryOperator executeAsync(ExecutionInput executionInput) { - ExecutionInput executionInputWithId = ensureInputHasId(executionInput); - - CompletableFuture instrumentationStateCF = instrumentation.createStateAsync(new InstrumentationCreateStateParameters(this.graphQLSchema, executionInputWithId)); - return Async.orNullCompletedFuture(instrumentationStateCF).thenCompose(instrumentationState -> { - try { - InstrumentationExecutionParameters inputInstrumentationParameters = new InstrumentationExecutionParameters(executionInputWithId, this.graphQLSchema); - ExecutionInput instrumentedExecutionInput = instrumentation.instrumentExecutionInput(executionInputWithId, inputInstrumentationParameters, instrumentationState); - - InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(instrumentedExecutionInput, this.graphQLSchema); - InstrumentationContext executionInstrumentation = nonNullCtx(instrumentation.beginExecution(instrumentationParameters, instrumentationState)); - executionInstrumentation.onDispatched(); - - GraphQLSchema graphQLSchema = instrumentation.instrumentSchema(this.graphQLSchema, instrumentationParameters, instrumentationState); - - CompletableFuture executionResult = parseValidateAndExecute(instrumentedExecutionInput, graphQLSchema, instrumentationState); - // - // finish up instrumentation - executionResult = executionResult.whenComplete(completeInstrumentationCtxCF(executionInstrumentation)); - // - // allow instrumentation to tweak the result - executionResult = executionResult.thenCompose(result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters, instrumentationState)); - return executionResult; - } catch (AbortExecutionException abortException) { - return handleAbortException(executionInput, instrumentationState, abortException); - } + EngineRunningState engineRunningState = new EngineRunningState(executionInput); + return engineRunningState.call(() -> { + ExecutionInput executionInputWithId = ensureInputHasId(executionInput); + engineRunningState.updateExecutionId(executionInputWithId.getExecutionId()); + + CompletableFuture instrumentationStateCF = instrumentation.createStateAsync(new InstrumentationCreateStateParameters(this.graphQLSchema, executionInputWithId)); + instrumentationStateCF = Async.orNullCompletedFuture(instrumentationStateCF); + + return engineRunningState.compose(instrumentationStateCF, (instrumentationState -> { + try { + InstrumentationExecutionParameters inputInstrumentationParameters = new InstrumentationExecutionParameters(executionInputWithId, this.graphQLSchema); + ExecutionInput instrumentedExecutionInput = instrumentation.instrumentExecutionInput(executionInputWithId, inputInstrumentationParameters, instrumentationState); + + InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(instrumentedExecutionInput, this.graphQLSchema); + InstrumentationContext executionInstrumentation = nonNullCtx(instrumentation.beginExecution(instrumentationParameters, instrumentationState)); + executionInstrumentation.onDispatched(); + + GraphQLSchema graphQLSchema = instrumentation.instrumentSchema(this.graphQLSchema, instrumentationParameters, instrumentationState); + + CompletableFuture executionResult = parseValidateAndExecute(instrumentedExecutionInput, graphQLSchema, instrumentationState, engineRunningState); + // + // finish up instrumentation + executionResult = executionResult.whenComplete(completeInstrumentationCtxCF(executionInstrumentation)); + // + // allow instrumentation to tweak the result + executionResult = engineRunningState.compose(executionResult, (result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters, instrumentationState))); + return executionResult; + } catch (AbortExecutionException abortException) { + return handleAbortException(executionInput, instrumentationState, abortException); + } + })); }); } + private CompletableFuture handleAbortException(ExecutionInput executionInput, InstrumentationState instrumentationState, AbortExecutionException abortException) { - CompletableFuture executionResult = CompletableFuture.completedFuture(abortException.toExecutionResult()); InstrumentationExecutionParameters instrumentationParameters = new InstrumentationExecutionParameters(executionInput, this.graphQLSchema); - // - // allow instrumentation to tweak the result - executionResult = executionResult.thenCompose(result -> instrumentation.instrumentExecutionResult(result, instrumentationParameters, instrumentationState)); - return executionResult; + return instrumentation.instrumentExecutionResult(abortException.toExecutionResult(), instrumentationParameters, instrumentationState); } private ExecutionInput ensureInputHasId(ExecutionInput executionInput) { @@ -460,7 +463,7 @@ private ExecutionInput ensureInputHasId(ExecutionInput executionInput) { } - private CompletableFuture parseValidateAndExecute(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { + private CompletableFuture parseValidateAndExecute(ExecutionInput executionInput, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState, EngineRunningState engineRunningState) { AtomicReference executionInputRef = new AtomicReference<>(executionInput); Function computeFunction = transformedInput -> { // if they change the original query in the pre-parser, then we want to see it downstream from then on @@ -468,16 +471,16 @@ private CompletableFuture parseValidateAndExecute(ExecutionInpu return parseAndValidate(executionInputRef, graphQLSchema, instrumentationState); }; CompletableFuture preparsedDoc = preparsedDocumentProvider.getDocumentAsync(executionInput, computeFunction); - return preparsedDoc.thenCompose(preparsedDocumentEntry -> { + return engineRunningState.compose(preparsedDoc, (preparsedDocumentEntry -> { if (preparsedDocumentEntry.hasErrors()) { return CompletableFuture.completedFuture(new ExecutionResultImpl(preparsedDocumentEntry.getErrors())); } try { - return execute(executionInputRef.get(), preparsedDocumentEntry.getDocument(), graphQLSchema, instrumentationState); + return execute(executionInputRef.get(), preparsedDocumentEntry.getDocument(), graphQLSchema, instrumentationState, engineRunningState); } catch (AbortExecutionException e) { return CompletableFuture.completedFuture(e.toExecutionResult()); } - }); + })); } private PreparsedDocumentEntry parseAndValidate(AtomicReference executionInputRef, GraphQLSchema graphQLSchema, InstrumentationState instrumentationState) { @@ -536,13 +539,14 @@ private List validate(ExecutionInput executionInput, Document d private CompletableFuture execute(ExecutionInput executionInput, Document document, GraphQLSchema graphQLSchema, - InstrumentationState instrumentationState + InstrumentationState instrumentationState, + EngineRunningState engineRunningState ) { Execution execution = new Execution(queryStrategy, mutationStrategy, subscriptionStrategy, instrumentation, valueUnboxer, doNotAutomaticallyDispatchDataLoader); ExecutionId executionId = executionInput.getExecutionId(); - return execution.execute(document, graphQLSchema, executionId, executionInput, instrumentationState); + return execution.execute(document, graphQLSchema, executionId, executionInput, instrumentationState, engineRunningState); } } diff --git a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java index 1ff7151256..6ae7f851ea 100644 --- a/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AbstractAsyncExecutionStrategy.java @@ -22,7 +22,7 @@ public AbstractAsyncExecutionStrategy(DataFetcherExceptionHandler dataFetcherExc } protected BiConsumer, Throwable> handleResults(ExecutionContext executionContext, List fieldNames, CompletableFuture overallResult) { - return (List results, Throwable exception) -> executionContext.run(exception, () -> { + return (List results, Throwable exception) -> { if (exception != null) { handleNonNullException(executionContext, overallResult, exception); return; @@ -35,6 +35,6 @@ protected BiConsumer, Throwable> handleResults(ExecutionContext exe resolvedValuesByField.put(fieldName, result); } overallResult.complete(new ExecutionResultImpl(resolvedValuesByField, executionContext.getErrors())); - }); + }; } } diff --git a/src/main/java/graphql/execution/AsyncExecutionStrategy.java b/src/main/java/graphql/execution/AsyncExecutionStrategy.java index 138e4fb973..f7734df9fb 100644 --- a/src/main/java/graphql/execution/AsyncExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncExecutionStrategy.java @@ -38,58 +38,55 @@ public AsyncExecutionStrategy(DataFetcherExceptionHandler exceptionHandler) { @Override @SuppressWarnings("FutureReturnValueIgnored") public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - return executionContext.call(() -> { - DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); - dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); + dataLoaderDispatcherStrategy.executionStrategy(executionContext, parameters); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, executionContext.getInstrumentationState())); + ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, executionContext.getInstrumentationState())); - MergedSelectionSet fields = parameters.getFields(); - List fieldNames = fields.getKeys(); + MergedSelectionSet fields = parameters.getFields(); + List fieldNames = fields.getKeys(); - Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); - if (isNotSensible.isPresent()) { - return CompletableFuture.completedFuture(isNotSensible.get()); + Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); + if (isNotSensible.isPresent()) { + return CompletableFuture.completedFuture(isNotSensible.get()); + } + + DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); + Async.CombinedBuilder futures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); + + CompletableFuture overallResult = new CompletableFuture<>(); + executionStrategyCtx.onDispatched(); + + futures.await().whenComplete((completeValueInfos, throwable) -> { + List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); + + BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, fieldsExecutedOnInitialResult, overallResult); + if (throwable != null) { + handleResultsConsumer.accept(null, throwable.getCause()); + return; } - DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); - Async.CombinedBuilder futures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); - - CompletableFuture overallResult = new CompletableFuture<>(); - executionStrategyCtx.onDispatched(); - - futures.await().whenComplete((completeValueInfos, throwable) -> { - executionContext.run(throwable,() -> { - List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); - - BiConsumer, Throwable> handleResultsConsumer = handleResults(executionContext, fieldsExecutedOnInitialResult, overallResult); - if (throwable != null) { - handleResultsConsumer.accept(null, throwable.getCause()); - return; - } - - Async.CombinedBuilder fieldValuesFutures = Async.ofExpectedSize(completeValueInfos.size()); - for (FieldValueInfo completeValueInfo : completeValueInfos) { - fieldValuesFutures.addObject(completeValueInfo.getFieldValueObject()); - } - dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos); - executionStrategyCtx.onFieldValuesInfo(completeValueInfos); - fieldValuesFutures.await().whenComplete(handleResultsConsumer); - }); - }).exceptionally((ex) -> executionContext.call(ex,() -> { - // if there are any issues with combining/handling the field results, - // complete the future at all costs and bubble up any thrown exception so - // the execution does not hang. - dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex); - executionStrategyCtx.onFieldValuesException(); - overallResult.completeExceptionally(ex); - return null; - })); - - overallResult.whenComplete(executionStrategyCtx::onCompleted); - return overallResult; + Async.CombinedBuilder fieldValuesFutures = Async.ofExpectedSize(completeValueInfos.size()); + for (FieldValueInfo completeValueInfo : completeValueInfos) { + fieldValuesFutures.addObject(completeValueInfo.getFieldValueObject()); + } + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(completeValueInfos); + executionStrategyCtx.onFieldValuesInfo(completeValueInfos); + fieldValuesFutures.await().whenComplete(handleResultsConsumer); + }).exceptionally((ex) -> { + // if there are any issues with combining/handling the field results, + // complete the future at all costs and bubble up any thrown exception so + // the execution does not hang. + dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesException(ex); + executionStrategyCtx.onFieldValuesException(); + overallResult.completeExceptionally(ex); + return null; }); + + overallResult.whenComplete(executionStrategyCtx::onCompleted); + return overallResult; } + } diff --git a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java index 040bd12a86..545d0fb0a9 100644 --- a/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java +++ b/src/main/java/graphql/execution/AsyncSerialExecutionStrategy.java @@ -32,41 +32,39 @@ public AsyncSerialExecutionStrategy(DataFetcherExceptionHandler exceptionHandler @Override @SuppressWarnings({"TypeParameterUnusedInFormals", "FutureReturnValueIgnored"}) public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - return executionContext.call(() -> { - DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - InstrumentationContext executionStrategyCtx = nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, - executionContext.getInstrumentationState()) - ); - MergedSelectionSet fields = parameters.getFields(); - ImmutableList fieldNames = ImmutableList.copyOf(fields.keySet()); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + InstrumentationContext executionStrategyCtx = nonNullCtx(instrumentation.beginExecutionStrategy(instrumentationParameters, + executionContext.getInstrumentationState()) + ); + MergedSelectionSet fields = parameters.getFields(); + ImmutableList fieldNames = ImmutableList.copyOf(fields.keySet()); - // this is highly unlikely since Mutations cant do introspection BUT in theory someone could make the query strategy this code - // so belts and braces - Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); - if (isNotSensible.isPresent()) { - return CompletableFuture.completedFuture(isNotSensible.get()); - } + // this is highly unlikely since Mutations cant do introspection BUT in theory someone could make the query strategy this code + // so belts and braces + Optional isNotSensible = Introspection.isIntrospectionSensible(fields, executionContext); + if (isNotSensible.isPresent()) { + return CompletableFuture.completedFuture(isNotSensible.get()); + } - CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> executionContext.call(() -> { - MergedField currentField = fields.getSubField(fieldName); - ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); - ExecutionStrategyParameters newParameters = parameters - .transform(builder -> builder.field(currentField).path(fieldPath)); + CompletableFuture> resultsFuture = Async.eachSequentially(fieldNames, (fieldName, prevResults) -> { + MergedField currentField = fields.getSubField(fieldName); + ResultPath fieldPath = parameters.getPath().segment(mkNameForPath(currentField)); + ExecutionStrategyParameters newParameters = parameters + .transform(builder -> builder.field(currentField).path(fieldPath)); - Object resolveSerialField = resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); - return resolveSerialField; - })); + Object resolveSerialField = resolveSerialField(executionContext, dataLoaderDispatcherStrategy, newParameters); + return resolveSerialField; + }); - CompletableFuture overallResult = new CompletableFuture<>(); - executionStrategyCtx.onDispatched(); + CompletableFuture overallResult = new CompletableFuture<>(); + executionStrategyCtx.onDispatched(); - resultsFuture.whenComplete(handleResults(executionContext, fieldNames, overallResult)); - overallResult.whenComplete(executionStrategyCtx::onCompleted); - return overallResult; - }); + resultsFuture.whenComplete(handleResults(executionContext, fieldNames, overallResult)); + overallResult.whenComplete(executionStrategyCtx::onCompleted); + return overallResult; } private Object resolveSerialField(ExecutionContext executionContext, @@ -77,11 +75,11 @@ private Object resolveSerialField(ExecutionContext executionContext, Object fieldWithInfo = resolveFieldWithInfo(executionContext, newParameters); if (fieldWithInfo instanceof CompletableFuture) { //noinspection unchecked - return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> executionContext.call(() -> { + return ((CompletableFuture) fieldWithInfo).thenCompose(fvi -> { dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); CompletableFuture fieldValueFuture = fvi.getFieldValueFuture(); return fieldValueFuture; - })); + }); } else { FieldValueInfo fvi = (FieldValueInfo) fieldWithInfo; dataLoaderDispatcherStrategy.executionStrategyOnFieldValuesInfo(List.of(fvi)); diff --git a/src/main/java/graphql/execution/Execution.java b/src/main/java/graphql/execution/Execution.java index 0373d6564c..a784325f3d 100644 --- a/src/main/java/graphql/execution/Execution.java +++ b/src/main/java/graphql/execution/Execution.java @@ -2,6 +2,7 @@ import graphql.Directives; +import graphql.EngineRunningState; import graphql.ExecutionInput; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; @@ -72,7 +73,7 @@ public Execution(ExecutionStrategy queryStrategy, this.doNotAutomaticallyDispatchDataLoader = doNotAutomaticallyDispatchDataLoader; } - public CompletableFuture execute(Document document, GraphQLSchema graphQLSchema, ExecutionId executionId, ExecutionInput executionInput, InstrumentationState instrumentationState) { + public CompletableFuture execute(Document document, GraphQLSchema graphQLSchema, ExecutionId executionId, ExecutionInput executionInput, InstrumentationState instrumentationState, EngineRunningState engineRunningState) { NodeUtil.GetOperationResult getOperationResult; CoercedVariables coercedVariables; Supplier normalizedVariableValues; @@ -89,9 +90,6 @@ public CompletableFuture execute(Document document, GraphQLSche boolean propagateErrorsOnNonNullContractFailure = propagateErrorsOnNonNullContractFailure(getOperationResult.operationDefinition.getDirectives()); - // can be null - EngineRunningObserver engineRunningObserver = executionInput.getGraphQLContext().get(EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY); - ExecutionContext executionContext = newExecutionContextBuilder() .instrumentation(instrumentation) .instrumentationState(instrumentationState) @@ -114,7 +112,7 @@ public CompletableFuture execute(Document document, GraphQLSche .valueUnboxer(valueUnboxer) .executionInput(executionInput) .propagapropagateErrorsOnNonNullContractFailureeErrors(propagateErrorsOnNonNullContractFailure) - .engineRunningObserver(engineRunningObserver) + .engineRunningState(engineRunningState) .build(); executionContext.getGraphQLContext().put(ResultNodesInfo.RESULT_NODES_INFO, executionContext.getResultNodesInfo()); diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index 95abf8c6e3..b64bdca0bb 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import graphql.EngineRunningState; import graphql.ExecutionInput; import graphql.ExperimentalApi; import graphql.GraphQLContext; @@ -10,7 +11,6 @@ import graphql.Internal; import graphql.PublicApi; import graphql.collect.ImmutableKit; -import graphql.execution.EngineRunningObserver.RunningState; import graphql.execution.incremental.IncrementalCallState; import graphql.execution.instrumentation.Instrumentation; import graphql.execution.instrumentation.InstrumentationState; @@ -23,23 +23,17 @@ import graphql.util.FpKit; import graphql.util.LockKit; import org.dataloader.DataLoaderRegistry; -import org.jspecify.annotations.Nullable; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Supplier; -import static graphql.Assert.assertTrue; -import static graphql.execution.EngineRunningObserver.RunningState.NOT_RUNNING; -import static graphql.execution.EngineRunningObserver.RunningState.RUNNING; - @SuppressWarnings("TypeParameterUnusedInFormals") @PublicApi public class ExecutionContext { @@ -77,7 +71,7 @@ public class ExecutionContext { private volatile DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; private final ResultNodesInfo resultNodesInfo = new ResultNodesInfo(); - private final EngineRunningObserver engineRunningObserver; + private final EngineRunningState engineRunningState; ExecutionContext(ExecutionContextBuilder builder) { this.graphQLSchema = builder.graphQLSchema; @@ -104,7 +98,7 @@ public class ExecutionContext { this.dataLoaderDispatcherStrategy = builder.dataLoaderDispatcherStrategy; this.queryTree = FpKit.interThreadMemoize(() -> ExecutableNormalizedOperationFactory.createExecutableNormalizedOperation(graphQLSchema, operationDefinition, fragmentsByName, coercedVariables)); this.propagateErrorsOnNonNullContractFailure = builder.propagateErrorsOnNonNullContractFailure; - this.engineRunningObserver = builder.engineRunningObserver; + this.engineRunningState = builder.engineRunningState; } @@ -366,78 +360,78 @@ public ResultNodesInfo getResultNodesInfo() { return resultNodesInfo; } - @Nullable - EngineRunningObserver getEngineRunningObserver() { - return engineRunningObserver; - } - - @Internal - public boolean isRunning() { - return isRunning.get() > 0; - } - - private void incrementRunning(Throwable throwable) { - assertTrue(isRunning.get() >= 0); - if (isRunning.incrementAndGet() == 1) { - changeOfState(RUNNING); - } - } - - private void decrementRunning(Throwable throwable) { - assertTrue(isRunning.get() > 0); - if (isRunning.decrementAndGet() == 0) { - changeOfState(NOT_RUNNING); - } - } - - @Internal - public void incrementRunning(CompletableFuture cf) { - cf.whenComplete((result, throwable) -> { - incrementRunning(throwable); - }); - } - - @Internal - public void decrementRunning(CompletableFuture cf) { - cf.whenComplete((result, throwable) -> { - decrementRunning(throwable); - }); - - } - - @Internal - public T call(Supplier callable) { - return call(null, callable); - } - - @Internal - public T call(Throwable throwable, Supplier callable) { - incrementRunning(throwable); - try { - return callable.get(); - } finally { - decrementRunning(throwable); - } - } - @Internal - public void run(Runnable runnable) { - run(null, runnable); - } - - @Internal - public void run(Throwable throwable, Runnable runnable) { - incrementRunning(throwable); - try { - runnable.run(); - } finally { - decrementRunning(throwable); - } - } - - private void changeOfState(RunningState runningState) { - if (engineRunningObserver != null) { - engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); - } - } + public EngineRunningState getEngineRunningState() { + return engineRunningState; + } + +// @Internal +// public boolean isRunning() { +// return isRunning.get() > 0; +// } +// +// private void incrementRunning(Throwable throwable) { +// assertTrue(isRunning.get() >= 0); +// if (isRunning.incrementAndGet() == 1) { +// changeOfState(RUNNING); +// } +// } +// +// private void decrementRunning(Throwable throwable) { +// assertTrue(isRunning.get() > 0); +// if (isRunning.decrementAndGet() == 0) { +// changeOfState(NOT_RUNNING); +// } +// } +// +// @Internal +// public void incrementRunning(CompletableFuture cf) { +// cf.whenComplete((result, throwable) -> { +// incrementRunning(throwable); +// }); +// } +// +// @Internal +// public void decrementRunning(CompletableFuture cf) { +// cf.whenComplete((result, throwable) -> { +// decrementRunning(throwable); +// }); +// +// } +// +// @Internal +// public T call(Supplier callable) { +// return call(null, callable); +// } +// +// @Internal +// public T call(Throwable throwable, Supplier callable) { +// incrementRunning(throwable); +// try { +// return callable.get(); +// } finally { +// decrementRunning(throwable); +// } +// } +// +// @Internal +// public void run(Runnable runnable) { +// run(null, runnable); +// } +// +// @Internal +// public void run(Throwable throwable, Runnable runnable) { +// incrementRunning(throwable); +// try { +// runnable.run(); +// } finally { +// decrementRunning(throwable); +// } +// } +// +// private void changeOfState(RunningState runningState) { +// if (engineRunningObserver != null) { +// engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); +// } +// } } diff --git a/src/main/java/graphql/execution/ExecutionContextBuilder.java b/src/main/java/graphql/execution/ExecutionContextBuilder.java index fbd0cc7bf7..014bab516a 100644 --- a/src/main/java/graphql/execution/ExecutionContextBuilder.java +++ b/src/main/java/graphql/execution/ExecutionContextBuilder.java @@ -2,6 +2,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import graphql.EngineRunningState; import graphql.ExecutionInput; import graphql.ExperimentalApi; import graphql.GraphQLContext; @@ -50,7 +51,7 @@ public class ExecutionContextBuilder { ExecutionInput executionInput; DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = DataLoaderDispatchStrategy.NO_OP; boolean propagateErrorsOnNonNullContractFailure = true; - EngineRunningObserver engineRunningObserver; + EngineRunningState engineRunningState; /** * @return a new builder of {@link graphql.execution.ExecutionContext}s @@ -98,7 +99,7 @@ public ExecutionContextBuilder() { executionInput = other.getExecutionInput(); dataLoaderDispatcherStrategy = other.getDataLoaderDispatcherStrategy(); propagateErrorsOnNonNullContractFailure = other.propagateErrorsOnNonNullContractFailure(); - engineRunningObserver = other.getEngineRunningObserver(); + engineRunningState = other.getEngineRunningState(); } public ExecutionContextBuilder instrumentation(Instrumentation instrumentation) { @@ -241,8 +242,8 @@ public ExecutionContext build() { return new ExecutionContext(this); } - public ExecutionContextBuilder engineRunningObserver(EngineRunningObserver engineRunningObserver) { - this.engineRunningObserver = engineRunningObserver; + public ExecutionContextBuilder engineRunningState(EngineRunningState engineRunningState) { + this.engineRunningState = engineRunningState; return this; } } diff --git a/src/main/java/graphql/execution/ExecutionStrategy.java b/src/main/java/graphql/execution/ExecutionStrategy.java index 44a086899e..f9370d1e91 100644 --- a/src/main/java/graphql/execution/ExecutionStrategy.java +++ b/src/main/java/graphql/execution/ExecutionStrategy.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Maps; import graphql.DuckTyped; +import graphql.EngineRunningState; import graphql.ExecutionResult; import graphql.ExecutionResultImpl; import graphql.ExperimentalApi; @@ -201,73 +202,69 @@ public static String mkNameForPath(List currentField) { @SuppressWarnings("unchecked") @DuckTyped(shape = "CompletableFuture> | Map") protected Object executeObject(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - return executionContext.call(() -> { - DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); - dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - - ExecuteObjectInstrumentationContext resolveObjectCtx = ExecuteObjectInstrumentationContext.nonNullCtx( - instrumentation.beginExecuteObject(instrumentationParameters, executionContext.getInstrumentationState()) - ); + DataLoaderDispatchStrategy dataLoaderDispatcherStrategy = executionContext.getDataLoaderDispatcherStrategy(); + dataLoaderDispatcherStrategy.executeObject(executionContext, parameters); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - List fieldNames = parameters.getFields().getKeys(); - - DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); - Async.CombinedBuilder resolvedFieldFutures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); - - CompletableFuture> overallResult = new CompletableFuture<>(); - List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); - BiConsumer, Throwable> handleResultsConsumer = buildFieldValueMap(fieldsExecutedOnInitialResult, overallResult, executionContext); - - resolveObjectCtx.onDispatched(); - - Object fieldValueInfosResult = resolvedFieldFutures.awaitPolymorphic(); - if (fieldValueInfosResult instanceof CompletableFuture) { - CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; - fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { - executionContext.run(throwable, () -> { - if (throwable != null) { - handleResultsConsumer.accept(null, throwable); - return; - } - - Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); - dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); - resolveObjectCtx.onFieldValuesInfo(completeValueInfos); - resultFutures.await().whenComplete(handleResultsConsumer); - }); - }).exceptionally((ex) -> executionContext.call(() -> { - // if there are any issues with combining/handling the field results, - // complete the future at all costs and bubble up any thrown exception so - // the execution does not hang. - dataLoaderDispatcherStrategy.executeObjectOnFieldValuesException(ex, parameters); - resolveObjectCtx.onFieldValuesException(); - overallResult.completeExceptionally(ex); - return null; - })); - overallResult.whenComplete(resolveObjectCtx::onCompleted); - return overallResult; - } else { - List completeValueInfos = (List) fieldValueInfosResult; + ExecuteObjectInstrumentationContext resolveObjectCtx = ExecuteObjectInstrumentationContext.nonNullCtx( + instrumentation.beginExecuteObject(instrumentationParameters, executionContext.getInstrumentationState()) + ); + + List fieldNames = parameters.getFields().getKeys(); + + DeferredExecutionSupport deferredExecutionSupport = createDeferredExecutionSupport(executionContext, parameters); + Async.CombinedBuilder resolvedFieldFutures = getAsyncFieldValueInfo(executionContext, parameters, deferredExecutionSupport); + + CompletableFuture> overallResult = new CompletableFuture<>(); + List fieldsExecutedOnInitialResult = deferredExecutionSupport.getNonDeferredFieldNames(fieldNames); + BiConsumer, Throwable> handleResultsConsumer = buildFieldValueMap(fieldsExecutedOnInitialResult, overallResult, executionContext); + + resolveObjectCtx.onDispatched(); + + Object fieldValueInfosResult = resolvedFieldFutures.awaitPolymorphic(); + if (fieldValueInfosResult instanceof CompletableFuture) { + CompletableFuture> fieldValueInfos = (CompletableFuture>) fieldValueInfosResult; + fieldValueInfos.whenComplete((completeValueInfos, throwable) -> { + if (throwable != null) { + handleResultsConsumer.accept(null, throwable); + return; + } Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); resolveObjectCtx.onFieldValuesInfo(completeValueInfos); + resultFutures.await().whenComplete(handleResultsConsumer); + }).exceptionally((ex) -> { + // if there are any issues with combining/handling the field results, + // complete the future at all costs and bubble up any thrown exception so + // the execution does not hang. + dataLoaderDispatcherStrategy.executeObjectOnFieldValuesException(ex, parameters); + resolveObjectCtx.onFieldValuesException(); + overallResult.completeExceptionally(ex); + return null; + }); + overallResult.whenComplete(resolveObjectCtx::onCompleted); + return overallResult; + } else { + List completeValueInfos = (List) fieldValueInfosResult; - Object completedValuesObject = resultFutures.awaitPolymorphic(); - if (completedValuesObject instanceof CompletableFuture) { - CompletableFuture> completedValues = (CompletableFuture>) completedValuesObject; - completedValues.whenComplete(handleResultsConsumer); - overallResult.whenComplete(resolveObjectCtx::onCompleted); - return overallResult; - } else { - Map fieldValueMap = buildFieldValueMap(fieldsExecutedOnInitialResult, (List) completedValuesObject); - resolveObjectCtx.onCompleted(fieldValueMap, null); - return fieldValueMap; - } + Async.CombinedBuilder resultFutures = fieldValuesCombinedBuilder(completeValueInfos); + dataLoaderDispatcherStrategy.executeObjectOnFieldValuesInfo(completeValueInfos, parameters); + resolveObjectCtx.onFieldValuesInfo(completeValueInfos); + + Object completedValuesObject = resultFutures.awaitPolymorphic(); + if (completedValuesObject instanceof CompletableFuture) { + CompletableFuture> completedValues = (CompletableFuture>) completedValuesObject; + completedValues.whenComplete(handleResultsConsumer); + overallResult.whenComplete(resolveObjectCtx::onCompleted); + return overallResult; + } else { + Map fieldValueMap = buildFieldValueMap(fieldsExecutedOnInitialResult, (List) completedValuesObject); + resolveObjectCtx.onCompleted(fieldValueMap, null); + return fieldValueMap; } - }); + } } private static Async.@NonNull CombinedBuilder fieldValuesCombinedBuilder(List completeValueInfos) { @@ -280,14 +277,12 @@ protected Object executeObject(ExecutionContext executionContext, ExecutionStrat private BiConsumer, Throwable> buildFieldValueMap(List fieldNames, CompletableFuture> overallResult, ExecutionContext executionContext) { return (List results, Throwable exception) -> { - executionContext.run(exception, () -> { - if (exception != null) { - handleValueException(overallResult, exception, executionContext); - return; - } - Map resolvedValuesByField = buildFieldValueMap(fieldNames, results); - overallResult.complete(resolvedValuesByField); - }); + if (exception != null) { + handleValueException(overallResult, exception, executionContext); + return; + } + Map resolvedValuesByField = buildFieldValueMap(fieldNames, results); + overallResult.complete(resolvedValuesByField); }; } @@ -485,32 +480,23 @@ private Object fetchField(GraphQLFieldDefinition fieldDef, ExecutionContext exec } if (fetchedObject instanceof CompletableFuture) { @SuppressWarnings("unchecked") - CompletableFuture originalFetchValue = (CompletableFuture) fetchedObject; - // the completion order of dependent CFs is in stack order for - // directly dependent CFs, but in reverse stack order for indirect dependent ones - // By creating one dependent CF on originalFetchValue, we make sure the order it is always - // in reverse stack order - CompletableFuture fetchedValue = originalFetchValue.thenApply(Function.identity()); - executionContext.incrementRunning(fetchedValue); - CompletableFuture rawResultCF = fetchedValue - .handle((result, wrapperExceptionOrNull) -> executionContext.call(wrapperExceptionOrNull, () -> { - // because we added an artificial CF, we need to unwrap the exception - Throwable exception = wrapperExceptionOrNull != null ? wrapperExceptionOrNull.getCause() : null; - fetchCtx.onCompleted(result, exception); - if (exception != null) { - CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); - return handleFetchingExceptionResult; - } else { - // we can simply return the fetched value CF and avoid a allocation - return originalFetchValue; - } - })) - .thenCompose(Function.identity()); - executionContext.incrementRunning(rawResultCF); + CompletableFuture fetchedValue = (CompletableFuture) fetchedObject; + EngineRunningState engineRunningState = executionContext.getEngineRunningState(); + + CompletableFuture> handleCF = engineRunningState.handle(fetchedValue, (result, exception) -> { + // because we added an artificial CF, we need to unwrap the exception + fetchCtx.onCompleted(result, exception); + if (exception != null) { + CompletableFuture handleFetchingExceptionResult = handleFetchingException(dataFetchingEnvironment.get(), parameters, exception); + return handleFetchingExceptionResult; + } else { + // we can simply return the fetched value CF and avoid a allocation + return fetchedValue; + } + }); + CompletableFuture rawResultCF = engineRunningState.compose(handleCF, Function.identity()); CompletableFuture fetchedValueCF = rawResultCF .thenApply(result -> unboxPossibleDataFetcherResult(executionContext, parameters, result)); - executionContext.decrementRunning(rawResultCF); - executionContext.decrementRunning(fetchedValue); return fetchedValueCF; } else { fetchCtx.onCompleted(fetchedObject, null); @@ -546,26 +532,24 @@ protected Supplier getNormalizedField(ExecutionContex protected FetchedValue unboxPossibleDataFetcherResult(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object result) { - return executionContext.call(() -> { - if (result instanceof DataFetcherResult) { - DataFetcherResult dataFetcherResult = (DataFetcherResult) result; + if (result instanceof DataFetcherResult) { + DataFetcherResult dataFetcherResult = (DataFetcherResult) result; - addErrorsToRightContext(dataFetcherResult.getErrors(), parameters, executionContext); + addErrorsToRightContext(dataFetcherResult.getErrors(), parameters, executionContext); - addExtensionsIfPresent(executionContext, dataFetcherResult); + addExtensionsIfPresent(executionContext, dataFetcherResult); - Object localContext = dataFetcherResult.getLocalContext(); - if (localContext == null) { - // if the field returns nothing then they get the context of their parent field - localContext = parameters.getLocalContext(); - } - Object unBoxedValue = executionContext.getValueUnboxer().unbox(dataFetcherResult.getData()); - return new FetchedValue(unBoxedValue, dataFetcherResult.getErrors(), localContext); - } else { - Object unBoxedValue = executionContext.getValueUnboxer().unbox(result); - return new FetchedValue(unBoxedValue, ImmutableList.of(), parameters.getLocalContext()); + Object localContext = dataFetcherResult.getLocalContext(); + if (localContext == null) { + // if the field returns nothing then they get the context of their parent field + localContext = parameters.getLocalContext(); } - }); + Object unBoxedValue = executionContext.getValueUnboxer().unbox(dataFetcherResult.getData()); + return new FetchedValue(unBoxedValue, dataFetcherResult.getErrors(), localContext); + } else { + Object unBoxedValue = executionContext.getValueUnboxer().unbox(result); + return new FetchedValue(unBoxedValue, ImmutableList.of(), parameters.getLocalContext()); + } } private void addExtensionsIfPresent(ExecutionContext executionContext, DataFetcherResult dataFetcherResult) { @@ -632,32 +616,30 @@ protected FieldValueInfo completeField(ExecutionContext executionContext, Execut } private FieldValueInfo completeField(GraphQLFieldDefinition fieldDef, ExecutionContext executionContext, ExecutionStrategyParameters parameters, FetchedValue fetchedValue) { - return executionContext.call(() -> { - GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); - ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); + GraphQLObjectType parentType = (GraphQLObjectType) parameters.getExecutionStepInfo().getUnwrappedNonNullType(); + ExecutionStepInfo executionStepInfo = createExecutionStepInfo(executionContext, parameters, fieldDef, parentType); - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, () -> executionStepInfo, fetchedValue); - InstrumentationContext ctxCompleteField = nonNullCtx(instrumentation.beginFieldCompletion( - instrumentationParams, executionContext.getInstrumentationState() - )); + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationFieldCompleteParameters instrumentationParams = new InstrumentationFieldCompleteParameters(executionContext, parameters, () -> executionStepInfo, fetchedValue); + InstrumentationContext ctxCompleteField = nonNullCtx(instrumentation.beginFieldCompletion( + instrumentationParams, executionContext.getInstrumentationState() + )); - NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); + NonNullableFieldValidator nonNullableFieldValidator = new NonNullableFieldValidator(executionContext, executionStepInfo); - ExecutionStrategyParameters newParameters = parameters.transform(builder -> - builder.executionStepInfo(executionStepInfo) - .source(fetchedValue.getFetchedValue()) - .localContext(fetchedValue.getLocalContext()) - .nonNullFieldValidator(nonNullableFieldValidator) - ); + ExecutionStrategyParameters newParameters = parameters.transform(builder -> + builder.executionStepInfo(executionStepInfo) + .source(fetchedValue.getFetchedValue()) + .localContext(fetchedValue.getLocalContext()) + .nonNullFieldValidator(nonNullableFieldValidator) + ); - FieldValueInfo fieldValueInfo = completeValue(executionContext, newParameters); + FieldValueInfo fieldValueInfo = completeValue(executionContext, newParameters); - CompletableFuture executionResultFuture = fieldValueInfo.getFieldValueFuture(); - ctxCompleteField.onDispatched(); - executionResultFuture.whenComplete(ctxCompleteField::onCompleted); - return fieldValueInfo; - }); + CompletableFuture executionResultFuture = fieldValueInfo.getFieldValueFuture(); + ctxCompleteField.onDispatched(); + executionResultFuture.whenComplete(ctxCompleteField::onCompleted); + return fieldValueInfo; } /** @@ -829,15 +811,13 @@ protected FieldValueInfo completeValueForList(ExecutionContext executionContext, overallResult.whenComplete(completeListCtx::onCompleted); resultsFuture.whenComplete((results, exception) -> { - executionContext.run(exception, () -> { - if (exception != null) { - handleValueException(overallResult, exception, executionContext); - return; - } - List completedResults = new ArrayList<>(results.size()); - completedResults.addAll(results); - overallResult.complete(completedResults); - }); + if (exception != null) { + handleValueException(overallResult, exception, executionContext); + return; + } + List completedResults = new ArrayList<>(results.size()); + completedResults.addAll(results); + overallResult.complete(completedResults); }); listOrPromiseToList = overallResult; } else { diff --git a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java index 3ce02d3905..464f725946 100644 --- a/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java +++ b/src/main/java/graphql/execution/SubscriptionExecutionStrategy.java @@ -56,36 +56,34 @@ public SubscriptionExecutionStrategy(DataFetcherExceptionHandler dataFetcherExce @Override public CompletableFuture execute(ExecutionContext executionContext, ExecutionStrategyParameters parameters) throws NonNullableFieldWasNullException { - return executionContext.call(() -> { - Instrumentation instrumentation = executionContext.getInstrumentation(); - InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); - ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy( - instrumentationParameters, - executionContext.getInstrumentationState() - )); - - CompletableFuture> sourceEventStream = createSourceEventStream(executionContext, parameters); - - // - // when the upstream source event stream completes, subscribe to it and wire in our adapter - CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> - executionContext.call(() -> { - if (publisher == null) { - ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); - return executionResult; - } - Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); - boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); - SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered); - ExecutionResultImpl executionResult = new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); - return executionResult; - })); - - // dispatched the subscription query - executionStrategyCtx.onDispatched(); - overallResult.whenComplete(executionStrategyCtx::onCompleted); - return overallResult; + Instrumentation instrumentation = executionContext.getInstrumentation(); + InstrumentationExecutionStrategyParameters instrumentationParameters = new InstrumentationExecutionStrategyParameters(executionContext, parameters); + ExecutionStrategyInstrumentationContext executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx(instrumentation.beginExecutionStrategy( + instrumentationParameters, + executionContext.getInstrumentationState() + )); + + CompletableFuture> sourceEventStream = createSourceEventStream(executionContext, parameters); + + // + // when the upstream source event stream completes, subscribe to it and wire in our adapter + CompletableFuture overallResult = sourceEventStream.thenApply((publisher) -> + { + if (publisher == null) { + ExecutionResultImpl executionResult = new ExecutionResultImpl(null, executionContext.getErrors()); + return executionResult; + } + Function> mapperFunction = eventPayload -> executeSubscriptionEvent(executionContext, parameters, eventPayload); + boolean keepOrdered = keepOrdered(executionContext.getGraphQLContext()); + SubscriptionPublisher mapSourceToResponse = new SubscriptionPublisher(publisher, mapperFunction, keepOrdered); + ExecutionResultImpl executionResult = new ExecutionResultImpl(mapSourceToResponse, executionContext.getErrors()); + return executionResult; }); + + // dispatched the subscription query + executionStrategyCtx.onDispatched(); + overallResult.whenComplete(executionStrategyCtx::onCompleted); + return overallResult; } private boolean keepOrdered(GraphQLContext graphQLContext) { @@ -111,14 +109,14 @@ private CompletableFuture> createSourceEventStream(ExecutionCo ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); CompletableFuture fieldFetched = Async.toCompletableFuture(fetchField(executionContext, newParameters)); - return fieldFetched.thenApply(fetchedValue -> executionContext.call(() -> { + return fieldFetched.thenApply(fetchedValue -> { Object publisher = fetchedValue.getFetchedValue(); if (publisher != null) { assertTrue(publisher instanceof Publisher, () -> "Your data fetcher must return a Publisher of events when using graphql subscriptions"); } //noinspection unchecked,DataFlowIssue return (Publisher) publisher; - })); + }); } /* @@ -135,39 +133,37 @@ private CompletableFuture> createSourceEventStream(ExecutionCo */ private CompletableFuture executeSubscriptionEvent(ExecutionContext executionContext, ExecutionStrategyParameters parameters, Object eventPayload) { - return executionContext.call(() -> { - Instrumentation instrumentation = executionContext.getInstrumentation(); - - ExecutionContext newExecutionContext = executionContext.transform(builder -> builder - .root(eventPayload) - .resetErrors() - ); - ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); - ExecutionStepInfo subscribedFieldStepInfo = createSubscribedFieldStepInfo(executionContext, newParameters); - - InstrumentationFieldParameters i13nFieldParameters = new InstrumentationFieldParameters(executionContext, () -> subscribedFieldStepInfo); - InstrumentationContext subscribedFieldCtx = nonNullCtx(instrumentation.beginSubscribedFieldEvent( - i13nFieldParameters, executionContext.getInstrumentationState() - )); - - FetchedValue fetchedValue = unboxPossibleDataFetcherResult(newExecutionContext, parameters, eventPayload); - FieldValueInfo fieldValueInfo = completeField(newExecutionContext, newParameters, fetchedValue); - CompletableFuture overallResult = fieldValueInfo - .getFieldValueFuture() - .thenApply(val -> new ExecutionResultImpl(val, newExecutionContext.getErrors())) - .thenApply(executionResult -> wrapWithRootFieldName(newParameters, executionResult)); - - // dispatch instrumentation so they can know about each subscription event - subscribedFieldCtx.onDispatched(); - overallResult.whenComplete(subscribedFieldCtx::onCompleted); - - // allow them to instrument each ER should they want to - InstrumentationExecutionParameters i13nExecutionParameters = new InstrumentationExecutionParameters( - executionContext.getExecutionInput(), executionContext.getGraphQLSchema()); - - overallResult = overallResult.thenCompose(executionResult -> instrumentation.instrumentExecutionResult(executionResult, i13nExecutionParameters, executionContext.getInstrumentationState())); - return overallResult; - }); + Instrumentation instrumentation = executionContext.getInstrumentation(); + + ExecutionContext newExecutionContext = executionContext.transform(builder -> builder + .root(eventPayload) + .resetErrors() + ); + ExecutionStrategyParameters newParameters = firstFieldOfSubscriptionSelection(parameters); + ExecutionStepInfo subscribedFieldStepInfo = createSubscribedFieldStepInfo(executionContext, newParameters); + + InstrumentationFieldParameters i13nFieldParameters = new InstrumentationFieldParameters(executionContext, () -> subscribedFieldStepInfo); + InstrumentationContext subscribedFieldCtx = nonNullCtx(instrumentation.beginSubscribedFieldEvent( + i13nFieldParameters, executionContext.getInstrumentationState() + )); + + FetchedValue fetchedValue = unboxPossibleDataFetcherResult(newExecutionContext, parameters, eventPayload); + FieldValueInfo fieldValueInfo = completeField(newExecutionContext, newParameters, fetchedValue); + CompletableFuture overallResult = fieldValueInfo + .getFieldValueFuture() + .thenApply(val -> new ExecutionResultImpl(val, newExecutionContext.getErrors())) + .thenApply(executionResult -> wrapWithRootFieldName(newParameters, executionResult)); + + // dispatch instrumentation so they can know about each subscription event + subscribedFieldCtx.onDispatched(); + overallResult.whenComplete(subscribedFieldCtx::onCompleted); + + // allow them to instrument each ER should they want to + InstrumentationExecutionParameters i13nExecutionParameters = new InstrumentationExecutionParameters( + executionContext.getExecutionInput(), executionContext.getGraphQLSchema()); + + overallResult = overallResult.thenCompose(executionResult -> instrumentation.instrumentExecutionResult(executionResult, i13nExecutionParameters, executionContext.getInstrumentationState())); + return overallResult; } private ExecutionResult wrapWithRootFieldName(ExecutionStrategyParameters parameters, ExecutionResult executionResult) { diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index b974b17e57..036a2b4cfd 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -29,6 +29,11 @@ class EngineRunningTest extends Specification { states } + def "async instrumentation state"() { + + } + + def "engine running state is observed"() { given: def sdl = ''' diff --git a/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy index 5da87378c4..0b7b5f2a11 100644 --- a/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncExecutionStrategyTest.groovy @@ -1,5 +1,6 @@ package graphql.execution +import graphql.EngineRunningState import graphql.ErrorType import graphql.ExecutionInput import graphql.ExecutionResult @@ -110,6 +111,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .graphQLContext(graphqlContextMock) .executionInput(ExecutionInput.newExecutionInput("{}").build()) .locale(Locale.getDefault()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() @@ -152,6 +154,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .locale(Locale.getDefault()) .graphQLContext(graphqlContextMock) .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() @@ -195,6 +198,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .instrumentation(SimplePerformantInstrumentation.INSTANCE) .graphQLContext(graphqlContextMock) .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .locale(Locale.getDefault()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters @@ -239,6 +243,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .locale(Locale.getDefault()) .graphQLContext(graphqlContextMock) .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() @@ -280,6 +285,7 @@ abstract class AsyncExecutionStrategyTest extends Specification { .graphQLContext(graphqlContextMock) .executionInput(ExecutionInput.newExecutionInput("{}").build()) .locale(Locale.getDefault()) + .engineRunningState(new EngineRunningState()) .instrumentation(new SimplePerformantInstrumentation() { @Override diff --git a/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy index f84fbc701f..efb67639d5 100644 --- a/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/AsyncSerialExecutionStrategyTest.groovy @@ -1,5 +1,6 @@ package graphql.execution +import graphql.EngineRunningState import graphql.ExecutionInput import graphql.GraphQLContext import graphql.execution.instrumentation.SimplePerformantInstrumentation @@ -108,6 +109,7 @@ class AsyncSerialExecutionStrategyTest extends Specification { .locale(Locale.getDefault()) .graphQLContext(GraphQLContext.getDefault()) .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() @@ -155,6 +157,7 @@ class AsyncSerialExecutionStrategyTest extends Specification { .locale(Locale.getDefault()) .graphQLContext(GraphQLContext.getDefault()) .executionInput(ExecutionInput.newExecutionInput("{}").build()) + .engineRunningState(new EngineRunningState()) .build() ExecutionStrategyParameters executionStrategyParameters = ExecutionStrategyParameters .newParameters() @@ -169,35 +172,35 @@ class AsyncSerialExecutionStrategyTest extends Specification { then: !result.isDone() - 1 * df1.get(_,_,_) >> cf1 - 0 * df2.get(_,_,_) >> cf2 - 0 * df3.get(_,_,_) >> cf3 + 1 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 when: cf1.complete("world1") then: !result.isDone() - 0 * df1.get(_,_,_) >> cf1 - 1 * df2.get(_,_,_) >> cf2 - 0 * df3.get(_,_,_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 1 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 when: cf2.complete("world2") then: !result.isDone() - 0 * df1.get(_,_,_) >> cf1 - 0 * df2.get(_,_,_) >> cf2 - 1 * df3.get(_,_,_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 1 * df3.get(_, _, _) >> cf3 when: cf3.complete("world3") then: - 0 * df1.get(_,_,_) >> cf1 - 0 * df2.get(_,_,_) >> cf2 - 0 * df3.get(_,_,_) >> cf3 + 0 * df1.get(_, _, _) >> cf1 + 0 * df2.get(_, _, _) >> cf2 + 0 * df3.get(_, _, _) >> cf3 result.isDone() result.get().data == ['hello': 'world1', 'hello2': 'world2', 'hello3': 'world3'] } diff --git a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy index 09a9a76eba..2512cac1b8 100644 --- a/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionContextBuilderTest.groovy @@ -1,6 +1,6 @@ package graphql.execution -import graphql.ExecutionInput + import graphql.GraphQLContext import graphql.execution.instrumentation.Instrumentation import graphql.language.Document @@ -11,8 +11,6 @@ import graphql.schema.GraphQLSchema import org.dataloader.DataLoaderRegistry import spock.lang.Specification -import java.util.concurrent.CountDownLatch - class ExecutionContextBuilderTest extends Specification { Instrumentation instrumentation = Mock(Instrumentation) @@ -269,75 +267,4 @@ class ExecutionContextBuilderTest extends Specification { OperationDefinition.Operation.SUBSCRIPTION | false | false | true } - def "can track if its running or not"() { - - when: - def executionContext = new ExecutionContextBuilder() - .instrumentation(instrumentation) - .queryStrategy(queryStrategy) - .mutationStrategy(mutationStrategy) - .subscriptionStrategy(subscriptionStrategy) - .graphQLSchema(schema) - .executionId(executionId) - .graphQLContext(graphQLContext) - .root(root) - .operationDefinition(operation) - .fragmentsByName([MyFragment: fragment]) - .dataLoaderRegistry(dataLoaderRegistry) - .executionInput(ExecutionInput.newExecutionInput("query q { f }").build()) - .operationDefinition(OperationDefinition.newOperationDefinition().operation(OperationDefinition.Operation.QUERY).build()) - .build() - - then: - !executionContext.isRunning() - - when: - CountDownLatch latch = new CountDownLatch(1) - CountDownLatch threadLatch = new CountDownLatch(1) - offThread({ - executionContext.run { - threadLatch.countDown() - println("running on ${Thread.currentThread().name}") - latch.await() - } - }) - threadLatch.await() - - then: - executionContext.isRunning() - - when: - latch.countDown() - Thread.sleep(10) // time for the runnable to exit - - then: - !executionContext.isRunning() - - when: - latch = new CountDownLatch(1) - threadLatch = new CountDownLatch(1) - offThread({ - executionContext.call { - threadLatch.countDown() - println("running on ${Thread.currentThread().name}") - latch.await() - return "x" - } - }) - then: - threadLatch.await() - executionContext.isRunning() - - when: - latch.countDown() - Thread.sleep(10) // time for the call to exit - - then: - !executionContext.isRunning() - } - - def offThread(Runnable runnable) { - new Thread(runnable).start() - return "x" - } } diff --git a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy index ae83a4299d..ca513d5ba1 100644 --- a/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionStrategyTest.groovy @@ -1,6 +1,7 @@ package graphql.execution import graphql.Assert +import graphql.EngineRunningState import graphql.ExceptionWhileDataFetching import graphql.ExecutionInput import graphql.ExecutionResult @@ -84,6 +85,7 @@ class ExecutionStrategyTest extends Specification { .dataLoaderRegistry(new DataLoaderRegistry()) .locale(Locale.getDefault()) .valueUnboxer(ValueUnboxer.DEFAULT) + .engineRunningState(new EngineRunningState()) new ExecutionContext(builder) } @@ -547,7 +549,7 @@ class ExecutionStrategyTest extends Specification { executionStrategy.resolveFieldWithInfo(executionContext, parameters) then: - 1 * dataFetcher.get(_,_,_) >> { environment = (it[2] as Supplier).get() } + 1 * dataFetcher.get(_, _, _) >> { environment = (it[2] as Supplier).get() } environment.fieldDefinition == fieldDefinition environment.graphQLSchema == schema environment.graphQlContext.get("key") == "context" diff --git a/src/test/groovy/graphql/execution/ExecutionTest.groovy b/src/test/groovy/graphql/execution/ExecutionTest.groovy index 7130beca0f..6d207ae1a1 100644 --- a/src/test/groovy/graphql/execution/ExecutionTest.groovy +++ b/src/test/groovy/graphql/execution/ExecutionTest.groovy @@ -1,5 +1,6 @@ package graphql.execution +import graphql.EngineRunningState import graphql.ExecutionInput import graphql.ExecutionResult import graphql.ExecutionResultImpl @@ -51,7 +52,7 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput)) then: queryStrategy.execute == 1 @@ -71,7 +72,7 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput)) then: queryStrategy.execute == 0 @@ -91,7 +92,7 @@ class ExecutionTest extends Specification { def document = parser.parseDocument(query) when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput)) then: queryStrategy.execute == 0 @@ -128,7 +129,7 @@ class ExecutionTest extends Specification { when: - execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState) + execution.execute(document, MutationSchema.schema, ExecutionId.generate(), emptyExecutionInput, instrumentationState, new EngineRunningState(emptyExecutionInput)) then: queryStrategy.execute == 0 diff --git a/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy index 376c5168fa..c3b3f40994 100644 --- a/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/fieldvalidation/FieldValidationTest.groovy @@ -1,5 +1,6 @@ package graphql.execution.instrumentation.fieldvalidation +import graphql.EngineRunningState import graphql.ExecutionInput import graphql.ExecutionResult import graphql.GraphQL @@ -12,8 +13,6 @@ import graphql.execution.ExecutionId import graphql.execution.ResultPath import graphql.execution.ValueUnboxer import graphql.execution.instrumentation.ChainedInstrumentation -import graphql.execution.instrumentation.SimplePerformantInstrumentation -import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters import spock.lang.Specification import java.util.concurrent.CompletableFuture @@ -310,7 +309,7 @@ class FieldValidationTest extends Specification { def execution = new Execution(strategy, strategy, strategy, instrumentation, ValueUnboxer.DEFAULT, false) def executionInput = ExecutionInput.newExecutionInput().query(query).variables(variables).build() - execution.execute(document, schema, ExecutionId.generate(), executionInput, null) + execution.execute(document, schema, ExecutionId.generate(), executionInput, null, new EngineRunningState()) } def "test graphql from end to end with chained instrumentation"() { From 2e6307240f2cda4f31c603124a076d72d4736409 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sat, 5 Apr 2025 21:23:38 +1000 Subject: [PATCH 332/345] tests --- .../groovy/graphql/EngineRunningTest.groovy | 90 ++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index 036a2b4cfd..bf541cab07 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -4,6 +4,10 @@ import graphql.execution.DataFetcherExceptionHandler import graphql.execution.DataFetcherExceptionHandlerResult import graphql.execution.EngineRunningObserver import graphql.execution.ExecutionId +import graphql.execution.instrumentation.Instrumentation +import graphql.execution.instrumentation.InstrumentationState +import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters +import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters import graphql.schema.DataFetcher import spock.lang.Specification @@ -29,7 +33,91 @@ class EngineRunningTest extends Specification { states } - def "async instrumentation state"() { + def "engine starts before instrumentation state and handles async state correctly"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + CompletableFuture cf = new CompletableFuture() + Instrumentation instrumentation = new Instrumentation() { + + @Override + CompletableFuture createStateAsync(InstrumentationCreateStateParameters parameters) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf.complete(new InstrumentationState() {}) + then: + states == [RUNNING, NOT_RUNNING] + er.get().data == [hello: "world"] + + + } + + def "async instrument execution result"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + CompletableFuture cf = new CompletableFuture() + Instrumentation instrumentation = new Instrumentation() { + + @Override + CompletableFuture instrumentExecutionResult(ExecutionResult executionResult, InstrumentationExecutionParameters parameters, InstrumentationState state) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).instrumentation(instrumentation).build() + + def query = "{ hello }" + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf.complete(ExecutionResultImpl.newExecutionResult().data([hello: "world-modified"]).build()) + then: + er.get().data == [hello: "world-modified"] + states == [RUNNING, NOT_RUNNING] + } From 950ae47e9d11be1c35f4a07c40ab817b54add4c4 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sat, 5 Apr 2025 21:40:59 +1000 Subject: [PATCH 333/345] cleanup --- src/main/java/graphql/EngineRunningState.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/main/java/graphql/EngineRunningState.java b/src/main/java/graphql/EngineRunningState.java index 2ec36129f3..a1266edf8b 100644 --- a/src/main/java/graphql/EngineRunningState.java +++ b/src/main/java/graphql/EngineRunningState.java @@ -88,8 +88,9 @@ public CompletableFuture compose(CompletableFuture src, Function result = new CompletableFuture<>(); src = observeCompletableFutureStart(src); - src.whenComplete((u, t) -> run(() -> { + src.whenComplete((u, t) -> { CompletionStage innerCF = fn.apply(u).toCompletableFuture(); + // this run is needed to wrap around the result.complete()/result.completeExceptionally() call innerCF.whenComplete((u1, t1) -> run(() -> { if (t1 != null) { result.completeExceptionally(t1); @@ -97,32 +98,26 @@ public CompletableFuture compose(CompletableFuture src, Function CompletableFuture chain(CompletableFuture src, Function, CompletableFuture> fn) { - if (engineRunningObserver == null) { - return fn.apply(src); - } - src = observeCompletableFutureStart(src); - CompletableFuture result = fn.apply(src); - observerCompletableFutureEnd(result); - return result; - } - - public CompletableFuture observeCompletableFutureStart(CompletableFuture future) { + private CompletableFuture observeCompletableFutureStart(CompletableFuture future) { if (engineRunningObserver == null) { return future; } + // the completion order of dependent CFs is in stack order for + // directly dependent CFs, but in reverse stack order for indirect dependent ones + // By creating one dependent CF on originalFetchValue, we make sure the order it is always + // in reverse stack order future = future.thenApply(Function.identity()); incrementRunningWhenCompleted(future); return future; } - public void observerCompletableFutureEnd(CompletableFuture future) { + private void observerCompletableFutureEnd(CompletableFuture future) { if (engineRunningObserver == null) { return; } @@ -144,6 +139,9 @@ private void decrementRunningWhenCompleted(CompletableFuture cf) { } private void decrementRunning() { + if (engineRunningObserver == null) { + return; + } assertTrue(isRunning.get() > 0); if (isRunning.decrementAndGet() == 0) { changeOfState(NOT_RUNNING); From d8fc613312088930a075e36cfc176e0f8c3743fa Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sat, 5 Apr 2025 21:43:32 +1000 Subject: [PATCH 334/345] cleanup --- src/main/java/graphql/EngineRunningState.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/EngineRunningState.java b/src/main/java/graphql/EngineRunningState.java index a1266edf8b..5f9a054885 100644 --- a/src/main/java/graphql/EngineRunningState.java +++ b/src/main/java/graphql/EngineRunningState.java @@ -172,7 +172,7 @@ private void changeOfState(EngineRunningObserver.RunningState runningState) { engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); } - public void run(Runnable runnable) { + private void run(Runnable runnable) { if (engineRunningObserver == null) { runnable.run(); return; @@ -185,6 +185,9 @@ public void run(Runnable runnable) { } } + /** + * Only used once outside of this class: when the execution starts + */ public T call(Supplier supplier) { if (engineRunningObserver == null) { return supplier.get(); From e6ac56ac21245a79bb91d2d22b2262606c96a53c Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sat, 5 Apr 2025 21:50:23 +1000 Subject: [PATCH 335/345] fix test --- src/test/groovy/graphql/EngineRunningTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index bf541cab07..64cb482891 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -369,7 +369,7 @@ class EngineRunningTest extends Specification { then: result.errors.collect { it.message } == ["recovered"] // we expect simply going from running to finshed - states == [RUNNING, NOT_RUNNING] + new ArrayList<>(states) == [RUNNING, NOT_RUNNING] } From 6102a24acd00ad0da804f9a2db2d8979b4c42273 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 6 Apr 2025 06:20:24 +1000 Subject: [PATCH 336/345] test --- .../groovy/graphql/EngineRunningTest.groovy | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index 64cb482891..981894fbe7 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -8,12 +8,16 @@ import graphql.execution.instrumentation.Instrumentation import graphql.execution.instrumentation.InstrumentationState import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters +import graphql.execution.preparsed.PreparsedDocumentEntry +import graphql.execution.preparsed.PreparsedDocumentProvider +import graphql.parser.Parser import graphql.schema.DataFetcher import spock.lang.Specification import java.util.concurrent.CompletableFuture import java.util.concurrent.CopyOnWriteArrayList import java.util.concurrent.locks.ReentrantLock +import java.util.function.Function import static graphql.ExecutionInput.newExecutionInput import static graphql.execution.EngineRunningObserver.ENGINE_RUNNING_OBSERVER_KEY @@ -33,6 +37,51 @@ class EngineRunningTest extends Specification { states } + def "preparsed async document provider"() { + given: + def sdl = ''' + + type Query { + hello: String + } + ''' + def df = { env -> + return "world" + } as DataFetcher + def fetchers = ["Query": ["hello": df]] + def schema = TestUtil.schema(sdl, fetchers) + + def query = "{ hello }" + def document = Parser.parse(query) + + CompletableFuture cf = new CompletableFuture() + PreparsedDocumentProvider preparsedDocumentProvider = new PreparsedDocumentProvider() { + @Override + CompletableFuture getDocumentAsync(ExecutionInput executionInput, Function parseAndValidateFunction) { + return cf + } + } + def graphQL = GraphQL.newGraphQL(schema).preparsedDocumentProvider(preparsedDocumentProvider).build() + + def ei = newExecutionInput(query).build() + + List states = trackStates(ei) + + when: + def er = graphQL.executeAsync(ei) + then: + states == [RUNNING, NOT_RUNNING] + + when: + states.clear() + cf.complete(new PreparsedDocumentEntry(document)) + then: + states == [RUNNING, NOT_RUNNING] + er.get().data == [hello: "world"] + + + } + def "engine starts before instrumentation state and handles async state correctly"() { given: def sdl = ''' From 88246e947bbe3a4d556a2cbd954317c2ae48f0ab Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 6 Apr 2025 06:36:30 +1000 Subject: [PATCH 337/345] catch exceptions and avoid failing without completion --- src/main/java/graphql/EngineRunningState.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/graphql/EngineRunningState.java b/src/main/java/graphql/EngineRunningState.java index 5f9a054885..965fdb59fd 100644 --- a/src/main/java/graphql/EngineRunningState.java +++ b/src/main/java/graphql/EngineRunningState.java @@ -89,7 +89,12 @@ public CompletableFuture compose(CompletableFuture src, Function result = new CompletableFuture<>(); src = observeCompletableFutureStart(src); src.whenComplete((u, t) -> { - CompletionStage innerCF = fn.apply(u).toCompletableFuture(); + CompletionStage innerCF; + try { + innerCF = fn.apply(u).toCompletableFuture(); + } catch (Throwable e) { + innerCF = CompletableFuture.failedFuture(e); + } // this run is needed to wrap around the result.complete()/result.completeExceptionally() call innerCF.whenComplete((u1, t1) -> run(() -> { if (t1 != null) { From acf780ed107fefe521b8d9c4d651b156d98deaba Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 6 Apr 2025 06:46:20 +1000 Subject: [PATCH 338/345] tests --- .../groovy/graphql/EngineRunningTest.groovy | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/src/test/groovy/graphql/EngineRunningTest.groovy b/src/test/groovy/graphql/EngineRunningTest.groovy index 981894fbe7..46104653d4 100644 --- a/src/test/groovy/graphql/EngineRunningTest.groovy +++ b/src/test/groovy/graphql/EngineRunningTest.groovy @@ -203,24 +203,47 @@ class EngineRunningTest extends Specification { def sdl = ''' type Query { - hello: String + hello: String hello2: String + foo: Foo + someStaticValue: Bar + } + type Foo { + name: String + } + type Bar { + staticValue: String } ''' CompletableFuture cf1 = new CompletableFuture(); + CompletableFuture cf2 = new CompletableFuture(); + CompletableFuture cfFooName = new CompletableFuture(); def df1 = { env -> return cf1; } as DataFetcher - CompletableFuture cf2 = new CompletableFuture(); + def df2 = { env -> return cf2; } as DataFetcher - def fetchers = ["Query": ["hello": df1, "hello2": df2]] + def dfFoo = { env -> + return "Foo"; + } as DataFetcher + + def dfFooName = { env -> + return cfFooName; + } as DataFetcher + + def dfStaticValue = { env -> + return [staticValue: "staticValue"] + } as DataFetcher + + + def fetchers = [Query: ["hello": df1, "hello2": df2, foo: dfFoo, someStaticValue: dfStaticValue], Foo: [name: dfFooName]] def schema = TestUtil.schema(sdl, fetchers) def graphQL = GraphQL.newGraphQL(schema).build() - def query = "{ hello hello2 }" + def query = "{ hello hello2 foo { name } someStaticValue {staticValue} }" def ei = newExecutionInput(query).build() List states = trackStates(ei) @@ -233,17 +256,22 @@ class EngineRunningTest extends Specification { when: states.clear(); cf1.complete("world") + then: + states == [RUNNING, NOT_RUNNING] + when: + states.clear(); + cfFooName.complete("FooName") then: states == [RUNNING, NOT_RUNNING] + when: states.clear() cf2.complete("world2") - then: states == [RUNNING, NOT_RUNNING] - er.get().data == [hello: "world", hello2: "world2"] + er.get().data == [hello: "world", hello2: "world2", foo: [name: "FooName"], someStaticValue: [staticValue: "staticValue"]] } From 845b7608fe1ba665166514f728b3230ed07f499d Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 6 Apr 2025 09:52:38 +1000 Subject: [PATCH 339/345] upgrade to groovy 4 --- build.gradle | 23 ++++++++++++------- gradle.properties | 2 +- .../analysis/values/ValueTraverserTest.groovy | 7 +++--- .../IncrementalCallStateDeferTest.groovy | 3 +-- .../InstrumentationTest.groovy | 2 -- ...FieldFetchingInstrumentationContext.groovy | 2 +- .../DataLoaderDispatcherTest.groovy | 2 -- .../values/InputInterceptorTest.groovy | 4 +--- .../extensions/ExtensionsBuilderTest.groovy | 4 +--- .../IntrospectionResultToSchemaTest.groovy | 4 ++-- .../groovy/graphql/schema/CoercingTest.groovy | 3 +-- ...legatingDataFetchingEnvironmentTest.groovy | 2 -- ...PropertyDataFetcherClassLoadingTest.groovy | 8 +++---- 13 files changed, 30 insertions(+), 36 deletions(-) diff --git a/build.gradle b/build.gradle index 6197672308..13062d84f1 100644 --- a/build.gradle +++ b/build.gradle @@ -97,7 +97,12 @@ jar { attributes('Automatic-Module-Name': 'com.graphqljava') } } - +tasks.withType(GroovyCompile) { + // Options when compiling Java using the Groovy plugin. + // (Groovy itself defaults to UTF-8 for Groovy code) + options.encoding = 'UTF-8' + groovyOptions.forkOptions.memoryMaximumSize = "4g" +} dependencies { implementation 'org.antlr:antlr4-runtime:' + antlrVersion api 'com.graphql-java:java-dataloader:3.4.0' @@ -106,13 +111,15 @@ dependencies { antlr 'org.antlr:antlr4:' + antlrVersion implementation 'com.google.guava:guava:' + guavaVersion testImplementation group: 'junit', name: 'junit', version: '4.13.2' - testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0' - testImplementation 'org.codehaus.groovy:groovy:3.0.24' - testImplementation 'org.codehaus.groovy:groovy-json:3.0.24' + testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' + testImplementation 'net.bytebuddy:byte-buddy:1.17.5' + testImplementation 'org.objenesis:objenesis:3.4' + testImplementation 'org.apache.groovy:groovy:4.0.26"' + testImplementation 'org.apache.groovy:groovy-json:4.0.26' testImplementation 'com.google.code.gson:gson:2.12.1' testImplementation 'org.eclipse.jetty:jetty-server:11.0.25' testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3' - testImplementation 'org.awaitility:awaitility-groovy:4.2.0' + testImplementation 'org.awaitility:awaitility-groovy:4.3.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion @@ -220,9 +227,9 @@ generateGrammarSource { outputDirectory = file("${project.buildDir}/generated-src/antlr/main/graphql/parser/antlr") } generateGrammarSource.inputs - .dir('src/main/antlr') - .withPropertyName('sourceDir') - .withPathSensitivity(PathSensitivity.RELATIVE) + .dir('src/main/antlr') + .withPropertyName('sourceDir') + .withPathSensitivity(PathSensitivity.RELATIVE) task sourcesJar(type: Jar) { diff --git a/gradle.properties b/gradle.properties index 50b2318345..4c377884b9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.caching=true org.gradle.daemon=true org.gradle.parallel=true -org.gradle.jvmargs=-Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Dfile.encoding=UTF-8 diff --git a/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy b/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy index 8d524f8bcc..1a60b35851 100644 --- a/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy +++ b/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy @@ -21,7 +21,6 @@ import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType import graphql.schema.idl.SchemaDirectiveWiring import graphql.schema.idl.SchemaDirectiveWiringEnvironment -import org.jetbrains.annotations.Nullable import spock.lang.Specification import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring @@ -323,7 +322,7 @@ class ValueTraverserTest extends Specification { ] def visitor = new ValueVisitor() { @Override - Object visitArgumentValue(@Nullable Object coercedValue, GraphQLArgument graphQLArgument, ValueVisitor.InputElements inputElements) { + Object visitArgumentValue(Object coercedValue, GraphQLArgument graphQLArgument, ValueVisitor.InputElements inputElements) { if (graphQLArgument.name == "arg2") { return [name: "Harry Potter", age: 54] } @@ -402,7 +401,7 @@ class ValueTraverserTest extends Specification { def visitor = new ValueVisitor() { @Override - Object visitScalarValue(@Nullable Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { if (coercedValue == "Tom Riddle") { return "Happy Potter" } @@ -410,7 +409,7 @@ class ValueTraverserTest extends Specification { } @Override - Object visitAppliedDirectiveArgumentValue(@Nullable Object coercedValue, GraphQLAppliedDirectiveArgument graphQLAppliedDirectiveArgument, ValueVisitor.InputElements inputElements) { + Object visitAppliedDirectiveArgumentValue(Object coercedValue, GraphQLAppliedDirectiveArgument graphQLAppliedDirectiveArgument, ValueVisitor.InputElements inputElements) { if (graphQLAppliedDirectiveArgument.name == "arg2") { return [name: "Harry Potter", age: 54] } diff --git a/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy b/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy index 94740a9e63..d99b49fae4 100644 --- a/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy @@ -6,7 +6,6 @@ import graphql.execution.ResultPath import graphql.execution.pubsub.CapturingSubscriber import graphql.incremental.DelayedIncrementalPartialResult import org.awaitility.Awaitility -import org.jetbrains.annotations.NotNull import org.reactivestreams.Publisher import spock.lang.Specification @@ -242,7 +241,7 @@ class IncrementalCallStateDeferTest extends Specification { def threadFactory = new ThreadFactory() { @Override - Thread newThread(@NotNull Runnable r) { + Thread newThread(Runnable r) { return new Thread(r, "SubscriberThread") } } diff --git a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy index 6695038a6a..6580d59904 100644 --- a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy @@ -16,7 +16,6 @@ import graphql.schema.DataFetchingEnvironment import graphql.schema.SingletonPropertyDataFetcher import graphql.schema.StaticDataFetcher import org.awaitility.Awaitility -import org.jetbrains.annotations.NotNull import spock.lang.Specification import java.util.concurrent.CompletableFuture @@ -183,7 +182,6 @@ class InstrumentationTest extends Specification { } } - @NotNull @Override DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { System.out.println(String.format("t%s instrument DF for %s", Thread.currentThread().getId(), parameters.environment.getExecutionStepInfo().getPath())) diff --git a/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy b/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy index 02cbf9d928..50fcaccd2e 100644 --- a/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy @@ -1,6 +1,6 @@ package graphql.execution.instrumentation -class TestingFieldFetchingInstrumentationContext extends TestingInstrumentContext> implements FieldFetchingInstrumentationContext { +class TestingFieldFetchingInstrumentationContext extends TestingInstrumentContext implements FieldFetchingInstrumentationContext { TestingFieldFetchingInstrumentationContext(Object op, Object executionList, Object throwableList, Boolean useOnDispatch) { super(op, executionList, throwableList, useOnDispatch) diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy index 5ed01769f7..2996305f52 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy @@ -16,7 +16,6 @@ import org.awaitility.Awaitility import org.dataloader.BatchLoader import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry -import org.jetbrains.annotations.NotNull import org.reactivestreams.Publisher import reactor.core.publisher.Mono import spock.lang.Specification @@ -96,7 +95,6 @@ class DataLoaderDispatcherTest extends Specification { def enhancingInstrumentation = new SimplePerformantInstrumentation() { - @NotNull @Override ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { assert executionInput.getDataLoaderRegistry() == startingDataLoaderRegistry diff --git a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy index 46b15a3d9f..f259714b82 100644 --- a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy +++ b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy @@ -10,8 +10,6 @@ import graphql.execution.ValuesResolver import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.GraphQLInputType -import org.jetbrains.annotations.NotNull -import org.jetbrains.annotations.Nullable import spock.lang.Specification import static graphql.language.TypeName.newTypeName @@ -35,7 +33,7 @@ class InputInterceptorTest extends Specification { InputInterceptor interceptor = new InputInterceptor() { @Override - Object intercept(@Nullable Object value, @NotNull GraphQLInputType graphQLType, @NotNull GraphQLContext graphqlContext, @NotNull Locale locale) { + Object intercept(Object value, GraphQLInputType graphQLType, GraphQLContext graphqlContext, Locale locale) { if (graphQLType == Scalars.GraphQLBoolean) { return "truthy" == value ? false : value } diff --git a/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy b/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy index 12be824cf8..e08a09b777 100644 --- a/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy +++ b/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy @@ -6,7 +6,6 @@ import graphql.execution.DataFetcherResult import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.GraphQLTypeUtil -import org.jetbrains.annotations.NotNull import spock.lang.Specification import static graphql.ExecutionInput.newExecutionInput @@ -106,8 +105,7 @@ class ExtensionsBuilderTest extends Specification { def "can use a custom merger"() { ExtensionsMerger merger = new ExtensionsMerger() { @Override - @NotNull - Map merge(@NotNull Map leftMap, @NotNull Map rightMap) { + Map merge(Map leftMap, Map rightMap) { return rightMap } } diff --git a/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy index 9f2346df4f..f322d2700e 100644 --- a/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy +++ b/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy @@ -377,7 +377,7 @@ input CharacterInput { "subscriptionType": {"name":"SubscriptionType"}, "types": [ ] - }""" + }}""" def parsed = slurp(input) when: @@ -826,7 +826,7 @@ directiveArg: String = "default Value") on FIELD | FRAGMENT_SPREAD | INLINE_FRAG "isRepeatable":true } ] - }""" + }}""" def parsed = slurp(input) when: diff --git a/src/test/groovy/graphql/schema/CoercingTest.groovy b/src/test/groovy/graphql/schema/CoercingTest.groovy index 5e96baece1..9504243c4d 100644 --- a/src/test/groovy/graphql/schema/CoercingTest.groovy +++ b/src/test/groovy/graphql/schema/CoercingTest.groovy @@ -14,7 +14,6 @@ import graphql.language.StringValue import graphql.language.VariableReference import graphql.schema.idl.RuntimeWiring import graphql.schema.idl.TypeRuntimeWiring -import org.jetbrains.annotations.NotNull import spock.lang.Specification import java.time.ZonedDateTime @@ -248,7 +247,7 @@ class CoercingTest extends Specification { } @Override - StringValue valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + StringValue valueToLiteral(Object input, GraphQLContext graphQLContext, Locale locale) { return new StringValue(input.toString()) } }) diff --git a/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy b/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy index 29133b21bd..687a0f62ae 100644 --- a/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy +++ b/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy @@ -1,7 +1,6 @@ package graphql.schema import graphql.GraphQLContext -import org.jetbrains.annotations.NotNull import spock.lang.Specification class DelegatingDataFetchingEnvironmentTest extends Specification { @@ -23,7 +22,6 @@ class DelegatingDataFetchingEnvironmentTest extends Specification { when: def delegatingDFE = new DelegatingDataFetchingEnvironment(dfe) { - @NotNull @Override GraphQLContext getGraphQlContext() { return GraphQLContext.of(["key": "overriddenContext"]) diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy index 6ee7623dd3..ad70387015 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy @@ -35,10 +35,10 @@ class PropertyDataFetcherClassLoadingTest extends Specification { def target = new TargetClass() - when: - def value = okDF.get(fld("okThings"), target, { -> null }) - then: - value == "ok" +// when: +// def value = okDF.get(fld("okThings"), target, { -> null }) +// then: +// value == "ok" when: brokenDF.get(fld("brokenThings"), target, { -> null }) From 4e106657ba30e4e328e06c7843fa72314ccab772 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 6 Apr 2025 13:18:41 +1000 Subject: [PATCH 340/345] fix test --- .../schema/PropertyDataFetcherClassLoadingTest.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy index ad70387015..62b814db0d 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy @@ -25,7 +25,7 @@ class PropertyDataFetcherClassLoadingTest extends Specification { } BrokenClass getBrokenThings() { - return BrokenClass.cast(null) + return new BrokenClass() } } @@ -35,10 +35,10 @@ class PropertyDataFetcherClassLoadingTest extends Specification { def target = new TargetClass() -// when: -// def value = okDF.get(fld("okThings"), target, { -> null }) -// then: -// value == "ok" + when: + def value = okDF.get(fld("okThings"), target, { -> null }) + then: + value == "ok" when: brokenDF.get(fld("brokenThings"), target, { -> null }) From 6054e56caa9bb2c50a1793131d94bb3891eb0e17 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Apr 2025 04:21:42 +0000 Subject: [PATCH 341/345] Add performance results for commit 31b5f1b83c785c1acaff247c88aca6763328b754 --- ...c785c1acaff247c88aca6763328b754-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json diff --git a/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json b/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json new file mode 100644 index 0000000000..1399ed8956 --- /dev/null +++ b/performance-results/2025-04-06T04:21:24Z-31b5f1b83c785c1acaff247c88aca6763328b754-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.405781402066154, + "scoreError" : 0.04629911913002043, + "scoreConfidence" : [ + 3.3594822829361335, + 3.4520805211961743 + ], + "scorePercentiles" : { + "0.0" : 3.396624620926415, + "50.0" : 3.4062908345364202, + "90.0" : 3.4139193182653607, + "95.0" : 3.4139193182653607, + "99.0" : 3.4139193182653607, + "99.9" : 3.4139193182653607, + "99.99" : 3.4139193182653607, + "99.999" : 3.4139193182653607, + "99.9999" : 3.4139193182653607, + "100.0" : 3.4139193182653607 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.4049844214875487, + 3.4139193182653607 + ], + [ + 3.396624620926415, + 3.407597247585292 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7201965667995456, + "scoreError" : 0.014319793782545227, + "scoreConfidence" : [ + 1.7058767730170004, + 1.7345163605820908 + ], + "scorePercentiles" : { + "0.0" : 1.717273001278032, + "50.0" : 1.7204317124975719, + "90.0" : 1.722649840925006, + "95.0" : 1.722649840925006, + "99.0" : 1.722649840925006, + "99.9" : 1.722649840925006, + "99.99" : 1.722649840925006, + "99.999" : 1.722649840925006, + "99.9999" : 1.722649840925006, + "100.0" : 1.722649840925006 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.722649840925006, + 1.717273001278032 + ], + [ + 1.7205985118976679, + 1.7202649130974759 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8645438475526157, + "scoreError" : 0.006962670109372867, + "scoreConfidence" : [ + 0.8575811774432428, + 0.8715065176619886 + ], + "scorePercentiles" : { + "0.0" : 0.8630685172427868, + "50.0" : 0.8647808022374026, + "90.0" : 0.8655452684928708, + "95.0" : 0.8655452684928708, + "99.0" : 0.8655452684928708, + "99.9" : 0.8655452684928708, + "99.99" : 0.8655452684928708, + "99.999" : 0.8655452684928708, + "99.9999" : 0.8655452684928708, + "100.0" : 0.8655452684928708 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8630685172427868, + 0.8650899598383918 + ], + [ + 0.8644716446364135, + 0.8655452684928708 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 16.05989386004153, + "scoreError" : 0.3259215020951166, + "scoreConfidence" : [ + 15.733972357946413, + 16.385815362136647 + ], + "scorePercentiles" : { + "0.0" : 15.72532512446189, + "50.0" : 16.158593388145643, + "90.0" : 16.20446067632027, + "95.0" : 16.20446067632027, + "99.0" : 16.20446067632027, + "99.9" : 16.20446067632027, + "99.99" : 16.20446067632027, + "99.999" : 16.20446067632027, + "99.9999" : 16.20446067632027, + "100.0" : 16.20446067632027 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.967443811944504, + 15.72532512446189, + 15.760029346712017 + ], + [ + 16.150287625332755, + 16.19410303415797, + 16.20446067632027 + ], + [ + 16.198468930460553, + 16.180332802838194, + 16.158593388145643 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2756.8020116085313, + "scoreError" : 91.39304598010132, + "scoreConfidence" : [ + 2665.40896562843, + 2848.1950575886326 + ], + "scorePercentiles" : { + "0.0" : 2690.356683491557, + "50.0" : 2750.4605046843676, + "90.0" : 2845.5252577614933, + "95.0" : 2845.5252577614933, + "99.0" : 2845.5252577614933, + "99.9" : 2845.5252577614933, + "99.99" : 2845.5252577614933, + "99.999" : 2845.5252577614933, + "99.9999" : 2845.5252577614933, + "100.0" : 2845.5252577614933 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2791.045225296556, + 2741.798957219609, + 2783.3375517726395 + ], + [ + 2690.7068308911184, + 2709.71805278636, + 2690.356683491557 + ], + [ + 2845.5252577614933, + 2808.2690405730837, + 2750.4605046843676 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68533.4742069145, + "scoreError" : 2439.3220251166053, + "scoreConfidence" : [ + 66094.1521817979, + 70972.7962320311 + ], + "scorePercentiles" : { + "0.0" : 66835.83632727223, + "50.0" : 68487.06242377267, + "90.0" : 70252.10139834581, + "95.0" : 70252.10139834581, + "99.0" : 70252.10139834581, + "99.9" : 70252.10139834581, + "99.99" : 70252.10139834581, + "99.999" : 70252.10139834581, + "99.9999" : 70252.10139834581, + "100.0" : 70252.10139834581 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70219.46335615995, + 70252.10139834581, + 70226.14046013122 + ], + [ + 66900.3928975727, + 66835.83632727223, + 66909.21094385958 + ], + [ + 68454.6761328727, + 68516.38392224368, + 68487.06242377267 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 337.52855496465264, + "scoreError" : 9.658309838793654, + "scoreConfidence" : [ + 327.870245125859, + 347.18686480344627 + ], + "scorePercentiles" : { + "0.0" : 327.3231459328245, + "50.0" : 339.70911503866444, + "90.0" : 342.52691897035885, + "95.0" : 342.52691897035885, + "99.0" : 342.52691897035885, + "99.9" : 342.52691897035885, + "99.99" : 342.52691897035885, + "99.999" : 342.52691897035885, + "99.9999" : 342.52691897035885, + "100.0" : 342.52691897035885 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 340.36259544413855, + 339.3679710278199, + 339.70911503866444 + ], + [ + 327.3231459328245, + 329.51373715892254, + 334.41701909854896 + ], + [ + 342.02520640669826, + 342.52691897035885, + 342.5112856038977 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 107.56678718393282, + "scoreError" : 0.8035552983655688, + "scoreConfidence" : [ + 106.76323188556725, + 108.37034248229838 + ], + "scorePercentiles" : { + "0.0" : 106.96254754530847, + "50.0" : 107.6430612124555, + "90.0" : 108.25459860591951, + "95.0" : 108.25459860591951, + "99.0" : 108.25459860591951, + "99.9" : 108.25459860591951, + "99.99" : 108.25459860591951, + "99.999" : 108.25459860591951, + "99.9999" : 108.25459860591951, + "100.0" : 108.25459860591951 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 107.75910317895423, + 108.16501022003597, + 108.25459860591951 + ], + [ + 107.47077297938178, + 107.6430612124555, + 107.75656223064789 + ], + [ + 106.96254754530847, + 107.04988075523372, + 107.03954792745826 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06282593834342524, + "scoreError" : 0.00124014987561755, + "scoreConfidence" : [ + 0.0615857884678077, + 0.06406608821904279 + ], + "scorePercentiles" : { + "0.0" : 0.061971611277398725, + "50.0" : 0.06275012118093684, + "90.0" : 0.06380773513779088, + "95.0" : 0.06380773513779088, + "99.0" : 0.06380773513779088, + "99.9" : 0.06380773513779088, + "99.99" : 0.06380773513779088, + "99.999" : 0.06380773513779088, + "99.9999" : 0.06380773513779088, + "100.0" : 0.06380773513779088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06380773513779088, + 0.06360714405566828, + 0.06368026652317607 + ], + [ + 0.06204686022919756, + 0.061971611277398725, + 0.06207596931003445 + ], + [ + 0.0630071047979082, + 0.06275012118093684, + 0.06248663257871617 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.7645891824443105E-4, + "scoreError" : 7.420531364522643E-6, + "scoreConfidence" : [ + 3.690383868799084E-4, + 3.838794496089537E-4 + ], + "scorePercentiles" : { + "0.0" : 3.7083719638183197E-4, + "50.0" : 3.784746061574875E-4, + "90.0" : 3.81487875620763E-4, + "95.0" : 3.81487875620763E-4, + "99.0" : 3.81487875620763E-4, + "99.9" : 3.81487875620763E-4, + "99.99" : 3.81487875620763E-4, + "99.999" : 3.81487875620763E-4, + "99.9999" : 3.81487875620763E-4, + "100.0" : 3.81487875620763E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.81487875620763E-4, + 3.7847707489032533E-4, + 3.758967400060188E-4 + ], + [ + 3.784746061574875E-4, + 3.799740420807843E-4, + 3.808930146034486E-4 + ], + [ + 3.709759403254721E-4, + 3.7083719638183197E-4, + 3.711137741337483E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014170195070241436, + "scoreError" : 1.5374022955591253E-4, + "scoreConfidence" : [ + 0.014016454840685524, + 0.014323935299797348 + ], + "scorePercentiles" : { + "0.0" : 0.014048208614820965, + "50.0" : 0.014181384624438778, + "90.0" : 0.014275301442216413, + "95.0" : 0.014275301442216413, + "99.0" : 0.014275301442216413, + "99.9" : 0.014275301442216413, + "99.99" : 0.014275301442216413, + "99.999" : 0.014275301442216413, + "99.9999" : 0.014275301442216413, + "100.0" : 0.014275301442216413 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.01408180109132642, + 0.014048208614820965, + 0.014050356922169065 + ], + [ + 0.014182106285153491, + 0.014179868830771063, + 0.014181384624438778 + ], + [ + 0.014275301442216413, + 0.014266937955287974, + 0.014265789865988764 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9853098955367946, + "scoreError" : 0.021446285031264112, + "scoreConfidence" : [ + 0.9638636105055305, + 1.0067561805680587 + ], + "scorePercentiles" : { + "0.0" : 0.9752768992588258, + "50.0" : 0.9783446756016435, + "90.0" : 1.0023353015936654, + "95.0" : 1.0023353015936654, + "99.0" : 1.0023353015936654, + "99.9" : 1.0023353015936654, + "99.99" : 1.0023353015936654, + "99.999" : 1.0023353015936654, + "99.9999" : 1.0023353015936654, + "100.0" : 1.0023353015936654 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0022688939667268, + 1.0023353015936654, + 1.0022084627718209 + ], + [ + 0.9752768992588258, + 0.9762894800351459, + 0.9758775303473849 + ], + [ + 0.9767574471139759, + 0.9784303691419626, + 0.9783446756016435 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.013155312270424532, + "scoreError" : 2.2122281273061355E-4, + "scoreConfidence" : [ + 0.012934089457693919, + 0.013376535083155146 + ], + "scorePercentiles" : { + "0.0" : 0.01308103762286097, + "50.0" : 0.013132885895183091, + "90.0" : 0.013261304114086875, + "95.0" : 0.013261304114086875, + "99.0" : 0.013261304114086875, + "99.9" : 0.013261304114086875, + "99.99" : 0.013261304114086875, + "99.999" : 0.013261304114086875, + "99.9999" : 0.013261304114086875, + "100.0" : 0.013261304114086875 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013170846136420509, + 0.013233967485032793, + 0.013261304114086875 + ], + [ + 0.013089792610200374, + 0.013094925653945672, + 0.01308103762286097 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.775777798225155, + "scoreError" : 0.054194193911174686, + "scoreConfidence" : [ + 3.7215836043139805, + 3.8299719921363296 + ], + "scorePercentiles" : { + "0.0" : 3.7556604196696695, + "50.0" : 3.7757238366945414, + "90.0" : 3.8012071276595742, + "95.0" : 3.8012071276595742, + "99.0" : 3.8012071276595742, + "99.9" : 3.8012071276595742, + "99.99" : 3.8012071276595742, + "99.999" : 3.8012071276595742, + "99.9999" : 3.8012071276595742, + "100.0" : 3.8012071276595742 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.7556604196696695, + 3.788914986363636, + 3.788116437121212 + ], + [ + 3.8012071276595742, + 3.7574365822689706, + 3.7633312362678706 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.997883209839679, + "scoreError" : 0.09377215361018633, + "scoreConfidence" : [ + 2.9041110562294925, + 3.091655363449865 + ], + "scorePercentiles" : { + "0.0" : 2.9241853023391813, + "50.0" : 3.0141105696202533, + "90.0" : 3.0615126179981633, + "95.0" : 3.0615126179981633, + "99.0" : 3.0615126179981633, + "99.9" : 3.0615126179981633, + "99.99" : 3.0615126179981633, + "99.999" : 3.0615126179981633, + "99.9999" : 3.0615126179981633, + "100.0" : 3.0615126179981633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 2.9241853023391813, + 2.9325244403400763, + 2.925960527501463 + ], + [ + 3.051239873703478, + 3.0029951573101172, + 3.0444756797564687 + ], + [ + 3.0239447199879046, + 3.0141105696202533, + 3.0615126179981633 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.177529407092993, + "scoreError" : 0.0055248675533280875, + "scoreConfidence" : [ + 0.1720045395396649, + 0.1830542746463211 + ], + "scorePercentiles" : { + "0.0" : 0.17486462843603554, + "50.0" : 0.1756732380324989, + "90.0" : 0.18216117268388649, + "95.0" : 0.18216117268388649, + "99.0" : 0.18216117268388649, + "99.9" : 0.18216117268388649, + "99.99" : 0.18216117268388649, + "99.999" : 0.18216117268388649, + "99.9999" : 0.18216117268388649, + "100.0" : 0.18216117268388649 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17616140713794987, + 0.17548674602533956, + 0.1750206234314017 + ], + [ + 0.18172378042885698, + 0.18174547134834523, + 0.18216117268388649 + ], + [ + 0.1756732380324989, + 0.17492759631262245, + 0.17486462843603554 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32976828318298224, + "scoreError" : 0.010628414016052913, + "scoreConfidence" : [ + 0.3191398691669293, + 0.34039669719903515 + ], + "scorePercentiles" : { + "0.0" : 0.3216373301492345, + "50.0" : 0.33094866118410166, + "90.0" : 0.3368310063659941, + "95.0" : 0.3368310063659941, + "99.0" : 0.3368310063659941, + "99.9" : 0.3368310063659941, + "99.99" : 0.3368310063659941, + "99.999" : 0.3368310063659941, + "99.9999" : 0.3368310063659941, + "100.0" : 0.3368310063659941 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3368310063659941, + 0.33574312472302426, + 0.33595367309436625 + ], + [ + 0.33283418678027027, + 0.32985339994062735, + 0.33094866118410166 + ], + [ + 0.32246368138140075, + 0.3216373301492345, + 0.32164948502782154 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16037060522180674, + "scoreError" : 0.011186335452461017, + "scoreConfidence" : [ + 0.14918426976934573, + 0.17155694067426774 + ], + "scorePercentiles" : { + "0.0" : 0.15342508020865295, + "50.0" : 0.15895105458244588, + "90.0" : 0.16888263868341946, + "95.0" : 0.16888263868341946, + "99.0" : 0.16888263868341946, + "99.9" : 0.16888263868341946, + "99.99" : 0.16888263868341946, + "99.999" : 0.16888263868341946, + "99.9999" : 0.16888263868341946, + "100.0" : 0.16888263868341946 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16888263868341946, + 0.16861914202610193, + 0.16854025700273031 + ], + [ + 0.1535660718980344, + 0.15342508020865295, + 0.15356292708957173 + ], + [ + 0.15895105458244588, + 0.15883483265565437, + 0.15895344284964952 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3861324143689894, + "scoreError" : 0.003575572767244633, + "scoreConfidence" : [ + 0.38255684160174475, + 0.389707987136234 + ], + "scorePercentiles" : { + "0.0" : 0.38304099191818597, + "50.0" : 0.38653313933982686, + "90.0" : 0.3896898799002416, + "95.0" : 0.3896898799002416, + "99.0" : 0.3896898799002416, + "99.9" : 0.3896898799002416, + "99.99" : 0.3896898799002416, + "99.999" : 0.3896898799002416, + "99.9999" : 0.3896898799002416, + "100.0" : 0.3896898799002416 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.38653313933982686, + 0.38562719511818916, + 0.38522279780431434 + ], + [ + 0.38747809643922665, + 0.38698291312591904, + 0.3874144294735211 + ], + [ + 0.3896898799002416, + 0.3832022862014791, + 0.38304099191818597 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15756813557818247, + "scoreError" : 0.0065165439758813224, + "scoreConfidence" : [ + 0.15105159160230114, + 0.1640846795540638 + ], + "scorePercentiles" : { + "0.0" : 0.15212867388757892, + "50.0" : 0.15919887802470709, + "90.0" : 0.16154582684199473, + "95.0" : 0.16154582684199473, + "99.0" : 0.16154582684199473, + "99.9" : 0.16154582684199473, + "99.99" : 0.16154582684199473, + "99.999" : 0.16154582684199473, + "99.9999" : 0.16154582684199473, + "100.0" : 0.16154582684199473 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1531477717234831, + 0.1522394138807697, + 0.15212867388757892 + ], + [ + 0.16154582684199473, + 0.1602374568251374, + 0.1601357834358186 + ], + [ + 0.16049824886449354, + 0.15898116671965914, + 0.15919887802470709 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.04687713978540145, + "scoreError" : 0.0010612687857045062, + "scoreConfidence" : [ + 0.045815870999696945, + 0.047938408571105956 + ], + "scorePercentiles" : { + "0.0" : 0.04606025472801806, + "50.0" : 0.04693274996010775, + "90.0" : 0.04757975261209653, + "95.0" : 0.04757975261209653, + "99.0" : 0.04757975261209653, + "99.9" : 0.04757975261209653, + "99.99" : 0.04757975261209653, + "99.999" : 0.04757975261209653, + "99.9999" : 0.04757975261209653, + "100.0" : 0.04757975261209653 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04755243152779165, + 0.04757975261209653, + 0.04754639047849984 + ], + [ + 0.04707834560177012, + 0.04693274996010775, + 0.04685888061946488 + ], + [ + 0.046183133010363364, + 0.04610231953050085, + 0.04606025472801806 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9360297.634597164, + "scoreError" : 175391.63757937515, + "scoreConfidence" : [ + 9184905.997017788, + 9535689.27217654 + ], + "scorePercentiles" : { + "0.0" : 9260010.685185185, + "50.0" : 9321470.84249767, + "90.0" : 9536754.620591039, + "95.0" : 9536754.620591039, + "99.0" : 9536754.620591039, + "99.9" : 9536754.620591039, + "99.99" : 9536754.620591039, + "99.999" : 9536754.620591039, + "99.9999" : 9536754.620591039, + "100.0" : 9536754.620591039 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9536754.620591039, + 9475862.076704545, + 9467337.743614001 + ], + [ + 9321470.84249767, + 9315488.694599628, + 9326853.998136068 + ], + [ + 9270368.858202038, + 9260010.685185185, + 9268531.1918443 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 69f8230b61f21193f2f8895aa4c48964c9efd6ce Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 6 Apr 2025 20:31:39 +1000 Subject: [PATCH 342/345] upgrade to gradle 8.13 --- gradle/wrapper/gradle-wrapper.jar | Bin 43504 -> 43705 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 5 ++--- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 2c3521197d7c4586c843d1d3e9090525f1898cde..9bbc975c742b298b441bfb90dbc124400a3751b9 100644 GIT binary patch delta 34884 zcmXuJV_+R@)3u$(Y~1X)v28cDZQE*`9qyPrXx!Mg8{4+s*nWFo&-eX5|IMtKbslT3 z<{(=aAZzeZfy=9lI!r-0aXh8xKdlGq)X)o#ON+mC6t7t0WtgR!HN%?__cvdWdtQC< zrFQ;?l@%CxY55`8y(t7?1P_O7(6pv~(~l!kHB;z2evtUsGHzEDL+y4*no%g#AsI~i zJ%SFMv{j__Yaxnn2NtDK+!1XZX`CB}DGMIT{#8(iAk*`?VagyHx&|p8npkmz=-n!f z3D+^yIjP`D&Lfz500rpq#dJE`vM|-N7=`uN0z86BpiMcCOCS^;6CUG4o1I)W{q6Gv z1vZB6+|7An``GNoG7D!xJGJd_Qv(M-kdVdsIJ?CrXFEH^@Ts83}QX}1%P6KQFNz^-=) z<|qo#qmR!Nonr$p*Uu1Jo2c~KLTrvc*Yw%L+`IL}y|kd+t{NCrXaP=7C00CO?=pgp z!fyr#XFfFXO6z2TP5P1W{H_`$PKzUiGtJd!U52%yAJf}~tgXF`1#}@y`cZl9y{J-A zyUA&-X)+^N?W=2Fm_ce2w$C6>YWp7MgXa{7=kwwy9guBx26=MnPpuSt zB4}vo3{qxa+*{^oHxe7;JMNMp>F`iNv>0!MsFtnb+5eEZ$WI z0M9}rA&cgQ^Q8t_ojofiHaKuhvIB{B9I}3`Dsy3vW8ibigX}Kc912|UZ1uhH?RuHU=i&ePe2w%65)nBkHr7Bx5WwMZj%1B53sUEj0bxI( zEbS%WOUw)3-B0`-m0!{mk7Q%={B#7C^Si>C04@P|qm7$Oxn3ki)G_oNQBTh6CN6d_kt@UKx1Ezdo5)J0Gdf@TcW|{ zdz1V?a>zldA7_5*Pjn6kDj|sbUqt-7X z5+oajeC}*6oi~vxZ#Ac&85cYcC$5OKUnYPv$Y~>H@)mnTtALo*>>5&=0QMr5{5?S; zCDF=RI@94n(!~sa`4Y{JLxgcvRqMM&T!}rRd~Kl#_X4Z&85;})o4W*g>?TaAVXSWB zeY#!8qz^hmC6FERsjTnC)1Xu1UPd7_LfuNvuVqF8(}Jfar=T-K9iChEuZi-FH(P%u zzLrjpq|?}8?g1Vnw^&{eqw~QY0f*9c71&*<5#9f5JlhJmG~IuV*8~nEBLr`KrvNW! zlLH&oZ58K?u>1{vAU0CtT>Il<I{Q8#A!lO7#73V&iN13;oV?Hl?N5xDK63)Rp3%5reb&3n5OQ|9H zDpYEI%JQXcrs^o*SCFY~iYf-VM<`7Tl@+kQS3tfR-fyH_JDaz5SYEMU-bTCLQ=JVG ze?ZPcj95Tci|bVvSZk3^enqQ?pIcZn24V=YT{cf-L|P&{-%%^ql$)^Vu~)Ida=h$bZAMQEi$MM|&b zY8;D;aEba_`W^=VdKfttW)h_zjRA&0A^T*tF*%+}TZQCOvFqKUu=xf1Bx@T?&~S(J zopXniA?s%}Q4p9~F(Ty{8wt$l4oHeT(#U6sAu4>Q+~a;}I>0>??v*wfke}0TwPaeE zj3gWtfNlD{jRgy7;S9PS?su5pnobi%Zoe0LVpw%`<)V=yT~Ht_UUXIna4YUa;p=-T4df6^;bz%;@|$F zK;s9#K@9hqZCST!66N0uPB+FT*kq22%ow2HirV3rE%hcX^!(Lz;3?kCZ@Ak*MThjTOKU&t+uJdN*6t$;DDmh zFStdHO>r)8L@qO}K@H~7Z);#f6WU{@Icn7Tc^|IZ`;K^ek9eCWdync`kWCt2s%D-k zE$wyPCui$@gJJ9Q`CtixbMF(GiCCbm`ut(~ce-G|Ji|PZ3~DHlG`Asn;skVhnu0r_ zgGbdmfl|er`87x@uYmd8A+!-3V95GE4&_^9N@hp4SC4 zeFU+Z3Ou&G! zlvZy|iHIIX3X2-Yb7YJ#{SYE9lCoixO+}(|u+H@Z6Rz-l1eZ7{I;vk+Y7kP7ev>hG zv|(I<4?N{EXMSvRgUhbQhDoP1&A;SEUGGep8*!@4u)fNbl3%cts<&=m5<5pi7M-HQ zPS#svbXWu2n&m*K6jL#@xm3VSMJxnxve5J6w1qGv`2>5<6F!uzGVHP1A(_xI7CWlX zm6*wpT@dmQ&pAlm`r~T;)>m5HK^H^cM`pCSoh{;-CE43rMkg<;HnZaCHfMq1LoN0S z%%7|$y~&k6wpiY@rsdCY9ZDh%9W6Pf=2^p=;iv-Ah^ACxwK3VmI}SMNneTa9n%biL z#GoojRHxa}R2zOo!G@<8M-B6vNp?)@_>#mYku#pe{O~t?~}1 zE8`)=BstIRk5W*xZw@2=89@ds?eQ~mxzkrA`y<$oR8bmaUw=rE%lFmzHY&aY8?<-N zp1|bb$(XrOMmiYy{pH#)D1GOmv5aj_?waU~*h~s{VZ&H_PhoXYz`C8Pss{ymY_hPG zt{NY&nPMH#FRvwR+T0(Xo2#T6;=oFmRgA9b-HVY72d|~YF+6v$F%sY0 zS#^LF7sTj>Itvyi!~){Hit*~3imOG*Xh51qLz+!W~`vUBVeZZ5&k34SD%Ha%5#aclSzMfoGWjiq9#rl}j zOf*8NY>VN(`W!DxaBgjBzj3oUAVlLY{R}tiZZ0o>K$vwr?+eggZ!q74m2t?lkvm9z zAmL2=W$jQJL>SSrbIOibe734A(K^B8`M@uao!`E$p+9D!rBea8Oxb|p5r3o4##G8K zMr0I9y&`21{@m=Bi+4tTJ-xy(DB_mG$kYv+qw&VBM(A9^wP9;Yo*6{#5tMpfa;m2FC+%l@ zk_cKXg-d&YUIj3(x{)aNwYGYjSHiOQK2K#yWt$vQomhbnF;Qhkxl`+;i{&+t{PrY` zp5r28&|UvmUK|&Jlv>oX4>XE87Zns?fiE6c;VP7BixT*6n}Zsbv$wd{gXyrE&Sd zhRlv!-{%~xv6yNvx@3^@JEa$={&giRpqZG>`{93 zEjM}YI1i6JSx$DJa&NWcl0M;igxX;est*nz=W16zMfJ0#+s{>Eo>bxmCi)m*43hU1 z;FL43I}nWszjSS%*F1UYt^)4?D6&pDEt1(atK(DKY1pAkNMG`a>_ec;KiT z^xMBBZ9i=;!_hNGlYp^uR0FW^lcBrs_c3ZvhcctW4*T^-DD^OU{{hK8yHahyGyCK& zL0>f0XW|wvi4f`bNTfO+P*Ao^L@8~ezagtl%l z{(2uo71sT3rKTQ-L#Y5Rsy#x)Eo+HQranZmk;r_Hf7WWkRq&QmP{?}do0X=;3U_UYspffJl7v*Y&GnW;M7$C-5ZlL*MU|q*6`Lvx$g^ z6>MRgOZ>~=OyR3>WL0pgh2_ znG)RNd_;ufNwgQ9L6U@`!5=xjzpK_UfYftHOJ)|hrycrpgn-sCKdQ{BY&OEV3`roT|=4I#PT@q`6Lx=Lem2M&k4ghOSjXPH5<%cDd>`!rE} z5;hyRQ|6o>*}@SFEzb7b%5iY}9vOMRGpIQqt%%m)iSpQ@iSAU+A{CmB^&-04fQlV9 z14~oE=?j{b{xE*X^1H)eezKTE27;-=UfNvQZ0kZ+m76{6xqAyTrEB&Oe`Mx{4N;}5 zXp%ojp}JYx6PE}Z`IBO3qWsZEfVPa4EEz0vnsFNkQ!kG8tcec&)k$+s&XmPErROoNxeTh9fATBk)w1g|9*~&S!%r0u6+FTn}dK-qa7cfK~tkJlV zMi{BX!>lQsZhSQUWAf(M6+McPrv>)j<*T&hC!*?qq{@ABJWX z@!~2Y1rhy*Z|x`DZUBuyayz}Kv5Pzrh}1wiHT{9|fh`Wl%ao=lRSwEFl*wy6BZ%vo zrt9Ocbicd1q$a{F6`4#ZQ6vJa@`}IGz+xUr*=6TF^GR?`u{1to&gqJpwf$LN0?G&! zsLNiG+}M+c{*j-Q4I zO!=lj&~{29Os}hgEv`iJ1tU)dx}=ob>DHSHKX|FVu2Y#pO|SsigHRgg4?!FX2>b3W z`m}xI<#_02adGka0TuAIg89kS?>*lKyI)T)Pa)|12XfH;k9}#=dzH6TiciCNO->e9m>!W)l&4B zd74@>_LL9OuJ&v5e0)l7ME@xW)9K@*LUd1RY}Vs_${3YC%+LfSR^H+I=(7Szh2nKB z_8bMoty|M+k9A|hGURVePvMf0XY9NYOiC@h^MLs-X@(8PV4zI7A155!RnZrBE9R1> zuI4E`=JTxyJ#d`!(9_s?T2jxEM*E`){wGI`DBFIz%ouW`Y0cKDfXAGN{};aMpLRvZ zu`PZ-3(+Tsh?UKAr)TQQ;2Jz(kv8{R#!c9Tyeev55@5@Ng*c4-ZQ6vC?o#5>6{;?gVfAIr-+^g>3b$}13U^~?gce6s6k-4ulnzWlFpq}*)2 zd0!wP{2>3U+zYiPaNr+-6O`J;M2Cb`H5hjDXw(1oKK!?dN#Y~ygl{H2|9$( zVg7`gf9*O%Db^Bm6_d808Q!r%K;IUSa(r^hW`w)~)m<)kJ(>{IbCs-LkKJ5Qk~Ujv z|5`OBU>lb7(1IAMvx%~sj+&>%6+_-Pj&OOMzMrkXW}gMmCPOw5zddR}{r9blK&1(w z^6?`m=qMI=B*p~LklFLvlX{LflRXecS#lV$LVwi$+9F8zyE29LgL> zW6R-6z&3x-zL({$nMnbhu|plRO8S_EavN?EKrr+c&Tt;Mk)NC0e|cvyXk%VKb5VIc z;|DN^5)t^}tr&-2q)SbwrF>=k$moYK;yA{Q1!I940KmPvg_Ogb81w$_)i3FgFWG+MS?k=BpkVGk-bRhBF;xJ}wnGN{)?gbry^3=P1@$k^#z9*@tmmB+TZ|L@3#3Z+x z8hJE({GEeEWj#+MnUSN^~c!=G+yW^j=cfN_0!}%(J-f1`G}w^}xi!T8BJDOCri{mGBU? zsKXxeN*=L#<-p_aj6cHtYWMJ+;F`HLeW5cpmeVAhFfy+Y=0rIqqyJ-NRIu-aE*Mvr zVnC-RDR`d1nnQu|^S79I>%9=bPNx1JLOJnB**Y`2WCq zctq<)Cq2^Z%=$*&;QxX30;642;y+=mlMLec6{KA208FQ~_S&tiFQW zp2{C3nyrmgkh+HRmG+$_y19m~0z~b`Mo+m6)Qq82p5)Z6ePn&B=!*twk7Rz%zzm-R z>Qj!PE3XMBY)N-xO(=VpO6=Cky5kpl}fQztM7QzvG#a}5$>2$f5w|}b8=3E)cNQw<%e1xAEwaRHu zhHCGB4Uzs6x3A=7uUBC0({&iNH{!7JgQHVa+ zKfQItwD}sd;587x?M_hzpR|TKtTH^4{`G7*87o_wJrFlmrEjk=jvA z6xBPKYjFB9{0Sj0rBL-z9BuBY_3c||UjVgv2kqw2m<@4#>zfx&8Uhq8u+)q68y+P~ zLT;>P#tv|UD62Nvl`H+UVUXPoFG3>Wt-!sX*=4{XxV|GSC+alg10pP~VaA>^}sRr1I4~ zffa2?H+84k=_w8oc8CQ4Ak-bhjCJIsbX{NQ1Xsi*Ad{!x=^8D6kYup?i~Kr;o`d=$ z*xal=(NL$A?w8d;U8P=`Q;4mh?g@>aqpU}kg5rnx7TExzfX4E=ozb0kFcyc?>p6P# z5=t~3MDR*d{BLI~7ZZG&APgBa4B&r^(9lJO!tI|27=ng?Py&aN;erj&h`@1lu;5r` zbfCU2rX-gC5HweRgOr*b{VC@H1|$g#7W$i2v=&YLcVT-m*{}@~?d89N8z?fB22Xcw zQ+tI54})t>I=}Br&)prpXL6=Lm3=JwG@q|d4E|1LdL51PT=Lvr5P!bi;Qc_gL7pNK zNIwRm)Z9J&(94MN802VI;gGw)Z2~5jEw_DdCzI>Z7mhN&C~ByiKHSh5h(R59 znZwSywxLnqSx6%B8^61Ew-qQxIJ>JpqK#9e1qbe~hxqUgiuWvRf>#tGS*)i%4l zJUu^EJTW2pV1^z+Wl{;MGDs`aBzSE#Y1d~ZN9MRa^meG>S%H6Z z_K^Ou^75p~sd0n})tc0uAO5~B+&LMO=7XT3AvQ2r6q5(ET!LEV1xouVCcUm0=Q@QM z%OS<5;FRhsgRwpa8ncwkWvkIemjAiXY@kE$$qLo$aO0ZXe!yaoOw?k%`dFoVo8mV$ zy7b8WSHMyWy?2D1J}zPeh5$MS&WWiWelH{KY#W$os)GU z9jhV;AR5J}*N5(H!SEC`)R}%p>_HdwIDbd z#xE(o3v7qF0|n}9pDx%Ig)Q7)T`0?bD)$~rCu zk2z7YG=iHqe119a zc3S*NEeNXTo91W~I+34oU2~8M)@B8yPE@krO0xWwh$z*jv^o-u| z^q->)=1hy-e#t9~(mtij`tjUcrs$u%Zfh&QugS2-?VG@89thaEDA~avqrz-Ix^zrr z9{u2T2w{oHASaEeEWclmGL{SIm#SR~F)xS54!Lu~_rODV9^mxLHHR@w{0&f(yjYp9 zV~Ci@MXp{Q89{Df269V%=B+JZkE;OgbcZ8e4WP{%E<_PvMW;!j`g+7(A2P{)h0!=; zs}$M97`^kY&ow`ew$b6MdnI4aCTPEG#Iuf;?b{^d?#RjPNN`0&i3oLmH&L+-cxRyr zFtbisl`#Z)yn6*m6pY;cwEj7s12tpjj60*rtwo?cn7gmY4Sa*z$L#evTi#pVGes4{ zPjRAudV-m^@`Z`Oky`9goDQ5+zcR#9g7Qn{Gsr>J<6eCs?2`FOaE=S#)xV?Vgg`9R z*Qmw3S|9RZDfJm%z@Duua!7;MjZkys_~9FB$MQs%v@7-f8@*UqA|1eB@YqrJZ>#>_ zJ^Y6V6Xyz37>OJv(^HC~)bA2}{(}U4ssz%r;SEn7nWM@^rIQrgTshs(?YBNTEODF0 zqc6I6Lf7@E@#d(IpZ{&uT(arc+J95c6#hStY=DLd{?3aIPUoNkuFc|kL#*jQr#DC? z;gy7qj4SY-n^8{6wHdXVJwtQ_bU-w>XxRUuPo`ti>k3Hi3cugt`C(EwuQ&d2lyfO` ze!0fi{eHhU1yN+o%J22|{prPvPOs1S?1eUuGUkR zmzMlCXZtW)ABWasAn53}?BqtPMJ*g>L1i6{$HmoEb@h(kILnMp(2!H!rG?MNH`1V0 zotb`;u#Yz0BZrT1ffVTCV!?{L^z8q11_21ptR0ITbOcaZ!mlWhC_AZb>?2IDV|b_y z9lVt3)0d@W=lNp1ArE;h_;DDQX^_;WtsSIO<;Ly&(#O~Xw$R0~W|xdQk*Y(b2=vLV zt8HX8=;#;$=y}!;Qku2HJbGEzF`2_~&i$&ogHUe5vhx}FLR}K_Mp)J{n*Va2<|pk$ z4tI(7v3A%Z7Z0|ZWw#7%$U#*=XTaPjlh^N(t63xFt_%*WoJ^oq!U0j+Bx`<>q!J&0sWy4&{@#*BOr-s ztZ68f;l0UT3wf@RRC}_ufMr6rQ69Woa@1sZ50Ww|{yfp8!7rMOh_POTE;|zamq+4OObJ-VeTK|D|h?mfR$^lA{E7pk8DRDz*j&r<&fR>GaG*d zYaJ*q5#n251XIpR6F1o-w>LZ)Cb6Ma^6tCfcOItn1o;$#H?^jqOd(PA)B3HaTlJK zw!~?nh-v-_WBi5*B=IuTZOX2sa{1I!#%VMd5eGe1VcL6 zQ!aDft}>TjlwzEJ9Kr6MWh1MoNNWr$5_?z9BJ=>^_M59+CGj=}Ln)NrZ;Fja%!0oU zAg07?Nw&^fIc9udtYSulVBb-USUpElN!VfpJc>kPV`>B3S$7`SO$B21eH8mymldT} zxRNhSd-uFb&1$^B)%$-O(C$#Ug&+KvM;E9xA=CE*?PIa5wDF_ibV2lMo(Zygl8QK5 zPgH1R(6)1XT9GZ6^ol$p>4UH@5-KV66NF$AH-qOb>-b~+*7)DYsUe&Is0yTx=pn8N zs&2Z4fZ1Wk=dz>AXIfd%>ad=rb-Womi{nVVTfd26+mCx`6ukuQ?gjAROtw&Tuo&w$|&=rEzNzwpuy0 zsqq)r5`=Mst4=HCtEV^^8%+Dv2x+_}4v7qEXSjKf%dOhGh~(FDkBW<~+z&*#4T>r@ z>i7SKwW?LDit0b0Q2`eIho4@kQNjE|U%{^VWI%USUDr7YtPf7k1e5W?yaF7DNF6Cs zlTv9JX6csnX%PV|=IOwjx|F55A2=Q!S@FihpC!N_ud6#f%*^&%ula!3e&(G-8;RKq zkICmrkB7|n%lk1P1pV(3=JnM!b>MD;*OgQOq2&rf+hiuDnY2)3YiwOZiW#AB3s&v6 z3^2ZSNS)z0Vmkqkd{q15Mk|7+n0OImvs#=-(#P6bP>Wl+`WT{iU+TbkQ{iqaSP|4aH3OAfinI2%1hWxH{qd@;gy&zJ=|IluB z@s5xreENf!S2g_G{qNS)ZJ|kl!8)b_Kgwc=`)_a{vIbF1FW5& zCw0Vr(EXsP^CmKX0)6wp_}TG8>V&<}fRjZQ+k8~^#7Zvnt>#$1P~7DAU=1JE3uydB zU3fdgXnR1D)yCMEZRFZhovm-%dA3>9 zXiJS2h-RaW;itowzZwn=j6QG`;%ZE?80^~DyA5{UI&Zd^FF0f!#@ak@U>39YPP;>^ za*p|=y{$&A)P|%C5t@}Gw6KgQ>SA;6VE@MnmN=NpzWlrA$o%g*ia|)}AM08Bf##=+ zAt$0DmFpYe69{h_T1E{S5~AcoTed25*Rd&=Npa@hU@Q6kAFCCbW}||JizRp}DKm{K zgL`1k_qv?OSn+ys{e&>W!H4Xws_sUq?iDMeSy65wE^}@nEaT6xCPT_vqaKs&Zy^(% z#ROxXka3W3+?yZvz1Ok>vzz*~@yuPmos5#Ltl^hzpjNo|0pIs#0kCgk5>SjIMXMM* z_No#``}|WTzAd-@mVg*5q7S_wG%MhgZ1FLeliVr3on0Y|05`IcVOZOGmqoR9WFe_? zHx6es$zbXXWLh}V^CoBXIC5+VvRDr^;ax+`U5?0QxaOwq6k zKmG04{Dw6b6YTS%V?#S$_-F9&XjSaUS$?>Gx@QqL%J9z@10;5J^`AA7i>w;cm|Cyh z(ABc_r=wpMq4B7EX_2S*PZoS&lo|T288ihZgIw!@Q3n}1(;{#imM zWcSRIbDvSLxPHYqwh_Y$Kb(*MM%V-}D>&@m2!r}RCQC1@095?nxg=TWKpidoz$NNp zYS2cN5jhG+myw(tGaeqhU#5a%GgN(j#>z?;;F;tDF?_E>ZtsWetw#`l0jC=XfR6c5AWezg%(`Hl_%N~q!n)2}KZrld z1tfA0N0Flfn_%@0=HctOJkVpQGju z)3MgIa!e_3%)?K^X52R+TU2#W+L4OvYf!GnXV^z4DzRqSuRe9q7|Tkm&r&~(ep&U0 z{3A6-k(~=b^e!}g@}s$|WQVh_L0%vE(cvCR z*l%5Spfk}eC%5jrtGO=7+LJnUEKs`{m#D2Q0!NQ`}z<3<#?KY-1G9+`Vi#WyxpgT7aPA9I)sEPt! zHlS?W%!srhu@F`j@!O)};UXehQPO>(xh7!fZwwu@ehq4!?3M7Puw#6TS3;NL4;uEc zg>_qh3wk;?TEqR&;@X3^%HlSQ9HG)OKpy+lNQ*H!@ygaEm6qmm_DqnAY}K$~v_*w! zkbGz`woRGu$w`TxcNC?tsPS!rGo_%07SPtipmDlCh7zN}?1zpkA@)V%)aPPO*5?XK z^w?Uay8#`6LFhRBL>7PYl((d#H`@)0-6!UmOrnt{2@MS*2le0PPs`O_`@dYZVNjv> z#WzLArlP$xda2zVl3)(=<g#7FFzL2Qk4-pX}#)Q27}U z6Dhv`wAX&bcjVgze7nD`hDf>M>GMD(s?fYlvv;sZ*y2o;FE^dc(3n1JCyHDD!*ma+ ztE2}+RJ>A}wnz=5D5tBaWWESJbP4mx{l)dFP&)KVp?P4XNgK5|>(x7YdUl(&d`pe? z)5|&`rPo8x5dP%lt2mqps9*g0w09-cX5<^x?FT#{coW&gI>PoJRJ93o8;#v>q8eRG ze0&v2sfJza!f|@tSD)Fb#pyHvQb0*YGTQ7!RxhWc$L%^5$^u={ zI7NB8+jN!zUF#w@%+cMrb0|da90XKlMBU}T@4a&!zK5Z@Xa1>(Z0`z;GpJJhulg2wd%~ z%L*zTSO-C|h-Ks_z3?e01OqHtZY{&iX_?N!E`Iigyt6)5p%;jKJ+S&QOnU~p!x^;1 z-%c_mMhlp8$tfL05HhXAZxY{sl!AiqI_1gu5tiHIG(@o{oVw+Xg)&vy7QA~*dG4oujd;fvgvLWIb8Ov_vuMII(XxEv$79@GVR zAK8S)s_s8lEL`nTvWlfsxEz@xNI5j<7(QQ?Fxn&U`#Dd_>HDy0y)!LbGT(SkJ;1&% z#9-@!kN*rs9J`B_=uqW9zDDb0!Ke(7;R4fFF_iCG9 zRuo?f?41}CO-8&6_Y@tQqHIBs<2D%Qvc9w1Fn~KEnppq1>Qh-iCFB48@q+S0$O3os z{G4H6%j#@>8RMr6{!BDVr6yaZ-DE?HCGSu2vjXUW!Ww7~7z(!a7yz!ZUF$QjqCCdV zX$-qlhmmmPMz88&oC8on%`On0a6fr|+7NmjGe7xuo3cT9XJ*Ai-n;F&E1SQC57KSVmWrdH8Z}}+H$CgAp6uHY4U7iq$3r* z$r5kf)eJ%%**?QJW5{l2VAKW3fh>PfbrwOdu0l11#VESBjxKnareT+TB!O!)D7SVu zh^uo~r)QO%tAbitru3T@{06-mkSp?#iIo6DQ%hDXgHM-gi7-wZ zwpGi(v_W>(XoiN&^vI_2@BD0qNssU>lkj6p-K=we6-9F6yC(+k5&xM?$8v1V;qQ6K z!c#o3X%X+8weteF5+!j6lIOxKuFVb~%DEhS5#5i~;jzR+NO3irc384Ttx z<(cSjpWE3=UO|FZcL^gUv@%IytAE+i=fOB?p|C(JdX?~s(s2OOyH z;CC(S^k2pKhUh6G6H;lcxy}%u4r0MSbMIsff5ST=lm9REc*Q?CI{cSX%%eN}Du_Cc$-U1VG>VQ>Tc;0X@$BBwY6MP_zUmcITyQXUJ&040VH#kmGQ@gc$= z*WhGC@R%Pv2WMD>+34tDB5Qs#8MdxiAB0PG>mA+Ma9s|Sa?R`lH;6>1jLL(M`0ViK zQqrxC)l?czAY*j%+gR4iDO!AD)ml4Vkf&w0K=MpotEv&QOOu&@g=pIr~b;eo^(8BT(?FunH$AF3j*ZiHB%C({8I)tTa3VRkn) z=9uW|9))}J#GUqRh<&w4yL15QpK%2bM)-YYq2tcqZmh#_)@tYAn7$!Z+6(FhAPs2p z^%a8A6xo5O-hgk)a=r7#iC9Sn=%vgrQsl}WCq)N+4q*=_VT+ac3I+*3lJQ&#epf@`!?G!7S(!aZGWqpGk8(*`ig}*V&iyhzH;xtxA$y_N z>tFo2YU_{OyO&-VeL&NZz`GG|UMNC?ekTaV#~9b%=yg!Ajug>jPa8u5Ln*m_z1#k& z!sFx7Y?AJVFhC9tQDO&L=Bpa*irKIJzUbr2g7m=&Ui;b_(mq1zZ<=m_4mt>B4ZDbX z+$CbV`11;I*ywC5F0ZsLUbjqC@zQj3Y_@wf%qE1;F6PtHVAo!dBPs+@NLuNR1+LPH8mI^6AA9-ln(yD1W@_tp1%vmN@3VWoRR)}c*_Q^C-% zj$ea)YC2{IKN)~Bx8xKL(#3rqF1(xvI}0!c=V??7hFv{ym{=pQl8`hn$bxi}?vXpY ztw&{<%0B6t1NH@6d_+=D1fnz9-%yFhT)rh<_TbQvmT~5x&NbGw{s3L@O#OT`=f4<8 zy}}-S@7g5nkw7qXXDm!{mK_f}2z_fS9tfklc2D@&GKvQdfNH0;Skdv68nvu4OlTH8 zBb#~Iin))Ptwv?hs}Hz;i!WfA>h*fuWNcM@+wbuxg;Bme%Vpg!O3orGrK=XK=2I%T zeY|eK+3G_DI1Ia6DKo$zjwMN|+gb(os>^H7F|5cHtGLzAQAjp8d&>+j-Fc|&yi;=_ zty1o9s0aazM8%TD*yXE<8Sy3;xupv~OpE*B@A~c z3YwmXFCuRZ*;0bUWUYVVvs7lu6UF%WZh`XpD<9)SOfi51<3sLIGI>SGd~`wGqW;|w z{7AD?ounMxmY`O_gRB1i6Ul6ToZyw~O`m*F$SU@mLt+0nM=b9Q_d+n#`Z4w+|KcqF zVJ=ukl^iHbb`EZ#4o+5WiO$V;K;%I7FlO_E##P88!8pn6sfWL3I=s5X?os5wxWh^9W5c+6f);gal&rcpAAxt>KI zt#>36b%#`+E4{ zxAQ;Z8j(J}eo|4g>`+a~OOVPleyYL7JqhW*pAoj>mo1urPwsr0A#ssSaZ zr=HX8%}@bGR9)^_T`Z7c(ABBdBrkcVcsU;B%GmSVtX1DE!|8L%^}-QnnaNcv?2ms| zA1}JvM6SF4!wEZud%_k75D>H&|K*Y&UN~TU4IUs0KsvY|y6}%E zN>L%XAjjOs+WGAJ=wAmEmK)JGoI&Uq$`1%&(sh$n^lmT{o9pDd>t(CQ;o9Sr;gFtdZ>-qZg7jbc*P~uh_&U$wOO;{P3h!F3|a}dH-WoGGsXGBvB2c7p<>_ zCnJAYP}_#gD0t)$$Is_In%83bCJkJDij^-Lbnh)JKexs8f3E|dDy=BUEES;}7{*+o zxV&iNODhNv#y<$}=-mY})V@*#j#N6^A*3qP8zE{!-_YomKdfYc%7HC5S^WslJbIYa zyh$BuB#+=sczSh4UhP(?WG6x{#9ux1I7BF9H89bivmbZkG!DCq!^iv{HX2isn%ei7d!X4M&l&Ix#C z`sIC(K6h|K_5T2hKy|;&o#A%*E-z=$Kj6W8U@Xh09 zJ)>xHkZoQg!{E*R zBSy?JCKOX7n%2$6-dzz8T10-8&ZG00yi<2%x`4@L8oj$ZXP|WgZ7E%-(h>@kqIJqt z!{ou4J@Anf#HcEwPSv)TmeUHAmeK2Am3|mkp+~W z?)6eVg;c7e2H48xBw;iPnvFX(a}Y+nn8^W#;6K4qA&N3hg$HYE=n|Dy)1^$6Gxud` z0!yZ0d*p;(03ud^y^hvb&{_%?^-|c8>2fAn_!5YCX`?Ov6`*x_BAqZdP7`m!E4|c0 zttvHBo2}NJT1HQse_rYk1e$5HO|)A}>0a7uufbmK{SDV?ndJ&?hXXVWWefy|nb5Ne zb%C#pK9tl%P-U{v%DOV=mf@tF5qHo|q4_JBR-PLXOPn6TUrQ#9e83Sw*iIvU^kn1C|EKWK_mS%Ah;Pks|+@@ zOxM8{T4o@Zf(mvI55b=nM5d)6kW5m_Lx%`#@%0J~At8s1=`iJf)}P0 zCE6_pa-@`H5WIHbP7t4>QJLNX9vAkd8^)UWbAP6$@LZXWxAVbOYkgCYh!Pi4lzTy z1%B>Pf9ZYnAH}3-*{;*nGg_ZWZvV-oB*dF(WQ0^x71UW+hk8Cp_g2sc=tD&+CHpen zk8FnaqFX;|TH%e*9ifj@(1+=xs1s>xxwM`XyvIu)rw0VwCz$GAQ(yL@$J9)4{viA{ zr49G#c+Z$S3LaiI8H1fq(Zeb|M4x7oLLr4te=>z$^SG9N2w2ERGL4D=I9HuNqS6>W z3ax}f`>ts|P^Zvm@RHI@6xXbm9v9ry(J7RMY_2a`aPR71XW4B1S$a}He-4?~NS8>v z_Z&;WYl>KnqBJ7-hpw*<(4p-DB;Erm4B z)LPDS{#kCnL(dCtzl#E4aVwa$czprcYdPwIDCcme_C!|1U))PSuuI$zk*W(Ap#uWp z$Ho58;-{sE*^$YJfcvRRKNF?1B4(sbe>9@m?fS5nel8lSJLrFy&YLbuYc7$Di~9RZ z6dwe@uT*+bv?gxRf2UDHLuJLEg$yM9E&WcA_+R7?)37(a^as(%yhwk9vCtzREf&@5 zr9ab0gl1l{v<@{6C3O?M!(VOl{tcWYFhcWyW`&qG3pOe@HR0(&Pf@bG-DEH=)i05VspTrF}nH!FPJEICoc z3S)q%V+;_aFop)lP;Po#SxD2ff0q4{T+T}wqs1MJ(W0uHR%OPB;l?2?$s`KN)Cwvp zIWi|N=M^e1V@wxwhcbE=o-@%8PA~qV;Cea8wH_!IqWp_Sb&NfdNz}9rhH)r2Br^t)MeQA%TY4kA4{q7j(jMtJ*xS>w>)_TMT^(L-L2JjGxOJj&ZV-)g zgVi{5yFFtT>@y74Jf{=@f2D8cEh09yg6#A&72XCLgRGuD?B$3Jh}mU9;ruBh4ewxD z7AzgZW*I&BN(>mhiz!$}F_R7^NNhzIC6VZOw|xa*NB`8Izi`@_wbT62%UAIpm3#SW zG=pW%ix>j~;()!P=|~#*s~lrgJ~te{KY{96l8>ex)n>uuGMb%`c#snwpktC*Tn4EfgILng z;xZ@8J7YPjGNU7ziy8fhkvX(Gk4luczopwj%<+s`80do~2D`Ae3vs%C2n@KP&f1Tw*W`gvc{0^aDj8k(= zqot>B`xmPR?nWM z%F_Tp@8f$^zMC-xxq5eR4y{vI3_c*+I&2E>TUd_fzE&@Pkna^rKrwaahT_Qipb*^G zDr(jJ{9!?Jf23IL(A^If6~w*;?}1Z(f$4(T18(_hnK5l-&KgXmo>nd-3e?K(mCc5>6~3tQ)BGjd zE37LV)Q^&pwQ#S)&+u1NlKHDJYC|%1Na3%+nyEu^jPYK6&d&RoKPnRF@-yfpj11b3 zZ`tb@e>%>eq_``WHjyW%v=QIIjMQf2l5wjwh-GwmTwut$YYW7S)B^oRCLq)v5C#Y+ zjB#TgxNhmo8p)ig+m?O7x>V%vtNgs^JCwARHbhpo8tiRe{t^FJ)aIYKNc@@Cy2(NO z%_oXe2h_a_mDEVtmb7j{8H0tCIim0{RsMyjf5xg%)u5J6>nIZ!1*crg#_ZLsWwQbZ zRQGHCjX?b^(~`4-%8a=}HZ#K!NGa0IY^23L=>CEKsPgamPfQ#BAATw`rjrHMokCmE z$m&;$>$>FdWOl&m)`l3}takOU{5O^V!Y`N18@mT#Hk8i4BUNORx;`YLf13b*mCvaB ze-8<>i!%lf^-2;U9Xu^Lie6DxK3T%#A{V~ncqJJ#j^vgU*fE*tQzR9Izl^818it9a zpbd#{E7lZ_VRf}Ec~xnS$S$5Fa)vkpeqLJ|acM0jlw*p5vTxcoxin9j54VyQ6lcuB zR|hLNBB)YOqvR9U!GXe8h=^BOD85uIf0M*0GA*2n7=9$tiDqrej<}AS5rg&?cv&o6 zpi1XUOT5%!|GH4fvaj?*$t>7b&`TGoQk8_MWDe?v2r}Dt(=V&+RUEinS|JRG@uWH{ zKKj7Hj+!Oxo*$h3JSiyE3UmxBOJT8wLQ9;~a_QJ0+H$+Y7xq%5dSM}87BbO_f7fWu z3%N;ZkQ#*^Fy;8l+=R>08U>@C^*y3XHwO(!x~UB1eKROeJu9R4i#yRqn*t8KOlnf8 zLRwpLV^InvOY4y&6Y0aoAta#nWk$@|ua--OGHHW!xhjPv3`wq-h()h-g$Rf$X%kb& zWa>o&%jl;Juf;h@ zYL`0DJV={S3<~|QxVKlNt>PnLnaimuw=2>%bOF+Krp5q#4}8Z1N3?_qAS?S%)arm{ zWw3y0Sj8X=>X^3NqTq|)7_lk>iEJQee_T8ouuaPZ`ZGo<5HsR>A7m?9YOlD%ISXt11#1V2EoPx>=owC%+R@3XD;+F; z=(T8c8;0RJTsm&wf4E6n@v_B&nSvZcHW#06QG>Wc4M@NZjXq_R6tyGE%uPgmQ2BjdC;x_^K7e<&Sro+Qon7}Z6i zj>=e%vr_NLQ=+o&BpJok>#>>@t9yzoIjkHJE78hf09L;KB)w^jj*Zi;(XexzZjXje z(A)F$&QZE+l#Y+n`=Vi2$nPAb_di1SF@@cJ_apQ%rsI6t?-IX1$@BzBhvht-IL`O` z<;uJelNOBA7;pvZfB49mXR!WQo}M^PexS)v&gcE|!8|>kr>}-xBWE7K{@1Mi2C+ZC zIZxkg5`fhJ{k9ES?Q&jg{rY^Kz9*250O|V{Qa~U%CqezPdlGEt!}O!OX%T>bVgb8H zsA8Oc79FMkJ{1BQAj1lz_A7b%#c`?Pf$=T5(=0B&}8~ zQNxNwRw*HCGxKs7Abuqb0wZTm!A@E!voDKNVzcs90B98$d1mpu$?pVH>>OjYdz|h7 z=c8OvnalIse-rG>^TJ7MQ)h{-eY_~oi=$1-J+wg3^YM~AU$kfB%yWKA6u<1KR)jRN z^V))`t?f_yozajua%E*q=!xg(Q{=;$gM(CgBtI%caf_ z(Rsq{@aD+#S}=pC86ka~*GGN4VU#aFW&hkLem=}?e|vn~F~*%Z>oir1(1J)V;P~B; zpF%#~KE~a%?9Q`RT%aOCGZYoCbw1uX$~|Kog$!cB?q~! zdDf0Qo*L&^G+IB-%c7$kALW4)e5h-jQveUupWrMkF~&y@j`9uT{Dx>3B5#~;1W8xj zD8D&0f6BK2KH7bPZxi%s6BzdKTl4((Xp?-8aO}B$ceSl^VLKn+QQT7@lRQFm{BB3J zY*{801(`8^XP)m0D?Wbj7{5On_W1Gh19`qL&mS4*kHL?eO-i0WS*?JlPt9MR=TBSi zCFAu3oJ*WezdvZZSy&eKQ%>+G2tl=09#H+Rf3Rl+Zi1CZ#ESIpy09nYSNtA9DI^G; z;Ll9Z5|JT@L8pS6=LDaMhSef9kKYv$QmRE_E9?E9x+#R7EG1O<>7Jl@f=`e0)6s|@ zlKP$XQ0bTR{H&FQqg^6St}cX+CEqrS#MdXVu^sKs^EdCN)gfU|nuEu;t&|cN=jWpW zf4BaikH05EkAG0a`{60><}kwSr&av3l#hRYOk3;XuMV} zFV=&DU*-9CmLvT++WizQMWlnqEBL#Bo<24v@d&Bg{c`sRFGPy!hJDXGw0(p%#G{63F z=LblwcdY3eAs2VmpQhd8QdM++1Q6AEX;GK+F4-R9ZGBt;ETo9?DCr zv0D+1IDFD2JwEADtgpk0jFnYAjJJ(@@>0vEgx;*>?T$KtwXGVHwg{EYV4k~Ae-(8M zq(-WYZ0p$a#PooH1&29;1t$_t9$S2(58GNS8Rj zOP4xdqRX7GP!mS(wXWr~Th0}t^{$I4?CPWqt{rr_D@Dz&!?e*gOjo$xOPgE|Qj5Ea zTHR}@&3zZOyYHqB_w%$_-a=dCx6@YnYt$*fK-=U$L01^rp)ZLX{|8V@2MEVi07E4e z007D}b)$q0 z%WLwQzAecs$;-NdASxmv2qLK4kS~#nq5^hlp^Wh%1BQZAKtXf}4pBfw6cmwp&P}qW zT{hR>FFo(vkMniU{hxF9eEi_U02Ygt0^2UTZ1s{$s=JNge?~JFs`gh0d#dZJgLbsf ziWrV%$9z#cWYT!tjF?8kq{&_*;S2Vf!HtPzG*RvEF(L`GzPc~$iyD1Ci)C~-H!lh< zZlbmECE5Kw$w-6-61|3R5wT`0Y{g77ZpFehy2*?uNEeMSX*jN7i7#Yss=ic(5YRg8 zWISlDv?8X!e+)YwZVbnbP{eHPj~jh`X1uXAmT-(nWZohL1p<>d7@Lg7h!G1np548{ z3_1!t0yE`k(y=0qK|2;q#^YwpX>6fwMt8(ipwh-oMr2;Z4jPg3t-iFjiEVP5Wj8W^ zl0Y%930Vneg%uYl%W`q6JIRq+8;=~^6f>R1wX0ice^UuBBdtAFI2o4_6~UJ^kg?F#!|#Yr2j}n9N@@1>7~fuMD#_D5w%BpwLtNrqnEG8-Ir6ou2E2f_VZH z!ltvzf8c{mpVs8;#;m70j=`}S=A%Yn>Zr&LhjZ?R7!(;@XXOpGy-LRkte_4{1m@;F z!7*B7==^LD=cSdPjHE!>@hvj2=j%8b%Xsz_e=^rfuoNB3(?h2TOd@BOcPH#f(lJ*V zPOpv?Y41)Ks62d1DEI_jNFx|D6O@q)DJR1``t~a28pcUU-Hbr2w4G3E7TSV_>3VOTsau3RY9(%sAca@`GltA}bxT)ik1H!5XYB ze?kY&r90kZSdnDhJd5IBgehf8^CirA2(Y&E2`TajRIr|su8#*Igb3yNQi%@vQ|Qug z0WPFt3=sf32k5POw*CcHVT&e?km<5rfT#*GFEMn@M&;M?CEXnO;5$&MkH% zLTOA|6AF?7MP{_m+0sTkD8^Y27Oe4f``K{+ti76n(*d037~VYDfUe=5dU z+nO0CJFdc)it$BUO%5G8uizR=3aYQ|=4MC7SFo%Y*Wx+?$Cw=WD(3RQ4HU_UDH>}?$Qz?#n3%XpD7%RuqWbW)B70MGJctpNfASD{o7H++ zvZu$4o1xXFA?ww{bWYj1)>vOM11H((N3yjpV{pzA1&`%9C|O8;qTz8oAyBw>%}U=A z6;BG(jxNlRaoAGyw1!8qhjHlOwzNr^`JZaog`d$CAt|9Y>il#($06H=pOe~P#7@x2 zFSr@lgzs*2f8e^n2IOcmXU-YNne%Gnnv>GNc2HZc_ZisGIydd#(P!m?R4 zivLigs3CR?D@I^FJ=eFEUL)RNUX(Or!8C~c7a#Nf0~EDxE0#HP zRnWs=+UPC{6t^VVf1XabIi-5(-Jyy?!mSgUnpB~XV_Ytcm>sjoUU_Xrk!*W}#(=%< zFu5&sO%#X;B$IlJxWmOE*VT;jlXNjjOy-p(bjuEzRzw+xz_6T^Tpp-LYt==$sL;d| zF_o$bnU-_S=o062v$^+A7hX}xo2HK`WF$0dI1W2MQxmgfe?L7xF+ZjX`ttP1S%IZ_ z(rDdbbAGH~(p)X(l58=L6)YK(CzRiGtrc-B0eI$hl^z=3O{Ygm)&fzhi5gKyWrR8) z>bsJCjxKxz05sY_@G}Yk3Dc=EH=Dtv!#Ajku0+&I@M|%_fIyc`EM&DL*fHD9e%b4a z#j?E+)M{6be`;Tyj5$`+JbiP}?32xoXwpP8m%f=<^e{tJxy7oghoq4Pa<`(&N{~HO z^qjLoRa7tJT!Sk7SsgN9G|@;e$Q&I@$3Q{O#Il^uu=VVmiBk!-Mt8Jk<70+$)=(E; z&_XY3YUUYE+mq35Groo+M7UH)O&>)Tg_BG8Jq8ffe>0TcVv^EJOj3He0dUd!GEAWt z_X^@_X}^c)tlGf(_1=OVsHoe4Y4tl$>Dz%B-ohQ2HH10$f&WTSjk)Q4h1*FdNq1jY zJA(Ovw%S2VOJTtX>H@W0L#UVR!W51#ZKi)IoH&G~gQ!g5)U9Z$OQB^e8fZ@i{VD?~ ztQIWX*I2w);@?C{sP+OFC4_IfZtP} zLT~3FqJG8Qta_S@d{Vkvu5N`^@ADRYnG%9GerFINTpiWH}CfKwRa=su8@xYMtWNUdJgtNAiV;Y+Vv zf0(n9&Vd3lf?a|2yyMZp2p%U3hp@Z!sUbWwglALO>sM2F-mChR0km_#io86qt3HtR zNa-qlkvtm4D=F+N{ry3=vh!+J>Fd(tHxEt;zf#bwmKV7$3^W(rBK+m*wvRirDL}s& zQrJB?i6Atd4)_cBfJ^^8jKAEEf28nXf9Xdl4z_0iFG!aQePzN$eu?%GQ4sL##QTAO zx3DYVE)$-Pf-<3Y6gGQOqPX1C)iER{rbH=aO-fALiUh}@oulAayfieU^rNVS(J)mTl^2~@tAe^!b)l2(foB|TZJmNY8*#H->Iagn%6(yPU_l3p*i zOM0^ymh>U9SJJ)Wd9fc5FN&8WzhAt?)OC&PM)w4HMnSamq zf#jJo|Dn53@=S?$m$)mKmy~z{%+m=xH=vS$SKv$n;7+))4h8h&FQj*-2UijZ-vAYN z5vYCyO)N(-fvhgVm>{B<=vszJt~HqKx&S4vAWB_fl({a&6!&VByDvb6JBX?7UQBau zgx76LJ#Go~?*9Q$O9u!}1dt)a<&)icU4Pq312GVW|5&xPuGV_G@op77bzQ0`Ma3II z6cj;0@G{*_x6$l@WLq!9K8SDOg$Q2w06vsBTNM!*$jtot=1)l8KVIJeY+_#EvERRF z+`CN~+)~_fcio`v*4!Y8Ql(|4lGuxq7O`$fleEN}9cjIwL&2@>M%LYJOKqvn8>I&WVJ`e@>#4mHnuhzUW>Zd z%6?zt$4SI~lcxhlC4TO|$3j~w-G4Q7M%K!ZiRsf{m&+`_EmNcWDpuKnz~ahZga7dA zl|W%-^~!;R$uf$lI4EIk3?ryIC}TXYW(0;0`IS)TrpP}tglbN4Rm~aBg2TZCuXEfj zpuhoC)~>H#Ftz@S>Dn`9pMU{c7+4fO0Z>Z^2t=Mc0&4*P0OtV!08mQ<1d~V*7L&|- zFMkPm8^?8iLjVN0f)0|RWazNhlxTrCNF5O=L$(|qvP}`96jDcE$(EPEf?NsMWp)>m zXxB>G$Z3wYX%eT2l*V%1)^uAZjamt$qeSWzyLHo~Y15=<+Qx3$rdOKYhok&&0FWRF z%4wrdA7*Ff&CHwk{`bE(eC0czzD`8jMSo7v#dGI|cRk)Zs-;iqW~MdKn$EVyTGLj3 z!pLc^VVUu~mC-S7>p5L>bWDzGPCPxXr%ySBywjSH8!T(g4QQ%tWV0x-GTxc>x`MRw2YvQwFLXi(-2*!pH1fqj&WM*)ss%^jy-O~~=Jod&rs3`p^lQh*xx>$V^%w2Z&j z!JV31wR!8-t%AmCUa;)Y-AU<8!|LS2%021Y5tmW3yZsi6H<#N!hAI1YOn-O#a+>1^ zY7Vzo?Ij0y2kCaYgRP(n3RWNMr&c&bKWjLyBMtUYkTz4BLYwF=K`m0W;2OEkJ}Z|4 z-hg4pPhmj~dVa#4Ok$m&rpk#@lE-jhgrW+yQw*XxjPPMNp)uTkZ2rB2)Iptm9_-aT zw@Z(0YjS%(ZC7XqyKkA{^nV*Rl(6i{Anhz^*#)h&3?SVSPA&|N-F%x}bT_Y02wE{; zM?c*o$Zt4%`65BuLv73GUb;`vqYp@vs~HH{#%O^rt!`;^wx}6PcU04I)wE^0nqjJ% zISH|nPKNGusC&;&prdD0*HW{FnNjt#TH4J`s@rDeCOZPuGcS}&{(tsUA6${O?7Rk> z-W^^Hh+{QwxL7Jkd+C0K`so2dTfRpG`DsAVrtljgQiju@Li;Ew$mLtxrwweRuSZebVg~sWWptaT74S$#u1s7ZBTHa52W{3I8 zm+)pOWYR>19WXa<84{8gUtj=V_*gGP(WQby4xL6c6(%y83!VL#8W`a1&e9}n@)*R^ zIm^+5^aGq99C`xc8L2Ne1WWY>>Fx9mmi@ts)>Sv|Ef~2BXN7kvbe@6II43cH)FLy+ zyI?xkdQd-GT7R<$v9kgDZhDVGKTPlCRF1mA9S_ov&;gF&AH@(u#l-zKg!>k+E-Qjf z-cLWyx_m%Td}$9YvGPN_@+qVd*Q)5cI$TrLpP-Mh>_<6kysd!BC`cEXVf*Q0Y(Ugd zE^PYo5;;FDXeF@IGwN8mf~#|e4$?Ec!zTJEQCEM2VSjC;Wf`Vg*;)ahW;Gxob7z~` zW~NXn)s)F=lj^v3T31JP-BevIkI)8>oH5+-jyAK;GP8!ASKV>V#gDFTsa`xXt|1Uc z3i&PSgl%D=JEwj zW^F5vD1UeDg2OE5$hxnCFVvbUDpIEl_O19mVOmP_8bVz-kCsYEtX_1Ovbj+KS444hDHKJfNHwq&hQ z29#QGU>;3PSjf!&)Yr_T8HS#)YF@1v9`RQjD zr1yF0XiA~y=y{YGCGep{s6iwTA*ge*SZSH9K;{Gc1^NWT@{>XOdHMwf#oVVr5e4%x z1I%+r&CEE*Qu8V$tmu5mm?%|OR}{L++~wCzm$RIp(7a-4uUW|Jw)8G^n5G$)e{tS^ zRevIWx`v3t^JKqe>w9y09=jp{Kg*@dXXrZU#?;Tc<%xwMJewbXg?^RAe+_wMk=A>m z=A@r~0~#Z6hmh`q^b!Z`=jde+%aR2&hxQ>`<7bXmDk+!%e+$*7qh)2_^In4P`ktr> zO8z!|UZGd$clcz~c=h>Hr~z=--z_oAmw!Nq6({r-vRRJz0|mD#FZ{ls+p66(fA$X) z`U?9cH0RlBfikrIP@yl=AE9!T32=5+P-i$<+jN!7%+FG|&!5nrvTOegUa57UpZ*+h zJA>p2ga0MxsK21E^Uo8!3b{#gdjViLwDj?{%qL2b=fc}>G8GrHM z04YZSz|%^HpkOH)4w1W41*h(bOQ8mmEBsPEo@ObLg93$OR0O5mpOMj_muJWzi zcd5+~DdKi<2U`M<%O>D6UC5#6I_&6n&lq+LidLWk)0^OY9*xW4fM}}_(4tNKVhgr% zbaxmv1}d_H<;08!&5{N0g2W)&MMM!{5rt{6{~60ZbqGntDu5ToKv2X*M+0=~M6SR& z<)ddMykRaD#Wt~>_t=3wq<=D6rYsQ@J4;ibrnTWEV_xiHnY-c4F?oiIdnZc;p4g27 z50m%IdkG@6bOz!c03W3^!@e}MkjzV?@Z_6Ck0S09y;xv4TzT4dVFJ}bQ1pW-F|*f4 z{BIQzPD0Kdvk|QP{?*Mzf6Q4J5u5wBBE`9VlR!DpSj`QxGz*C1KwY`uOsHURS@Wb04YUIC8;j5AVHYM92El2AI3|7!eaOO$$wm{yCc6}sue43iB(dyLTG_^#o z(%R@%3dOF{`pXhN4YYwamKKQzu%sUCvS_48cOEU$mW!m!P=9=IitdXRX zsou|$KQ-uyjWqQ}X6V7eYqT$w6p?A#KSdvb6cFIOR4q2LNNghFd6ACRq1M@i@lB~z zGSZZqriY;H1%C=h<@t9;uhDT<@L}{HO(kEVmC@_oXQ(0S**-;H@pAPMql=DME;|u{ zPV`eSkr1cw8-cy+VdH~Tho_^5PQzI5hn1hk=oGB~D*W}B#^ZpzM3Zs;1Bsf0H=O>b*lMV|>Id?7De>`bbw{(os|iidojmii(+J_T#jhg$0E zF0t9a77uxgbgoE0g!SjKewv>2bop9*@$1i0N4&+iqmgc&o1yom5?K6WxbL!%ch%M+ zeefu@$Iyq5p7+5aUyAWQ7g9q-`pFAWDVi$MB{=)pq@RtFI-c-)A|u}Dh%Yu$A0KJ@ znUJ?+p?~L6u+PukkXqb;1zKnw?ZnMCAU$*2j^CZL_F4f6AMEu3*y|O1H*on~MrSW( zJZQTj(qC~jzsPRd?74SC6t~&Ho{dB|Y=>iK=<-GKd0seQ2i;$T8Bdj+^cwz8-F(Mj z1Sh?ABUYrpy39W}5TOdE+*bM#6<z)Ddox>o z2N5DqtOG!qxx|%NBqc+6Fj^Fz(uu%!QGdXaA8r=)rLCl^E*&i&6g$x@0yt?#tSE}c ziVo|C*xX<);bC`*gjXbdQe-WHg1wsXvs(d>ud+wQMn*g0ivOoLF2tQhvAJ2?b)qO@ zSH#w$c$56?E{a6L*BFNL_ZP*zUEYT7Kts0@^2Hfeo@y3{rp4hK(U3pni(e5(n#Egj{R-^BgMlcUDgtvJJ9-)H zy>pP4vE5+TX7MmA3PKQ#&Ef<;Z3EAhC`=6xCvd=B|IeNLz zE%#rd&&xiy-2Xa#L-x7l{_7|Jxz8>7!Xp~FFI(=%M7Qj7%l))?O6pmPiz6nW|1H4k zBUC4nix*$<2{av@xW8pXsPUVs;6JVT3+(1xAt z?9Q3@Iqyu)%%8u%egjy8DR6vr^rrerZ%S*Q{Fc6`FJH6}@8{p6nQo%F$e3uUKnOSQ}Q)_}#>HIS{p_QQ;x^ zw&N3pj&F1Hkiv+)I9^?SyjnF{bf|wGg%C(Lf+V!)h2xUId=T2E9mcN1L$QF^5g2*u_)h#x zV5qoL+7?I^OWPS_a6JtT*$mPcAHy(mJmUtoz)Z1zp0^RJebf|pVGWIsQB0nO8D@fn zeP+6d6PT}AA2UVLt7UKlb7PprygKtn-5>!^V1XRwIrG!}4+mn=`WBk<_rS~lA< zY|ueMzJEovQoY~iYXas~$fZRtL07(a1=a?#TU!GSD_28(EFUP#hg|sL=D^Hz|L6K7 zD60g^T-8lJg#y_+AG()`*QD^R!cpOxY7iLXH>Zls_hOj;GnnAs;L$9uaRbuj_dhXN z_<^afP)`ndO!qW}o+exVj;Uj$zv1Tc32vVWmrHP`CoJ`Zxvp@$E4=rv{Dp%8tK5(9 z7c5fP{T{ZAA#Omvi%lqOVetgT%V6phEDiQ6oM7cL#+QIm<(v8kP)i30>q=X}6rk(Ww~N);x^iv)>V z)F>R%WhPu8Gn7lW${nB1g?2dLWg6t73{<@%o=iq^d`ejx{msu;S`%=Y2!BRo(WJ^C zT4hqAYqXBuA|4G-hEb5yvQw2Bx7zVRpD;RR2ccOu@PhR3faoczJIZ5StRhv zJT*c`VV6u>2x;0SlCBHsQ7n>YhA$6iQU$Rd`#A*0pf5UAX^2~Qi`Ky%f6RGsoueIc_WKEcM!=sZzkijF|}LFs~GM=v-1aFc3dl?tifzSiqvXmL+l| z5-?ahO zL%3?PG<>&D{-(~{sG3$mZG!I^`lqCHWOSn}?5JWosiW?}R7Hz45Z6M;|I3ZkC#9f+ zgJwObwvJ7+lKPKs9)HS$N-3eNAWZc~d`TP=sY$X_md=Li)LwW?#|kR6y$#RzQ>|l?27Kf`O2bZM(f5T<@B@DC9-<3~{+a6@$%*btze+^?#(y za}=}LbSblhT0Q6Rm4>3=gi)o*G!B_6$tq*ItV%e0&U6FU!uj0%!h9}SX6NEZ9}oim zg4WPW?76Hk0#QwuQj$)~3QJw+v|eX=>YZgbHMJs34ZXEzFL($9Pw6>LDO8nGd&N^$ zGQH4GKq$+GsmsL%*AWQpwp1!JQ-AyUofV|o;~RKj0^!|%nF=P~ai{JLHLCol`|FQ7a$D7+PR6Mx&`hnhg>;JWrBjTd0T_>aUBJK||PoA}xwjpy>>3&$74 zTY?_p_n~D4+YZ_`VA~C};yEAv@pMP)u1z-biGn_klvcL6sU`UFOa5WKV z3&fLwP#~_QGqNI?vZjX9e_Ddmyv`La8Jre}B_kXk=J63Dn>GS%Nl7tyD3D2o(^4iZ z3mZc%E$ibOHj%F0n#U)zib4~{uoPZTL$0P|m2+KIQ#3oub%T7-d~5T@=GJh6j|NV- z!5BPIEvv`*E?MCW0ZmUuQo58-cw|hMG8wK%_B(RtIFDydO?RP^e__!PX;g|RlA4P2 z4jtif(}ij>mC-fQG-YluEa|d!vZky=`ljZ$Ff1r&IZhWinz9xVW74ROYid$XF*J6~ z9#4m@lhthw1!$|R%I2dC^$n%=%E!^TkD;QWai13pu*d@!Y6y9c-dw2lpbj-&crkx2 zs<6ZhH|C13WnOqNe@}d^VDJ{l;le5kl8?)VY1pm@y|@qed$1aQ;y}@)L?Jvc0$AuF zD-SZv*SVC~K`>q0t1Aq34UJs|`lF_(@D?xDV66bu6ClOSK1t`Q>F~QK56Cm(MI(a3 zaT7ypQO-6;vTAZ&m6Uwuwr6=LD-tLFL&h0PIO1GPDmNp0 z`#UM72-bPfjP(o)4PIiAp{Ai!ThwhM9u`&DL*e7r45@}qS>??T@1^nnVwqpqQ|k{%dq*LC>flElRbiy zesX2Z>T19VbuXQiV{#@+&4oMF+fTiOA{>-6PSIjcOoKFS6iq+l;13qz9r6xO;T=vS z2R}50ccv2#o=Q|h+CAJH)AW%6InA}KX&=!}FH#s5e>yTlWkaW!*oqO68SU{JVB)Hl0vvZTX1MRnmt z>R(Ase@{zh`Mq(VYx=EF{=B@5S3GzLuQCMxe}@eW>)Mz!MD4@r)31AQ0&md9FQ^oy zd7G7(S$O_sh;iiPo+8b+hoW2MCgpqfo!xG0(OkY_^|alpF%|tM#Ck5;=^g0SxgBPA zpj~cHfB&b6Q&;Wy!08+sbMeTuzdkW$^B?J$?sUlvt-t$YPGauPu)u#cwTdxyCpYYM z|J?88HSPEDl;Ruqhx%`Yevy`xn?Bjd|3~W9oV}gRHGB7q`Q(Vdsq+q>2waJF_ebBs z)an<$U1`@M%@%a;Q0e-`{4plt?ULOps_VMsCGSXjny=7!ro#&yKNJ1)=Ai$NRxZn^ zy4Sl4Ll2z(KBwF8hi}V=YEO>0v)s;W-I6n3;eA8#Nm?3bGv7lNHQNmz*r)Dmo);Ff zO0UZEYszKk7@x=M+t~l3}nRw>VNAHNMwcP4SQ@7VY?D`sF z;##ZUqW&=|gK7D@n8jC^GLEP2>E!!zYZE_vZY78Ewvd7|(~cLOnzsC9yoW$&qm3qq zpsJ|K^t*>sV&Xw`rHeF8*lJuD$<$-jSyd5*cS5Ss(6Yb9VFg zmdBdWY}LIRu7AEU`|`%nmbKe9Ru|paYqCyhr|*UfE-FWEX}w=mRr&Plh1ihRb?fZf zwan)B=Es{q5~L;-`z1@i@D;g`V!FL5wNQ6(VEFnOV}(&W5(+OmjC zt{E6?P*hzNg{ZnQ&x93nPpII0QRXs9h^Y5`Q(5r+jzD)z2ikzD_m~1i)&BV=vWRQ) z7#M6(Y-m#ksd5Lq7I7sT1A_&Ms!M7hRT`7mEYOmU0bSDtw9y&pb5uV)p8RovzbyDF zC}8LG98irBiYd|B5Es=i)RINMw8tJrRiQ3K)r*DZvWN>X&_g-e0HjJ0c*PGt$nC6< z^X(fKi85!JGE5e*Qk=YNk-RMYOm?7qbWm(zvI40x1N$3(C^beb?XYH;Y+x@1JjLBu z8gV!>aE=hgEak}u7stwi&)5apvl!@aI}~{(M~2DzjvipU5XZhUFzBPGigad}%vdEd zxzbq`tP*~*CD2u<_W8O(R6@>+)dQxjt#%cLitU#2DN2U^a=&A{*< zxXD2YMbW`rkaaSXALI&vos7Kx2GzR%l^~VoU`HXw92poCP|Q0w`QmaLS@`e~Fqq^~ z`SO8EH vsyBKjGfaLs3G5A4NEtF=r6}|LX&_PQ$$rzsC*NAh!zI8AJhX8xsQ3T?W}x<& delta 34740 zcmXV%Ra6`cvxO5Z$lx}3aCi6M?oM!bCpZ&qa2?#;f(LgPoZ#+m!6j&boByo)(og-+ zYgN^*s&7}fEx=sO!PF6G*p;ir0B{<{sUU9M>#WqH4lTN!~PgB@D;`rIdQ#hRw z?T|`wO^O=zovKDMVjuZHAeratT0Q-HK<95;BTTtc%A5Bo>Z{jfiz& z$W5u4#(O_eLYQDY_i&xqzVd#y&cR>MOQU@-w1GN((w{b+PM;=Y3ndBGVv|>|_=ZIC zB^E2+XVovHYl%!I#}4)Pma4)hM2Ly6E;&R5LmOnMf-Qz43>#K*j*LSWoYxxIR5Csm zuHXA8{`YgmqApC|BgY0wGwj-im6rmS^jrAbN8^PEIHj1WH#AVVuUA2HXj&Vm*QD^# zWX8+sR14XM!@6HrfzFpcC$ZXlhjA{{oq5cs&VRBUX2VwX$fdjO~`3n~1})#Bxr5Vh%KwFov=k zW;Jy5qsvC$lw>?*BsoPIo}YgJN>u)C^4Abbjx$NW@n5S8aN_T0BeAXWjz#dQ=3v*# zRQrjH1%R&krxBrfITop};aQdE=ZRgLN%n%+^y5BOs|pO6lg|I3prX{gSgQuRK%177 zlE#t+nHbT~VSO995imTaX&SCB&pgp`Izkg}-NV zI%~Z42T+^_9-gw;yOI&!oZf=H(Cot~)w4^gX&q(zg`7ekm4un&?FuaJQKIrLF$<_% zR;ok9K%L!NlTYgW8?uhX&TS?ojtu~oLm(`7iY<5Ci@V)7+gRHbb!o0OipVh)`vKW) zp9OVLDkaP@Sn!ZRa zpfwY36ct~JlEsS7_Dr%e0UL8^zRSsSv3K)+n$b@Xq9*^-p|AFj(*#}L-%5Z}D@Zl%y2gokn7l;Zr z3CK}pP8BDR1$L~R{R^BwKH~@v9m;O_$00a5MMXTe!u0FG^=2=_f-XZR!DQeQ`5S_$ zO>mOUF8Y-Wfl3P|Mk-VDsBp`X&=kMQl<>nt9$C)^A<4v@xtW>qn@`Z)`|gCedb?$A z^S(N0{?3!oy|^tx0p&<-D62OWo$gVhEodpMi;O#DM7P>i6bnTf$_=~8)PdQ+^h30pu>DfM=LQT20!&5)= zGdR6}f=YHb45NFG9?dd44$Dm~B6k3w1%E%atidmZ`Kaw4q&8yb+5=wqe`pXWH0J%);cCo710p3&(EMuAI{aKjT^Z!u)Eq~b?HpnrSE9ftF4Ibs#HFpuPR zyT$g5JIX12nSw?q!}IY^iHMikUh8V)gjx{JN@8Am6<$2Mz^mHY*_n$LNj)%w6Vs2|Kwpq;J=(VFf`y)>|;A@J@8mL zpw=k%oRd`%OdUL*1^Bd27^<|sYM9NqMxOfyc56FSDcG3u;oJKCAOsBvw)JlyBt5jT zQZ;fkKI1}9MJMtnCEG?ZUph^R-lV{%Av1S91fH#pacM-EI@93$Z)d@UUxu6ruJMHVl=>YjT8reRi0SjW8t!4qJkSw2EWvi_K%!>35@JDfw9#W$~G@9?4ubk&}M9<~>f3`r6~|Hun&D&#w^ zZ2xrK!I3O(3uNXz*JhWWdgESs3jPCOS_W_J;0ggAduavgNUuLi`PfS*0$=1$q$C-# z>ca0l=Pm+p9&+rJQNFKvb%8vn0!qW9SGnIO&tjv!kv980`FquGKanhc(YAwQTGx)(9c1fRnojjxST~<*=y|?=9V1w`t~7Ag$5h)P#FwB7FM=E`e^youj?Nh^d}|GOC7mPW z_H&16WtD5M9H)i@@=Vzo^f`%yIQZ-qGuCko?CP8h^B$X|UkaKazJe>9C00F82u$Iz zFOjPU5)>;*KBg9UezT$OL$aW(Ogut^COwjSO2!@-ZbW#lHVfb_k?7DlEGcbl^tn{p z#+go${sx^TPB3R5272wadT(x2lACj6Y4~LktAm z<+#pEqlksdo%9?Q29%rP9C+LM*WZM-N-e*wX85OOu}J7Zrt%9iGjxN358Fy5GGaNA zlr-b*b{4zqiK)A~_jjEnJhRaVOdID52{6I%oS^X6)EYS(>ZE6NKd-S?F}lIJNYkBz zX=;apb)xyAi#nMFCj#Ex($CGiR?oF|gei))16?8E-mB*}o2=$UtMDZxq+&Q?liP(n z&Ni8pBpgnCai7%!7$wG2n4{^JeW)f-h&_$4648~!d7<~p8apf5f~7e0n$lV_qbrLM zH6T|df(D0@=>WA5f5yN)2BIZFqObOK5I*vhD*2~PZSt*83>fM))aLjXIEokDF;KGw zZ_75?2$lhYW)I_!@r8QpYKr4p27lOeG~ESg#8)LE@pH;oozO*hv19;A7iT#2eow_h z8?gZtDstc~s|f{hFXH|~d~zQ~z_94FB&hp$n~Uv_DB!2y<6&VqZs>-fmUU^yuJGdJ zNCHP?2Q+FZr?J{^_M3`92rOWnrL2vymWZ&0dYxz>Kv&GXWgwxTKz)<+J43r&!q}II z1DmfLl8nu-xGa?TgsrX45d}j{QAC!m8iO1JU=|Pb8D@9FE-V0hJEA?F)srec5$GqD z8(`^KQozt$N;6ts8^+R_uiy|d8MO=#Jvd3z_#2aHXjF94XkEdq3myI_UvT|r>1&LP zU*Mm7Fk}T$qbutLyH`@m{L57Mlkq!hAMe>2-o(8*axogLh^b!!{|amH_{Hrdu!4kWol?jSB%l2>w;Jry$!mf_nbz9_B1#8bWJwL@w!No42F zZ!YAr(^WO;wuxHb`%ZD(qKIOW&)L%j)eAUf-WERo1D?D~FV`np( z5x$@RPj8}2Rbm<>mRjfuPFJ`nN>>ltyp;oE9#K9IU>+pE$;Cq!IYr!NXvc_-MDFXBXW=Z9LZM(k9}OKqEKn5 zMk4%l_POO{UM$2M+YvQV#N~$?Ycqe>LbTz9ur0(-Wp!^8a^GDh7h{U~8h980RG|9E z6RPnEU0ccY1fEIdJfnZ?3Nl4X0Ag>*m6>|oajhbexf9~a8(K`2Ys~o)z{jnuOj93V zg4L4K@x2Dewt5Bok=03M@JIhBSWy2hwxcxRv7ukj`8uYPGrMdH0q!`qHJ^xDQ_bLG ze*?ZCvMv^t`JI7rlqLPEo^WJ0b^>d@C~mI!Zv)-ljBg#u;uvw%ZXMqZsz8Mxdtvbh zbK^eGn90ynsgjzKUOl)O`l3#-uY%L?tj;+Edgz+awV132>9Z-?mj*}u ziM4~P{Pc$s;}v&zYF)Te5J7W2!$o`EH|~F3NfA2NjF&~?@K5S*f_mv2@wT};{Sj`b z%#^~iJN17>qQ6aej~{ubsrhkBAD`C(j7{y)+hU@!^SU03F0Vu6vU3+>!lN@MLR}42 zLOtGS+@f@~=id z8&aK=-2+Pz*y)te)kF3xgyS?qgp@L;G(tM1&#!4p&Z$yX2<+lj>VWT1tiO4`_h^}* zQ@WGd`H9t~sH>+NT2d{O5(~BeYjG#5=s&k0J)iACkpC8u;rFz@_E-w@s0bAs_;b>+ zeR6?5n@}4wjy}GSL@%#%!-~chg|$Q=CE38#Hj0u5P4^Y-V?j(=38#%L#%l4={T(Rq z=x*H|^!EG)+e-leqrbec5?(g)@Op(cHsVg4*>F$Xb=BheCE*5LdSmdwZ-MSJs@@i{5t){y; zxAVyon;`>Rns;YH^`c&M3QdxzNaJl(Byct8a9v38fkXaJ_<=8oe=(6%mZ}CJAQ}2r z#oHZ)q;H0pGydy~@02e)oeVW*rQaD_OLr+)29*|p(gAHd<9*JxBnu0W61lNr+cO_= zX$B`VmPwyz9?FV9j3-@v0D7Z1Z}O;#KZ!@Gm7ZeKORcLQsPN8= zAZRd8VWqow?b1Kp8!AiYk8acC$>6xHuUZWkNk~?EqKsUr2$iixV=zYwM9laPwn)(W z7b-$PlwKh6n5^&Rs$#s&98P1ch#7FGNN6yU!Nwzcesp2Ylw~C1F@G^YA!PF|a$MJ+ z{!r?468ju$sWQLL=o~SYP|CBJ7(3`;c^t;TL4ScL$Pvv>N+5iugRLdmL zaD(CzY&3J+N)7MS)Jw`U8u*IevtEAUKN4~AiL82B$4Bl5oK#No3jGEW-o4`>c%G#8 z!h<$iX*efTk1lnM-d*7Db6h_94Y@IcQg@UJ1-g76_d9@vHWB%F55WG&!4DAy{K)Xv zz~7iiiq(J#G*Jdb2F>RKFnc3y>bIwlQ_Jhzoc4h(EOVm|0C}@X1v`lf-*wuaH5_H)kg%$_&tAkc`-Mk_04t+f0A_7=y20O8`7#X)4WDMOUpG*Z~n ziH5Zevf@*c28LS>z60h(QH92FxJHOKTj&>ep>z##ag+Tm*{QU<#Sk`f3)1y<#hgNV zkGRx3`qggo)?FK!Vd`6U+lA@MVk3QlsjDj#M*^!8JsEqK;p+%l%NyiKg#EX^3GBuk zlh2;u`5~mtZgY!005*{*dmF!OsrxVg*Rpvf{ieqF1ZPV6Mm4vb&^x06M8jn4XO#a* zXJhi$qNRT@M;;!sLq`lbqmcnAsSvSakQ{XcfmP-CU5_ini_P>t3m1P+(5I3tq028F zE8xAnu-M!FQ{&(q8oC{RXMCqw5&ri5tvt$=P|_J!+#m6Iz;U2BaX7}7%E%i{`jgjM^OfP1@K6wN+iSJ-2z7%MfLBS2$+zC|(5j4tu zq@N1d5n}UyXF>Bz{_%qT2O=&{@hkb|g++>5oZPMe%j~Ee^;OCr)Y7u{V4m&Qf@%WD zEUKEu%teX>pmF5DMIP1!>pm1D);32{D-N5>U4W*9kTO|z(Tb#n-@+j!vWj-S8aRy<(xvQm zwZ-#hyB%RQf|G(r&oI7iZhf^pG13lCEWA>mk}rI8IFlm%*!~#7;2xQps>NS2$f@g2 z1EoM!1ML(HjM)=bp>Z>u=jEM5{Ir>yFJ{m8hLv-$1jxB4a{4HNUhk+Rj5-H8}G za~r&Uoh}bQzyC)f6#o3mEkwFNhaD8_~{CW03Dv2Tbl4{ zAFamTS$i&ZYWmae1aCxVNIKrj+u4g3%D96}iqw8~HBu+gFA&*oRP5Z`MikjjDgYjq zkf0&#_Xj->@bJ>!}JGl=t1|~ zGIx9!u63fRtm^?=^0z=^H2SZA43p1deVixbphteFyrqycaRq6DLy2$x4nxgB;-Dug zzoN<>vK7~UxLPDR{wE0ps6mN9MKC>dWM{~@#F)ne0*ExL**#VrA^|@km1xCtF`2N( ze{G#meS3J5(rIs2)mwi>518)j5=wQ+Q`|O{br)MyktYd}-u+5QYQmrBU2ckYE7#Z$ z>MgHjknqi-2`)(Z+pJ?ah4UMg*D%PFgHFMnKg?{GSZZ*f3V+g@129FH@79v%&$&v32_So*G$-3SIp6 zYTlLgF2}s>)U;QtdWf5P&xikI0p1eg2{G!w0+xXNuYf%n#X#fou8}EYvAw$zmrjK&OZkS!$REMr$*aG zyPPjsYd_SXp#Vt9NGI*R;-*4~Gz)&7!zq>hh7)i?8PzCAAv(pNcUGlPNf^OXS$=bx(V#ji2eMF6q{U@ z9?ldp%YEsl;)d%}_Qs81OX>!2>kyChh!-n0Xd@2C1cI2qkRk&b4)(?@KY|?%qMoYb zEi7l}n$O`v+T31;YZF(;FEwj`I8Dz*9fbKrE)8#&?joolVY~3YbZuJwfRt4-kCOM; zcm34HXKH>;a?joGLqjIBG|B??@rS`LSU(l!vxSyfKmGa^x5&S$gvrsrlVT0@Yw#bP z-3#zdbm1;n!DpT@>AnxkZ4llVa;h^fj?R3uN5?-F)SLb}a%TBE=HM5_U*{K=ddu;L7kJ## zqyyGh;WY5rpvMm)$*xZHv!CUlc{zU8huQp`KmQT*yq*ugOu_#Kt-kRa+ODx`Va(;{ zLMO*lsSV`U%+u>-R9GmwqgWulP#>jO9|V60TBE z5ONjntHY2V_MmDJHr3CyuL5X%IlQKbDRch~>EBrwAM? zvOJj&z#NzlWa*K*VEZgjP#cAQ-HRG&mC)aqyjY19GP$U zSKm`d_gXzrLE_^a!9R<~vT9n;>{y3F`!rB%M5psN(yv*%*}F{akxIj9`XBf6jg8a| z^a*Bnpt%;w7P)rXQ8ZkhEt)_RlV=QxL5Ub(IPe9H%T>phrx_UNUT(Tx_Ku09G2}!K($6 zk&bmp@^oUdf8qZpAqrEe`R@M|WEk$lzm$X=&;cRF7^D#Nd;~}a8z$(h7q%A88yb=# zVd1n3r|vPZuhe!9QR*ZtnjELX5i*NoXH%d1E1O1wmebT~HX0F~DbFxk=J^<v|BCiebRdAHYXxOo$YS#BHYecz?S6CX@AcF_k;#_IF+JIV*5|%lV=Y;Ql?=b^ zt}1qN)~qaKnz~KZRf9Aa7U5S&Opz~;SF2ojOSD3HP8WYTbvlEyYK~);#wr+UO8_Sl z$-Yx3B~JYU!uChjzf0v1TKYAtsRkH`QZeF8Q$_`7iPJ79{8V(jbX4T=-LF59vw>au zY6LS|t!~Zz>*ops1&9o5w z3lQx+lhgdg^4d0r-%q!s(A$J%XYhUx~)v|ptx_cU#?44pnz*s$G%3=wh_01 z5l7f$uM;P6oqhM8F|$4h0me5--syUE%vI)HuhLv@kL`s1eP@buw&}80Umf5QOXBlP zAY(8r9}paD1p*&Bir^3<@3Cc4Mr>EpoDHghr{U$hcD8$^OZ6bZS{UYhl_*Otp}Be} z-P^9U7tc!@aodKCp{~TV6o}?M9xG$hN$Kr>|7e~E4mJK>_yjrqF@Kk1;fHw1PP`UI z1Aoa$7yGRMrUVO0M9$rM;=Glzi>SO8!lqon9E_1^0b)CsR0%Nv-$st+be?a*qJkqI zUNaqi*6Y^E>qlHH+*M=aj?)y2r>RGkG?X;Rv!7JG6Uz=^g7B`jEKEvgUq)s3Fw|zFMdak((XwlUaSRN4hGMrH zn2xFaLH!t8txnTiQW;qUWd^m#<3zgCp(=5~i~xw9lU{R~o1qSo#Sh1_4W5(^hL%O9 zOauMH!uGL}u?hV!4V~#?F-<;)X<)4B$u1F4 zf=%}>{b#f`$Ixo^Du_42V6Wir?Muh`(!izQSV9Y3d-MCQT|9bs zIlCtJP7*;A%^1-=u(Laj97hG}uP6Hq0+DzAjB^|$CG(?e_adMTiO&^_9WwrW4H!ju zWEYrjLw<{fSyh-yiPOP{O;c|453fxkp`E;k&)d^wYK=ipbD_kG$u*Ro!kQJOppV5* zP4o#ab%r@RITbag_zHMKF5$z8fJd1L+D8G@m^`*H->XyF$E{x;d;A+T`A zR!1#O!ed)ai|TF054f1+K6 zTDH=fps}vL7=Yl3_R)o948I{CP*`f1v{E~-xX#PaLvb?#qQRElOF-pVuL>d8_�{ zSCu|?z-R)71@L#eM!y^Z6p;ZjzlW@gZzHJC3~O?Pk5QEa0q(aFy!-~pFZ%vBM{a0B zOfAZFmYc{!vg!PSF@l2U zJK`=N@CTmAO4Wuqv6k{SNl?~rs-CcW0VFIdAj^B2Wacs>M@3N&63=c06V6Rf2sR|QLucLaU zKEq5=F9zA=+3ZT|OlY$lIrFmvTV4H!iv+MxhtKJ%j}wlD3qAoT@g^}Cw`#0dsQnXX zETbS9p{IGl{fkz7ld(7^$~HEkkh7pv3NYi8<1qwOw!a|xaQ$TntGU7;01Z4?b9D8N zBh&aOYgatY!f;X<$(oO>v=8iOcEG%aUvS8Uu1du6!YK*G&VLOXlHRCKu=FF(IkNo_ z!128k!z=B?9(@872S5v{*=6WjNH3gAJAUYkC%^7Y;H4r>$kZZC%?&3E-qa#4n-YG$ z{5tlV`bCK=X~Idzr7&v8p)y!whKx;pP;V!X^4&igR1g*2j}8HyVC+>KqbPFthf}+i z5*V2^NBvmwfWIU)3;IBGEwFtYFWVWUoB2RyvL7S*E#d%FT_ytxM895Q4V_PCQh+>< zlu~L{SuQcQ?il+AeFdE87H!P8>HgIJjkGW8@`{o5wNd6uVn=dNX5$aDi14$pTSR=` z!YTmifM=Cy`Z=%xX-u&9>1bJBw3nKr0@mO&YfAp~^V^fzVJyvwMY(hM5 z=T^FaQL~&c{7fIT@FE@vI;GbS=Go0=v=3x<1AaB@b>U z;-hwvu#U||CUj!>9G3YgO6yQX+H)L6*ozXXaV=U_b`_DQWq#`f$?cZ;??y9(AcTLq zHrc9U_$w&NRKgWZ>e};_T#tf-g1TX#Ttj{JjKjCJqlf63U8$=~02ty9Nn3p2WX;CqqYS% zz5QZEArIj!d6Y0VI^JFWKudu=NFUPF=6TxRR|reQB5_2vIn)qBV}S3;MX1}04E3Mt z#5d$zK8z>OW^i7tXPB6e%UCqcK(le)>M}pUp6H17YHZ$`4urRAwERt6^`Bj>zwymc z6H+f|4zhQjlg1Gy%93Sw`uMScxrA;vQE~ta!zM?jz@&c;IxYkrPHXB+h4)S0@SIgF zdm{UTZqxJaxzBR!!`71;K*uco18U~X>AK&Pu-C&`R?B-Aj0=_$cxPzn{MlJK>ywJq zsw-Yj{^>7%vDCYw^iw(od$~o-Pz6ks8aQ}A1JFWnE@Ez_SYh@cOMFVY`?D$Y&Z~a1 zd>zg|c6+o8_xSfEUIvTsdiN&WOe=n|xS;8X;CYLvf)|=u($YtOu_6J z0tW_ukuKXj2f=f}eva;=T4k7`&zTqf{?>lGm&{Fe_;9R2b^^i}Krru0>ta|4^_A$H z7DO?PFho!p4A2C|$W~JYbWN&eW(4R;;Tmhz zkr;EbZ4D?Birca@{afZpp_|p2YAInGJ`1Fkz7A$droV0#{h=lZdX+xO4B%I?B_3ac z=7FCkf`P*_R`SaCnBPG1Jd|Abx!brVL zIt?Rv1@qnIGKpG7W-M54@Oi;BujL}Xdacfmc_9q?u&4#P2hPg`({??ZOOjRFnps_D z-f(IqU)UUW`f&U}`A@568jBEz<~CX~Yv+1et@-+dsV3RVrNTx?H9ht?VAAS0D1{G? zJbr4_B_Tqy_Ag;Xppzr)KXQ9QX}21eoMW|m_{|BBHJ*=OjhvNq(4HgLp`u-X3tw>X z9A?^?H5zIU4r9K*QM+{?cdUL9B5b=rk!&F@Nffz-w_pG9&x+7;!Am0;Llsa02xfYC z*PtggCwO@a;vLXCgarLHOaCqh;)QBGzd)|oeVtn=&wvyz)rOR3B)bLn=ZqpwZHq0G z#6YvZtco3reVEzgsfMR6A16B&XJA|n?MuIu8bp_){SA_{zu;H?8${rR&r^T3v9C(nb5F3yeC zBCfU1>1a`bLUbS{A0x;?CCtvBD58$7u3>y2A_P9vigNVLI2|Lin+b~C-EytjMOHW0NTui}pkxXdFdIJ$-J+Bm$%CN%mac~u zc65u)RMsVt!-|8Ysv6BvqDBlFKElp~B6L!lpd@XpeV9f#ZPtB*A?b!2cQ>(0KpkD3 zcX2g{WebJL!6EmdE>s!+V>?WUff2Qb1G0)SgHlNwmhKjxqoM~UZ>S=G#3}dZqbOgm zLQr$%IH~rG-VibZjQxA+wx_MOF@JC7m(z5WFp@?e-&dnA^W!f5(1q_mx7SHG&7Mjz zJ*FkzBLiO~YXM}_WN$-^LB=)#9j0}Ig(60{oTJ7L{`hY&|LX}pO&lXsa+ZJY)@FOggOhohsSKci~64T#~a*U>?#ib&8;moQD4mX2U+S(Fg|)$9R86W zITbI3PGBmng{xAMx7@wkfPyHgTBnY--U-MN(8g4;hg*?%-H-2y9+fMsROmUruu~DJ zD`y+zHt;&kEmb0pX<5f>5axt7b!mHhGZrk)cPJl8fFV}4Hof{DHc?nmlNe4OZlh%Hw~gDORC9fFH@ z(dp|iOIbEM2+*ogN5G5IIj5N6dcX2{rbl=|y=_lReUu(wdD=vfPY1!pN@X;H)!7M& zsVSTH?G;8EjqWqJgt8F#raa9{%Ig46>|d7k@)*edY9u$q-2MD_g(YtesUb(fF@ zeIca^`q$v%I*l@1*pSA^WwV15>IOc#+Fmv`%pKtg3<1=cn#Ja|#i_eqW9ZRn2w?3Zu_&o>0hrKEWdq=wCF&fL1pI33H z5NrC$5!#iQpC~h3&=-FwKV0nX1y6cWqW7`fBi39 zRr%M}*B_mXH{5;YJwIOwK9T9bU^f*OUt#~R;VnR}qpl2)y`p76Dk90bpUnmP%jt$sr^*lRURZhg{Jc|t% zzJ@`+8sVJPXQ1iJ<*|KHnVaNh6Bw9w7(H5d@A2z)pFDaQHfA+~;ft*Wl5TXgXt$X+ zw>HuHuNiPuH}l);i?tm23b}z`d*)Fc#9aSTR0**x64KPFxH=waD^aF`<3*U+;u(Jl z%Vml|ibUgNPW@Mu(3F&xqqX`Ywa;f)vz@_@ai=KchFb+T#v=)>bVeCp(|;s8%R{-yG(vI#MB|PpTf%;Q_dytxihYgUEEp*4UnBD2i zFzwhlAsbs^rvyOn1@$Y4a#xL*#mfe*-%9pKM;rMxBrQ{x6g=Z)-ac6r2QHFaIB3Cb z)MlIq>|a&HnWt;JF7aNioc_56#kOM7`*3HQOh2zj587o#jVvMmd0^Lq^}+G*kE4L@ zyr1bonUrLt{25*}164@vq#vyAHWXa=#coq+BP`G?NvJ{D6iI(?WK_#=?Sghj z1PAobWSn&T1JN2+aDKWLzLa-vkU}op+rSMu-^54o|YB$BNlXsc4)Pk+N;1Zjv_2G@*gdMul2v zus9!wq9-nM_j*C2j*4}T#EOpQH+mG;>6M45k1Bv!l)vdjfmgsSe9%ze*37SC0>9_L zi$J!Ziite+mT#sPW;8{9EdmpRcM_V2yctTOVr}V45Ya@X%iVpnLr%`<6JxcpQZJW7 z8cdPFktXB1WhRl~Hl4PUPw4E0+n*{!yDCO9mjal(#n-SeE6ATb`3BWpmcOoQtW0YC&i_4DFt9eMt#<$YtDl1dXA!$_EIQN?X#w1#3P}!YVg2_+D)GMjl zY@_EZ_ZKP?D)_w?>J6RZnB*Q7Ruv~$QHEOp7abg-XyAe)|FAORoics58~_N@dE!`8kvn*VMyv=fg8F zE;Y1gK-hU9#R`_&5n`$v&+@j=#2b-LIZsY&v=}NAOjfOB3*&2UItP}{OqgRpGh>_f zh%mJf#U&@U;;T#cyP}$M2?X^}$+%Xb$hdUMG3A`>ty6>%4yuP<(Yi8VcxH+@{t9(T zEf55zdju@GID-2&%(4Va<|Ra3khy_F5iqDnK(rPsYx`73WPueFWRJV)QFt_0MR4ew z^AAwRM+u8@ln#u7JFYkT)O+ zi#|KR&In+^((C^Qz6W~{byGrm-eEQBwWk;Gru$Vq&12PTBnehngdy#zSGdTlw| zntnZVw0Zw8@x6+gX%7C`9GLL`vpHbla6TX+B7XSrfgEy0hYHbGenBTju?E1^# zcPx@a{i?zW3ISa;V@%Kjgr2)Vx3UHv;v0j#v5i!do{bld!wDqWoiXLi;bP20NC_Q1 zWmLa5QI~_)A`d}#*aQ+SfANbQB7Qd!Ncl(>6 zheiX141UI3v(dtiSKg*zR;+|a*Uv_OU@_I@u$Sw%+tp%rqDxg~Va^*|OD%zXAYe6! z!Osuw69pNHQ-?@qEDa7bt^Ga?Xa(5g6(KJGSSDy#r$D2V;~$a?q6O+}b4^#6wsf5E zX_GK0Km%Z@vtZr~zNs08B zzlMH4(M*)#G5 zynvFiw~srA#@cLNhHk`!r@!W}8-+5UBM7C2P^oZ%kc0uzbTp>FHRO=xYa=v)0aQul z9UgNxrY#bF^%AFxsI;{sv#0ekRc8}5bc+e-tghcK-OU0FGl`O!q9lk-bQK3kz*s7? zV*U~Q9=~-fem_OJizGL{$4*=a7|@ZKwLY%#p@2?FP3Q>15nTl#b(ZW{k6q`Nx zOMonpItf;aZ4(|66znCH7E27N)R9I&GsIJ z*ClS8kTkcOvZ{S>Fv|`^GkxEX=rkW1(MQX6IyC;Za75_)p3!=|BF|6pLRsYUq@}YIj4k#cwM<(2dKCeZZpd6cJ$fz6 zXU8ca+ou~;k@S379zHDD8S5)O*BT7~{)Dj3LCoshK9dt=*UEKo$P_!yxozT=ZtBkj zev^`G~ zc4AoF3d|9i#^@>JywzuSvW7krJ{v(4IX&@ZU5})Jy)F_p647?_s=B2@mHHAWI5l=- znNFit0x5-AIV}8zv2z;Y-K9McGGqK{hU0@PjRaEJG*_X4Jo*Ua=DamQ8b7f09*Mazbhhn6LBj%&=C`Zw8uz@XoMbA z%j)N=G34Q-&zQal!IQE=*PWyC%Nzbkc?SQz^J9l> z3}_mkctbvtd6Vvr=Tx5dQ|k=lg-=zHk76OjP=g9IPH_%tWed^LXiY9Cazf??c$snr zz!4}Hl4G4@_xpkYJf2FXoKOO9-6J)oiWYVXuSJAY&Q`aFnV)5L@nU~x9O9VuEbZmm zRJHYpRyw?}bQVa47oYcRa)$0@{Whq+Eszd#|A;H146&zmxR5#?^3=Qdiij=KX-Bvd zk&plq0|^#&B~AjImXrDvvJ40$v(^a!JSp>w3$@6tFc)7&spiek=YVmKkS2(%uo;S; zqBCrWkh+zGsP=MQ_NEL>&43-zSnE7k>kbEB)jJWqRV5}k>J?*Rcn)jx=c`6*MZ~|i z%~^le&(UQK^+n_>?xxUQts<>aPR-TgOJSE6Uvk5ZUkP+>VveCD#mghIG(nOynL#Rs z2$vVgxk2{9-OsO=D`|Z%@x3w)&CjCgeKN0P_V|BE-c%IL`c-nXVk9#S-YNj3*P!-C z^7XvFA|Fc zQxCIu-q?|)UMe%sa3wKx=4brU5@->gWRLT4CltHUIy;}a|KrUJ{a?72odi_$Jtv~g zkQWC&u|Ui#HMR{#IS~nXxMkhhGSf zY@Od4)>#^qTHlZOA6ih(()g<+OnN3wb6{Q^(N3|JFQ>wk@M>uhX) zr)h?8eW=WL#|vUm?PV9~lwWnXh-FzzJ%!x>#?s)dgZwur=+ie)NL%H#f~c%;e2_O? ztRDfj%ldcOwjk(ny5_GYpz}QMZ&YY${hM|O2AyZWre5QzFI62O!>~tkqcDdtBY{-$ zuP(XeSh@3Xk*0o^Wa)qAsTKNxZe}ik_%)PtKt<$f>wWvxMo*99^R)3&;*5cJd|r=q^}Qw~=ZGkr7Dg^@4b4T-b$ zv#R2Xe!$2km%(4C))AfZ26hixuAF}-+f zZwfDSoMo+1_8Bu$7xPtlaoSMSxTLFO1~#1+>uc(Djj`l$TpKz(SF{%R8g%NC7!}{IaPsNc}&S&M~^Ou4&il7#-WT)v;~cwmRmH zZQFLzv27b2bH_GLKks*btWjglG3LLTYp$xg>neN_;Xubk@mTsS@UenjBm=4JG5K(l zz~4wC3u_n&Y~m6qU?CyDAU4bbLKZ?Bw^9j8lT&FE;2DCIabg#QskcB&I3|_7=;=%7 zn@qoVqD^&L@D_HC(@e#8p10q(eSPky-Vp_)MJJ2(OE>GfexFZF0;)Qi$MpHIYhcyI zyeh4$NW=>TFjiTZNwFodl# z#Cv#0L-X!S-2Qg2VV#2sFBCFPwJXp1BK-}4uE~DU$ad^v8-EZMw;b& z(_35WMa|A%-w1;7u|v~F%KBNh&0bcvmYob_+3MOJf2)x-YiC`VGBf22-fk~*nTauf zXiZyYIvlkx>nL&UI8&8|DZx+C^kw_si)<+qmfVXUsDl%1fFvs%1nba7x`+(2iSjfBUzNhI;9MO2 zRdbI>)h?f-;1tvYOb9xf8hdFMxZR{IydPvjSE}M@YiaHOMafQP**D)HVFU0l?kABN zM=nyQ|2608B9B#!&tk||Gq&JKa?s6}*k^8YAt@j)A};<(RQ#AMYlOAzFuz%`fUp5^ zZgbn#0O+M{=dij^u)o4YK&&(J7!zw6g-DOOtuU^cyfc1o&$6R%xtKyI{+Qp8+LlQdbo`sV&+9`RQJ| z8j(hifiV@yzx=U2FfBD?;Plfm(5+gL#tMv6g>G=(!lgA9B`D7qTmnxyV)*V)T#^|vqG@-VuZ%%(lfv5vgU#=*`wv!JINPVi%y4JA(-qvYx zUVCz9r1l7Vb)fj0J4IbDTlCSN)=C#XU*)C3IkMV&qC91w_8Z&c9U^RKh@4kkLgPR? z>t@bQ8qlru@e7r+CZyYoWQgqO__bXGP%=9QKuavN>THS5UFZ<|{jNYkPT^-3og8o7 z6}WMCt~h%FoMCyx^DPi8u{0=UB+e@6KAl4}ow^Y}MOe@?doX*0JriBfWvHd}ymngD z022IoW-r}9TuOU9owCGs^ke*BFMxMBf61A!o$>YK%g5X%I? zf73QX0G&Q7!2%xv!l{)bP`tpz_p=5Zl!wuJO|NK<X{MMOdgXJP%y zWxJd9(~kVlBL~pw$0xn1KB*SjWo#1N4??O+F~@8_r;Ao#y5f40?BtiHPe!izugO2O zABD^iFtZPN;Ecn%K4H0PK3?C(<@622p0vX|h$guH zR*4qG0w7~7y^{EM zOIO82TuDC>7pYOjtR_bGm6QPguKgg8ml$b>$dw`Lw`($M%lzUOmH2?--ZBAbl<%mI z1mcg&$goRgN3Nxrw64K2=n~iEuMgNBNJ-#Ko99Ly_F_ zP#{ywpN(l2S{j~pax_@6Ja3k5W@_B%X3Pt5wOuP<)a+3=1OSU<$NDpMdTNi*^r+ zG)$ZmV~`A5)mpUnOk6a6v&d{J;}B-SB_>E{Wh{}P8Udb$nyE4%fO^tTiQ(imdVXJg z#8OE~x{AeQ$Z@tF0O<{7-Gc%W^I5A#B4yAq2N807tW?an=rs!9qGg@asbnlCm0U*gev8z#QYaorNv#K7X zwm%!ae&=P0U=W$7X}#W$#;|o|SOxTY{LC_b*u7^qyiqSDCr2|GeooJ_6C@f=IP=JI zg<*06+*K@>yh-=?w^scf#w;YKbFv;gy+jYYKq|2a8$M!4alf-?ekBmZ8$f;zFJA3S zH>i}3A2aZ40uaoRYR!u~arhXJWet-zvoK3&S)9>GU_H*lJYPo?j9{3Rz(}xXF|8+? zmyll_q{E%2TO6kfTK98ea5R-q-7YX_MOIFo%9NTY?>H1c*+-GPh>)S%J39*)oEZnr zo9BY+KMO^Ur&io55Zg$>nQ>PA4rJz_zfVitXq-Po0kqkr-XTD{czjim$8RPAe?qEc zFf!(vz`pPE3nm|lwgPPl#Vym=Hp`PTDD_M3Qlbm2pJA~11DK`lF>VtDfH*02yK(u* z5hJ2O>p9KZBS6%vpcf*5Z2FNlR)zlFc>)?!ulYuG&%|_IeI$4(t+@RF8+lnXK{qYB zNv6Ospm~Z4nDt^_VE9vQkwx6Z!dXYBM`>4Q+6HZe$jrupOJYx-=_m7lnHREj>#B{$fU|J+@M`H)=+)l>ag;mH9^tZSif@mqz zxNpieGH1GH_SdhZpBJum6YlrEg<)R0U3^41)Q5o?2h*#?B}(nF;nntz2rX-kuJrQ92s7PNa>PXO#{)DEM#R7y^5NDt=kOrV23oJ>?8$=VEy*+2LGu z8nU}3>8q5f&{XtX^;c@YkvrIX5-9d!OULP*tD8R`dMTz~1ku`!;9Fa!b z(~O#)gesC+KfC>4KZ6s5QSU@-@QX$(048Xy=1JIx<4)5^gF}A$czn~M65#sJ2 zvpDQ~ECVv@MkQZ^H+%;`_(Paora)F>wya2Vr%zMO4A|>1UMXpM={gX}E6Cv!Ql@`- z7i9rvdXdoI(hyJp=4>_1$h|L`Mo<17t%aF5Fq4VLzEmb%@yhS$U(FK^;hEL20JTS} z@#0t(r%=G(BikWuxvXE4L4vNmM>{Y}JFL?@#N|`z42QDTMBvn79T|~LYfxJPcX_IQ zQ9I_^pWins8O%jfEDji%2jbcS2D%%=P$P|C@*EsPAQr!B07tzQADDivmS<}#P=5+s zzVItZ@K+!GkUw!DUfz9lj{uVC0K*Gpk8+(vXy7jOxcW_G;@vpPF(%hH`zZZ*x(iuZ zabN7MW-Cbr)dx9m_c#-aB&>Gt%YgCBK9*M6M50bgX~e~TB&kI>>F&w$Fml=wiZB

    2jq7_TfZ- zY&mWxCbWkG;7Y^>{IQg27WWqs@h${Q!?#pERq`lbORNK86U_MO)YBZI543+_14W$e zA72ObBUNeXz^8mDv>$%J1HAY-q+FG|=fKSI6(ZgpwX{nOcUgO-o6a-%!4hlfg*;El zCJtt$fqeVsP1}Y3BC`ppRjL##Yq=Rg9^00J=EFoSxyRg{X5h z7?mVcE({1?&^q!5mB7`3CbDM98cTv=S1QO?Kh3|}vEdFJL!1|v*SLP$%@&Rk;snAccM6Fv=1j5fZ;O2zk159z5) z^-n^WSW~_$YGlFJfT3#F{YkOlpoZRfFl13ZD&_?U+2+@?GhE!qYFP3m?q5%tq$mgj z9?hlL?FceTvN08+bQSL;16yxOeX`8=<5R6lGOu3B|Ejypg`-~FUC{lyBn5bH*MKwkN`q*NN3j+`_f3MP#gDdsh#3M(z|nC1P6;lr&-)n!ZBC zEhRiwYh#Hw0CobxnFq*~FkyB_3G&|U+Zjcgp3}%IuvKZs?DXobnCgw1>x}9HM_?dy zy&uqe?6Oc2ryGuQ{KBhYU}3;eye$^dR`~e>mnY=_X4;Zg7P|aHwHoBH$M&t4p9(n@e>V~*8!3mwDx{?-{zEHuG<`W zzAnWQK%y%a*^BkU^^*Gg66upc!r|!DuHhLicxK)JA)$<@e0bzt!Ta`LD}S&-w?ef` zarNE32QYMAu6lt9Cq;{{vXpO}s1`YJeKTp^dl2o zJXWiV@p+>kZ8J>k5~~2W{}m}M#lo5QlgaxxfY*C!V@ciA261-$_V3N_BZN%yQ%?{5 z*x5CHj}M4C>PU?iH5y@@bw8)=rQ@d{eQ!>pSY2HLWUqbTCZcnUW;u^&jy|WM$ea>E zzZd5zo2RCAulP&wM9jZKh?q~4uEDoXr_Wq0!f(T^8t}9y2 z&5R?IDP1qxylOlGqpOIIQf#wG3#9}n3c_maP2dfZL|EH1)3qJp9(W&Ea~K!A%+LET zJ`taFXai(>iNlzi6e3_b_I?$Z$cIuNAdCm$-ZhZF24axl%OlnSnlbGfDVA^Ryt>JS z!S-Yi7tWi;G!e=wbJeOUS#A=1fQWUf_3))7e}7K_@!n!kC=IhNZ}Jw?*=H4c2VS6& zQRDZ=qcjBXmVmQSEFs&L%*gDZBZCunck}4)KlyYQWq8NLNP*VVy!l@ELaRi70pPTV z5$M1qb|H{Jgh~i&hB{KRVpX^yj8!i^_5)}> zeOapSGrSVd^thNCmA!b(M6b(cMWFldkL-+)!AlZ(hN-YP>K*ZZvX)el_d4NjTS-UaV;x>((GE zU8b7ajHI!UPo}n(J!CcjN(qE#mWCX9RIg!_rX%R_9n3 zRQ@)w{&JuLq;@(iWOf4Fu?O0YcnprbLWwycuBh1QnD`~IEKpBl-}z<(_ej7z9K!iX|tVkpu)3dvSp@EU@hi+YMp9X^UkyF05kl&A~Vy+&RO>) z_v@Dzta%zdh!b)i1TNdA13UX&a=b?r?OQ(f2|UvlX@70_858P|6&{%RUg~0hWpq!| zBwE6)TSBc%Nz9^>Qo`rox5M(yPM^A7k)E=I=}!o6<#F9n0LBxZ}-4myXM#!#{cw z7HfWjYAx=T0bAm5mn`&+v-ybYlU5B|3Vz=7YMZmArd{dc<E1Rd>ge}3*8;|LA7=pe46V6 zSkbXkCCLr;$@NCVKg5k7Itq@3vWZe)P$ z^SoFpb8m>?D>#uui$bybqBWynq#xdYZq47?FajE6ioV4flf)d?ii%;8}WAM9a_ygm-%=n3nU_#hC!T+a#<{ipl0MP6MebY!{eGWf6C$k?WNPoU7865+;WDX zT%CoJErn8}nl(Ip`qi@D?j3?h2`a+Gw#cb|q%lA~A@AZ}w(wGYgpRGz0;Sw$UoNs&rYv{2*VU|T+&B(FiK*DSP5 zeclPX&$N(EyN>f0#c~=da*%s#T863tKj9Np~Otj z^HJk|@)x%APBw2G<%vj9;k12pAMwGXXfS&|JOXDtY@~giM=qb-RXrgtrVR`TjRnv2 zSRtb(st6i@xYlMOHYHE(Kw9Ljn64ZGK7ZXVjx=m#o!tn=XjGk{Cv)wvD|oCE*NxiL zaR4q=tP(8>v*i4ek9)bAd}0f(lL|7#*ZJY2v^=47Riz^aO{J<&l2LJzkwvHfb$BA$ zU)coW6#c&glf5B2)ce5T}Ez`1EkJ27P`m~*-zp1X>jCaiCXmato`92 zEOTlAVnVA{O&NJ-XG}1%zR78$KA-GKa*j>JGX<+-VvZk~&N&O@37yi7W^Pbo$RQ;T z!6+(d$oWd`9i!51vEb#{03NmkotT1+2bwo_7=oQlR&vI7Md;QGwjOdKihaq)>+d_SSWE2my^&qxlo+t^h zJ+O(hT<+e8&Jd%Jy;l5I2U_cT8CIz_gLmnJ31A%9x!FG5pgN*?p~ODatWhUagYyE5 z#!99otrH^LHNe>(?H%vtXC-KPvqk?dkW>=6I5p4i^RljWnC9~;+-jq;8WOQWdS&E4 z{)D2o)-&gIKCa9U>rYP5L!+{nYUBgtI66x|&UK2QhXm_TGU!*shTt9it{AOplX{x4 zp^Y@%BxQrVc$65k+glb5z>;98XqDvD#rv%{O(if+OA#K?)fjBQZnPLlb%1nQ`X_P{ z?9q~5Ux|T+jaf>z)LOXoNSC!^h-=IC>hm5pul!I>MFO1#1!oaIEGMrv0=p5AmuoW{ zQx(|5yY*Y$P%D>B8!(hjNT1H85w%XHGi3xJBYp&P#Gz*+hNl3M>#0`~HsZDjR7zx5 zSh6k@UsA#@KnQ=UHLW{9_X7pNu_JoH{sFS-SQ$+(P6fPyuPmfRX0`L9-}njbvOeUa zE)$4fG<}-XU8_m82`5zJb`%bHVjpia8HrwO4UX1dzX%`BwA^3d;EN&S-(ZV|b|_0X3;d}wGn2uYVrXM3 zA@hr0oYMl{^%i3Kp|R9Fcdv;a`VB$yAB6A$Z3GM9BdVx}YPg>=hv; z&By`5pluK;^{}rmrAvSLjFh8<`?tPdqaGFAm4~^+kCNt-hk06~4V4v=`JDg80H%_e zr@PJ(3P=XLI=2pE=2+9_@u#Mq!WGx6Z*fL?Ow7p}fGLrCU<@e<(){H=fhNBdI_yf# z<{$!gS&?sG#uTC^VhIn(W%qXuwDaBty2sUZ65^AY`oem_?!|5xI)c@dqN{8`GSMpv zZi0q@r6d3JI8!+VVhPgaw`Hj+s3aIjYfLWN&7FPr1fntAp_lI3O57qbAe4Vv8htey z3i>9x;QNf0AspNp3gQk~5ZcqYad=L49}T-3mMYLcGyH@cktza2`DVuT^vpShXgm=5 zESEv3=DmUR(8YhX=^Nr=+^(*I6BNXQvo(I>;vwa&Xm!{j@r+Ho&?&dsLA$&C+mU&3 z|1)18#QTHa4Enjz2<%W?K>wPG@$PTziO)pRnhv7|1Xv_mnWMi7*5N6Cd`cT_K7vdQ z|8m(Y>%Y8dT{a-^PvT4fC`k*+Yd8FKf7k${MDkipO>tWU^nA zQ(vSHZ+$0!`lBR}&NqP>^fxD!Q6-vG!;Ki zruv&IWyl3~p0E=ZMz&s%F@=~jA^lnqPF|Vp6l^&}XFfQXn0?-Y{5*qnM7v9BUDKlp z$tR80oD<+dX^#-)k$PTIh)DjC_3^r&&OqpwbV!bwaew+yd0mZ61SiGI$J~g7`_w^Txlk%~x6#*O&=$OQ*kS$yDzLmHw62rLogO>6O6FBLe%Av_w3ztFKNlKjHSR@p+_RHMmkeX0&VCiIv4~aXoHnCz|Cr9n8&*zkFMYp_YjO4JE2tm zX6-ubD97o5cEA5G9^kl#4uU^~0|EI)|NoL2-v8qsg??)`YmZuY+x?9RROdm^$9N3H z6+%N35^~I#$(Aq5fE#aO5G5RHbtDdiBkT)9nN<}NML5j9Kj8rg-+kS_K^lTNgT^5u zo=o$!k_X{R3%ifPZ`cpQFL0`8AJfQnal%Kqiewg(Z(m5BL*T>O+j6vA$?I6lz;ghi zx-`vmX?V+Sd)WPfcHH^;{Q=4@zR^19_AM8l*tQ8c{Mek!grLwU8Rv4Oo~ z30=Ro`Jjqfuk%{4P(8!^>ZEHbSAqjy0(u+ZL+X;m7%0u!_m=wv%es& zGD1jCKFUBLRH7#{?-_y@6=4Za3qhEOvC}ho^wkBs+E0A2f|dW{4mAhv(Q)EM-*ZoH z@k-9Ojr9w|S^=AAR zn5mq&3P4Gv`XD22Vv!I;7(2$3PaY#Pr3WwlB4fsgGlo_pB3@l+_7&<_?S6)JY@D+v z-Q2K0-zY`2#BH>V`a^#?0okacy;e1z>U!DXdYQYmV!E}`-Es9P3HLDTl5}zc`;y;2`nz4zEO9xmg$h@yobqSVKYj)%DQrS zn+`dqtCv_`C{zsN%NA7oZcMCurCQ0+kLVql)z`AknEr-XF}1Fd~jpoL+K3ZXIkE@ z?C3lqG1`!-fdlGy!~q+ilE;g*n7ED=g&6SlcFt2NQBA#1Fg)QVl#3OY;jI=Y$F%uVi)M%xyJ+Eb|Z~8$It75Piwk@ zcr{Lg?Yc%Aa?dtRQ3QtC-+UxglAp3RCJvF3=<;AVmj!4^JM4rUXqIn-O>s|AuLwky zC+r66)(p`m68GO4oA^Tsf}I{+y>_)?11{kRQ8bAlzmFBew<$OSdhFPv=WR9#mX=1J zgd2nu+~d(#?0y0klwx9GjyKFVh8FGSX0u2oV^{Ip&)8B6+1>Vf zxEFsXBRYF@C4Rk4G)Gv;z$bULqyBjBhw@I$YO#e!#%q&qXcI5pP2cu7(Jy8+?b16A zCl+D}>>fHImNeR*JHB3v zTzZ}Kw!4sII7{P8jHFe`A$y(g4txEq(Nx>v=E5}0OONPqw z>q^efGtvgVc=*}wR=bO>Trl`hEvYFZFwXlH-?ssnD*r`ijkpTye_D?~W_oSgtX;## zU6RS`>C4Mqna5Hn5^5yI#}_vzPQYd7RfJ!oo@WQ2CC`5rb4K77efoAb9aO{(YE&O@ zK#1>bYx^)#6h7j_Rh3Macw{=Sq%YAJDZPrst_NO6ngJ6+M5|NS0k%A01RGRwFtJ%Q z7@Gr-NcNWRPoX=h?5PuBz}Qmr%^H-i<=HrE(N6J*E4@gJkzQQ%Y+NXEtNIJdJf9m4 zl{cjYJ+Dwu)(M;rf|z8zhwQ*Nkv)V2T9~8HVZ#7~i%x(LXm^R;O2Ib4XM@mL+15~* zWi}tOr(KeHNTUE2Spf-wx&pm7w7_~pK6?O3%XPVyxBYPdb~m(}3%_k_%3Inbj$XnA z5*wYu8MKP2I8Wmy%^|!*1|qlYLh?;7n}|NTOnfcq9}kd=W_%O(nK2O>qAx8g1b&fK zq`6e55n9G6ghU|h!{h_)z*p7SU+1Q6c=pkthx0kCf(Aqga#=UCE zxmix5eQJu^|NVpcGotNDVJ}4+3K9UE1!-NRQeb*9kVJoRe(U()rS6RXWQP!gY1U2m zOYoCIdeb;ve7g{4sIqP`4i7zbAOj;I_)zWXyw3PjrxN#BI$w@2gEY7NfRT0 z_;gk#>V*fLQrO?x!~NznWc1*>NSAFLHMe4Q#ySqcThTla`y;*4)$O1rbwKWj!dS!W zKEV?77y6O!{ia`aSxhF18V}GGoyBgyf5h5a66k|V6nV(lJVe766t8G;+1m~&MeCU| zf~+5d=6@npca@ou3tIUD#eq6)=YpR0IY$ADB*fu_X9&fkhaEI8Lm0ts+Gy3$OPq*# zie3;Rb#>sCB};XY*uI7=pG!EXi=a?#K zvDo5#hZGs9C#Zk;#YEX&M8NG@sJ@$hH@}GYmEL61mB0}ZJsn?=JpacmmdSydo|wHR zd>Z$@OU|QZFoX2$C*rewiZ<1D00wN-^OT1TansKq`|==!)0KTaZ0tN4Y36(5t&VXc z&rXcL(rX{wVpXt2Uf}`v45rf67YOkmI?};ObEMIn(CVH>I4ju#X;ZP`uAR|F-SPJ{ z2Vj3%4nF+0N!{?$U!SACYx0S%#ipy8C_I235UmbqnCz-2T^4a3CIWl!O+)=64@VIkXVF@T@BF1y#=rx9S z<|t-|a)7)XF&5oK7J3r{VgXamFi|u+Q8nm+O@8b6-tXNip|7_h%XEwY$R9z&P2gPj z;Ns`~*HC)s3WR{H;*qK*IzA?;>08<+5~mQ7OAX6qa)>-HZ8;n1td}3Q6<~Vl;h4Y~ zQZa2nKohkzg6y1c1c{w2VwbQhDn}1`uXNU8g;dA;hWw5?;16K>pLlKiVkh|u0j=Vk z*D3;<-wluJ=Q1d!`xZd$<+w|8DOJYFFXc^nI=Bl8 z`hi)s4tY`^GwjPap8#>{x?=2S$DI?&QA!CkqVmo)hH?GMiKudsMe_ka7+t7Hvy$4+ z{MM>ec=;t4pJ!0PZ)`b(9JNF=gGI&+-KTV%*z;br4*5EmA;M2{9Bu4pK)QG!<=_IXn{q2=S|IkFA^IiFo@(JePLQ{h-ve-{3xe>f+&RXTx2;hemlGx(;gY~G zus&N7Xq^1eVBgEgf2!~kas%o-F(^g=|2B>8!3XE*b^TmA>bzc%wWgT9ZQVNAqQLHD zi^Z;Pco(`)|2n8!f7rddX~)dv$#@v5gT3}61^gAlX_0%Uy9%{!+WOX(x4{b)k4G$x zK@rgRyx$Hn_vz}W@6+&8mrceD*MVMQ)L8>4&E1V@jS=-=)xYK1zs2SAfdj^pCv%ND z&g9!D*~=_upxF1i@2O3a_O?a(&ks0-BsP;YfRh8SDNP>ci9I+lvI~UhK%1>E$ZtA; zZ*r>Y$K%FOj044@8D)3uH!8$#bD1{z*lrW(SYp*Y;EWa z^f1;z)i%66e*y~%9kSrQxpLpga~oHqL8H>iqnRuSiFWgtotYmEVRA@>=PU zyb8U6tZ^qm@6_*(;i-qZ-h%dYthvqutpGYt)?w@-%}YKW$`02_%p+=*?W|kC1yb;{jfd6!0~hs65_x72 zTJN{+y`irWBZi_FS8`5yK8%r@Uekj$%3VNq{<A{)61>(@$GBTBi~$ehQA*P;pvxW0yNq-k^w`S3v23KO(GQ@`2!`9}_b1 z0`V4%1DA432~7NF8bs@qqW>+Ly>D|DwT4{|=uhY~jf^4gX_U`rzVs9B z#C4~K_xz$E>&72;QTU!B&cNA@k)uGE8x zH5i{kIGmx|c-=(gTT>PB&}A~fIg@mk9=(1M18IxTurP&UJMBHH)ys)@TOGQHb2P8bU724);3em z7Q6t7G@A-GGtHu+;D5Bai4g1F;WUV;s`y+IjeOdjPS7l{^_-l5P+ScWUphjn$*{jK zK4yl;A>YovC}?VdYFE}F?gf3ODI8mqLscp->U(Ruxz7fQoN5Dn+L)iQuvwuM=n*3~^O23BxZ4pl zoh}IXnniXZLH%FC)ner#QiGcw0gcuoQ9|ds*lK!AoEKXk;Ht{!65G1ieDfj~t3Y^fx{KJBMe~N&IC0l1$b= z{yT?YOdv2xdnIT{DxS_RW_F6d9URSmyI7eyCppGp1OCS@gwSA$pKywiqV6GODa^}ym3ZWTT`#`1NWg{L*Fx#Zc6)ZHw&@n754*k#aDTw z6f@1dW@_s7$@khJZ|D2#NCPBo&T!4=&a}NPq0-Stt!;V9Wumg=j(XCj#WoD8Pf3uT(Yn3QD{QQ~UVC4SL?%%^5`^z=@PZr~y-Nsq#Mca@~D z=ZUS_!Wa{ApMq=-GI0n2^dDSTiJI2oOg{wxhc;cij;;EdmAq)``9|SJO$>oS>OW5w z@A>RDY0C{+GcHYd>T?G0o^j#2*asaykjjNDusWx4i;d}6*9=!_i zgT>bGo5S&EpPb@Ml?R;iOxbJB-Dzo|N!%kTWw(9`jFeenDjp9j5 z-;n2=TZ5tk2agEW13c-<8|V^=;WG<7g7>~%TyYJk85mi~o{A^!IO?;EpAyIc+GmM# zjuv4Bz9o7NoAPQk`+VAUTGV_Qx(?7B6{nK>rZ#EE<2VgZ+GqyfGBVySJ#{7!JBmq5 z`<m*mO8h)F4$nxiA-3n;dYjC@-qQ?coB~RQ>j*e}X7J#T zqjrb}A|0hz==2`t&I*Vm*TXS(w%NEf7@HGDr{nwJ?uQ}qt_nSpAEoutVOJN0{z*UW zri|~0G|Lg{ao_G!=x(jF_s^{}+Wp@baOHr!I`bcYMjrD2=j}0*kkX)%s4DT2c9Spx z1^!1u@sugx!%cw!@$q(@-2}SVnVmLLYE@&Mvu zuCu0sT&of|&F9@OLgXQT&Q_wRCXIhMtJVJ?%=n{#3b&Nu#70+wsD4MaVoDYtVE(M0 zU>)PI7XTCd{B1Uo;WK*K!LdY#ie;ZOkpleKSFTkj-t}eFsFD5qr|F08t@0w{_5^zA zvMi`+T%TkP&F_Rv+cNU`f?C6eV8QFm>WO3SfGf=pNq=IjryxxG19g2<4)-VbSp?_K z^*?D)b#A^)H2#G4k3xvi$fxeofZ=D0m)%;BK=dv~!M-~JXeL9?LJ%Qnr|SX`Bdo)1 zQcy5RR`=Qz2DDCno*rt#2PfaazI+!w2XsR!40qb&{5=YSSXb)$d;3ObBWC+ zz$S@cuj@8jWHhd*$7j5N)5ZyhHkA61_DHN|5R$llYcr;IC_Dmo4zhwRAdb-bXF*Zc zMjV^IKl6bAio!*3*{$t?O%NAv8m0kf579Qt19UH<9PL`mPRox?gf)z;ou)OfCZUI$ z(mi)L39BjTIdRm{(Xz4~BQl?|9|msMRUL8aNOYj4VIac=D@*F z3FemjH?lJ+gOk+?4*Ci<@?Clu9YRS}F)Lb8EDj zI%?x3M?3n&kA_9tZa~}0NJsXI1jy24r?MDnt?h#8aF9d(O03<^9;N&fDU3RjkEYM4 zx|Ce~yLQq#(mbr)KAtht!G2?H2~YlJuaBAoD~Phv?2&Vals20t0Y_nnDE+nD9V+xbckn`PQizg=u<@=qvg7+BZ&;K4&- z)12WVcrg>g@i`WR#y_78%b0cQf=Nbj{%h0hbEu~pUb=VD2 zD1}TX8x~5or_99T#xc=Jr)VR?>D!{SEgRzw>Ix+dzBug{_?d_Qfz+GufpddCwmPS0 zG4C+d)E#M(+;zG@D`=9J$(LY(+FE00{n4;HOh6exY3}8`0@%c_Qb^b_u9_FJ8a$?- zx7~&s?`CMR&P8;7=sfA>~)gFu-WM3_Fnvj_vFKwe3F$zUIA`8MarHQiio zML6%qsEmci4PX&5^X*Kx?2jLde)5R<7a$~;H_@;KOfXdwO+t~2$xBk?xk-1;4Zqff z5Ig!75;qaiMkAumq@$l$CZ#FiVcwt?>rn|gsIyaNZWTG@I%O{3|19`LUq$v&Y5pcw zbbHc~)jJpYDWxa#e!ha`DrcX~0KAb`((_1o(@m{#YWssg!`kHG;c9K<0hptC_fstTegRU zdbSPVDBNJ(dP}M#>DL$SeMWa1`CKT)SZx?_=g4(2#6AN&7^+(q^%7AuhU0!-MHl0$ zqB*CAN=ls5_&x1Xeh7!)G4wwE8|Joq|4mpf;zzUBeK&t?tx)#8z_X!WGOl|sep~SM%br~?8p9i<3O`;B@7?h&*VCVA zlAgfC2#5cZ8Hy8GwKBiGKbDYeAkx!&*u3*r#F}iG?);>ezB>Cmr;5qh^mji@urT}V zzT*Om+_r%F`x$OqeakZ| zEVfr%`L5IZXlLN1Lx$X$+~*?=bbBH!DkWE20Z&T{tCU_B5$>9N<-1b_)B4t9h0o5F zdg(TV#T=ZS;k;e9y5Pt(cf%BKR`r}pq4b=}Y5!VT0!2?uu5S_u400^GsdDb9m9+E0 z!adTPK5T5=_*&)oy9xJVF2%9jIC6B{IhfKk_L`{##PdAGvbj`=i^IWZR_QpWl7Pcg=0J zJdXRWYv_wxuM9&rzRW2JGR-w|x_nY# z<=SNhGv@xPUGak-)aewAOnebMxo7T5*2xJ~5sH(o<|VTno-QCHVnY?OyJ(A_%xV22|PmuFy5Loq4F zbn=14O2GRnAPT`JqXT`o28eY~6n?e@Ds-2HoD|K#Fb8;4J*ux(Su;#_u$P+r-dY)C zr!4&NVqjo7q8KG?4^rt3Rs}x`7pTe(MU{{v!(@9$53u_Y$Fedo=%c9eaGv~Nsp#bX zrKZw|Qzy|aw3&Q=X)G)FaK6co%S4&(0!>{iH(AqD5o|i*h3ecgtD2iT%f}LQn+*k&&g8+CA4~io72&f{q$+MPgNt=I$tt?_-P(o3-eDeL} zb~4BdUr=p(QaSm-a@oliRgmn07(irTP(U$gQ#DYb%;cRbeLJSP@D2g_Aft}^w z4bGV|h+z=)bmG(tRv5ohM+VWmVqgFcl)&>R1H<7ykRoiOCSu@#Ml?*(!|=$Y$pygP knZ_y|X>dsb%+p7C7#K8Aj2D}nzsiA2h?jxk#2k>V0F7~z=l}o! diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 09523c0e54..37f853b1c8 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6d6b..faf93008b7 100755 --- a/gradlew +++ b/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -206,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. From b3e94f4d12584557b62e210a35c3f6419588e344 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Apr 2025 11:33:42 +0000 Subject: [PATCH 343/345] Add performance results for commit 14c9136a6a33103f69f86f39bcd486bcae2ff525 --- ...a33103f69f86f39bcd486bcae2ff525-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json diff --git a/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json b/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json new file mode 100644 index 0000000000..3751f422c6 --- /dev/null +++ b/performance-results/2025-04-06T11:33:26Z-14c9136a6a33103f69f86f39bcd486bcae2ff525-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.3957352409364385, + "scoreError" : 0.015684974253292697, + "scoreConfidence" : [ + 3.380050266683146, + 3.411420215189731 + ], + "scorePercentiles" : { + "0.0" : 3.392976664184572, + "50.0" : 3.395705894477954, + "90.0" : 3.3985525106052745, + "95.0" : 3.3985525106052745, + "99.0" : 3.3985525106052745, + "99.9" : 3.3985525106052745, + "99.99" : 3.3985525106052745, + "99.999" : 3.3985525106052745, + "99.9999" : 3.3985525106052745, + "100.0" : 3.3985525106052745 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.394674778427625, + 3.3967370105282826 + ], + [ + 3.392976664184572, + 3.3985525106052745 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.715366014713939, + "scoreError" : 0.022445605539527534, + "scoreConfidence" : [ + 1.6929204091744114, + 1.7378116202534664 + ], + "scorePercentiles" : { + "0.0" : 1.7114341422770996, + "50.0" : 1.7154414395911841, + "90.0" : 1.7191470373962887, + "95.0" : 1.7191470373962887, + "99.0" : 1.7191470373962887, + "99.9" : 1.7191470373962887, + "99.99" : 1.7191470373962887, + "99.999" : 1.7191470373962887, + "99.9999" : 1.7191470373962887, + "100.0" : 1.7191470373962887 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7114341422770996, + 1.7136486614788984 + ], + [ + 1.7172342177034698, + 1.7191470373962887 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8623839906524824, + "scoreError" : 0.017881712405582097, + "scoreConfidence" : [ + 0.8445022782469003, + 0.8802657030580645 + ], + "scorePercentiles" : { + "0.0" : 0.8590144212325085, + "50.0" : 0.8627068784950527, + "90.0" : 0.865107784387316, + "95.0" : 0.865107784387316, + "99.0" : 0.865107784387316, + "99.9" : 0.865107784387316, + "99.99" : 0.865107784387316, + "99.999" : 0.865107784387316, + "99.9999" : 0.865107784387316, + "100.0" : 0.865107784387316 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8641194770854608, + 0.865107784387316 + ], + [ + 0.8590144212325085, + 0.8612942799046445 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.964369759761347, + "scoreError" : 0.14949247492861661, + "scoreConfidence" : [ + 15.81487728483273, + 16.113862234689964 + ], + "scorePercentiles" : { + "0.0" : 15.811852078065343, + "50.0" : 15.958841605607912, + "90.0" : 16.068686757278652, + "95.0" : 16.068686757278652, + "99.0" : 16.068686757278652, + "99.9" : 16.068686757278652, + "99.99" : 16.068686757278652, + "99.999" : 16.068686757278652, + "99.9999" : 16.068686757278652, + "100.0" : 16.068686757278652 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.884122348234245, + 15.892067793051442, + 15.811852078065343 + ], + [ + 16.068686757278652, + 16.02611385854489, + 16.05950077065129 + ], + [ + 16.030228524873884, + 15.958841605607912, + 15.947914101544484 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2632.946473250312, + "scoreError" : 93.99387762333102, + "scoreConfidence" : [ + 2538.952595626981, + 2726.940350873643 + ], + "scorePercentiles" : { + "0.0" : 2573.8895531139106, + "50.0" : 2619.4836853276893, + "90.0" : 2713.525151295088, + "95.0" : 2713.525151295088, + "99.0" : 2713.525151295088, + "99.9" : 2713.525151295088, + "99.99" : 2713.525151295088, + "99.999" : 2713.525151295088, + "99.9999" : 2713.525151295088, + "100.0" : 2713.525151295088 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2621.4226450253977, + 2619.4836853276893, + 2611.349597133837 + ], + [ + 2581.449953604812, + 2578.211708521408, + 2573.8895531139106 + ], + [ + 2697.7887121079466, + 2713.525151295088, + 2699.397253122716 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 69534.66430141217, + "scoreError" : 2801.5518349881327, + "scoreConfidence" : [ + 66733.11246642403, + 72336.2161364003 + ], + "scorePercentiles" : { + "0.0" : 65567.4080996611, + "50.0" : 69961.79605161793, + "90.0" : 71051.43139625118, + "95.0" : 71051.43139625118, + "99.0" : 71051.43139625118, + "99.9" : 71051.43139625118, + "99.99" : 71051.43139625118, + "99.999" : 71051.43139625118, + "99.9999" : 71051.43139625118, + "100.0" : 71051.43139625118 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 68854.52710104783, + 68971.27421927753, + 65567.4080996611 + ], + [ + 69961.79605161793, + 69908.7846493282, + 70055.8954803111 + ], + [ + 70651.62694371553, + 71051.43139625118, + 70789.23477149908 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 324.37714013322415, + "scoreError" : 6.953692403364356, + "scoreConfidence" : [ + 317.4234477298598, + 331.3308325365885 + ], + "scorePercentiles" : { + "0.0" : 317.9794415797697, + "50.0" : 325.6979033805179, + "90.0" : 329.47163983902743, + "95.0" : 329.47163983902743, + "99.0" : 329.47163983902743, + "99.9" : 329.47163983902743, + "99.99" : 329.47163983902743, + "99.999" : 329.47163983902743, + "99.9999" : 329.47163983902743, + "100.0" : 329.47163983902743 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 325.6979033805179, + 326.8589024612708, + 327.71947283667845 + ], + [ + 319.1493847905536, + 317.9794415797697, + 320.4422634820272 + ], + [ + 329.47163983902743, + 327.1995344627017, + 324.87571836647084 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 102.959790420029, + "scoreError" : 2.6836297682130374, + "scoreConfidence" : [ + 100.27616065181596, + 105.64342018824203 + ], + "scorePercentiles" : { + "0.0" : 101.06488807701024, + "50.0" : 102.31342535678377, + "90.0" : 105.815826229701, + "95.0" : 105.815826229701, + "99.0" : 105.815826229701, + "99.9" : 105.815826229701, + "99.99" : 105.815826229701, + "99.999" : 105.815826229701, + "99.9999" : 105.815826229701, + "100.0" : 105.815826229701 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 101.6268312221908, + 102.22420517816848, + 101.06488807701024 + ], + [ + 101.94574008326629, + 102.31342535678377, + 102.68228515975018 + ], + [ + 104.18470572687318, + 104.78020674651705, + 105.815826229701 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06385212124215954, + "scoreError" : 3.980491241938138E-4, + "scoreConfidence" : [ + 0.06345407211796572, + 0.06425017036635336 + ], + "scorePercentiles" : { + "0.0" : 0.06360682266025519, + "50.0" : 0.06375608461533558, + "90.0" : 0.06420885625770495, + "95.0" : 0.06420885625770495, + "99.0" : 0.06420885625770495, + "99.9" : 0.06420885625770495, + "99.99" : 0.06420885625770495, + "99.999" : 0.06420885625770495, + "99.9999" : 0.06420885625770495, + "100.0" : 0.06420885625770495 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.0636074658720113, + 0.06368320890912564, + 0.06400144288283445 + ], + [ + 0.0640410836295172, + 0.06411013171222689, + 0.06420885625770495 + ], + [ + 0.06365399464042469, + 0.06360682266025519, + 0.06375608461533558 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.9662898037091357E-4, + "scoreError" : 2.4763194628361096E-5, + "scoreConfidence" : [ + 3.718657857425525E-4, + 4.2139217499927465E-4 + ], + "scorePercentiles" : { + "0.0" : 3.815935281333288E-4, + "50.0" : 3.910863244286691E-4, + "90.0" : 4.1596443371843373E-4, + "95.0" : 4.1596443371843373E-4, + "99.0" : 4.1596443371843373E-4, + "99.9" : 4.1596443371843373E-4, + "99.99" : 4.1596443371843373E-4, + "99.999" : 4.1596443371843373E-4, + "99.9999" : 4.1596443371843373E-4, + "100.0" : 4.1596443371843373E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 4.1507248171887697E-4, + 4.1596443371843373E-4, + 4.158961915449522E-4 + ], + [ + 3.9249085467373625E-4, + 3.910863244286691E-4, + 3.9028536381353695E-4 + ], + [ + 3.815935281333288E-4, + 3.83322489934839E-4, + 3.839491553718492E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.014256156575693513, + "scoreError" : 1.1832459269240048E-4, + "scoreConfidence" : [ + 0.014137831983001113, + 0.014374481168385913 + ], + "scorePercentiles" : { + "0.0" : 0.014160325917188587, + "50.0" : 0.014281502312143682, + "90.0" : 0.01434438235319431, + "95.0" : 0.01434438235319431, + "99.0" : 0.01434438235319431, + "99.9" : 0.01434438235319431, + "99.99" : 0.01434438235319431, + "99.999" : 0.01434438235319431, + "99.9999" : 0.01434438235319431, + "100.0" : 0.01434438235319431 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014294949020667335, + 0.014281502312143682, + 0.014222103556901898 + ], + [ + 0.01434438235319431, + 0.01433649228420283, + 0.014300185563870207 + ], + [ + 0.01419311983093378, + 0.014160325917188587, + 0.014172348342138978 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9824788631918102, + "scoreError" : 0.015282153141593577, + "scoreConfidence" : [ + 0.9671967100502167, + 0.9977610163334037 + ], + "scorePercentiles" : { + "0.0" : 0.971180237253569, + "50.0" : 0.9812488621467818, + "90.0" : 0.9941125791252485, + "95.0" : 0.9941125791252485, + "99.0" : 0.9941125791252485, + "99.9" : 0.9941125791252485, + "99.99" : 0.9941125791252485, + "99.999" : 0.9941125791252485, + "99.9999" : 0.9941125791252485, + "100.0" : 0.9941125791252485 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.9812488621467818, + 0.9805092572801255, + 0.9850614140070922 + ], + [ + 0.9910779913784561, + 0.9941125791252485, + 0.9935723269746647 + ], + [ + 0.9720085908251531, + 0.9735385097352025, + 0.971180237253569 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01313513390633781, + "scoreError" : 1.7088782952539693E-4, + "scoreConfidence" : [ + 0.012964246076812413, + 0.013306021735863208 + ], + "scorePercentiles" : { + "0.0" : 0.013032883220601843, + "50.0" : 0.013130920356492343, + "90.0" : 0.013206380218375443, + "95.0" : 0.013206380218375443, + "99.0" : 0.013206380218375443, + "99.9" : 0.013206380218375443, + "99.99" : 0.013206380218375443, + "99.999" : 0.013206380218375443, + "99.9999" : 0.013206380218375443, + "100.0" : 0.013206380218375443 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013032883220601843, + 0.01318755262359721, + 0.013206380218375443 + ], + [ + 0.013137456023499675, + 0.013122146662467688, + 0.013124384689485012 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.867786864317754, + "scoreError" : 0.048553694236964026, + "scoreConfidence" : [ + 3.81923317008079, + 3.916340558554718 + ], + "scorePercentiles" : { + "0.0" : 3.8529737359507314, + "50.0" : 3.8585532311495188, + "90.0" : 3.8924816739299613, + "95.0" : 3.8924816739299613, + "99.0" : 3.8924816739299613, + "99.9" : 3.8924816739299613, + "99.99" : 3.8924816739299613, + "99.999" : 3.8924816739299613, + "99.9999" : 3.8924816739299613, + "100.0" : 3.8924816739299613 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8569471233616035, + 3.8600316018518517, + 3.8529737359507314 + ], + [ + 3.857074860447186, + 3.88721219036519, + 3.8924816739299613 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.0750627687740564, + "scoreError" : 0.05511820982963315, + "scoreConfidence" : [ + 3.0199445589444234, + 3.1301809786036894 + ], + "scorePercentiles" : { + "0.0" : 3.0299908679188126, + "50.0" : 3.064409943627451, + "90.0" : 3.135634054231975, + "95.0" : 3.135634054231975, + "99.0" : 3.135634054231975, + "99.9" : 3.135634054231975, + "99.99" : 3.135634054231975, + "99.999" : 3.135634054231975, + "99.9999" : 3.135634054231975, + "100.0" : 3.135634054231975 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0817256949152543, + 3.0892173233477456, + 3.1099776281094527 + ], + [ + 3.0299908679188126, + 3.064409943627451, + 3.135634054231975 + ], + [ + 3.063156679019908, + 3.051907723527617, + 3.0495450042682926 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.17707974113798844, + "scoreError" : 0.001753183598704396, + "scoreConfidence" : [ + 0.17532655753928406, + 0.17883292473669282 + ], + "scorePercentiles" : { + "0.0" : 0.17542807671256908, + "50.0" : 0.17744374794612913, + "90.0" : 0.17834795757165023, + "95.0" : 0.17834795757165023, + "99.0" : 0.17834795757165023, + "99.9" : 0.17834795757165023, + "99.99" : 0.17834795757165023, + "99.999" : 0.17834795757165023, + "99.9999" : 0.17834795757165023, + "100.0" : 0.17834795757165023 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.17542807671256908, + 0.17567099878790007, + 0.17622787493391603 + ], + [ + 0.17834795757165023, + 0.17778623739088695, + 0.1777325394021256 + ], + [ + 0.17783960020984493, + 0.17744374794612913, + 0.17724063728687392 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3291669764763291, + "scoreError" : 0.007571788356830977, + "scoreConfidence" : [ + 0.3215951881194981, + 0.33673876483316006 + ], + "scorePercentiles" : { + "0.0" : 0.3241040484848485, + "50.0" : 0.32796601954611043, + "90.0" : 0.3354437538239635, + "95.0" : 0.3354437538239635, + "99.0" : 0.3354437538239635, + "99.9" : 0.3354437538239635, + "99.99" : 0.3354437538239635, + "99.999" : 0.3354437538239635, + "99.9999" : 0.3354437538239635, + "100.0" : 0.3354437538239635 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3354437538239635, + 0.3346651346964728, + 0.3344965017894772 + ], + [ + 0.3279725352399069, + 0.3277535350353959, + 0.32796601954611043 + ], + [ + 0.32507591015180576, + 0.3241040484848485, + 0.32502534951898077 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16062776080834268, + "scoreError" : 0.005431148276752742, + "scoreConfidence" : [ + 0.15519661253158995, + 0.1660589090850954 + ], + "scorePercentiles" : { + "0.0" : 0.1560528020661028, + "50.0" : 0.16137011350470382, + "90.0" : 0.16436436313730646, + "95.0" : 0.16436436313730646, + "99.0" : 0.16436436313730646, + "99.9" : 0.16436436313730646, + "99.99" : 0.16436436313730646, + "99.999" : 0.16436436313730646, + "99.9999" : 0.16436436313730646, + "100.0" : 0.16436436313730646 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1570186333689235, + 0.1567735383614473, + 0.1560528020661028 + ], + [ + 0.16436436313730646, + 0.16383697162423408, + 0.16358005905157608 + ], + [ + 0.161679944674384, + 0.16137011350470382, + 0.160973421486406 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3903617858409897, + "scoreError" : 0.009828721884524704, + "scoreConfidence" : [ + 0.38053306395646497, + 0.4001905077255144 + ], + "scorePercentiles" : { + "0.0" : 0.3824873031821311, + "50.0" : 0.3917676618349918, + "90.0" : 0.39610914148776044, + "95.0" : 0.39610914148776044, + "99.0" : 0.39610914148776044, + "99.9" : 0.39610914148776044, + "99.99" : 0.39610914148776044, + "99.999" : 0.39610914148776044, + "99.9999" : 0.39610914148776044, + "100.0" : 0.39610914148776044 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.39610914148776044, + 0.3953911683536296, + 0.39527777813352305 + ], + [ + 0.3824873031821311, + 0.38368207650399017, + 0.3827536854212118 + ], + [ + 0.39533068979285263, + 0.3917676618349918, + 0.39045656785881616 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15819162474581686, + "scoreError" : 0.0048135868130951606, + "scoreConfidence" : [ + 0.1533780379327217, + 0.163005211558912 + ], + "scorePercentiles" : { + "0.0" : 0.15527001720363326, + "50.0" : 0.15726231035241944, + "90.0" : 0.16197077154565037, + "95.0" : 0.16197077154565037, + "99.0" : 0.16197077154565037, + "99.9" : 0.16197077154565037, + "99.99" : 0.16197077154565037, + "99.999" : 0.16197077154565037, + "99.9999" : 0.16197077154565037, + "100.0" : 0.16197077154565037 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.15765723094386025, + 0.15726231035241944, + 0.15718987414137287 + ], + [ + 0.16197077154565037, + 0.16175013906995553, + 0.1617629850048528 + ], + [ + 0.15536635726936582, + 0.15549493718124144, + 0.15527001720363326 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047076397918228714, + "scoreError" : 9.393130932661902E-4, + "scoreConfidence" : [ + 0.046137084824962524, + 0.048015711011494905 + ], + "scorePercentiles" : { + "0.0" : 0.04660691954381909, + "50.0" : 0.04679847674848492, + "90.0" : 0.04791543753354033, + "95.0" : 0.04791543753354033, + "99.0" : 0.04791543753354033, + "99.9" : 0.04791543753354033, + "99.99" : 0.04791543753354033, + "99.999" : 0.04791543753354033, + "99.9999" : 0.04791543753354033, + "100.0" : 0.04791543753354033 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04681345522126048, + 0.04679847674848492, + 0.046763169458395294 + ], + [ + 0.046641739345997954, + 0.04660691954381909, + 0.04662555677971633 + ], + [ + 0.047764110466837977, + 0.047758716166006014, + 0.04791543753354033 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9813602.948911339, + "scoreError" : 123718.98750194644, + "scoreConfidence" : [ + 9689883.961409392, + 9937321.936413286 + ], + "scorePercentiles" : { + "0.0" : 9679557.92843327, + "50.0" : 9822463.236506378, + "90.0" : 9927081.881944444, + "95.0" : 9927081.881944444, + "99.0" : 9927081.881944444, + "99.9" : 9927081.881944444, + "99.99" : 9927081.881944444, + "99.999" : 9927081.881944444, + "99.9999" : 9927081.881944444, + "100.0" : 9927081.881944444 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9872000.78183613, + 9822463.236506378, + 9927081.881944444 + ], + [ + 9853020.666995075, + 9853184.431527093, + 9790321.015655577 + ], + [ + 9679557.92843327, + 9754578.18031189, + 9770218.416992188 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + + From 59195c1099ee18f8600c1b1afc51f454ca519746 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Mon, 7 Apr 2025 09:53:08 +1000 Subject: [PATCH 344/345] cleanup --- .../graphql/execution/ExecutionContext.java | 69 ------------------- 1 file changed, 69 deletions(-) diff --git a/src/main/java/graphql/execution/ExecutionContext.java b/src/main/java/graphql/execution/ExecutionContext.java index b64bdca0bb..a53ae621e1 100644 --- a/src/main/java/graphql/execution/ExecutionContext.java +++ b/src/main/java/graphql/execution/ExecutionContext.java @@ -365,73 +365,4 @@ public EngineRunningState getEngineRunningState() { return engineRunningState; } -// @Internal -// public boolean isRunning() { -// return isRunning.get() > 0; -// } -// -// private void incrementRunning(Throwable throwable) { -// assertTrue(isRunning.get() >= 0); -// if (isRunning.incrementAndGet() == 1) { -// changeOfState(RUNNING); -// } -// } -// -// private void decrementRunning(Throwable throwable) { -// assertTrue(isRunning.get() > 0); -// if (isRunning.decrementAndGet() == 0) { -// changeOfState(NOT_RUNNING); -// } -// } -// -// @Internal -// public void incrementRunning(CompletableFuture cf) { -// cf.whenComplete((result, throwable) -> { -// incrementRunning(throwable); -// }); -// } -// -// @Internal -// public void decrementRunning(CompletableFuture cf) { -// cf.whenComplete((result, throwable) -> { -// decrementRunning(throwable); -// }); -// -// } -// -// @Internal -// public T call(Supplier callable) { -// return call(null, callable); -// } -// -// @Internal -// public T call(Throwable throwable, Supplier callable) { -// incrementRunning(throwable); -// try { -// return callable.get(); -// } finally { -// decrementRunning(throwable); -// } -// } -// -// @Internal -// public void run(Runnable runnable) { -// run(null, runnable); -// } -// -// @Internal -// public void run(Throwable throwable, Runnable runnable) { -// incrementRunning(throwable); -// try { -// runnable.run(); -// } finally { -// decrementRunning(throwable); -// } -// } -// -// private void changeOfState(RunningState runningState) { -// if (engineRunningObserver != null) { -// engineRunningObserver.runningStateChanged(executionId, graphQLContext, runningState); -// } -// } } From d2c45ea3b56d01ad2d64b2d46eeb3e47f41592e7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 7 Apr 2025 01:28:03 +0000 Subject: [PATCH 345/345] Add performance results for commit 154bb89d14e9701d1b9f0764cbf813ba3a3c050a --- ...4e9701d1b9f0764cbf813ba3a3c050a-jdk17.json | 1310 +++++++++++++++++ 1 file changed, 1310 insertions(+) create mode 100644 performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json diff --git a/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json b/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json new file mode 100644 index 0000000000..fb66c07511 --- /dev/null +++ b/performance-results/2025-04-07T01:27:42Z-154bb89d14e9701d1b9f0764cbf813ba3a3c050a-jdk17.json @@ -0,0 +1,1310 @@ +[ + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "5" + }, + "primaryMetric" : { + "score" : 3.4102846934427835, + "scoreError" : 0.029120215772332664, + "scoreConfidence" : [ + 3.381164477670451, + 3.439404909215116 + ], + "scorePercentiles" : { + "0.0" : 3.40421431924695, + "50.0" : 3.411477217299319, + "90.0" : 3.4139700199255474, + "95.0" : 3.4139700199255474, + "99.0" : 3.4139700199255474, + "99.9" : 3.4139700199255474, + "99.99" : 3.4139700199255474, + "99.999" : 3.4139700199255474, + "99.9999" : 3.4139700199255474, + "100.0" : 3.4139700199255474 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 3.40421431924695, + 3.4139700199255474 + ], + [ + 3.4095218102136196, + 3.4134326243850186 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "10" + }, + "primaryMetric" : { + "score" : 1.7221652033520922, + "scoreError" : 0.009478621744532833, + "scoreConfidence" : [ + 1.7126865816075594, + 1.731643825096625 + ], + "scorePercentiles" : { + "0.0" : 1.7203619756019852, + "50.0" : 1.722271370931328, + "90.0" : 1.723756095943728, + "95.0" : 1.723756095943728, + "99.0" : 1.723756095943728, + "99.9" : 1.723756095943728, + "99.99" : 1.723756095943728, + "99.999" : 1.723756095943728, + "99.9999" : 1.723756095943728, + "100.0" : 1.723756095943728 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 1.7228412979004932, + 1.723756095943728 + ], + [ + 1.7203619756019852, + 1.7217014439621625 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ComplexQueryPerformance.benchMarkSimpleQueriesThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 2, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "howManyItems" : "20" + }, + "primaryMetric" : { + "score" : 0.8638167830583094, + "scoreError" : 0.005432486996052623, + "scoreConfidence" : [ + 0.8583842960622569, + 0.869249270054362 + ], + "scorePercentiles" : { + "0.0" : 0.8627272504566224, + "50.0" : 0.8639140939295744, + "90.0" : 0.8647116939174667, + "95.0" : 0.8647116939174667, + "99.0" : 0.8647116939174667, + "99.9" : 0.8647116939174667, + "99.99" : 0.8647116939174667, + "99.999" : 0.8647116939174667, + "99.9999" : 0.8647116939174667, + "100.0" : 0.8647116939174667 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 0.8627272504566224, + 0.8647116939174667 + ], + [ + 0.8641521696201839, + 0.863676018238965 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 15.856427557514358, + "scoreError" : 0.21807549856382044, + "scoreConfidence" : [ + 15.638352058950538, + 16.07450305607818 + ], + "scorePercentiles" : { + "0.0" : 15.681327891325898, + "50.0" : 15.904269221101467, + "90.0" : 16.02142911448296, + "95.0" : 16.02142911448296, + "99.0" : 16.02142911448296, + "99.9" : 16.02142911448296, + "99.99" : 16.02142911448296, + "99.999" : 16.02142911448296, + "99.9999" : 16.02142911448296, + "100.0" : 16.02142911448296 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 15.904269221101467, + 16.02142911448296, + 15.943726644806675 + ], + [ + 15.681327891325898, + 15.700241982223265, + 15.6913767022947 + ], + [ + 15.881763309316872, + 15.936401461123317, + 15.947311690954091 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkThroughput_getImmediateFields", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2615.3268175518824, + "scoreError" : 85.27331964422102, + "scoreConfidence" : [ + 2530.0534979076615, + 2700.6001371961033 + ], + "scorePercentiles" : { + "0.0" : 2550.521812924825, + "50.0" : 2603.3546349283893, + "90.0" : 2682.250838153494, + "95.0" : 2682.250838153494, + "99.0" : 2682.250838153494, + "99.9" : 2682.250838153494, + "99.99" : 2682.250838153494, + "99.999" : 2682.250838153494, + "99.9999" : 2682.250838153494, + "100.0" : 2682.250838153494 + }, + "scoreUnit" : "ops/ms", + "rawData" : [ + [ + 2682.250838153494, + 2674.2071330474264, + 2676.491646172537 + ], + [ + 2573.055142655825, + 2564.6397919711726, + 2550.521812924825 + ], + [ + 2612.447308343581, + 2603.3546349283893, + 2600.9730497696914 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 68682.74721165966, + "scoreError" : 1904.0986389262905, + "scoreConfidence" : [ + 66778.64857273338, + 70586.84585058595 + ], + "scorePercentiles" : { + "0.0" : 67315.78978042262, + "50.0" : 68558.57912756453, + "90.0" : 70108.49357429743, + "95.0" : 70108.49357429743, + "99.0" : 70108.49357429743, + "99.9" : 70108.49357429743, + "99.99" : 70108.49357429743, + "99.999" : 70108.49357429743, + "99.9999" : 70108.49357429743, + "100.0" : 70108.49357429743 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 70081.54631565987, + 69908.33092759324, + 70108.49357429743 + ], + [ + 68695.19237810129, + 68558.57912756453, + 68502.6084660597 + ], + [ + 67315.78978042262, + 67441.95616624445, + 67532.22816899384 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 341.9660588620118, + "scoreError" : 5.428672335615734, + "scoreConfidence" : [ + 336.53738652639606, + 347.3947311976275 + ], + "scorePercentiles" : { + "0.0" : 336.4476621680284, + "50.0" : 342.2783710532269, + "90.0" : 345.6060043253826, + "95.0" : 345.6060043253826, + "99.0" : 345.6060043253826, + "99.9" : 345.6060043253826, + "99.99" : 345.6060043253826, + "99.999" : 345.6060043253826, + "99.9999" : 345.6060043253826, + "100.0" : 345.6060043253826 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 344.6308661866658, + 342.2263703728633, + 339.18226799196634 + ], + [ + 343.869334695566, + 344.96989920298415, + 345.6060043253826 + ], + [ + 342.2783710532269, + 336.4476621680284, + 338.48375376142235 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationThroughput", + "mode" : "thrpt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 102.86025606846653, + "scoreError" : 1.38084080828978, + "scoreConfidence" : [ + 101.47941526017675, + 104.2410968767563 + ], + "scorePercentiles" : { + "0.0" : 101.80541629343892, + "50.0" : 102.80111987931467, + "90.0" : 104.77421204891745, + "95.0" : 104.77421204891745, + "99.0" : 104.77421204891745, + "99.9" : 104.77421204891745, + "99.99" : 104.77421204891745, + "99.999" : 104.77421204891745, + "99.9999" : 104.77421204891745, + "100.0" : 104.77421204891745 + }, + "scoreUnit" : "ops/s", + "rawData" : [ + [ + 102.3242423337249, + 101.80541629343892, + 102.80111987931467 + ], + [ + 104.77421204891745, + 102.62377671322751, + 102.42665569290861 + ], + [ + 102.93712545820337, + 102.90042617995776, + 103.14933001650559 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.06299738431052335, + "scoreError" : 3.244688347044825E-4, + "scoreConfidence" : [ + 0.06267291547581887, + 0.06332185314522783 + ], + "scorePercentiles" : { + "0.0" : 0.06275631095268876, + "50.0" : 0.06303528535589117, + "90.0" : 0.06329175614711299, + "95.0" : 0.06329175614711299, + "99.0" : 0.06329175614711299, + "99.9" : 0.06329175614711299, + "99.99" : 0.06329175614711299, + "99.999" : 0.06329175614711299, + "99.9999" : 0.06329175614711299, + "100.0" : 0.06329175614711299 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.06309860325332525, + 0.06324095105863604, + 0.06305016569991047 + ], + [ + 0.06283930007917657, + 0.06329175614711299, + 0.06303528535589117 + ], + [ + 0.0628358286427014, + 0.06275631095268876, + 0.06282825760526746 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.DFSelectionSetPerformance.benchMarkAvgTime_getImmediateFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 3.733489768801373E-4, + "scoreError" : 7.710948014590726E-6, + "scoreConfidence" : [ + 3.6563802886554656E-4, + 3.81059924894728E-4 + ], + "scorePercentiles" : { + "0.0" : 3.682361400802075E-4, + "50.0" : 3.729608204948727E-4, + "90.0" : 3.8100045308045563E-4, + "95.0" : 3.8100045308045563E-4, + "99.0" : 3.8100045308045563E-4, + "99.9" : 3.8100045308045563E-4, + "99.99" : 3.8100045308045563E-4, + "99.999" : 3.8100045308045563E-4, + "99.9999" : 3.8100045308045563E-4, + "100.0" : 3.8100045308045563E-4 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.682361400802075E-4, + 3.70625831766964E-4, + 3.692070808996729E-4 + ], + [ + 3.6864684928719307E-4, + 3.729608204948727E-4, + 3.7460464471704793E-4 + ], + [ + 3.784421620702325E-4, + 3.8100045308045563E-4, + 3.7641680952458926E-4 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF1Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.01435726879619418, + "scoreError" : 4.0347910114715526E-4, + "scoreConfidence" : [ + 0.013953789695047025, + 0.014760747897341334 + ], + "scorePercentiles" : { + "0.0" : 0.014138349409377849, + "50.0" : 0.01422107446198828, + "90.0" : 0.014705323339239892, + "95.0" : 0.014705323339239892, + "99.0" : 0.014705323339239892, + "99.9" : 0.014705323339239892, + "99.99" : 0.014705323339239892, + "99.999" : 0.014705323339239892, + "99.9999" : 0.014705323339239892, + "100.0" : 0.014705323339239892 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.014220843329512714, + 0.014249974604034115, + 0.01422107446198828 + ], + [ + 0.01465220841904762, + 0.0146646087476152, + 0.014705323339239892 + ], + [ + 0.014192360439900428, + 0.014170676415031508, + 0.014138349409377849 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENF2Performance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 0.9895251951545363, + "scoreError" : 0.011617451159531738, + "scoreConfidence" : [ + 0.9779077439950046, + 1.001142646314068 + ], + "scorePercentiles" : { + "0.0" : 0.9812811987047395, + "50.0" : 0.9870416658112909, + "90.0" : 1.0005223407703852, + "95.0" : 1.0005223407703852, + "99.0" : 1.0005223407703852, + "99.9" : 1.0005223407703852, + "99.99" : 1.0005223407703852, + "99.999" : 1.0005223407703852, + "99.9999" : 1.0005223407703852, + "100.0" : 1.0005223407703852 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 1.0005223407703852, + 0.9968223352272727, + 0.9975727868541792 + ], + [ + 0.9870416658112909, + 0.9846626468097677, + 0.9872980485734031 + ], + [ + 0.9837904186915888, + 0.9867353149481993, + 0.9812811987047395 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "2" + }, + "primaryMetric" : { + "score" : 0.01330986014742821, + "scoreError" : 9.891136536444913E-5, + "scoreConfidence" : [ + 0.013210948782063761, + 0.013408771512792659 + ], + "scorePercentiles" : { + "0.0" : 0.01327384584671746, + "50.0" : 0.013299086737854359, + "90.0" : 0.013362976738343782, + "95.0" : 0.013362976738343782, + "99.0" : 0.013362976738343782, + "99.9" : 0.013362976738343782, + "99.99" : 0.013362976738343782, + "99.999" : 0.013362976738343782, + "99.9999" : 0.013362976738343782, + "100.0" : 0.013362976738343782 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.013294660619516086, + 0.01327384584671746, + 0.01330351285619263 + ], + [ + 0.013281905929416514, + 0.01334225889438279, + 0.013362976738343782 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFDeepIntrospectionPerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 2, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "5 s", + "measurementBatchSize" : 1, + "params" : { + "howDeep" : "10" + }, + "primaryMetric" : { + "score" : 3.8025668235689842, + "scoreError" : 0.06390927980432547, + "scoreConfidence" : [ + 3.738657543764659, + 3.8664761033733095 + ], + "scorePercentiles" : { + "0.0" : 3.7659801807228916, + "50.0" : 3.806910667222677, + "90.0" : 3.8267197444529457, + "95.0" : 3.8267197444529457, + "99.0" : 3.8267197444529457, + "99.9" : 3.8267197444529457, + "99.99" : 3.8267197444529457, + "99.999" : 3.8267197444529457, + "99.9999" : 3.8267197444529457, + "100.0" : 3.8267197444529457 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.8143089107551487, + 3.7659801807228916, + 3.820578360580596 + ], + [ + 3.788301321212121, + 3.799512423690205, + 3.8267197444529457 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.ENFExtraLargePerformance.benchMarkAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "primaryMetric" : { + "score" : 2.9759041347139985, + "scoreError" : 0.10713863758918146, + "scoreConfidence" : [ + 2.868765497124817, + 3.08304277230318 + ], + "scorePercentiles" : { + "0.0" : 2.884954732621863, + "50.0" : 3.000250045290942, + "90.0" : 3.0388375967790946, + "95.0" : 3.0388375967790946, + "99.0" : 3.0388375967790946, + "99.9" : 3.0388375967790946, + "99.99" : 3.0388375967790946, + "99.999" : 3.0388375967790946, + "99.9999" : 3.0388375967790946, + "100.0" : 3.0388375967790946 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 3.0026239456619632, + 3.000250045290942, + 2.9838356843675418 + ], + [ + 2.9118269863173216, + 2.884954732621863, + 2.8888414780473717 + ], + [ + 3.0388375967790946, + 3.038463558323208, + 3.033503185016682 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkDeepAbstractConcrete", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.18603597518816295, + "scoreError" : 0.012679982126799527, + "scoreConfidence" : [ + 0.17335599306136343, + 0.19871595731496247 + ], + "scorePercentiles" : { + "0.0" : 0.17767118692369194, + "50.0" : 0.18524742478187578, + "90.0" : 0.19535688841352633, + "95.0" : 0.19535688841352633, + "99.0" : 0.19535688841352633, + "99.9" : 0.19535688841352633, + "99.99" : 0.19535688841352633, + "99.999" : 0.19535688841352633, + "99.9999" : 0.19535688841352633, + "100.0" : 0.19535688841352633 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.18528033961425158, + 0.18524742478187578, + 0.185177052070217 + ], + [ + 0.17788650417133609, + 0.17767118692369194, + 0.1776996488734096 + ], + [ + 0.19535688841352633, + 0.19508885146312915, + 0.19491588038202903 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.32826031013776114, + "scoreError" : 0.011022615826861565, + "scoreConfidence" : [ + 0.31723769431089954, + 0.33928292596462273 + ], + "scorePercentiles" : { + "0.0" : 0.320983046477291, + "50.0" : 0.32681424316198815, + "90.0" : 0.3371025889769088, + "95.0" : 0.3371025889769088, + "99.0" : 0.3371025889769088, + "99.9" : 0.3371025889769088, + "99.99" : 0.3371025889769088, + "99.999" : 0.3371025889769088, + "99.9999" : 0.3371025889769088, + "100.0" : 0.3371025889769088 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3223364937467767, + 0.320983046477291, + 0.3219397327366964 + ], + [ + 0.3371025889769088, + 0.3363084072305364, + 0.3361761716811779 + ], + [ + 0.32709179727210286, + 0.32681424316198815, + 0.32559030995637167 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkNoOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.16457991754255474, + "scoreError" : 0.010323140494181456, + "scoreConfidence" : [ + 0.1542567770483733, + 0.1749030580367362 + ], + "scorePercentiles" : { + "0.0" : 0.1599626444910103, + "50.0" : 0.1606458390200803, + "90.0" : 0.1729952570276956, + "95.0" : 0.1729952570276956, + "99.0" : 0.1729952570276956, + "99.9" : 0.1729952570276956, + "99.99" : 0.1729952570276956, + "99.999" : 0.1729952570276956, + "99.9999" : 0.1729952570276956, + "100.0" : 0.1729952570276956 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.1729952570276956, + 0.17261480054890047, + 0.17268161886342837 + ], + [ + 0.16080234687248754, + 0.1606458390200803, + 0.16053277127813273 + ], + [ + 0.16059716269732932, + 0.16038681708392807, + 0.1599626444910103 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.3934084316923969, + "scoreError" : 0.008778638315417864, + "scoreConfidence" : [ + 0.38462979337697906, + 0.4021870700078148 + ], + "scorePercentiles" : { + "0.0" : 0.3879532519300151, + "50.0" : 0.39231844958807377, + "90.0" : 0.4034614294359719, + "95.0" : 0.4034614294359719, + "99.0" : 0.4034614294359719, + "99.9" : 0.4034614294359719, + "99.99" : 0.4034614294359719, + "99.999" : 0.4034614294359719, + "99.9999" : 0.4034614294359719, + "100.0" : 0.4034614294359719 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.3972338251439921, + 0.3963039667512087, + 0.3955053498516907 + ], + [ + 0.4034614294359719, + 0.39231844958807377, + 0.3916460862771207 + ], + [ + 0.3881032016144681, + 0.3879532519300151, + 0.3881503246390312 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkOverlapNoFrag", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.15900952508569965, + "scoreError" : 0.0023946034846080585, + "scoreConfidence" : [ + 0.15661492160109158, + 0.16140412857030773 + ], + "scorePercentiles" : { + "0.0" : 0.15720717609884927, + "50.0" : 0.15895266305850936, + "90.0" : 0.16082181456048375, + "95.0" : 0.16082181456048375, + "99.0" : 0.16082181456048375, + "99.9" : 0.16082181456048375, + "99.99" : 0.16082181456048375, + "99.999" : 0.16082181456048375, + "99.9999" : 0.16082181456048375, + "100.0" : 0.16082181456048375 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.16082181456048375, + 0.16076233775419982, + 0.1602524095476179 + ], + [ + 0.15938672460233974, + 0.15895266305850936, + 0.15877954825188148 + ], + [ + 0.15768934277334512, + 0.15723370912407036, + 0.15720717609884927 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.benchmarkRepeatedFields", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 0.047361120540854944, + "scoreError" : 0.0011842744715550232, + "scoreConfidence" : [ + 0.04617684606929992, + 0.04854539501240997 + ], + "scorePercentiles" : { + "0.0" : 0.046548068140666095, + "50.0" : 0.04735400536040686, + "90.0" : 0.04889141967751714, + "95.0" : 0.04889141967751714, + "99.0" : 0.04889141967751714, + "99.9" : 0.04889141967751714, + "99.99" : 0.04889141967751714, + "99.999" : 0.04889141967751714, + "99.9999" : 0.04889141967751714, + "100.0" : 0.04889141967751714 + }, + "scoreUnit" : "ms/op", + "rawData" : [ + [ + 0.04889141967751714, + 0.047445435486855404, + 0.04735400536040686 + ], + [ + 0.047628977833767544, + 0.046628790649202896, + 0.046548068140666095 + ], + [ + 0.04771143517321336, + 0.047044408982495095, + 0.046997543563570054 + ] + ] + }, + "secondaryMetrics" : { + } + }, + { + "jmhVersion" : "1.37", + "benchmark" : "performance.OverlappingFieldValidationPerformance.overlappingFieldValidationAvgTime", + "mode" : "avgt", + "threads" : 1, + "forks" : 3, + "jvm" : "/home/ec2-user/.sdkman/candidates/java/17.0.10-amzn/bin/java", + "jvmArgs" : [ + ], + "jdkVersion" : "17.0.10", + "vmName" : "OpenJDK 64-Bit Server VM", + "vmVersion" : "17.0.10+7-LTS", + "warmupIterations" : 2, + "warmupTime" : "5 s", + "warmupBatchSize" : 1, + "measurementIterations" : 3, + "measurementTime" : "10 s", + "measurementBatchSize" : 1, + "params" : { + "size" : "100" + }, + "primaryMetric" : { + "score" : 9484339.070811357, + "scoreError" : 303876.42890579335, + "scoreConfidence" : [ + 9180462.641905565, + 9788215.49971715 + ], + "scorePercentiles" : { + "0.0" : 9283828.396103896, + "50.0" : 9397674.42629108, + "90.0" : 9777845.836754642, + "95.0" : 9777845.836754642, + "99.0" : 9777845.836754642, + "99.9" : 9777845.836754642, + "99.99" : 9777845.836754642, + "99.999" : 9777845.836754642, + "99.9999" : 9777845.836754642, + "100.0" : 9777845.836754642 + }, + "scoreUnit" : "ns/op", + "rawData" : [ + [ + 9380661.102155576, + 9355213.106641721, + 9283828.396103896 + ], + [ + 9397674.42629108, + 9401537.636278195, + 9390028.017840376 + ], + [ + 9777845.836754642, + 9646593.927675989, + 9725669.187560739 + ] + ] + }, + "secondaryMetrics" : { + } + } +] + +