SR-D42451 · Issue 518067
ExecuteRDB call updated to use NativeSQL for blob
Resolved in Pega Version 8.2.6
After creating a test activity to clear data set records that used the DataSet-Execute method and passed the data set name and truncate operation, only 51 records were deleted in a single run when the data set had more than 51 records. Investigation showed that for blob tables, the database truncate operation was using executeRDB with an empty results page, i.e. it didn't specify pyMaxRecords, which on some databases might have limited the number affected records. To resolve this, the executeRDB call in the database truncate operation has been modified to use NativeSQL for blob tables.
SR-D45608 · Issue 519901
Correct service instance name passed for data flow in DSMStatus
Resolved in Pega Version 8.2.6
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-D54218 · Issue 518600
Deadlock in static Initialization of IntList resolved
Resolved in Pega Version 8.2.6
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-D57822 · Issue 524199
Internal Cassandra memory leak fixed
Resolved in Pega Version 8.2.6
A memory leak was found on internal Cassandra that caused temporary log files to fill up the heap. This has been resolved by updating the system to ignore non-log files and properly increment the index.
SR-D60268 · Issue 521461
Performance and thread-handling improvements for SSA
Resolved in Pega Version 8.2.6
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-D66397 · Issue 530332
ADM out-of-sync corrected for multi-datacenter Cassandra cluster
Resolved in Pega Version 8.2.6
After setting up the multi-datacenter configuration for a Cassandra cluster that consisted of six nodes in datacenter 1 and three nodes in datacenter 2, failover testing revealed a mismatch in the number of ADM models stored in each datacenter. The mismatch was observed mostly in the number of records present in the "adm_scoringmodel" and "adm_response_commit_log_date_tiered" tables. When Cassandra nodes are down, the other nodes in the cluster will store hints (records to be written) for the down nodes. When these nodes come back online the hints are replayed to those nodes and the data is written. Hints are written for 3 hours, so if a node come back up within 3 hours data is recovered and repairs are not required. The gc_grace_seconds for the above tables that were getting out of sync across the two datacenters was set to zero seconds. The "gc_grace_seconds" attribute is not just used as the time for removal of tombstones, it's also used to set the TTL for records written to the system.hints table. That meant that when the hints were written for the ADM tables for the nodes that were down, they were immediately expired since it was set to 0 and not played back when the terminated nodes restarted and joined the cluster. This has been resolved with this fix for all customers new to this release. Existing customers already on v7.3 or higher will need to complete the local change detailed below:Connect to the Cassandra cluster using cqlsh in the Pega Cassandra distribution and then run ALTER TABLE adm_commitlog.adm_response_commit_log_date_tiered WITH gc_grace_seconds = 86400; to change the relevant setting from zero to the equivalent of one day - the same length of time that the data in the table lives for. This will mean that any hints written can still be used to replay data to another node while the data itself is alive. It does also mean, however, that, given a constant load, a day's worth of expired ADM event data in the table will always be present on the disk, as the tombstones can now not be cleaned up for a day.
SR-D67592 · Issue 528515
Updated handling for saving circumstanced rule by delegated user
Resolved in Pega Version 8.2.6
If a user logged off without checking in the delegation rule, the "Save" and "Check-in" buttons were missing and it was not possible to modify the rule. This was traced to earlier work done to find a true match when editing delegated circumstanced versions of a Decision Table: the parameter match method being used handled empty strings as nulls and failed to match the correct instance in this use case. To resolve this, pzGetResolvedCircumstancedRule has been updated to use the getString() method instead of getStringIfPresent() so that all the empty string values will be seen as empty and not null.
SR-D68558 · Issue 536677
Timing updated for Cassandra session change thread lock
Resolved in Pega Version 8.2.6
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.
SR-D69028 · Issue 528973
Deadlock in static Initialization of IntList resolved
Resolved in Pega Version 8.2.6
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-D69052 · Issue 536099
Nodes cleared on startup to resolve pending joining state
Resolved in Pega Version 8.2.6
ADM nodes were taking a long time to start and ending up stuck in Pending_Joining state. This was traced to a condition where if a node held a lock and restarted, it created a block where others waiting for the lock to be released sat and waited. To resolve this, an update has been added to clear previously held locks on startup.