INC-164514 · Issue 635085
Unnecessary logging removed from startup
Resolved in Pega Version 8.6
The error "SettingMisusageFailure: Database is null" was repeatedly being logged following an update that consolidated error-handling logic for using a third-party custom jar file during the compiling process. This was an unnecessary message for this scenario as the database is often null at the early stages of startup, and SystemSettingsImpl has been updated to skip logging this error.
INC-166498 · Issue 637351
Locking and classmap improvements
Resolved in Pega Version 8.6
Threads were getting stuck inside classMap and tableInformationMap, causing nodes to go down. This was traced to issues with class map performance and locking, and has been resolved by replacing the lock library with a newer version and refactoring the tableInformationMapImpl class to use a concurrent hashmap instead.
INC-85182 · Issue 622326
Process added to clear unneeded requestors from shared pools
Resolved in Pega Version 8.6
Shared service requestor pools were persistently showing a growing count of active requestors when a service was under heavy use, potentially leading to timeouts and exceptions. Investigation showed requestors were moving from active to inactive without updating the pool manager, causing service requestor pools to be held in an inconsistent state with active requestor pools not going down even after completion of service request. To resolve this, a job scheduler process has been added to stabilize the service requestor pools heuristically.
INC-119646 · Issue 563696
RemovePrivateBlockedAndWithdrawnRAQs updated to avoid exception
Resolved in Pega Version 8.4.2
If the method removePrivateBlockedAndWithdrawnRAQs() (present on the AgentRuleUtils.java class) had both the "ignore personal rulesets containing checked out files" and "ignore "Blocked or Withdrawn agent" conditions set, raqsItr.remove(); ran twice and resulted in a java.lang.IllegalStateException. This could lead to undesired outcomes such as agents not showing up properly. To correct this, the code has been refactored to avoid running raqsItr.remove(); more than the necessary number of times.
INC-125193 · Issue 561461
Processed in last hour generated correctly
Resolved in Pega Version 8.4.2
After upgrade, the 'Processed in last hour' for pyFTSIncrementalIndexer (or any other queue processor) did not show the totals processed. This was traced to an error in a declare expression rule, and has been corrected.
INC-128654 · Issue 567410
Queue processor handling updated
Resolved in Pega Version 8.4.2
After upgrade, the queue processors were not processing all the items in the queue, however the value under the 'number of items processed in the last hour' in the Admin studio showed the value was equal to the total number of items in the queue. This was traced to the an incorrect offset kept by the queue processor in the data table (Data-QueueProcessor-Run-Partition). Because the incoming messages from Kafka have a lower offset than the one kept by the queue processor, messages were treated as duplicates and not processed. This has been resolved by adding a partitions-validation mechanism on QP startup. To assist in proper handling, any messages identified as potentially already processed will be moved to the broken messages queue.
SR-D85839 · Issue 550939
Support added for custom Kafka connection properties
Resolved in Pega Version 8.4.2
An enhancement has been added to allow specifying custom Kafka connection properties in the Data-Admin-Kafka data instance to allow connections to external Kafka through the common client configs, ssl configs, and sasl configs.
INC-100288 · Issue 555466
Declaratives disabled during startup
Resolved in Pega Version 8.4.2
Declaratives firing before the engine is fully up can lead to null pointer errors. In order to avoid this condition, declaratives will be disabled during startup so that unnecessary operations can be avoided and system can be started faster.
INC-119678 · Issue 564202
Improved timing for node tracing termination
Resolved in Pega Version 8.4.2
The tracer stopped tracing after tracing a certain number of events. This was due to communication timing issues for tracer events from one node to another node in a multi-node cluster environment, caused by the Tracer Client using the pzMaxEvent property which limited the maximum number of events fetched at a time to 200. Any leftover Events should have been fetched in the next request, but when the consuming node's service ended after the 200 events, the system removed the service requester entry from the distributed Map and disabled remote node tracing as part of cleanup of the service execution. To resolve this, an update has been made so the node tracing will not be terminated until the service execution ends and there are no more events to process.
INC-120356 · Issue 560225
Class Loader cache values wrapped with WeakReference for improved cleanup
Resolved in Pega Version 8.4.2
Out Of Memory exceptions due to Metaspace were observed on Web tier instances running with a max Metaspace size of 2GB. Investigation showed that in PRClassLoaderDB, mLoaderCache values were wrapped with a SoftReference. To resolve this, the Class Loader cache values will be wrapped with a WeakReference, allowing the cache to free memory when it is no longer needed. JVM options has also been added to switch types of References being used if there is a preference.