Skip to content

chore: Refactor proactivity settings according to iris settings v3 #818

chore: Refactor proactivity settings according to iris settings v3

chore: Refactor proactivity settings according to iris settings v3 #818

GitHub Actions / H2 Tests failed Oct 21, 2024 in 0s

8324 passed, 7 failed and 2 skipped

Tests failed
Report exceeded GitHub limit of 65535 bytes and has been trimmed

Annotations

Check failure on line 219 in src/test/java/de/tum/cit/aet/artemis/shared/architecture/module/AbstractModuleRepositoryArchitectureTest.java

See this annotation in the file changed.

@github-actions github-actions / H2 Tests

de.tum.cit.aet.artemis.iris.architecture.IrisRepositoryArchitectureTest ► enforceUsageOfTestRepository()

Failed test found in:
  build/test-results/test/TEST-de.tum.cit.aet.artemis.iris.architecture.IrisRepositoryArchitectureTest.xml
Error:
  java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] - Rule 'classes that reside in a package 'de.tum.cit.aet.artemis.iris..' should not use repositories with subclasses, because Test Repositories should be used over production repositories, if such a repository exist.' was violated (1 times):
Raw output
java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] - Rule 'classes that reside in a package 'de.tum.cit.aet.artemis.iris..' should not use repositories with subclasses, because Test Repositories should be used over production repositories, if such a repository exist.' was violated (1 times):
Test class de.tum.cit.aet.artemis.iris.PyrisEventSystemTest uses repository de.tum.cit.aet.artemis.exercise.repository.SubmissionRepository which has subclasses: [JavaClass{name='de.tum.cit.aet.artemis.exercise.test_repository.SubmissionTestRepository'}]
	at com.tngtech.archunit.lang.ArchRule$Assertions.assertNoViolation(ArchRule.java:94)
	at com.tngtech.archunit.lang.ArchRule$Assertions.check(ArchRule.java:86)
	at com.tngtech.archunit.lang.ArchRule$Factory$SimpleArchRule.check(ArchRule.java:165)
	at de.tum.cit.aet.artemis.shared.architecture.module.AbstractModuleRepositoryArchitectureTest.enforceUsageOfTestRepository(AbstractModuleRepositoryArchitectureTest.java:219)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Check failure on line 171 in src/test/java/de/tum/cit/aet/artemis/iris/PyrisEventSystemTest.java

See this annotation in the file changed.

@github-actions github-actions / H2 Tests

de.tum.cit.aet.artemis.iris.PyrisEventSystemTest ► testShouldFireJolEvent()

Failed test found in:
  build/test-results/test/TEST-de.tum.cit.aet.artemis.iris.PyrisEventSystemTest.xml
Error:
  org.awaitility.core.ConditionTimeoutException: Condition with Lambda expression in de.tum.cit.aet.artemis.iris.PyrisEventSystemTest was not fulfilled within 2 seconds.
Raw output
org.awaitility.core.ConditionTimeoutException: Condition with Lambda expression in de.tum.cit.aet.artemis.iris.PyrisEventSystemTest was not fulfilled within 2 seconds.
	at app//org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:167)
	at app//org.awaitility.core.CallableCondition.await(CallableCondition.java:78)
	at app//org.awaitility.core.CallableCondition.await(CallableCondition.java:26)
	at app//org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1006)
	at app//org.awaitility.core.ConditionFactory.until(ConditionFactory.java:975)
	at app//de.tum.cit.aet.artemis.iris.PyrisEventSystemTest.testShouldFireJolEvent(PyrisEventSystemTest.java:171)
	at [email protected]/java.lang.reflect.Method.invoke(Method.java:580)
	at [email protected]/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194)
	at [email protected]/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at [email protected]/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at [email protected]/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at [email protected]/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at [email protected]/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Check failure on line 59 in src/test/java/de/tum/cit/aet/artemis/iris/settings/IrisSettingsIntegrationTest.java

See this annotation in the file changed.

@github-actions github-actions / H2 Tests

de.tum.cit.aet.artemis.iris.settings.IrisSettingsIntegrationTest ► getMissingSettingsForCourse()

Failed test found in:
  build/test-results/test/TEST-de.tum.cit.aet.artemis.iris.settings.IrisSettingsIntegrationTest.xml
Error:
  java.lang.AssertionError: 
Raw output
java.lang.AssertionError: 
Expecting actual:
  de.tum.cit.aet.artemis.iris.domain.settings.IrisCourseSettings@0
to be equal to:
  de.tum.cit.aet.artemis.iris.domain.settings.IrisCourseSettings@0
when recursively comparing field by field, but found the following difference:

field/property 'irisProactivitySettings.eventSettings' differ:
- actual value  : [de.tum.cit.aet.artemis.iris.domain.settings.event.IrisJolEventSettings@0,
    de.tum.cit.aet.artemis.iris.domain.settings.event.IrisBuildFailedEventSettings@0,
    de.tum.cit.aet.artemis.iris.domain.settings.event.IrisProgressStalledEventSettings@0] (HashSet@415f6ad2)
- expected value: [de.tum.cit.aet.artemis.iris.domain.settings.event.IrisJolEventSettings@0,
    de.tum.cit.aet.artemis.iris.domain.settings.event.IrisBuildFailedEventSettings@0,
    de.tum.cit.aet.artemis.iris.domain.settings.event.IrisProgressStalledEventSettings@0] (HashSet@32f10416)
The following expected elements were not matched in the actual HashSet:
  [de.tum.cit.aet.artemis.iris.domain.settings.event.IrisJolEventSettings@0, de.tum.cit.aet.artemis.iris.domain.settings.event.IrisBuildFailedEventSettings@0, de.tum.cit.aet.artemis.iris.domain.settings.event.IrisProgressStalledEventSettings@0]

The recursive comparison was performed with this configuration:
- the following fields were ignored in the comparison: id, course, irisChatSettings.id, iris_lecture_ingestion_settings_id, irisCompetencyGenerationSettings.id, irisProactivitySettings.id
- no equals methods were used in the comparison EXCEPT for java JDK types since introspecting JDK types is forbidden in java 17+ (use withEqualsForType to register a specific way to compare a JDK type if you need it)
- these types were compared with the following comparators:
  - java.lang.Double -> DoubleComparator[precision=1.0E-15]
  - java.lang.Float -> FloatComparator[precision=1.0E-6]
  - java.nio.file.Path -> lexicographic comparator (Path natural order)
- actual and expected objects and their fields were compared field by field recursively even if they were not of the same type, this allows for example to compare a Person to a PersonDto (call strictTypeChecking(true) to change that behavior).
- the introspection strategy used was: DefaultRecursiveComparisonIntrospectionStrategy

	at de.tum.cit.aet.artemis.iris.settings.IrisSettingsIntegrationTest.getMissingSettingsForCourse(IrisSettingsIntegrationTest.java:59)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Check failure on line 76 in src/test/java/de/tum/cit/aet/artemis/iris/settings/IrisSettingsIntegrationTest.java

See this annotation in the file changed.

@github-actions github-actions / H2 Tests

de.tum.cit.aet.artemis.iris.settings.IrisSettingsIntegrationTest ► getCourseSettings()

Failed test found in:
  build/test-results/test/TEST-de.tum.cit.aet.artemis.iris.settings.IrisSettingsIntegrationTest.xml
Error:
  java.lang.AssertionError: 
Raw output
java.lang.AssertionError: 
Expecting actual:
  de.tum.cit.aet.artemis.iris.domain.settings.IrisCourseSettings@62
to be equal to:
  de.tum.cit.aet.artemis.iris.domain.settings.IrisCourseSettings@62
when recursively comparing field by field, but found the following difference:

field/property 'irisProactivitySettings.eventSettings' differ:
- actual value  : [de.tum.cit.aet.artemis.iris.domain.settings.event.IrisJolEventSettings@b5,
    de.tum.cit.aet.artemis.iris.domain.settings.event.IrisBuildFailedEventSettings@b6,
    de.tum.cit.aet.artemis.iris.domain.settings.event.IrisProgressStalledEventSettings@b7] (HashSet@5d72ddb1)
- expected value: [de.tum.cit.aet.artemis.iris.domain.settings.event.IrisJolEventSettings@b5,
    de.tum.cit.aet.artemis.iris.domain.settings.event.IrisBuildFailedEventSettings@b6,
    de.tum.cit.aet.artemis.iris.domain.settings.event.IrisProgressStalledEventSettings@b7] (PersistentSet@7b6b4a05)
The following expected elements were not matched in the actual HashSet:
  [de.tum.cit.aet.artemis.iris.domain.settings.event.IrisJolEventSettings@b5, de.tum.cit.aet.artemis.iris.domain.settings.event.IrisBuildFailedEventSettings@b6, de.tum.cit.aet.artemis.iris.domain.settings.event.IrisProgressStalledEventSettings@b7]

The recursive comparison was performed with this configuration:
- the following fields were ignored in the comparison: course
- no equals methods were used in the comparison EXCEPT for java JDK types since introspecting JDK types is forbidden in java 17+ (use withEqualsForType to register a specific way to compare a JDK type if you need it)
- these types were compared with the following comparators:
  - java.lang.Double -> DoubleComparator[precision=1.0E-15]
  - java.lang.Float -> FloatComparator[precision=1.0E-6]
  - java.nio.file.Path -> lexicographic comparator (Path natural order)
- actual and expected objects and their fields were compared field by field recursively even if they were not of the same type, this allows for example to compare a Person to a PersonDto (call strictTypeChecking(true) to change that behavior).
- the introspection strategy used was: DefaultRecursiveComparisonIntrospectionStrategy

	at de.tum.cit.aet.artemis.iris.settings.IrisSettingsIntegrationTest.getCourseSettings(IrisSettingsIntegrationTest.java:76)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Check failure on line 206 in src/test/java/de/tum/cit/aet/artemis/shared/architecture/module/AbstractModuleRepositoryArchitectureTest.java

See this annotation in the file changed.

@github-actions github-actions / H2 Tests

de.tum.cit.aet.artemis.programming.architecture.ProgrammingRepositoryArchitectureTest ► usedInProductionCode()

Failed test found in:
  build/test-results/test/TEST-de.tum.cit.aet.artemis.programming.architecture.ProgrammingRepositoryArchitectureTest.xml
Error:
  java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] - Rule 'methods that are declared in classes that reside in a package 'de.tum.cit.aet.artemis.programming..' and are declared in classes that are annotated with @Repository and are declared in classes that  should be used by production code, because methods that are not used in production code should be moved to test repositories' was violated (1 times):
Raw output
java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] - Rule 'methods that are declared in classes that reside in a package 'de.tum.cit.aet.artemis.programming..' and are declared in classes that are annotated with @Repository and are declared in classes that  should be used by production code, because methods that are not used in production code should be moved to test repositories' was violated (1 times):
Method de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseRepository.findWithAllParticipationsById(long) is not used in production code
	at com.tngtech.archunit.lang.ArchRule$Assertions.assertNoViolation(ArchRule.java:94)
	at com.tngtech.archunit.lang.ArchRule$Assertions.check(ArchRule.java:86)
	at com.tngtech.archunit.lang.ArchRule$Factory$SimpleArchRule.check(ArchRule.java:165)
	at de.tum.cit.aet.artemis.shared.architecture.module.AbstractModuleRepositoryArchitectureTest.usedInProductionCode(AbstractModuleRepositoryArchitectureTest.java:206)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Check failure on line 1483 in src/test/java/de/tum/cit/aet/artemis/programming/util/ProgrammingExerciseTestService.java

See this annotation in the file changed.

@github-actions github-actions / H2 Tests

de.tum.cit.aet.artemis.programming.ProgrammingExerciseGitlabJenkinsIntegrationTest ► resumeProgrammingExerciseByTriggeringInstructorBuild_correctInitializationState(ExerciseMode) [2] exerciseMode=TEAM

Failed test found in:
  build/test-results/test/TEST-de.tum.cit.aet.artemis.programming.ProgrammingExerciseGitlabJenkinsIntegrationTest.xml
Error:
  org.awaitility.core.ConditionTimeoutException: Condition with Lambda expression in de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseTestService was not fulfilled within 20 seconds.
Raw output
org.awaitility.core.ConditionTimeoutException: Condition with Lambda expression in de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseTestService was not fulfilled within 20 seconds.
	at app//org.awaitility.core.ConditionAwaiter.await(ConditionAwaiter.java:167)
	at app//org.awaitility.core.CallableCondition.await(CallableCondition.java:78)
	at app//org.awaitility.core.CallableCondition.await(CallableCondition.java:26)
	at app//org.awaitility.core.ConditionFactory.until(ConditionFactory.java:1006)
	at app//org.awaitility.core.ConditionFactory.until(ConditionFactory.java:975)
	at app//de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseTestService.resumeProgrammingExerciseByTriggeringInstructorBuild_correctInitializationState(ProgrammingExerciseTestService.java:1483)
	at app//de.tum.cit.aet.artemis.programming.ProgrammingExerciseGitlabJenkinsIntegrationTest.resumeProgrammingExerciseByTriggeringInstructorBuild_correctInitializationState(ProgrammingExerciseGitlabJenkinsIntegrationTest.java:368)
	at [email protected]/java.lang.reflect.Method.invoke(Method.java:580)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at [email protected]/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
	at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at [email protected]/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at [email protected]/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
	at [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at [email protected]/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at [email protected]/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at [email protected]/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at [email protected]/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
	at [email protected]/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
	at [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at [email protected]/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at [email protected]/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at [email protected]/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at [email protected]/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
	at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at [email protected]/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at [email protected]/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
	at [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at [email protected]/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at [email protected]/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at [email protected]/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at [email protected]/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
	at [email protected]/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
	at [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at [email protected]/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
	at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
	at [email protected]/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at [email protected]/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at [email protected]/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194)
	at [email protected]/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at [email protected]/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at [email protected]/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at [email protected]/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at [email protected]/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Check failure on line 145 in src/test/java/de/tum/cit/aet/artemis/shared/architecture/ArchitectureTest.java

See this annotation in the file changed.

@github-actions github-actions / H2 Tests

de.tum.cit.aet.artemis.shared.architecture.ArchitectureTest ► testNullnessAnnotations()

Failed test found in:
  build/test-results/test/TEST-de.tum.cit.aet.artemis.shared.architecture.ArchitectureTest.xml
Error:
  java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] - Rule 'no code units should be annotated with not Annotation in package jakarta.annotation and Annotation with simple name Nullable' was violated (1 times):
Raw output
java.lang.AssertionError: Architecture Violation [Priority: MEDIUM] - Rule 'no code units should be annotated with not Annotation in package jakarta.annotation and Annotation with simple name Nullable' was violated (1 times):
Method <de.tum.cit.aet.artemis.iris.domain.settings.event.IrisEventSettings.getSelectedEventVariant()> is annotated with not Annotation in package jakarta.annotation and Annotation with simple name Nullable in (IrisEventSettings.java:121)
	at com.tngtech.archunit.lang.ArchRule$Assertions.assertNoViolation(ArchRule.java:94)
	at com.tngtech.archunit.lang.ArchRule$Assertions.check(ArchRule.java:86)
	at com.tngtech.archunit.lang.ArchRule$Factory$SimpleArchRule.check(ArchRule.java:165)
	at com.tngtech.archunit.lang.syntax.ObjectsShouldInternal.check(ObjectsShouldInternal.java:81)
	at de.tum.cit.aet.artemis.shared.architecture.ArchitectureTest.testNullnessAnnotations(ArchitectureTest.java:145)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at java.base/java.util.concurrent.RecursiveAction.exec(RecursiveAction.java:194)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)