Support Article
Multi-channel campaign fails with an error
Summary
Multi-channel campaign fails without sending offers.
Error Messages
com.pega.dsm.dnode.api.dataflow.StageException: Exception in stage: Interaction History at com.pega.dsm.dnode.api.dataflow.StageException.create(StageException.java:39) at com.pega.dsm.dnode.api.dataflow.DataFlowStage$StageInputSubscriber.onCompleted(DataFlowStage.java:463) at com.pega.dsm.dnode.api.dataflow.DataFlowExecutor$QueueBasedDataFlowExecutor$5.process(DataFlowExecutor.java:361) at com.pega.dsm.dnode.api.dataflow.DataFlowExecutor$QueueBasedDataFlowExecutor.runEventLoop(DataFlowExecutor.java:201) at com.pega.dsm.dnode.api.dataflow.DataFlow$2.emit(DataFlow.java:312) at com.pega.dsm.dnode.impl.stream.DataObservableImpl.subscribe(DataObservableImpl.java:44) at com.pega.dsm.dnode.impl.dataflow.task.strategy.ExecutionStrategy.executeDataFlow(ExecutionStrategy.java:98) at com.pega.dsm.dnode.impl.dataflow.task.strategy.SinglePartitionExecution.executePartitions(SinglePartitionExecution.java:57) at com.pega.dsm.dnode.impl.dataflow.task.ExecutePartitionsTask.execute(ExecutePartitionsTask.java:11) at com.pega.dsm.dnode.impl.dataflow.task.PickupRunTask$ExecutePartitionsRunnable$1.run(PickupRunTask.java:219) at com.pega.dsm.dnode.impl.dataflow.task.PickupRunTask$ExecutePartitionsRunnable$1.run(PickupRunTask.java:215) at com.pega.dsm.dnode.util.PrpcRunnable.execute(PrpcRunnable.java:52) at com.pega.dsm.dnode.impl.prpc.service.ServiceHelper.executeInPrpcContextInternal(ServiceHelper.java:244) at com.pega.dsm.dnode.impl.prpc.service.ServiceHelper.executeInPrpcContext(ServiceHelper.java:103) at com.pega.dsm.dnode.impl.dataflow.task.PickupRunTask$ExecutePartitionsRunnable.run(PickupRunTask.java:215) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:108) at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:41) at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:77) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at com.pega.dsm.dnode.util.PrpcRunnable$1.run(PrpcRunnable.java:44) at com.pega.dsm.dnode.util.PrpcRunnable$1.run(PrpcRunnable.java:41) at com.pega.dsm.dnode.util.PrpcRunnable.execute(PrpcRunnable.java:52) at com.pega.dsm.dnode.impl.prpc.PrpcThreadFactory$PrpcThread.run(PrpcThreadFactory.java:109) Caused by: java.lang.NoClassDefFoundError: com/pega/pegarules/data/internal/store/RetryPolicy at com.pega.pegarules.data.internal.store.DataStoreManager.getRetryPolicy(DataStoreManager.java:431) at com.pega.pegarules.data.internal.store.DataStoreManager.doInTransaction(DataStoreManager.java:300) at
Steps to Reproduce
Create and run the Multi-channel campaign.
Root Cause
A defect in Pegasystems’ code or rules. The platform leverages a custom class loader which loads classes to the JVM from a database. The DataStoreManager class interfaces with the database and enters a logic that uses the RetryPolicy class when there is no connection to the database. In this scenario, at the point where the connection to the database is lost, the RetryPolicy class cannot be loaded to the JVM by the custom class loader as there is no connection. The fix for this engine defect is to ensure that the RetryPolicy class loads onto the engine on startup and not as required by the database.
Resolution
Perform the following local-change:
Create the below Dynamic System Setting (DSS) and perform a restart:
Ruleset: Pega-EngineSetting
Purpose: prconfig/initialization/preloadengineclasses/default
Value: com.pega.pegarules.data.internal.store.RetryPolicy
Published March 25, 2020 - Updated December 2, 2021
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.