Spell Check Dictionary




 
Spell Check Dictionary

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:

  1. Upload a Spell Checker file via System Admin > Spell Check dictionaries into any B2 cache enabled SaaS System.
  2. Make it available > go to a Course > create an Content Item.
  3. In the VTBE page, Selected the uploaded Spell Checker under Spell Check option and start typing. Observe that everything works fine.
  4. Initiate a rolling restart on the System.
  5. Once the server is up, go to a test Course, create content item and start typing the VTBE editor.
Expected Behavior:
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:
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