Details

    • Type: Bug
    • Status: Done
    • Priority: Medium
    • Resolution: Done
    • Affects Version/s: None
    • Fix Version/s: BLAZEGRAPH_RELEASE_1_5_2
    • Component/s: None
    • Labels:
      None

      Description

      A stochastic problem can occur where a declared vocabulary item (such as xsd:double) is not associated with an RDF Value in when an attempt is made to create a FunctionNode object in ValueExprBuilder.visit(ASTFunctionCall node, Object data). This appears to be a data race in setting the Value on the IV through IVCache.setValue().

        Issue Links

          Activity

          bryanthompson bryanthompson created issue -
          bryanthompson bryanthompson made changes -
          Field Original Value New Value
          Fix Version/s BLAZEGRAPH_RELEASE_1_5_2 [ 10164 ]
          bryanthompson bryanthompson made changes -
          Assignee bryanthompson [ bryanthompson ] michaelschmidt [ michaelschmidt ]
          Hide
          bryanthompson bryanthompson added a comment -

          While we have not tracked down where setValue() winds up being invoked on the VocabByteIV, it appears that the fix is to BaseVocabularyDecl#generateIVs() where the following lines where found.

                      // Note: Do not cache the Value on the IV.
                      // iv.setValue(value);
          

          Michael points out that I added these lines myself back in the TERMS_REFACTOR_BRANCH.

          The VocabByteIV and VocabShortIV both implement IVCache.clone(boolean:clearValue) to NOT clear the Value cache and return "this". Thus, once the Value cache is set on these classes it remains set. Further, we have empirically verified that these cached Value objects are never cleared by a setValue(null) invocation.

          Therefore the code snippet above is replaced by

                      // Cache the Value on the IV.  See BLZG-1386
                      iv.setValue(value);
          
          Show
          bryanthompson bryanthompson added a comment - While we have not tracked down where setValue() winds up being invoked on the VocabByteIV, it appears that the fix is to BaseVocabularyDecl#generateIVs() where the following lines where found. // Note: Do not cache the Value on the IV. // iv.setValue(value); Michael points out that I added these lines myself back in the TERMS_REFACTOR_BRANCH. The VocabByteIV and VocabShortIV both implement IVCache.clone(boolean:clearValue) to NOT clear the Value cache and return "this". Thus, once the Value cache is set on these classes it remains set. Further, we have empirically verified that these cached Value objects are never cleared by a setValue(null) invocation. Therefore the code snippet above is replaced by // Cache the Value on the IV. See BLZG-1386 iv.setValue(value);
          bryanthompson bryanthompson made changes -
          Link This issue is duplicated by BLZG-764 [ BLZG-764 ]
          Hide
          bryanthompson bryanthompson added a comment -

          Note: Per duplicate ticket BLGZ-764, this problem was definitely present in 1.5.1 as well. And based on the root cause, it has been present for several years.

          Show
          bryanthompson bryanthompson added a comment - Note: Per duplicate ticket BLGZ-764, this problem was definitely present in 1.5.1 as well. And based on the root cause, it has been present for several years.
          Hide
          michaelschmidt michaelschmidt added a comment -

          Yes, I can confirm that BSBM EXPLORE+UPDATE multithreaded reveals this problem in 1.5.1. Looks like we actually never (properly) ran the EXPLORE+UPDATE in a multithreaded setting.

          Show
          michaelschmidt michaelschmidt added a comment - Yes, I can confirm that BSBM EXPLORE+UPDATE multithreaded reveals this problem in 1.5.1. Looks like we actually never (properly) ran the EXPLORE+UPDATE in a multithreaded setting.
          beebs Brad Bebee made changes -
          Fix Version/s BLAZEGRAPH_RELEASE_1_5_3 [ 10165 ]
          Fix Version/s BLAZEGRAPH_RELEASE_1_5_2 [ 10164 ]
          beebs Brad Bebee made changes -
          Fix Version/s BLAZEGRAPH_RELEASE_1_5_2 [ 10164 ]
          Fix Version/s BLAZEGRAPH_RELEASE_1_5_3 [ 10165 ]
          beebs Brad Bebee made changes -
          Status Open [ 1 ] Accepted [ 10101 ]
          beebs Brad Bebee made changes -
          Status Accepted [ 10101 ] In Progress [ 3 ]
          beebs Brad Bebee made changes -
          Status In Progress [ 3 ] Resolved [ 5 ]
          beebs Brad Bebee made changes -
          Status Resolved [ 5 ] In Review [ 10100 ]
          beebs Brad Bebee made changes -
          Resolution Done [ 10000 ]
          Status In Review [ 10100 ] Done [ 10000 ]
          Hide
          michaelschmidt michaelschmidt added a comment -

          Fixed in 1.5.2RC1 branch and in master. Closing issue.

          Show
          michaelschmidt michaelschmidt added a comment - Fixed in 1.5.2RC1 branch and in master. Closing issue.
          beebs Brad Bebee made changes -
          Workflow Trac Import v6 [ 18704 ] Trac Import v7 [ 19810 ]
          beebs Brad Bebee made changes -
          Workflow Trac Import v7 [ 19810 ] Trac Import v8 [ 21445 ]

            People

            • Assignee:
              michaelschmidt michaelschmidt
              Reporter:
              bryanthompson bryanthompson
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: