
Spell Check Dictionary
Date Published: Apr 11,2025 Category: Product:Blackboard_Learn_SaaS Article No.: 000059770
Date Published: Apr 11,2025 Category: Product:Blackboard_Learn_SaaS Article No.: 000059770
Producto: Learn SaaS
Versión: SaaS
Descripción: Custom Spell Check dictionary breaks after the server restart on SaaS Systems when B2 cache is enabled.
Pasos para repetir:
- Upload a Spell Checker file via System Admin > Spell Check dictionaries into any B2 cache enabled SaaS System.
- Make it available > go to a Course > create an Content Item.
- In the VTBE page, Selected the uploaded Spell Checker under Spell Check option and start typing. Observe that everything works fine.
- Initiate a rolling restart on the System.
- Once the server is up, go to a test Course, create content item and start typing the VTBE editor.
User should be able to enter text in VTBE editor.
Observed Behavior:
A popup error message occurs:
Error response: {'id':null,'response':[],'error':'java.util.concurrent.ExecutionException: java.io.FileNotFoundException: /usr/local/blackboard/cache/plugins/bb-vtbe-tinymce/webapp/jmyspelldictionaries/-1481002802/sv_SE.aff (No such file or directory)'}.
Síntomas: Sample Error:
Versión de destino: Future Reference
Parche disponible: No
Error response: {'id':null,'response':[],'error':'java.util.concurrent.ExecutionException: java.io.FileNotFoundException: /usr/local/blackboard/cache/plugins/bb-vtbe-tinymce/webapp/jmyspelldictionaries/-1481002802/sv_SE.aff (No such file or directory)'} Stack Trace:
INFO | jvm 1 | 2018/07/04 12:36:25 | Caused by: java.io.FileNotFoundException: /usr/local/blackboard/cache/plugins/bb-vtbe-tinymce/webapp/jmyspelldictionaries/1122604253/sv_SE.aff (No such file or directory) INFO | jvm 1 | 2018/07/04 12:36:25 | at java.io.FileInputStream.open0(Native Method) INFO | jvm 1 | 2018/07/04 12:36:25 | at java.io.FileInputStream.open(FileInputStream.java:195) INFO | jvm 1 | 2018/07/04 12:36:25 | at java.io.FileInputStream.<init>(FileInputStream.java:138) INFO | jvm 1 | 2018/07/04 12:36:25 | at java.io.FileInputStream.<init>(FileInputStream.java:93) INFO | jvm 1 | 2018/07/04 12:36:25 | at org.dts.spell.dictionary.myspell.MySpell.<init>(MySpell.java:140) INFO | jvm 1 | 2018/07/04 12:36:25 | at org.dts.spell.dictionary.OpenOfficeSpellDictionary.initFromFiles(OpenOfficeSpellDictionary.java:190) INFO | jvm 1 | 2018/07/04 12:36:25 | at org.dts.spell.dictionary.OpenOfficeSpellDictionary.access$300(OpenOfficeSpellDictionary.java:31) INFO | jvm 1 | 2018/07/04 12:36:25 | at org.dts.spell.dictionary.OpenOfficeSpellDictionary$4.call(OpenOfficeSpellDictionary.java:176) INFO | jvm 1 | 2018/07/04 12:36:25 | at java.util.concurrent.FutureTask.run(FutureTask.java:266) INFO | jvm 1 | 2018/07/04 12:36:25 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) INFO | jvm 1 | 2018/07/04 12:36:25 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) INFO | jvm 1 | 2018/07/04 12:36:25 | ... 1 more INFO | jvm 1 | 2018/07/04 12:36:25 | INFO | jvm 1 | 2018/07/04 12:37:44 | Jul 04, 2018 12:37:43 PM blackboard.spellcheck.servlet.TinyMCESpellCheckerServlet doPost INFO | jvm 1 | 2018/07/04 12:37:44 | WARNING: java.util.concurrent.ExecutionException: java.io.FileNotFoundException: /usr/local/blackboard/cache/plugins/bb-vtbe-tinymce/webapp/jmyspelldictionaries/1122604253/sv_SE.aff (No such file or directory) INFO | jvm 1 | 2018/07/04 12:37:44 | java.lang.IllegalStateException: java.util.concurrent.ExecutionException: java.io.FileNotFoundException: /usr/local/blackboard/cache/plugins/bb-vtbe-tinymce/webapp/jmyspelldictionaries/1122604253/sv_SE.aff (No such file or directory) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.dts.spell.dictionary.OpenOfficeSpellDictionary.waitToLoad(OpenOfficeSpellDictionary.java:289) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.dts.spell.dictionary.OpenOfficeSpellDictionary.isCorrect(OpenOfficeSpellDictionary.java:257) INFO | jvm 1 | 2018/07/04 12:37:44 | at blackboard.spellcheck.servlet.JMySpellCheckerServlet.loadSpellChecker(JMySpellCheckerServlet.java:147) INFO | jvm 1 | 2018/07/04 12:37:44 | at blackboard.spellcheck.servlet.JMySpellCheckerServlet.getChecker(JMySpellCheckerServlet.java:106) INFO | jvm 1 | 2018/07/04 12:37:44 | at blackboard.spellcheck.servlet.JMySpellCheckerServlet.findMisspelledWords(JMySpellCheckerServlet.java:61) INFO | jvm 1 | 2018/07/04 12:37:44 | at blackboard.spellcheck.servlet.TinyMCESpellCheckerServlet.checkWords(TinyMCESpellCheckerServlet.java:283) INFO | jvm 1 | 2018/07/04 12:37:44 | at blackboard.spellcheck.servlet.TinyMCESpellCheckerServlet.doPost(TinyMCESpellCheckerServlet.java:182) INFO | jvm 1 | 2018/07/04 12:37:44 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) INFO | jvm 1 | 2018/07/04 12:37:44 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) INFO | jvm 1 | 2018/07/04 12:37:44 | at sun.reflect.GeneratedMethodAccessor892.invoke(Unknown Source) INFO | jvm 1 | 2018/07/04 12:37:44 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.lang.reflect.Method.invoke(Method.java:498) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:282) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:279) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.security.AccessController.doPrivileged(Native Method) INFO | jvm 1 | 2018/07/04 12:37:44 | at javax.security.auth.Subject.doAsPrivileged(Subject.java:549) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:314) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:253) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:46) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:148) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:144) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.security.AccessController.doPrivileged(Native Method) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:143) INFO | jvm 1 | 2018/07/04 12:37:44 | at blackboard.platform.servlet.DirectRequestValidationFilter.doFilter(DirectRequestValidationFilter.java:53) INFO | jvm 1 | 2018/07/04 12:37:44 | at sun.reflect.GeneratedMethodAccessor337.invoke(Unknown Source) INFO | jvm 1 | 2018/07/04 12:37:44 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.lang.reflect.Method.invoke(Method.java:498) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:282) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:279) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.security.AccessController.doPrivileged(Native Method) INFO | jvm 1 | 2018/07/04 12:37:44 | at javax.security.auth.Subject.doAsPrivileged(Subject.java:549) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:314) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:253) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:46) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:148) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:144) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.security.AccessController.doPrivileged(Native Method) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:143) INFO | jvm 1 | 2018/07/04 12:37:44 | at blackboard.platform.servlet.ContentIsolationFilter.doFilter(ContentIsolationFilter.java:83) INFO | jvm 1 | 2018/07/04 12:37:44 | at sun.reflect.GeneratedMethodAccessor337.invoke(Unknown Source) .............................. INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) INFO | jvm 1 | 2018/07/04 12:37:44 | at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) INFO | jvm 1 | 2018/07/04 12:37:44 | at java.lang.Thread.run(Thread.java:748)
Versión de destino: Future Reference
Parche disponible: No