INC-139611 · Issue 587600
Timezone.getDefault function replaced for performance improvement
Resolved in Pega Version 8.6
Blocking threads were seen around the GregorianCalendarFactory.clearObject(Object) function, leading to an adverse impact on the performance.TimeZone.getDefault() is a synchronized method call, and under high load this method caused contention when more date-related APIs were invoked. To resolve this, Timezone.getDefault() has been removed and the function has been assigned to a static variable used in the clearObject() API.
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-139810 · Issue 592835
New Rule-Utility-Function added to allow customizing filename formatting in repository
Resolved in Pega Version 8.6
When using S3 as file storage, uploading a file with a name such as "sample.tar.gz" resulted in the file name in the repository being formatted as "sample.tar_.gz" instead of the expected "sample_.tar.gz". This was caused by the handling in pzSaveToRepository, which was meant to include the CaseID for the customer use case of same-name attachments on every instance of a case. In order to handle attachments with multiple file extensions such as "<FILE_NAME>.tar.gz", the logic for the fileName formatting has been moved from pzSaveToRepository to the new Rule-Utility-Function pyFormatAttachmentName so that is is possible to override and customize the behavior.
SR-D81673 · Issue 546395
ClipboardToJSON Serializer enhanced
Resolved in Pega Version 8.3.3
After creating a JSON data transform with the top level structure set to Object and a step that mapped a Pagelist in clipboard to an Array of Objects in JSON, calling the data transform in Serialize mode resulted in a JSON mapping exception. This was a missed usecase for using the JSON serializer with nested pagelists in page, and has been resolved by adding pagegroup support for data transform serialization and skipping pagegroup serialization when automapped.
SR-D50664 · Issue 531686
Support added for tracing PageList during automations
Resolved in Pega Version 8.3.3
When using the out-of-the-box email reply on an email triage case, an exception was observed in the tracer stating "com.pega.pegarules.pub.clipboard.WrongModeException: The property To.pxResults was of mode Page List while com.pega.pegarules.data.internal.clipboard.ClipboardPropertyImpl.getObjectValue() was expecting Java Object mode." This has been resolved by adding support for tracing PageList during automations.
INC-148582 · Issue 607073
Check added to minimize Obj-Open-By-Handle error logging
Resolved in Pega Version 8.6
When using a Data Type with the "Automatically generate a unique id " option, calling the Save-DataPage method by using the savable data page of the data type finished correctly but showed Obj-Open-By-Handle errors on PegaRules.log. Investigation showed the exception was thrown when running the save plan from DataPageSaverImpl: while attempting to run the save plan, the system does not know whether a parameter (pyGUID in this case) will be required to run the save plan or not, meaning that it can't detect any possible error in DataPageSaverImpl. The implementation instead makes a call to db.open to check if an instance exists and hence logs are thrown. To resolve the error logging, a check has been added: if the save-to class has an autogen key and the savable data page instance doesn't have the autogen key in it, the system will directly call pxCreateRecord. This will avoid a call to db.open to check if instance exists and hence no failed logs will be thrown. This partial change will work only for classes having an autogen key and in cases where the page is trying to create a record by intentionally not passing the key.
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-143461 · Issue 601840
Updated JSON DT nested page property handling
Resolved in Pega Version 8.6
In a JSON data transform, when using an "Update page" step on a single-page property, as a child step of an "Append and map to" step where a page list property is given, the page list was populated with only one result but the single-page property was treated like a page list and received multiple results. This has been resolved by updating the ClipboardJSONDeserializer implementation and downstream abstractions to support "clipboard only" relations as properties in nested Page Lists.
INC-144978 · Issue 600589
Updated JSON DT nested page property handling
Resolved in Pega Version 8.6
In a JSON data transform, when using an "Update page" step on a single-page property, as a child step of an "Append and map to" step where a page list property is given, the page list was populated with only one result but the single-page property was treated like a page list and received multiple results. This has been resolved by updating the ClipboardJSONDeserializer implementation and downstream abstractions to support "clipboard only" relations as properties in nested Page Lists.
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.