Introduction:
Failures have been reported to the company caused by StringIndexOutOfBoundsException in a common third party Building Block. This will not be fixed. To prevent these issues set the "Oscelot Basic LTI" B2 to Inactive.
Functionality:
Aside from explicit user-initiated export/archive tasks and the Automatic Archive process, before doing certain actions such as deleting a course, converting it to Ultra or performing B2 to LTI migration on it, the application performs an archive operation. If this essential prologue fails: then the main action usually is also cancelled.
Technologies:
A sample exception is:
Apr 2, 2024 11:01:27 AM - [ERROR] Error: An unexpected error occurred during Basic LTI tools processing.
For more information, consult the detailed log.
Apr 2, 2024 11:01:27 AM - [DEBUG] Debug: java.lang.StringIndexOutOfBoundsException: start 1, end 0, length 0
at java.base/java.lang.AbstractStringBuilder.checkRangeSIOOBE(AbstractStringBuilder.java:1724)
at java.base/java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:1017)
at java.base/java.lang.StringBuilder.substring(StringBuilder.java:89)
at java.base/java.lang.AbstractStringBuilder.substring(AbstractStringBuilder.java:968)
at java.base/java.lang.StringBuilder.substring(StringBuilder.java:89)
at com.spvsoftwareproducts.blackboard.utils.B2Context.processCourseExport(B2Context.java:2878)
at org.oscelot.blackboard.utils.OscBasicLTICxComponent.doExport(OscBasicLTICxComponent.java:242)
The exception "java.lang.StringIndexOutOfBoundsException" is fairly generic and could be caused by various data issues. Look for a stack frame that refers to "com.spvsoftwareproducts" or "org.oscelot.blackboard.utils.OscBasicLTICxComponent" — as shown here on the last and second-to-last lines — to confirm that the issue is the same one described here.
Information:
Steven P. Vickers, the publisher of the B2 in question has indicated that the B2 is EOL:
- https://github.com/celtic-project/bb-basiclti/issues/13
Thus: issues with this B2 will not be fixed. This B2 was granted a temporary exemption to assist customers in converting to the Blackboard Learn 'built-in' support for LTI. The "Oscelot Basic LTI B2" is a third party product and is not necessary for LTI in Learn. As part of the previously announced deprecation of the third-party B2 SDK for removal most third party B2s have already been disabled; a few have been granted extensions.
For information concerning the end of support for third party B2s in Learn refer to KB № 000075625 — Building Block Support Bulletin
Common Issues:
It isn't sufficient to set the building block to unavailable, it should be set to inactive. When a B2 is set to "unavailable" it can still execute code and the issue is occurring because this B2 registers callback 'hooks' with Learn. When the content-exchange event occurs: Learn executes all callbacks to third party b2s. The B2 must be set to inactive.