INC-172546 · Issue 652880
Resolved classcast exception with assembled HTML controls
Resolved in Pega Version 8.7
A classcast exception was being generated on login. Investigation showed the Static Assembler was unexpectedly using a different Assembler to assemble the Html control rule. Standard behavior is that StreamBuilderAssembler assembles controls of type StreamBuilder and ControlAssemblerForVTable assembles controls of type ControlBuilder. In this case, static assembly for HTML controls using VTable was performed using StreamBuilderAssembler, causing a classcast exception when using VTable because the instance of the generated.html class was incorrectly inheriting from StreamBuilder (the parent class of ControlBuilder) instead of ControlBuilder which is the specified interface in the generated.html Java code. This has been resolved by updating the system to skip rules of type 'Rule-HTML-Property'(control) during Static Assembly.
INC-196415 · Issue 686313
Performance improvements for revalidate and save
Resolved in Pega Version 8.7
In order to improve performance when working with very large numbers of class definitions, an update has been made to optimize the revalidate and save process by avoiding looking up all classes on the system instead using ClassDefinition for existence and checking ancestor data to ensure class is a Rule- or Data- descendant.
INC-175595 · Issue 652831
Java Bean import updated to handling differences in Java 7 and Java 8
Resolved in Pega Version 8.7
The behavior of the java bean Introspector class is inconsistent across different versions of the JDK when detecting indexed properties built off of java.util.List objects, causing Java Bean import to generate differently in Java 7 and Java 8. This has been resolved by updating PRIndexedPropertyDescriptor to better handle this JDK difference by resolving indexed read and write methods manually using simple reflection.
INC-174716 · Issue 656441
Updated handling for validating/saving circumstanced rule on branch
Resolved in Pega Version 8.7
Using 'save as' for an already circumstanced rule with a new property/template caused the Rule-.DictionaryValidation activity to register the error "StandardValidate-CircumPropAlreadyDefined". The same activity Step did not throw an error when saving into Branch. This was traced to the ruleset name not being the same for the branch ruleset due to having _BRANCH_Branch-Name appended to its name, and has been resolved by adding a condition to check for circumstanced rule in a branch.
INC-196842 · Issue 683766
APIs updated for sending large attachments with MSGraph
Resolved in Pega Version 8.7
Sending mail using MSGraph was failing with the exception "Error during http request" when attachments were greater than 3MB. This was traced to changes made by Microsoft in the Graph API implementation which caused it to throw a runtime exception instead of the expected 413 status code and relevant message for the attachment size. To resolve this, an update has been made to ensure that any attachment larger than 3MB is sent via the Microsoft Outlook API.
INC-183728 · Issue 665133
Oracle handling updated for primary key in upgrade DDL
Resolved in Pega Version 8.7
Previously, when a primary key of a table was created Oracle would automatically create a unique index with the same name as the primary key. However, with the introduction of Oracle 19, an optimization was added which will not do that if there is another unique index on the table which contains the column(s) of the primary key. This difference can cause updates to fail with the error "cannot drop index used for enforcement of unique/primary key". This has been resolved by updating the handling for primary key constraint and the corresponding index name.
INC-161984 · Issue 638858
Web Tier busy threads released on timeout
Resolved in Pega Version 8.7
Tomcat Web Tier Busy Threads were not being correctly released, causing stability and performance problems that included health check pings not receiving a thread to service the request so the node was marked as bad, users were quiesced, and the node replaced. Investigation showed the 'put' on the blocking queue did not time out when the queue was full and waited indefinitely, keeping the thread blocked. To resolve this, the system will use 'offer' on the blocking queue instead of 'put' to force thread release on timeout. In addition, debug logs have been added to understand when the offer (or Put) does not succeed and the state of the queue that is causing this issue; the debug logs for class com.pega.pegarules.session.internal.serverpush.RoboticAutomationImpl should be enabled only if the thread busy issue is observed and for limited time window while actively debugging.
INC-162262 · Issue 654966
Query added to find time zone for MSSQL database
Resolved in Pega Version 8.7
The exception "com.microsoft.sqlserver.jdbc.SQLServerException: xp_regread() returned error 5, 'Access is denied.'" was generated when the AES agent PushDBSizeInfo was being run. This was traced to the GetDBInfo activity trying to retrieve the time zone of the MSSQL database by executing a query that used a Microsoft SQL routine to read the windows registry to get the current time zone. The error was not due to security within the SQL Server, but instead was caused by Microsoft Windows security related to the permissions on the registry keys for the users under which specific SQL Server processes were running. To resolve this, an update has been made to call a different query which will get the time zone for the SQL Server.
INC-172849 · Issue 665983
SortPageList method updated for Obj-Sort
Resolved in Pega Version 8.7
Sorting page lists backed by a node level datapage using Obj-Sort was causing a ConcurrentModificationException. This has been resolved by updating the SorterImpl.sortPageList method to use java7CollectionsSort instead of collectionsSortWithInferenceEngineDisabled.
INC-170599 · Issue 645222
DSS partition count setting made backward compatible
Resolved in Pega Version 8.7
After upgrade, the DSS 'dsm/services/stream/pyTopicPartitionsCount' used to limit the number of partitions was no longer working and instead used the default value of 20. This has been corrected and made backwards compatible.