Uploaded image for project: 'JSword'
  1. JSword
  2. JS-109

Modules are not read in a thread safe way

    Details

      Description

      I believe the problem is because ZVerseBackend is not thread-safe. Being a singleton, it starts sharing all its arrays declared as member variables. As a result, when two passages from the same "Book" (for e.g. KJV) are used, there is corruption, since the data read for Thread A might also be shared by Thread B!

      A few solutions I can think of:

      • do they need to be singletons? I guess it makes sense, but what is the cost involved in them being singletons? Don't know the code base well enough yet.
      • do the member variables need to member variables, or can be make them local variables? Do they share state across methods?
      • If the option above doesn't work, then synchronising the method might be worth looking at, however, in a web environment, that would potentially cause serious bottlenecks, especially if there is a default version (and default passage) that is displayed when the user brings the page up.

      Any thoughts?
      Chris

      On 7 November 2010 00:04, Chris Burrell <chris@burrell.me.uk> wrote:
      On this last note, I believe we have concurrency issues. I have a two column page, displaying one passage each. On load of the page they load up a passage each, but then this once, the passage on the right (only verse 1) has gone to the left (which was requesting just one verse but from a different passage:

      left pane: requested Acts 2:10, got Romans 1:1
      right pane: corrupt XML in verse 1, verse 2 seems to be Romans 1:2-following

      Anyone else come across those issues?
      Chris

      On 6 November 2010 20:53, Chris Burrell <chris@burrell.me.uk> wrote:
      Another question too. It seems sometimes, both in bible desktop and my current application, the html rendered is broken?

      Any ideas why that might be?

      For example, I get:
      "<div class="passageText ui-widget"><div><h2 class="heading">Acts 2:10</h2><span class="verse"><span class="w"><sup class="verseNumber">10</sup></span><span class="w"><span class="text">emma="strong:G1909" morph="robinson:PREP" src="4">upon every soul of man that doeth evil, of the Jew first, and also of the Gentile;</span></span></span> </div></div>"

      The above in bold shows that it didn't get XSLTed properly.

      Instead of "<div class="passageText ui-widget"><div><h2 class="heading">Acts 2:10</h2><span class="verse"><sup class="verseNumber">10</sup><span class="w"><span class="text"> </span> </span><span class="w"><span class="text"> </span> </span><span class="w"><span class="text">Phrygia</span></span>, <span class="w"><span class="text"> </span> </span><span class="w"><span class="text">and</span></span> <span class="w"><span class="text">Pamphylia</span></span>, <span class="w"><span class="text">in Egypt</span></span>, <span class="w"><span class="text">and</span></span> <span class="w"><span class="text">in the parts</span></span> <span class="w"><span class="text">of Libya</span></span> <span class="w"><span class="text">about</span></span> <span class="w"><span class="text">Cyrene</span></span>, <span class="w"><span class="text">and</span></span> <span class="w"><span class="text">strangers</span></span> <span class="w"><span class="text">of Rome</span></span>, <span class="w"><span class="text">Jews</span></span> <span class="w"><span class="text"> </span> </span><span class="w"><span class="text">and</span></span> <span class="w"><span class="text">proselytes</span></span>,</span> </div></div>"

      So somehow it lost a whole load on the way out of the XSLT? The only difference is that the first one is on startup of the server, the second is with a refresh in the browser. Perhaps something hasn't loaded up correctly/entirely?

      Chris

        Attachments

          Activity

            People

            • Assignee:
              dmsmith DM Smith
              Reporter:
              chrisburrell Chris Burrell
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: