INC-174550 · Issue 658395
Alternative pyLabel source for Auto-generated Proposition Filter added as fall back
Resolved in Pega Version 8.6.1
After using save-as to move an offer/action rule containing eligibility criteria into a new ruleset /branch, the criteria disappeared. Proposition Filter has an explicit dependency on relevant records, and in this scenario investigation revealed all of the relevant records had been previously deliberately deleted. Using save-as on auto-generated CDH rules like actions is also not a best practice. To better handle unexpected actions like these and avoid the hard dependency on Relevant Records, when creating the Proposition Filter via the programatic API the system will fall back to reading the label from the sourcePage if is not possible to get the label from Relevant Record.
INC-174933 · Issue 651828
Special characters escaped for use in "is in List" lookups
Resolved in Pega Version 8.6.1
After creating a specific criterion on any proposition using a string property, the "Is In List" operator, and a customer list with one value containing a "$", clicking save or check in resulted in the exception error "Problem invoking function: pega_decisionengine_propositionfilterfua.pzPropositionFilterMethodBody--(PublicAPI,ClipboardPage) java.lang.IllegalArgumentException: Illegal group reference at java.util.regex.Matcher.appendReplacement(Matcher.java:857) ". This has been resolved by escaping regular expression control characters in string replacement, which will allow the use of characters such as the $ sign for "is in List" lookups.
INC-175207 · Issue 655555
Added handling for DSM Services stuck in leaving status after database outage
Resolved in Pega Version 8.6.1
During a database outage, the heartbeat would fail and DSM services would eventually try to enter safe mode and stop. As the first step they would try to change the state to LEAVING, but because the database was down saving the LEAVING state failed and the exception was not handled correctly. This resulted in the rest of the stop operation logic not being executed and the service being stuck in LEAVING. To resolve this, an update h as been made to ensure the service goes to LEAVING_FAILED if anything fails during the stop operation including when setting state to LEAVING_FAILED. The state LEAVING_FAILED will get flushed to the database eventually when it comes back up. This will allow the aggregation service to start from the LEAVING_FAILED state and recover by itself after a database outage.
INC-175707 · Issue 655348
Multi-level strategy gives correct rules during Batch run
Resolved in Pega Version 8.6.1
When using a nested page structure with multi-level strategies that loop through each page and process the customer, a customer with two linked customers A and B had the results of A overridden by B during Batch Processing while single case canvas testing showed the correct results. This was caused by the DSM clipboard page method of carrying the parent page info not supporting the re-use of pages, and has been resolved by adding an enhancement that will sanitize the strategy stage processor to ensure the correct page reference is used.
SR-D37421 · Issue 514593
Cross-site scripting security added to Marketing Offers
Resolved in Pega Version 8.1.8
Cross-site scripting protections have been added to Marketing Offers, which had a potential vulnerability when using Firefox.
SR-D45608 · Issue 519902
Correct service instance name passed for data flow in DSMStatus
Resolved in Pega Version 8.1.8
When using the Connect-HTTP service "DSMStatus" to provide the node and status information as seen on the various tabs of the Designer Studio > Decisioning > Infrastructure > Services landing page, using DataFlow as the service parameter for the HTTP service method resulted in an empty response when the expectation was to get the information regarding the cluster details of Dataflow node type. This was traced to the service instance name not being parsed correctly when used for Data Flow services, and has been resolved by ensuring the correct service instance name is passed for this use.
SR-D47618 · Issue 516300
Statistic rounding error in ADMSnapshot Agent with Oracle corrected
Resolved in Pega Version 8.1.8
While running the ADMSnapshot Agent, the exception "internal.mgmt.Executable) ERROR com.pega.decision.adm.client.ADMException: Failed to complete ADM Data Mart snapshot" was seen. This was traced to an issue with the rounding of performance statistics when using Oracle, and has been resolved.
SR-D54218 · Issue 518599
Deadlock in static Initialization of IntList resolved
Resolved in Pega Version 8.1.8
JVM Deadlock was seen related to the static Initialization of a subclass field in class com.pega.decision.strategy.ssa.runtime.collections.api.IntList . Thread dumps showed threads in RUNNABLE State that were parked to wait for class initialization, and this was traced to a missed sonar alert which failed in multi-threading. To resolve this, the system handling has been updated to prevent potential deadlock.
SR-D60268 · Issue 521460
Performance and thread-handling improvements for SSA
Resolved in Pega Version 8.1.8
The SecureRandom class was used internally by SSAExecutionContext indirectly via UUID generation. Because this exhibited performance issues on some Linux environments, UUID has been replaced with static AtomicLong. In addition, a memory leak was observed when the strategy (SSA) execution resulted in an exception, and the strategy template has been modified to gracefully shutdown the VM under all circumstances. Thread-safety measures have also been tuned to be more fine-grained to reduce the potential thread contention that was seen while borrowing the SSAInterpreter object from SSAInterpreterPool.
SR-D68558 · Issue 536676
Timing updated for Cassandra session change thread lock
Resolved in Pega Version 8.1.8
An issue with unresponsive nodes was traced to the method used for notifications about Cassandra session changes. A thread trying to obtain a Cassandra session acquired a read lock, then if it then determined that a new session had to be created it would also acquire a write lock, preventing other nodes from trying to acquire the session. After creating a session, the thread notified all session change listeners while holding the write lock, causing deadlock with dependent services. To resolve this, the timing has been updated by moving the session change notification to the listeners outside of the section guarded by the lock.