Uploaded image for project: 'OpenIDM'
  1. OpenIDM
  2. OPENIDM-16530

Concurrent Modification Exception serializing VertexTraversalContext

    XMLWordPrintable

    Details

      Description

      The following stack trace occurs frequently during the org model performance tests on the master:

      [220] Apr 30, 2021 9:45:23.807 PM org.forgerock.openidm.script.registry.ScriptRegistryImpl$ScriptImpl eval
      SEVERE: Script invocation error
      org.forgerock.openidm.script.ScriptThrownException: java.util.ConcurrentModificationException
              at org.forgerock.openidm.script.registry.ScriptRegistryImpl$ScriptImpl.eval(ScriptRegistryImpl.java:842)
              at org.forgerock.openidm.script.registry.ScriptRegistryImpl$ScriptImpl.eval(ScriptRegistryImpl.java:853)
              at org.forgerock.openidm.filter.FilterConditions.lambda$matchScript$0(FilterConditions.java:45)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:81)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:84)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:84)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.openidm.audit.filter.AuditFilter.lambda$filterQuery$4(AuditFilter.java:145)
              at org.forgerock.openidm.audit.filter.AuditFilter.logAuditAccessEntry(AuditFilter.java:177)
              at org.forgerock.openidm.audit.filter.AuditFilter.filterQuery(AuditFilter.java:145)
              at org.forgerock.openidm.router.filter.MutableFilterDecorator.filterQuery(MutableFilterDecorator.java:90)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:82)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.openidm.servlet.internal.DefaultApiVersionFilter.lambda$filterQuery$6(DefaultApiVersionFilter.java:200)
              at org.forgerock.openidm.servlet.internal.DefaultApiVersionFilter.handleRequest(DefaultApiVersionFilter.java:218)
              at org.forgerock.openidm.servlet.internal.DefaultApiVersionFilter.filterQuery(DefaultApiVersionFilter.java:200)
              at org.forgerock.openidm.router.filter.MutableFilterDecorator.filterQuery(MutableFilterDecorator.java:90)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.openidm.servlet.internal.ResourceFilters$3.lambda$filterQuery$4(ResourceFilters.java:194)
              at org.forgerock.openidm.servlet.internal.ResourceFilters$3.handleRequestWithLogging(ResourceFilters.java:222)
              at org.forgerock.openidm.servlet.internal.ResourceFilters$3.filterQuery(ResourceFilters.java:194)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.openidm.router.filter.QueryIdToQueryFilterTransformFilter.filterQuery(QueryIdToQueryFilterTransformFilter.java:258)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:82)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.openidm.router.filter.PassthroughFilter.filterQuery(PassthroughFilter.java:66)
              at org.forgerock.openidm.router.filter.MutableFilterDecorator.filterQuery(MutableFilterDecorator.java:90)
              at org.forgerock.openidm.router.filter.MutableFilterDecorator.filterQuery(MutableFilterDecorator.java:90)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:84)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:84)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.json.resource.FilterChain.handleQuery(FilterChain.java:249)
              at org.forgerock.json.resource.InternalConnection.queryAsync(InternalConnection.java:74)
              at org.forgerock.json.resource.AbstractConnectionWrapper.queryAsync(AbstractConnectionWrapper.java:185)
              at org.forgerock.openidm.servlet.internal.ServletConnectionFactory$InternalConnectionWrapper.lambda$queryAsync$13(ServletConnectionFactory.java:367)
              at org.forgerock.openidm.metrics.MetricsCollector.time(MetricsCollector.java:112)
              at org.forgerock.openidm.servlet.internal.ServletConnectionFactory$InternalConnectionWrapper.time(ServletConnectionFactory.java:289)
              at org.forgerock.openidm.servlet.internal.ServletConnectionFactory$InternalConnectionWrapper.queryAsync(ServletConnectionFactory.java:366)
              at org.forgerock.json.resource.AbstractConnectionWrapper.queryAsync(AbstractConnectionWrapper.java:185)
              at org.forgerock.openidm.relationship.AugmentingIDMConnectionFactoryProxy$ConnectionRequestHandlerAdaptor.handleQuery(AugmentingIDMConnectionFactoryProxy.java:197)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:94)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:84)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:84)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterQuery(Filters.java:84)
              at org.forgerock.json.resource.FilterChain$Cursor.handleQuery(FilterChain.java:92)
              at org.forgerock.json.resource.FilterChain.handleQuery(FilterChain.java:249)
              at org.forgerock.openidm.relationship.AugmentingIDMConnectionFactoryProxy$RequestHandlerConnectionAdaptor.queryAsync(AugmentingIDMConnectionFactoryProxy.java:267)
              at org.forgerock.openidm.relationship.VertexStatePropagator.lambda$queryEdges$4(VertexStatePropagator.java:166)
              at org.forgerock.util.promise.Promises$CompletedPromise.thenAsync(Promises.java:263)
              at org.forgerock.util.promise.Promises$CompletedPromise.thenAsync(Promises.java:227)
              at org.forgerock.openidm.relationship.VertexStatePropagator.queryEdges(VertexStatePropagator.java:165)
              at org.forgerock.openidm.relationship.VertexStatePropagator.processEdges(VertexStatePropagator.java:155)
              at org.forgerock.openidm.relationship.VertexStatePropagator.lambda$propagateVertexStateChange$1(VertexStatePropagator.java:103)
              at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
              at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1603)
              at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
              at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
              at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
              at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
              at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
              at org.forgerock.openidm.relationship.VertexStatePropagator.propagateVertexStateChange(VertexStatePropagator.java:106)
              at org.forgerock.openidm.relationship.EdgeToVertexActionHandler.edgeMutationVertexCommonActions(EdgeToVertexActionHandler.java:274)
              at org.forgerock.openidm.relationship.EdgeToVertexActionHandler.lambda$relationshipNotification$2(EdgeToVertexActionHandler.java:216)
              at org.forgerock.openidm.metrics.MetricsCollector.time(MetricsCollector.java:83)
              at org.forgerock.openidm.metrics.MetricsCollector.time(MetricsCollector.java:98)
              at org.forgerock.openidm.relationship.EdgeToVertexActionHandler.relationshipNotification(EdgeToVertexActionHandler.java:205)
              at org.forgerock.openidm.relationship.EdgeToVertexActionHandler.handleActionRequest(EdgeToVertexActionHandler.java:130)
              at org.forgerock.openidm.managed.ManagedObjectSet.actionInstance(ManagedObjectSet.java:1665)
              at org.forgerock.json.resource.InterfaceCollectionInstance.handleAction(InterfaceCollectionInstance.java:32)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:54)
              at org.forgerock.json.resource.Resources$CollectionInstanceIdContextFilter.filterAction(Resources.java:526)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.FilterChain.handleAction(FilterChain.java:225)
      at org.forgerock.json.resource.Router.handleAction(Router.java:251)
              at org.forgerock.openidm.managed.ManagedObjectService$ManagedObjectSetRequestHandler.handleAction(ManagedObjectService.java:312)
              at org.forgerock.json.resource.Router.handleAction(Router.java:251)
              at org.forgerock.openidm.managed.ManagedObjectService.handleAction(ManagedObjectService.java:554)
              at org.forgerock.json.resource.Router.handleAction(Router.java:251)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:54)
              at org.forgerock.openidm.selfservice.impl.HashKbaFilter.filterAction(HashKbaFilter.java:85)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.ResourceApiVersionRoutingFilter.filterAction(ResourceApiVersionRoutingFilter.java:39)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.FilterChain.handleAction(FilterChain.java:225)
              at org.forgerock.json.resource.Router.handleAction(Router.java:251)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:54)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.openidm.audit.filter.AuditFilter.lambda$filterAction$0(AuditFilter.java:121)
              at org.forgerock.openidm.audit.filter.AuditFilter.logAuditAccessEntry(AuditFilter.java:177)
              at org.forgerock.openidm.audit.filter.AuditFilter.filterAction(AuditFilter.java:121)
              at org.forgerock.openidm.router.filter.MutableFilterDecorator.filterAction(MutableFilterDecorator.java:66)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:42)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.openidm.servlet.internal.DefaultApiVersionFilter.lambda$filterAction$2(DefaultApiVersionFilter.java:176)
              at org.forgerock.openidm.servlet.internal.DefaultApiVersionFilter.handleRequest(DefaultApiVersionFilter.java:218)
              at org.forgerock.openidm.servlet.internal.DefaultApiVersionFilter.filterAction(DefaultApiVersionFilter.java:176)
              at org.forgerock.openidm.router.filter.MutableFilterDecorator.filterAction(MutableFilterDecorator.java:66)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.openidm.servlet.internal.ResourceFilters$3.lambda$filterAction$0(ResourceFilters.java:170)
              at org.forgerock.openidm.servlet.internal.ResourceFilters$3.handleRequestWithLogging(ResourceFilters.java:222)
              at org.forgerock.openidm.servlet.internal.ResourceFilters$3.filterAction(ResourceFilters.java:170)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.openidm.router.filter.QueryIdToQueryFilterTransformFilter.filterAction(QueryIdToQueryFilterTransformFilter.java:221)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:42)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.openidm.router.filter.PassthroughFilter.filterAction(PassthroughFilter.java:42)
              at org.forgerock.openidm.router.filter.MutableFilterDecorator.filterAction(MutableFilterDecorator.java:66)
              at org.forgerock.openidm.router.filter.MutableFilterDecorator.filterAction(MutableFilterDecorator.java:66)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.FilterChain.handleAction(FilterChain.java:225)
              at org.forgerock.json.resource.InternalConnection.actionAsync(InternalConnection.java:29)
              at org.forgerock.json.resource.AbstractConnectionWrapper.actionAsync(AbstractConnectionWrapper.java:74)
              at org.forgerock.openidm.servlet.internal.ServletConnectionFactory$InternalConnectionWrapper.lambda$actionAsync$11(ServletConnectionFactory.java:354)
              at org.forgerock.openidm.metrics.MetricsCollector.time(MetricsCollector.java:112)
              at org.forgerock.openidm.servlet.internal.ServletConnectionFactory$InternalConnectionWrapper.time(ServletConnectionFactory.java:289)
              at org.forgerock.openidm.servlet.internal.ServletConnectionFactory$InternalConnectionWrapper.actionAsync(ServletConnectionFactory.java:354)
              at org.forgerock.json.resource.AbstractConnectionWrapper.actionAsync(AbstractConnectionWrapper.java:74)
              at org.forgerock.openidm.relationship.AugmentingIDMConnectionFactoryProxy$ConnectionRequestHandlerAdaptor.handleAction(AugmentingIDMConnectionFactoryProxy.java:176)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:54)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.Filters$ConditionalFilter.filterAction(Filters.java:44)
              at org.forgerock.json.resource.FilterChain$Cursor.handleAction(FilterChain.java:52)
              at org.forgerock.json.resource.FilterChain.handleAction(FilterChain.java:225)
              at org.forgerock.openidm.relationship.AugmentingIDMConnectionFactoryProxy$RequestHandlerConnectionAdaptor.actionAsync(AugmentingIDMConnectionFactoryProxy.java:231)
              at org.forgerock.json.resource.AbstractAsynchronousConnection.action(AbstractAsynchronousConnection.java:32)
              at org.forgerock.openidm.relationship.VertexStatePropagator.dispatchSignal(VertexStatePropagator.java:202)
              at org.forgerock.openidm.relationship.VertexStatePropagator.lambda$identifySignalTargetAndDispatchSignal$2(VertexStatePropagator.java:116)
              at java.base/java.util.Optional.map(Optional.java:265)
              at org.forgerock.openidm.relationship.VertexStatePropagator.lambda$identifySignalTargetAndDispatchSignal$3(VertexStatePropagator.java:116)
              at java.base/java.util.Optional.map(Optional.java:265)
              at org.forgerock.openidm.relationship.VertexStatePropagator.identifySignalTargetAndDispatchSignal(VertexStatePropagator.java:115)
              at org.forgerock.openidm.relationship.VertexStatePropagator.lambda$propagateVertexStateChange$0(VertexStatePropagator.java:104)
              at org.forgerock.json.resource.InternalConnection.lambda$queryAsync$0(InternalConnection.java:75)
              at org.forgerock.json.resource.Router.lambda$handleQuery$0(Router.java:315)
              at org.forgerock.json.resource.Router.lambda$handleQuery$0(Router.java:315)
              at org.forgerock.json.resource.Router.lambda$handleQuery$0(Router.java:315)
              at org.forgerock.json.resource.Router.lambda$handleQuery$0(Router.java:315)
              at org.forgerock.json.resource.Router.lambda$handleQuery$0(Router.java:315)
              at org.forgerock.openidm.relationship.EdgeCollectionInternals.lambda$queryCollection$3(EdgeCollectionInternals.java:148)
             at org.forgerock.openidm.relationship.impl.augmentation.EdgeFieldAugmentationFilter.lambda$filterQuery$13(EdgeFieldAugmentationFilter.java:225)
              at org.forgerock.openidm.relationship.impl.augmentation.FieldAugmentationFilter.lambda$filterQuery$8(FieldAugmentationFilter.java:173)
              at org.forgerock.openidm.relationship.impl.augmentation.NullArrayFilter.lambda$filterQuery$9(NullArrayFilter.java:112)
              at org.forgerock.json.resource.InternalConnection.lambda$queryAsync$0(InternalConnection.java:75)
              at org.forgerock.json.resource.Router.lambda$handleQuery$0(Router.java:315)
              at org.forgerock.json.resource.Router.lambda$handleQuery$0(Router.java:315)
              at org.forgerock.openidm.repo.opendj.impl.GenericDJTypeHandler.lambda$handleQuery$7(GenericDJTypeHandler.java:259)
              at org.forgerock.json.resource.Router.lambda$handleQuery$0(Router.java:315)
              at org.forgerock.opendj.rest2ldap.RxRequestHandlerAdapter$ToRequestHandlerAdapter.forwardResourceResponse(RxRequestHandlerAdapter.java:220)
              at org.forgerock.opendj.rest2ldap.RxRequestHandlerAdapter$ToRequestHandlerAdapter.lambda$handleQuery$0(RxRequestHandlerAdapter.java:208)
              at io.reactivex.rxjava3.internal.operators.flowable.FlowableDoOnEach$DoOnEachConditionalSubscriber.tryOnNext(FlowableDoOnEach.java:243)
              at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$ObserveOnConditionalSubscriber.runAsync(FlowableObserveOn.java:639)
              at io.reactivex.rxjava3.internal.operators.flowable.FlowableObserveOn$BaseObserveOnSubscriber.run(FlowableObserveOn.java:176)
              at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:322)
              at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.runEager(ExecutorScheduler.java:287)
              at io.reactivex.rxjava3.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:248)
              at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
              at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
              at java.base/java.lang.Thread.run(Thread.java:834)
      Caused by: javax.script.ScriptException: java.util.ConcurrentModificationException
              at org.forgerock.openidm.script.javascript.RhinoScript.eval(RhinoScript.java:266)
              at jdk.internal.reflect.GeneratedMethodAccessor103.invoke(Unknown Source)
              at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.base/java.lang.reflect.Method.invoke(Method.java:566)
              at org.forgerock.openidm.script.registry.ScriptRegistryImpl$LibraryRecord.invoke(ScriptRegistryImpl.java:553)
              at com.sun.proxy.$Proxy48.eval(Unknown Source)
              at org.forgerock.openidm.script.registry.ScriptRegistryImpl$ScriptImpl.eval(ScriptRegistryImpl.java:831)
              ... 179 more
      Caused by: java.util.ConcurrentModificationException
              at java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
              at java.base/java.util.LinkedHashMap$LinkedKeyIterator.next(LinkedHashMap.java:741)
              at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
              at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
              at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
              at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
              at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
              at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
              at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
              at org.forgerock.openidm.relationship.VertexTraversalContext.toJsonValue(VertexTraversalContext.java:176)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.services.context.AbstractContext.toJsonValue(AbstractContext.java:207)
              at org.forgerock.openidm.script.javascript.ScriptableContext.get(ScriptableContext.java:142)
              at org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:2329)
              at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1596)
              at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1589)
              at org.mozilla.javascript.gen.cf38c6ae6198acfbea56802a499614ae678a81ca_router_condition_18._c_script_0(cf38c6ae6198acfbea56802a499614ae678a81ca:router:condition:1)
              at org.mozilla.javascript.gen.cf38c6ae6198acfbea56802a499614ae678a81ca_router_condition_18.call(cf38c6ae6198acfbea56802a499614ae678a81ca:router:condition)
              at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:412)
              at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3578)
              at org.mozilla.javascript.gen.cf38c6ae6198acfbea56802a499614ae678a81ca_router_condition_18.call(cf38c6ae6198acfbea56802a499614ae678a81ca:router:condition)
              at org.mozilla.javascript.gen.cf38c6ae6198acfbea56802a499614ae678a81ca_router_condition_18.exec(cf38c6ae6198acfbea56802a499614ae678a81ca:router:condition)
              at org.forgerock.openidm.script.javascript.RhinoScript.eval(RhinoScript.java:231)
              ... 185 more

      Analysis:

      the context.* performed in router.json ultimately triggers the serialization of the context chain, including the VertexTraversalContext which is currently being mutated with the NodeTraversal instances corresponding additional signal propagations.

      Offhand, I can't see how this could occur other than if the QueryResourceHandler instances handling each of the traversals are invoked concurrently. It is difficult to tell exactly whether this is the case from the stack trace. Additional investigation required.

      This issue possibly affects 7.0, and earlier, versions. It may be that a test, similar to the org model perf test, might be necessary to make this determination. It could be as simple as setting up 10 roles, each with 1000 users, and then creating an assignment referencing each of the 10 roles. The signal propagation semantics for such a test may be sufficiently different as to preclude reproduction.

        Attachments

          Issue Links

            Activity

              People

              dhogan Dirk Hogan
              dhogan Dirk Hogan
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: