Skip to main content
Blackboard Help

Performance Improvements

As part of the release, performance optimizations are introduced back into the product as a result of a customer issue or internally found problem. The Blackboard Performance Engineering team is responsible for refactoring under-performing areas of the application and verifying regression improvements based on the optimization.


LRN-66138 - EhcachePeerEventListener.nodeResumed() can flush working caches on other application servers when server rejoins cluster

In a multi-app server environment, when a node is perecived to be evicted from the cluster and joins back the cluster, cache flushing would occur on each node. The fix will make the cache flushing to occur only on the node that leave and join the peers.

LRN-62955 - Course membership caching ineffective in courses

This resolves the issue of clearing of all course membership cached elements when a single course membership element is to be updated. Only the affected course membership element is updated.

LRN-67003 - navAppCache and navItemCache are resetting cached objects on other servers if the cache key is missing

Several navAppCache and navItemCache update operations create unnecessary RMI traffic as a result of cluster cache invalidation operation. These update operations have been identified and fixed not to generate the RMI traffic.

LRN-62954 - Cache framework doesn't have concept of misses, causing excessive database round trips for non-existent keys

This fixes the course membership cache to make sure caching still works even if the user has no course membership. As a result, excessive database calls are avoided.

LRN-65704 - Monitoring Cache efficiency via AdminConsole prevents normal element expiration and are incorrect

LRN-58311 - Notifications processing for users with very many enrollments can consume heap

Heap memory requirement is optimized for notification processing required by the notification portal modules even if the users are enrolled into very many enrollments (e.g. thousands of courses).

LRN-65445 - Performance issue: Delete query causing full scans on eud_item_recipient table

The stale notification data processing stored procedure has been refactored to be more database resource efficient.

LRN-68271 - is taking to long to run, which is allotting for less time to get other priority tasks completed overnight - Eliminate cursors

LRN-63028 - TempKeyMapCleanupTask to clean up records it should NOT be cleaning up

This fixes the unintended clean up of records by TempKeyMapCleanupTask when a snapshot process is running.

LRN-65446 - Commit frequency in stats procedures is far too high

Use a more optimal commit frequency to many expensive stored procedures on the stats database.

LRN-63055 - Extreme database query executions for new BMH client (Ottawa Catholic Bb9.1 SP8) every morning between 8am and 9am

Fixes cache usage bug so Institution Hierarchy related SQL's are invoked efficiently.

Course Delivery

LRN-64635 - Default amount of integration log data kept during purges is way too high

This addressed the root cause for a very large memory requirement when the GUI based log viewer is used or when the log cleanup task runs. When a membership xml feed is processed with debug level SIS logging, the entire membership xml feed was logged for each processed member. With the fix, only the particular member being processed is logged. Also, the Oracle queries use rownum instead of JDBC's setMaxRows, which make the queries much more memory efficient.

Content Collection

LRN-51814 - Application locking issues from XY_PRG_LOCKS_U1

Fixes locking issuse in the Xythos code.

LRN-44388 - Download Package POST /webapps/cmsmain/webui/.zip uses too much memory

Optimizes the memory usage when downloading the content of the root folder in the Content Collection as a .zip file.