Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Thread: fetchLanguageNames needs synchronized (frwiki invoke failed gplx.Err: counts do not match) #549

Closed
desb42 opened this issue Aug 13, 2019 · 1 comment

Comments

@desb42
Copy link
Collaborator

desb42 commented Aug 13, 2019

having made the changes for #531 I started a hdump build of frwiki 2019-06-01 and got many errors of the form

20190812_155910.161 invoke failed: Liévin {{#invoke:Biblio|ouvrage}}
 [err 0] <gplx> @g:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:59 vm error: gplx.Err: counts do not match; same key is either added twice, or delete failed: proc=Add_base key=null:mw hash=3 list=10
  stack traceback:
  g:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:53: in function <g:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:52>
  Module:Langue/Data:1: in main chunk
  package.lua:90: in function '__index'
  mw.lua:491: in function '__index'
  mw.lua:779: in function <mw.lua:778>
  Module:Langue:1: in main chunk
  package.lua:90: in function <package.lua:89>
  Module:Biblio/Ouvrage:1: in main chunk
  package.lua:90: in function '__index'
  Module:Biblio:10: in function <Module:Biblio:9>
  mw.lua:531: in function <mw.lua:530>
  [Java]: in function '__index'
  g:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:75: in function <g:/xowa/bin/any/xowa/xtns/Scribunto/engines/Luaj/MWServer.lua:74>
  [Java]: in ?: ttl=Liévin excerpt={{#invoke:Biblio|ouvrage}}
  [trace]:
    gplx.xowa.xtns.scribunto.Scrib_core.Handle_error(Scrib_core.java:226)
    gplx.xowa.xtns.scribunto.engines.luaj.Luaj_engine.Dispatch_as_kv_ary(Luaj_engine.java:84)
    gplx.xowa.xtns.scribunto.engines.luaj.Luaj_engine.CallFunction(Luaj_engine.java:59)
    gplx.xowa.xtns.scribunto.Scrib_core.Invoke(Scrib_core.java:192)
    gplx.xowa.xtns.scribunto.Scrib_invoke_func.Func_evaluate(Scrib_invoke_func.java:80)
    gplx.xowa.parsers.tmpls.Xot_invk_tkn_.Eval_func(Xot_invk_tkn_.java:30)
    gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Xot_invk_tkn.java:258)
    gplx.xowa.parsers.tmpls.Xot_defn_tmpl.Tmpl_evaluate(Xot_defn_tmpl.java:87)
    gplx.xowa.parsers.tmpls.Xot_invk_tkn.Tmpl_evaluate(Xot_invk_tkn.java:288)
    gplx.xowa.parsers.tmpls.Xot_tmpl_wtr.Write_tkn(Xot_tmpl_wtr.java:104)
    gplx.xowa.parsers.tmpls.Xot_tmpl_wtr.Write_tkn(Xot_tmpl_wtr.java:35)
    gplx.xowa.parsers.tmpls.Xot_tmpl_wtr.Write_all(Xot_tmpl_wtr.java:23)
    gplx.xowa.parsers.Xop_parser.Expand_tmpl(Xop_parser.java:50)
    gplx.xowa.parsers.Xop_parser.Expand_tmpl(Xop_parser.java:44)
    gplx.xowa.parsers.Xop_parser.Parse_text_to_wdom(Xop_parser.java:102)
    gplx.xowa.parsers.Xow_parser_mgr.Parse(Xow_parser_mgr.java:102)
    gplx.xowa.addons.bldrs.mass_parses.parses.wkrs.Xomp_parse_wkr.Exec(Xomp_parse_wkr.java:140)
    gplx.xowa.addons.bldrs.mass_parses.parses.wkrs.Xomp_parse_wkr.Invk(Xomp_parse_wkr.java:213)
    gplx.Gfo_invk_.Invk_by_msg(Gfo_invk_.java:34)
    gplx.core.threads.Thread_adp.run(Thread_adp.java:33)
    java.lang.Thread.run(Thread.java:748)

running this in a debugging environment showed (to me) that there was some thread interference (I use 8 workers)

I have found putting a synchronized (this) around fetchLanguageNames stops this from occurring

@gnosygnu gnosygnu added this to To do in A <div> in D Aug 14, 2019
@gnosygnu gnosygnu changed the title frwiki invoke failed gplx.Err: counts do not match Thread: fetchLanguageNames needs synchronized (frwiki invoke failed gplx.Err: counts do not match) Aug 14, 2019
@gnosygnu gnosygnu moved this from To do to Done in A <div> in D Aug 14, 2019
@gnosygnu
Copy link
Owner

Cool. Thanks for discovering the issue.

I added synchronized blocks to both fetchLanguageNames and fetchLanguageName

Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
A <div> in D
  
Done
Development

No branches or pull requests

2 participants