SR-D34274 · Issue 501380
Elastic Search thread pool size increased
Resolved in Pega Version 8.4
Applications frequently using FTS queries on work items sometimes faced poor response times caused by a backlog of Elastic Search requests queuing up on the util node before being served. Previously, the search thread pool configured value was 1 when the ES is embedded in Pega. In order to improve performance, this thread pool size has been increased in order to take advantage of ES's ability to dynamically determine the number of appropriate threads based on the number of CPU cores.
SR-D36372 · Issue 504747
Force order added to inner join when running a Rules Resolution filter
Resolved in Pega Version 8.4
After upgrade, D_getResolvedWorkStatuses was not loading properly due to a Report Definition that used a Filter by Rule Resolution option timing out on the SQL Server. When the Filter by Rule Resolution option is selected in RD, it will generate a rule resolution query with an inner join which can cause a time out on the SQL Server while it tries to find out the join order for tables with multiple joins. To resolve this, the SQL server will provide a Force order, merge inner join hint option by way of an added DSS reporting/useForceOrderHint. Additionally, reporting/useMergeHintForRRquery should be set on Pega-Reporting to set things up for using the Merge Inner join hint in the query.
SR-D37779 · Issue 514412
DSS setting added to Invalidation query to tune performance
Resolved in Pega Version 8.4
Running a RuleInvalidation query on an SQLServer database with a large amount of data was causing performance issues. To improve performance, a force order hint has been added which can be enabled with the DSS setting racache/useForceOrderHintForInvalidationQuery.
SR-D38588 · Issue 506370
Removed unneeded table name calculation
Resolved in Pega Version 8.4
After giving short names (less than 30 characters) for "To Table", saving did not produce an error, but an error was thrown during Check In. Investigation showed that while checking in the extract rule, a block of code in the Rule-Utility-Function validateTreeProperties was being executed to recompute the pagelist's table name instead of using the name provided by the user. To resolve this, the Rule-Utility-Function has been modified to not execute this block of code during check-in of the extract rule. The validation will be seen during save if the 'To field' has more than 30 characters.
SR-D41368 · Issue 507958
Special character issues resolved with Obj-browse in SQL query generation logic
Resolved in Pega Version 8.4
Two issues were identified with Obj-browse in SQL query generation logic.1. In filter conditions, if the RHS value was set from a parameter and the value started with a DOT (.), the system assumed the RHS value to be a property and formed the resulting SQL query with the fieldname as column on the RHS value in database query filter. Example: filter has .FirstName=".abc", in this case the database query had a filter clause as "where firstname=abc" which was incorrect as ".abc" was a value and not representing any column. This has been resolved by changing the logic to identify whether the value passed is actually a "property" or "a literal starting with DOT character". 2. In filter conditions, if the RHS value with match operator (contains/starts with etc) had both underscores and single quotes, the single quotes were escaped as well as the underscores. Since the database query execution flow used PreparedStatements, single quotes should not be escaped at all as JDBC itself takes care of escaping the single quotes in prepared values. This has been resolved by updating the logic used to escape single quotes when using prepared statements.
SR-D41580 · Issue 512483
Check added for match of tenant ID class and thread
Resolved in Pega Version 8.4
Many bad class exceptions were logged on a multi-tenant system when accessing a worklist or refreshing the browser. This was traced to classDefinitonImpl.getDescendantIter() returning all classes (tenant + shared) because the classDefinition.getTable() API failed to resolve the table for a specific tenant. To resolve this, a condition has been added that will check that the tenant ID of the class matches the tenant ID of the current thread and skip the unmatched classes.
SR-D42645 · Issue 510578
Force order added to inner join when running a Rules Resolution filter
Resolved in Pega Version 8.4
After upgrade, D_getResolvedWorkStatuses was not loading properly due to a Report Definition that used a Filter by Rule Resolution option timing out on the SQL Server. When the Filter by Rule Resolution option is selected in RD, it will generate a rule resolution query with an inner join which can cause a time out on the SQL Server while it tries to find out the join order for tables with multiple joins. To resolve this, the SQL server will provide a Force order, merge inner join hint option by way of an added DSS reporting/useForceOrderHint. Additionally, reporting/useMergeHintForRRquery should be set on Pega-Reporting to set things up for using the Merge Inner join hint in the query.
SR-D42670 · Issue 510184
Force order added to inner join when running a Rules Resolution filter
Resolved in Pega Version 8.4
After upgrade, D_getResolvedWorkStatuses was not loading properly due to a Report Definition that used a Filter by Rule Resolution option timing out on the SQL Server. When the Filter by Rule Resolution option is selected in RD, it will generate a rule resolution query with an inner join which can cause a time out on the SQL Server while it tries to find out the join order for tables with multiple joins. To resolve this, the SQL server will provide a Force order, merge inner join hint option by way of an added DSS reporting/useForceOrderHint. Additionally, reporting/useMergeHintForRRquery should be set on Pega-Reporting to set things up for using the Merge Inner join hint in the query.
SR-D42888 · Issue 511452
ElasticSearch startup modified
Resolved in Pega Version 8.4
Search was broken on the app-tier node due to the Full-text search startup failing during a re-initialization. As part of normal re-initialization, the existing node is shut down and the Elastic Search node started. However, in this case because the shutdown process was not properly invoked, the system attempted to start the second instance of an ES node on the same machine. The shutdown process is reliant on a boolean flag which indicates if the current status of the full-text search initialization is successful: this flag indicated initialization had failed when actually the ES node had started but failed to validate all the cluster level settings due to topology changes in the Pega cluster. In order to avoid this scenario, the restart has been split so that the node can be marked as started but not initialized. This allows the follow-up reinitializations a greater opportunity to succeed. In addition, the shutdown FTS code has been modified to shutdown ES regardless of the search initialization status.
SR-D43105 · Issue 513739
Optimation added for Oracle queries
Resolved in Pega Version 8.4
Certain versions of Oracle may suffer from sporadic poor performance with all_constraints queries. To alleviate this, Pega has been updated to provide some processing optimization where possible in the TableInformationMapImpl function. Additional timing alert and debugging logic has also been added in this class for all platforms, especially for lookupForeignKey.